Auto change width for an integer number of elements for ComboDataView
This commit is contained in:
parent
832641ec5f
commit
6e5de0c8c1
|
@ -56,6 +56,7 @@ define([
|
||||||
itemWidth : 80,
|
itemWidth : 80,
|
||||||
itemHeight : 40,
|
itemHeight : 40,
|
||||||
menuMaxHeight : 300,
|
menuMaxHeight : 300,
|
||||||
|
autoWidth : false,
|
||||||
enableKeyEvents : false,
|
enableKeyEvents : false,
|
||||||
beforeOpenHandler : null,
|
beforeOpenHandler : null,
|
||||||
additionalMenuItems : null,
|
additionalMenuItems : null,
|
||||||
|
@ -87,11 +88,13 @@ define([
|
||||||
this.menuMaxHeight = this.options.menuMaxHeight;
|
this.menuMaxHeight = this.options.menuMaxHeight;
|
||||||
this.beforeOpenHandler = this.options.beforeOpenHandler;
|
this.beforeOpenHandler = this.options.beforeOpenHandler;
|
||||||
this.showLast = this.options.showLast;
|
this.showLast = this.options.showLast;
|
||||||
|
this.wrapWidth = 0;
|
||||||
this.rootWidth = 0;
|
this.rootWidth = 0;
|
||||||
this.rootHeight = 0;
|
this.rootHeight = 0;
|
||||||
this.rendered = false;
|
this.rendered = false;
|
||||||
this.needFillComboView = false;
|
this.needFillComboView = false;
|
||||||
this.minWidth = this.options.minWidth;
|
this.minWidth = this.options.minWidth;
|
||||||
|
this.autoWidth = this.options.autoWidth;
|
||||||
this.delayRenderTips = this.options.delayRenderTips || false;
|
this.delayRenderTips = this.options.delayRenderTips || false;
|
||||||
this.itemTemplate = this.options.itemTemplate || _.template([
|
this.itemTemplate = this.options.itemTemplate || _.template([
|
||||||
'<div class="style" id="<%= id %>">',
|
'<div class="style" id="<%= id %>">',
|
||||||
|
@ -102,6 +105,11 @@ define([
|
||||||
'</div>'
|
'</div>'
|
||||||
].join(''));
|
].join(''));
|
||||||
|
|
||||||
|
|
||||||
|
if(this.autoWidth) {
|
||||||
|
this.style += ' position:absolute; top:50%; bottom:50%; margin: auto 0;';
|
||||||
|
}
|
||||||
|
|
||||||
this.fieldPicker = new Common.UI.DataView({
|
this.fieldPicker = new Common.UI.DataView({
|
||||||
cls: 'field-picker',
|
cls: 'field-picker',
|
||||||
allowScrollbar: false,
|
allowScrollbar: false,
|
||||||
|
@ -223,6 +231,16 @@ define([
|
||||||
|
|
||||||
checkSize: function() {
|
checkSize: function() {
|
||||||
if (this.cmpEl && this.cmpEl.is(':visible')) {
|
if (this.cmpEl && this.cmpEl.is(':visible')) {
|
||||||
|
if(this.autoWidth) {
|
||||||
|
this.autoChangeWidth();
|
||||||
|
// var wrapWidth = this.$el.width();
|
||||||
|
// if(wrapWidth != this.wrapWidth){
|
||||||
|
// this.wrapWidth = wrapWidth;
|
||||||
|
// this.autoChangeWidth();
|
||||||
|
// console.log(wrapWidth);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
var me = this,
|
var me = this,
|
||||||
width = this.cmpEl.width(),
|
width = this.cmpEl.width(),
|
||||||
height = this.cmpEl.height();
|
height = this.cmpEl.height();
|
||||||
|
@ -265,7 +283,32 @@ define([
|
||||||
if (!this.isSuspendEvents)
|
if (!this.isSuspendEvents)
|
||||||
this.trigger('resize', this);
|
this.trigger('resize', this);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
autoChangeWidth: function() {
|
||||||
|
var self = this;
|
||||||
|
if(self.fieldPicker.dataViewItems[0]){
|
||||||
|
var wrapEl = self.$el;
|
||||||
|
var wrapWidth = parseFloat(wrapEl.css('width')) - parseFloat(wrapEl.css('padding-left'));
|
||||||
|
|
||||||
|
var itemEl = self.fieldPicker.dataViewItems[0].$el;
|
||||||
|
var itemWidth = parseFloat(itemEl.css('width'));
|
||||||
|
var itemBorder = parseFloat(itemEl.css('border-width'));
|
||||||
|
|
||||||
|
var fieldPickerPadding = parseFloat(self.fieldPicker.$el.css('padding-right'));
|
||||||
|
|
||||||
|
var itemsCount = Math.floor((wrapWidth - fieldPickerPadding) / itemWidth);
|
||||||
|
if(itemsCount > this.store.length)
|
||||||
|
itemsCount = this.store.length;
|
||||||
|
|
||||||
|
var widthCalc = itemsCount * itemWidth - (itemsCount-2) * itemBorder + fieldPickerPadding;
|
||||||
|
var maxWidth = self.cmpEl.css('max-width');
|
||||||
|
if(widthCalc > maxWidth)
|
||||||
|
widthCalc = maxWidth;
|
||||||
|
|
||||||
|
self.cmpEl.css('width', widthCalc);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onBeforeShowMenu: function(e) {
|
onBeforeShowMenu: function(e) {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
|
|
||||||
.view {
|
.view {
|
||||||
margin-right: -@combo-dataview-button-width;
|
margin-right: -@combo-dataview-button-width;
|
||||||
padding-right: @combo-dataview-button-width;
|
padding-right: calc(@combo-dataview-button-width - @scaled-two-px-value);
|
||||||
|
|
||||||
.border-left-radius(0);
|
.border-left-radius(0);
|
||||||
|
|
||||||
|
|
|
@ -1483,7 +1483,7 @@ define([
|
||||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||||
itemWidth: itemWidth,
|
itemWidth: itemWidth,
|
||||||
itemHeight: itemHeight,
|
itemHeight: itemHeight,
|
||||||
style: 'min-width:150px;',
|
style: 'min-width:139px;',
|
||||||
// hint : this.tipParagraphStyle,
|
// hint : this.tipParagraphStyle,
|
||||||
dataHint: '1',
|
dataHint: '1',
|
||||||
dataHintDirection: 'bottom',
|
dataHintDirection: 'bottom',
|
||||||
|
@ -1491,6 +1491,7 @@ define([
|
||||||
enableKeyEvents: true,
|
enableKeyEvents: true,
|
||||||
additionalMenuItems: [this.listStylesAdditionalMenuItem],
|
additionalMenuItems: [this.listStylesAdditionalMenuItem],
|
||||||
delayRenderTips: true,
|
delayRenderTips: true,
|
||||||
|
autoWidth: true,
|
||||||
itemTemplate: _.template([
|
itemTemplate: _.template([
|
||||||
'<div class="style" id="<%= id %>">',
|
'<div class="style" id="<%= id %>">',
|
||||||
'<div style="background-image: url(<%= imageUrl %>); width: ' + itemWidth + 'px; height: ' + itemHeight + 'px;"></div>',
|
'<div style="background-image: url(<%= imageUrl %>); width: ' + itemWidth + 'px; height: ' + itemHeight + 'px;"></div>',
|
||||||
|
|
|
@ -1058,12 +1058,13 @@ define([
|
||||||
itemWidth: 88,
|
itemWidth: 88,
|
||||||
enableKeyEvents: true,
|
enableKeyEvents: true,
|
||||||
itemHeight: 40,
|
itemHeight: 40,
|
||||||
style: 'min-width:130px;',
|
style: 'min-width:123px;',
|
||||||
lock: [_set.themeLock, _set.lostConnect, _set.noSlides],
|
lock: [_set.themeLock, _set.lostConnect, _set.noSlides],
|
||||||
dataHint: '1',
|
dataHint: '1',
|
||||||
dataHintDirection: 'bottom',
|
dataHintDirection: 'bottom',
|
||||||
dataHintOffset: '-16, -4',
|
dataHintOffset: '-16, -4',
|
||||||
delayRenderTips: true,
|
delayRenderTips: true,
|
||||||
|
autoWidth: true,
|
||||||
itemTemplate: _.template([
|
itemTemplate: _.template([
|
||||||
'<div class="style" id="<%= id %>">',
|
'<div class="style" id="<%= id %>">',
|
||||||
'<div class="item-theme" style="' + '<% if (typeof imageUrl !== "undefined") { %>' + 'background-image: url(<%= imageUrl %>);' + '<% } %> background-position: 0 -<%= offsety %>px;"></div>',
|
'<div class="item-theme" style="' + '<% if (typeof imageUrl !== "undefined") { %>' + 'background-image: url(<%= imageUrl %>);' + '<% } %> background-position: 0 -<%= offsety %>px;"></div>',
|
||||||
|
|
|
@ -1303,7 +1303,7 @@ define([
|
||||||
enableKeyEvents : true,
|
enableKeyEvents : true,
|
||||||
itemWidth : 100,
|
itemWidth : 100,
|
||||||
itemHeight : 20,
|
itemHeight : 20,
|
||||||
style: 'min-width:158px; max-width:663px;',
|
style: 'min-width:135px; max-width: 660px;',
|
||||||
groups: new Common.UI.DataViewGroupStore([
|
groups: new Common.UI.DataViewGroupStore([
|
||||||
{id: 'menu-style-group-custom', caption: this.textCustom },
|
{id: 'menu-style-group-custom', caption: this.textCustom },
|
||||||
{id: 'menu-style-group-color', caption: this.textGoodBadAndNeutral },
|
{id: 'menu-style-group-color', caption: this.textGoodBadAndNeutral },
|
||||||
|
@ -1319,6 +1319,7 @@ define([
|
||||||
dataHintDirection: 'bottom',
|
dataHintDirection: 'bottom',
|
||||||
dataHintOffset : '-16, -4',
|
dataHintOffset : '-16, -4',
|
||||||
delayRenderTips: true,
|
delayRenderTips: true,
|
||||||
|
autoWidth: true,
|
||||||
beforeOpenHandler: function(e) {
|
beforeOpenHandler: function(e) {
|
||||||
var cmp = this,
|
var cmp = this,
|
||||||
menu = cmp.openButton.menu;
|
menu = cmp.openButton.menu;
|
||||||
|
|
Loading…
Reference in a new issue