|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|