fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.9 KiB

8 years ago
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 () {
this.populate(this.options.items);
},
8 years ago
_packageBtns: function (items) {
8 years ago
var o = this.options;
for (var i = o.layouts.length - 1; i > 0; i--) {
8 years ago
items = BI.map(items, function (k, it) {
8 years ago
return BI.extend({}, o.layouts[i], {
items: [
8 years ago
BI.extend({}, o.layouts[i].el, {
el: BI.stripEL(it)
})
8 years ago
]
})
})
}
8 years ago
return items;
8 years ago
},
_packageItems: function (items, packBtns) {
return BI.createItems(BI.makeArrayByArray(items, {}), BI.clone(packBtns));
},
_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;
},
populate: function (items) {
var self = this;
items = items || [];
this.options.items = items;
8 years ago
items = this._packageItems(items, this._packageBtns(items));
8 years ago
if (!this.layouts) {
this.layouts = BI.createWidget(BI.extend({element: this}, this._packageLayout(items)));
} else {
this.layouts.populate(this._packageLayout(items).items);
}
}
});
BI.VirtualGroup.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.virtual_group", BI.VirtualGroup);