|
|
|
BI.VirtualGroup = BI.inherit(BI.Widget, {
|
|
|
|
_defaultConfig: function () {
|
|
|
|
return BI.extend(BI.VirtualGroup.superclass._defaultConfig.apply(this, arguments), {
|
|
|
|
baseCls: "bi-virtual-group",
|
|
|
|
items: [],
|
|
|
|
layouts: [{
|
|
|
|
type: "bi.center",
|
|
|
|
hgap: 0,
|
|
|
|
vgap: 0
|
|
|
|
}]
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
render: function () {
|
|
|
|
var o = this.options;
|
|
|
|
this.populate(o.items);
|
|
|
|
if (BI.isKey(o.value)) {
|
|
|
|
this.setValue(o.value);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
_packageBtns: function (items) {
|
|
|
|
var o = this.options;
|
|
|
|
var map = this.buttonMap = {};
|
|
|
|
for (var i = o.layouts.length - 1; i > 0; i--) {
|
|
|
|
items = BI.map(items, function (k, it) {
|
|
|
|
var el = BI.stripEL(it);
|
|
|
|
return BI.extend({}, o.layouts[i], {
|
|
|
|
items: [
|
|
|
|
BI.extend({}, o.layouts[i].el, {
|
|
|
|
el: BI.extend({
|
|
|
|
ref: function (_ref) {
|
|
|
|
if (BI.isKey(map[el.value])) {
|
|
|
|
map[el.value] = _ref;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, el)
|
|
|
|
})
|
|
|
|
]
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return items;
|
|
|
|
},
|
|
|
|
|
|
|
|
_packageLayout: function (items) {
|
|
|
|
var o = this.options, layout = BI.deepClone(o.layouts[0]);
|
|
|
|
|
|
|
|
var lay = BI.formatEL(layout).el;
|
|
|
|
while (lay && lay.items && !BI.isEmpty(lay.items)) {
|
|
|
|
lay = BI.formatEL(lay.items[0]).el;
|
|
|
|
}
|
|
|
|
lay.items = items;
|
|
|
|
return layout;
|
|
|
|
},
|
|
|
|
|
|
|
|
addItems: function (items) {
|
|
|
|
this.layouts.addItems(items);
|
|
|
|
},
|
|
|
|
|
|
|
|
prependItems: function (items) {
|
|
|
|
this.layouts.prependItems(items);
|
|
|
|
},
|
|
|
|
|
|
|
|
setValue: function (v) {
|
|
|
|
v = BI.isArray(v) ? v : [v];
|
|
|
|
BI.each(this.buttonMap, function (key, item) {
|
|
|
|
if (item) {
|
|
|
|
if (v.deepContains(key)) {
|
|
|
|
item.setSelected && item.setSelected(true);
|
|
|
|
} else {
|
|
|
|
item.setSelected && item.setSelected(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
getNotSelectedValue: function () {
|
|
|
|
var v = [];
|
|
|
|
BI.each(this.buttonMap, function (i, item) {
|
|
|
|
if (item) {
|
|
|
|
if (item.isEnabled() && !(item.isSelected && item.isSelected())) {
|
|
|
|
v.push(item.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return v;
|
|
|
|
},
|
|
|
|
|
|
|
|
getValue: function () {
|
|
|
|
var v = [];
|
|
|
|
BI.each(this.buttonMap, function (i, item) {
|
|
|
|
if (item) {
|
|
|
|
if (item.isEnabled() && item.isSelected && item.isSelected()) {
|
|
|
|
v.push(item.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return v;
|
|
|
|
},
|
|
|
|
|
|
|
|
populate: function (items) {
|
|
|
|
var self = this;
|
|
|
|
items = items || [];
|
|
|
|
this.options.items = items;
|
|
|
|
items = this._packageBtns(items);
|
|
|
|
if (!this.layouts) {
|
|
|
|
this.layouts = BI.createWidget(BI.extend({element: this}, this._packageLayout(items)));
|
|
|
|
} else {
|
|
|
|
this.layouts.populate(items);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
BI.VirtualGroup.EVENT_CHANGE = "EVENT_CHANGE";
|
|
|
|
|
|
|
|
BI.shortcut("bi.virtual_group", BI.VirtualGroup);
|