forked from ezreal/BI-FR-MIX-FRONT
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
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; |
|
}) |
|
})(); |