import { shortcut, Widget, i18nText, extend, Controller, AbsoluteLayout, isEmptyArray } from "@/core"; import { TreeView, PartTree } from "@/case"; import { TextButton } from "@/base"; @shortcut() export class MultiTreeSearchInsertPane extends Widget { static xtype = "bi.multi_tree_search_insert_pane"; props = { baseCls: "bi-multi-tree-search-insert-pane bi-card", el: { type: PartTree.xtype }, }; static EVENT_CHANGE = "EVENT_CHANGE"; static EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; static EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; static EVENT_ADD_ITEM = "EVENT_ADD_ITEM"; static EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; render() { const self = this, opts = this.options; return { type: AbsoluteLayout.xtype, items: [ { el: { type: TextButton.xtype, invisible: true, ref(_ref) { self.addTip = _ref; }, text: i18nText("BI-Basic_Click_To_Add_Text", ""), height: this.constants.height, cls: "bi-high-light", handler() { self.fireEvent( MultiTreeSearchInsertPane.EVENT_ADD_ITEM, opts.keywordGetter() ); }, }, top: 5, left: 0, right: 0, }, { el: extend( { type: PartTree.xtype, tipText: i18nText("BI-No_Select"), itemsCreator(op, callback) { op.keyword = opts.keywordGetter(); opts.itemsCreator(op, res => { callback(res); self.setKeyword( opts.keywordGetter(), res.items ); }); }, ref(_ref) { self.partTree = _ref; }, value: opts.value, listeners: [ { eventName: Controller.EVENT_CHANGE, action() { self.fireEvent( Controller.EVENT_CHANGE, arguments ); }, }, { eventName: TreeView.EVENT_CHANGE, action() { self.fireEvent( MultiTreeSearchInsertPane.EVENT_CHANGE ); }, }, { eventName: PartTree.EVENT_CLICK_TREE_NODE, action() { self.fireEvent( MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE ); }, } ], }, opts.el ), left: 0, top: 0, bottom: 0, right: 0, } ], }; } setKeyword(keyword, nodes) { const isAddTipVisible = isEmptyArray(nodes); this.addTip.setVisible(isAddTipVisible); this.partTree.setVisible(!isAddTipVisible); isAddTipVisible && this.addTip.setText( i18nText("BI-Basic_Click_To_Add_Text", keyword) ); } hasChecked() { return this.partTree.hasChecked(); } setValue(v) { this.setSelectedValue(v.value); } setSelectedValue(v) { v || (v = {}); this.partTree.setSelectedValue(v); } getValue() { return this.partTree.getValue(); } empty() { this.partTree.empty(); } populate(op) { this.partTree.stroke(...arguments); } }