import { NodeButton } from "../../../base/single/button/button.node"; import { shortcut, extend } from "../../../core"; @shortcut() export class BasicTreeItem extends NodeButton { static xtype = "bi.tree_item"; _defaultConfig() { const conf = super._defaultConfig(arguments); return extend(conf, { baseCls: `${conf.baseCls || ""} bi-tree-item bi-list-item-active`, id: "", pId: "", height: 24, readonly: true, isFirstNode: false, isLastNode: false, }); } render() { const o = this.options; return { type: "bi.vertical_adapt", columnSize: ["", "fill"], items: [ { el: { type: "bi.layout", height: o.height, width: o.height, cls: this.getLineCls(), }, lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, // 偏移公式为每一层的偏移量为节点高度的一半 }, { el: { type: "bi.label", ref: _ref => { this.text = _ref; }, textAlign: "left", whiteSpace: "nowrap", textHeight: o.height, height: o.height, hgap: o.hgap || o.textHgap, vgap: o.textVgap, lgap: o.textLgap, rgap: o.textRgap, text: o.text, value: o.value, keyword: o.keyword, py: o.py, }, } ], }; } getLineCls() { const options = this.options; if (options.layer === 0 && options.isFirstNode && options.isLastNode) { return ""; } else if (options.layer === 0 && options.isFirstNode) { return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-first-solid-line-conn-background" : "first-line-conn-background"; } else if (options.isLastNode) { return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-last-solid-line-conn-background" : "last-line-conn-background"; } else { return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-mid-solid-line-conn-background" : "mid-line-conn-background"; } } doRedMark() { this.text.doRedMark(...arguments); } unRedMark() { this.text.unRedMark(...arguments); } getId() { return this.options.id; } getPId() { return this.options.pId; } }