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.
 
 
 

142 lines
6.1 KiB

;!(function () {
BI.Front = BI.Front || {};
BI.Front = BI.extend(BI.Front, {
relation_pane_header: {
widget: null
}
})
BI.Plugin.registerWidget("bi.subject.relationship.pane.header", function (widget) {
widget.beforeCreate = function () {
BI.Front.relation_pane_header.widget = this;
var self = this;
/**
* 搜索结果
* @type {function(*=, *=): *}
*/
self.store.oldBuildSearchResult = self.store.buildSearchResult;
self.store.buildSearchResult = function (keywords, originData) {
BI.Front.relation_pane.widget.store._computedWatchers.shownList.value = BI.Front.relation_pane.widget.store._computedWatchers.shownList.getter.call(BI.Front.relation_pane.widget.store);
originData = self.model.shownList;
var result = self.store.oldBuildSearchResult(keywords, originData);
BI.each(BI.Front.SUPPORT_REPORT, function (index, item) {
var x = originData[item.type] && BI.Func.getSearchResult(Object.values(originData[item.type]), keywords, 'name');
result[item.type] = x || {};
})
return result;
}
/**
* 处理搜索结果
*/
self.oldCreatItems = self.creatItems;
self.creatItems = function (source) {
var result = self.oldCreatItems(source);
BI.each(BI.Front.SUPPORT_REPORT, function (index, item) {
var x = source[item.type];
result = BI.concat(result, self.creatCptOrFrmItems(x, item));
})
return result;
}
self.creatCptOrFrmItems = function (items, o) {
var finds = items.find || [];
var match = items.match || [];
finds = BI.concat(finds, match);
if (finds.length > 0) {
var label = {
type: "bi.label",
cls: 'bi-secondary-text bi-font-bold',
height: 30,
id: BI.UUID(),
key: BI.UUID(),
text: o.text,
textAlign: 'left',
lgap: 12
}
var x = BI.map(finds, function (index, item) {
return {
type: "bi.basic_button",
cls: 'bi-list-item-text',
forceNotSelected: true,
id: BI.UUID(),
key: BI.UUID(),
render: function () {
return {
type: "bi.vertical_adapt",
columnSize: [24, 'fill'],
items: [
{
type: "bi.icon_label",
cls: o.iconCls,
height: 16,
iconWidth: 16,
iconHeight: 16,
_lgap: 8
},
{
type: "bi.label",
cls: 'item-name',
text: item.name,
keyword: self.model.keywords,
height: 30,
textHeight: 30,
textAlign: 'left'
}
]
}
},
handler: function () {
self.fireEvent("EVENT_CHANGE", item.id, o.typeValue);
self.combo.hideView();
}
}
});
x.unshift(label);
return x;
}
return [];
}
}
})
BI.Plugin.configRender("bi.subject.relationship.pane.header", function (renderObject) {
var self = renderObject;
function findObject(value) {
if (BI.isNotEmptyArray(value)) {
BI.each(value, function (index, item) {
if (BI.isObject(item) && item.value === "table" && item.text === BI.i18nText('BI-Basic_Data')) {
self.result = value;
return false;
}
findObject(item);
})
} else if (BI.isObject(value)) {
BI.each(value, function (k, v) {
findObject(v);
})
}
}
self.result = [];
findObject(renderObject,);
if (BI.isNotEmptyArray(self.result)) {
BI.each(BI.Front.SUPPORT_REPORT, function (index, item) {
self.result.push({
type: "bi.multi_select_item",
value: item.type,
text: item.text,
handler: function () {
BI.Front.relation_pane_header.widget.fireEvent("EVENT_FILTER", item.type, this.isSelected());
BI.Front.relation_pane.widget.store.setLayout(true);//传递一个参数,刷新的时候需要单独处理下
BI.Front.relation_pane.widget.map.populate();
},
selected: function () {
return (BI.Front.relation_pane_header.widget.model.shownTypeMap)[item.type]
}
})
})
}
return renderObject;
})
})();