forked from fanruan/fineui
Zhenfei.Li
2 years ago
34 changed files with 2696 additions and 2159 deletions
@ -1,102 +1,122 @@
|
||||
/** |
||||
* 查看已选按钮 |
||||
* Created by guy on 15/11/3. |
||||
* @class BI.MultiSelectCheckSelectedButton |
||||
* @extends BI.Single |
||||
*/ |
||||
BI.MultiSelectCheckSelectedButton = BI.inherit(BI.Single, { |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
Controller, |
||||
i18nText, |
||||
isNotNull, |
||||
isNotEmptyString, |
||||
nextTick |
||||
} from "@/core"; |
||||
import { Single, TextButton } from "@/base"; |
||||
import { MultiSelectCombo } from "../multiselect.combo"; |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiSelectCheckSelectedButton.superclass._defaultConfig.apply(this, arguments), { |
||||
@shortcut() |
||||
export class MultiSelectCheckSelectedButton extends Single { |
||||
static xtype = "bi.multi_select_check_selected_button"; |
||||
|
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-select-check-selected-button", |
||||
itemsCreator: BI.emptyFn |
||||
itemsCreator: emptyFn, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiSelectCheckSelectedButton.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
this.numberCounter = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
this.numberCounter = createWidget({ |
||||
type: TextButton.xtype, |
||||
element: this, |
||||
hgap: 4, |
||||
text: "0", |
||||
textAlign: "center", |
||||
textHeight: 16, |
||||
cls: "bi-high-light-background count-tip" |
||||
cls: "bi-high-light-background count-tip", |
||||
}); |
||||
this.numberCounter.on(BI.Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
this.numberCounter.on(Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
|
||||
this.numberCounter.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.MultiSelectCheckSelectedButton.EVENT_CHANGE, arguments); |
||||
this.numberCounter.on(TextButton.EVENT_CHANGE, function () { |
||||
self.fireEvent( |
||||
MultiSelectCheckSelectedButton.EVENT_CHANGE, |
||||
arguments |
||||
); |
||||
}); |
||||
|
||||
this.numberCounter.element.hover(function () { |
||||
self.numberCounter.setTag(self.numberCounter.getText()); |
||||
self.numberCounter.setText(BI.i18nText("BI-Check_Selected")); |
||||
}, function () { |
||||
self.numberCounter.setText(self.numberCounter.getTag()); |
||||
}); |
||||
this.numberCounter.element.hover( |
||||
() => { |
||||
self.numberCounter.setTag(self.numberCounter.getText()); |
||||
self.numberCounter.setText(i18nText("BI-Check_Selected")); |
||||
}, |
||||
() => { |
||||
self.numberCounter.setText(self.numberCounter.getTag()); |
||||
} |
||||
); |
||||
this.setVisible(false); |
||||
if (BI.isNotNull(o.value)) { |
||||
if (isNotNull(o.value)) { |
||||
this.setValue(o.value); |
||||
} |
||||
}, |
||||
} |
||||
|
||||
_populate: function (ob) { |
||||
var self = this, o = this.options; |
||||
_populate(ob) { |
||||
const self = this, |
||||
o = this.options; |
||||
if (ob.type === BI.Selection.All) { |
||||
o.itemsCreator({ |
||||
type: BI.MultiSelectCombo.REQ_GET_DATA_LENGTH |
||||
}, function (res) { |
||||
if (self.options.value.type !== BI.Selection.All) { |
||||
return; |
||||
} |
||||
if (BI.isNotEmptyString(res.count)) { |
||||
BI.nextTick(function () { |
||||
self.numberCounter.setText(res.count); |
||||
self.setVisible(true); |
||||
}); |
||||
o.itemsCreator( |
||||
{ |
||||
type: MultiSelectCombo.REQ_GET_DATA_LENGTH, |
||||
}, |
||||
res => { |
||||
if (self.options.value.type !== BI.Selection.All) { |
||||
return; |
||||
} |
||||
if (isNotEmptyString(res.count)) { |
||||
nextTick(() => { |
||||
self.numberCounter.setText(res.count); |
||||
self.setVisible(true); |
||||
}); |
||||
|
||||
return; |
||||
return; |
||||
} |
||||
const length = res.count - ob.value.length; |
||||
nextTick(() => { |
||||
self.numberCounter.setText(length); |
||||
self.setVisible(length > 0); |
||||
}); |
||||
} |
||||
var length = res.count - ob.value.length; |
||||
BI.nextTick(function () { |
||||
self.numberCounter.setText(length); |
||||
self.setVisible(length > 0); |
||||
}); |
||||
}); |
||||
); |
||||
|
||||
return; |
||||
} |
||||
BI.nextTick(function () { |
||||
nextTick(() => { |
||||
self.numberCounter.setText(ob.value.length); |
||||
self.setVisible(ob.value.length > 0); |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_assertValue: function (ob) { |
||||
_assertValue(ob) { |
||||
ob || (ob = {}); |
||||
ob.type || (ob.type = BI.Selection.Multi); |
||||
ob.value || (ob.value = []); |
||||
|
||||
return ob; |
||||
}, |
||||
} |
||||
|
||||
setValue: function (ob) { |
||||
setValue(ob) { |
||||
ob = this._assertValue(ob); |
||||
this.options.value = ob; |
||||
this._populate(ob); |
||||
}, |
||||
} |
||||
|
||||
populate: function () { |
||||
populate() { |
||||
this._populate(this._assertValue(this.options.value)); |
||||
}, |
||||
|
||||
getValue: function () { |
||||
|
||||
} |
||||
}); |
||||
|
||||
BI.MultiSelectCheckSelectedButton.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.multi_select_check_selected_button", BI.MultiSelectCheckSelectedButton); |
||||
getValue() {} |
||||
} |
||||
|
@ -1,112 +1,126 @@
|
||||
/** |
||||
* 查看已选switcher |
||||
* Created by guy on 15/11/3. |
||||
* @class BI.MultiSelectCheckSelectedSwitcher |
||||
* @extends Widget |
||||
*/ |
||||
BI.MultiSelectCheckSelectedSwitcher = BI.inherit(BI.Widget, { |
||||
import { |
||||
shortcut, |
||||
Widget, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
Events, |
||||
nextTick |
||||
} from "@/core"; |
||||
import { Switcher } from "@/base"; |
||||
import { MultiSelectCheckSelectedButton } from "button.checkselected"; |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiSelectCheckSelectedSwitcher.superclass._defaultConfig.apply(this, arguments), { |
||||
@shortcut() |
||||
export class MultiSelectCheckSelectedSwitcher extends Widget { |
||||
static xtype = "bi.multi_select_check_selected_switcher"; |
||||
|
||||
static EVENT_TRIGGER_CHANGE = "EVENT_TRIGGER_CHANGE"; |
||||
static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
||||
static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-select-check-selected-switcher", |
||||
itemsCreator: BI.emptyFn, |
||||
valueFormatter: BI.emptyFn, |
||||
itemsCreator: emptyFn, |
||||
valueFormatter: emptyFn, |
||||
el: {}, |
||||
popup: {}, |
||||
adapter: null, |
||||
masker: {} |
||||
masker: {}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiSelectCheckSelectedSwitcher.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
|
||||
this.button = BI.createWidget(o.el, { |
||||
type: "bi.multi_select_check_selected_button", |
||||
this.button = createWidget(o.el, { |
||||
type: MultiSelectCheckSelectedButton.xtype, |
||||
itemsCreator: o.itemsCreator, |
||||
value: o.value |
||||
value: o.value, |
||||
}); |
||||
this.button.on(BI.Events.VIEW, function () { |
||||
self.fireEvent(BI.Events.VIEW, arguments); |
||||
this.button.on(Events.VIEW, function () { |
||||
self.fireEvent(Events.VIEW, arguments); |
||||
}); |
||||
this.switcher = BI.createWidget({ |
||||
type: "bi.switcher", |
||||
this.switcher = createWidget({ |
||||
type: Switcher.xtype, |
||||
toggle: false, |
||||
element: this, |
||||
el: this.button, |
||||
popup: BI.extend({ |
||||
type: "bi.multi_select_check_pane", |
||||
valueFormatter: o.valueFormatter, |
||||
itemsCreator: o.itemsCreator, |
||||
onClickContinueSelect: function () { |
||||
self.switcher.hideView(); |
||||
}, |
||||
ref: function (_ref) { |
||||
self.checkPane = _ref; |
||||
popup: extend( |
||||
{ |
||||
type: "bi.multi_select_check_pane", |
||||
valueFormatter: o.valueFormatter, |
||||
itemsCreator: o.itemsCreator, |
||||
onClickContinueSelect () { |
||||
self.switcher.hideView(); |
||||
}, |
||||
ref (_ref) { |
||||
self.checkPane = _ref; |
||||
}, |
||||
value: o.value, |
||||
}, |
||||
value: o.value |
||||
}, o.popup), |
||||
o.popup |
||||
), |
||||
adapter: o.adapter, |
||||
masker: o.masker |
||||
masker: o.masker, |
||||
}); |
||||
this.switcher.on(BI.Switcher.EVENT_TRIGGER_CHANGE, function () { |
||||
self.fireEvent(BI.MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE); |
||||
this.switcher.on(Switcher.EVENT_TRIGGER_CHANGE, () => { |
||||
self.fireEvent( |
||||
MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE |
||||
); |
||||
}); |
||||
this.switcher.on(BI.Switcher.EVENT_BEFORE_POPUPVIEW, function () { |
||||
self.fireEvent(BI.MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW); |
||||
this.switcher.on(Switcher.EVENT_BEFORE_POPUPVIEW, () => { |
||||
self.fireEvent( |
||||
MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW |
||||
); |
||||
}); |
||||
this.switcher.on(BI.Switcher.EVENT_AFTER_HIDEVIEW, function () { |
||||
self.fireEvent(BI.MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW); |
||||
this.switcher.on(Switcher.EVENT_AFTER_HIDEVIEW, () => { |
||||
self.fireEvent( |
||||
MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW |
||||
); |
||||
}); |
||||
this.switcher.on(BI.Switcher.EVENT_AFTER_POPUPVIEW, function () { |
||||
var me = this; |
||||
BI.nextTick(function () { |
||||
this.switcher.on(Switcher.EVENT_AFTER_POPUPVIEW, function () { |
||||
const me = this; |
||||
nextTick(() => { |
||||
me._populate(); |
||||
}); |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
adjustView: function () { |
||||
adjustView() { |
||||
this.switcher.adjustView(); |
||||
}, |
||||
} |
||||
|
||||
hideView: function () { |
||||
hideView() { |
||||
this.switcher.empty(); |
||||
this.switcher.hideView(); |
||||
}, |
||||
} |
||||
|
||||
setAdapter: function (adapter) { |
||||
setAdapter(adapter) { |
||||
this.switcher.setAdapter(adapter); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
this.switcher.setValue(v); |
||||
}, |
||||
} |
||||
|
||||
// 与setValue的区别是只更新查看已选面板的的selectedValue, 不会更新按钮的计数
|
||||
updateSelectedValue: function (v) { |
||||
updateSelectedValue(v) { |
||||
this.checkPane.setValue(v); |
||||
}, |
||||
} |
||||
|
||||
setButtonChecked: function (v) { |
||||
setButtonChecked(v) { |
||||
this.button.setValue(v); |
||||
}, |
||||
|
||||
getValue: function () { |
||||
} |
||||
|
||||
}, |
||||
getValue() {} |
||||
|
||||
populate: function (items) { |
||||
populate(items) { |
||||
this.switcher.populate.apply(this.switcher, arguments); |
||||
}, |
||||
} |
||||
|
||||
populateSwitcher: function () { |
||||
populateSwitcher() { |
||||
this.button.populate.apply(this.button, arguments); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE = "EVENT_TRIGGER_CHANGE"; |
||||
BI.MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
||||
BI.MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; |
||||
BI.shortcut("bi.multi_select_check_selected_switcher", BI.MultiSelectCheckSelectedSwitcher); |
||||
} |
||||
|
@ -1,171 +1,193 @@
|
||||
/** |
||||
* Created by zcf_1 on 2017/5/11. |
||||
*/ |
||||
BI.MultiSelectTree = BI.inherit(BI.Single, { |
||||
_constant: { |
||||
EDITOR_HEIGHT: 24 |
||||
}, |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiSelectTree.superclass._defaultConfig.apply(this, arguments), { |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
nextTick, |
||||
AbsoluteLayout |
||||
} from "@/core"; |
||||
import { Single, Searcher } from "@/base"; |
||||
import { MultiSelectTreePopup } from "./multiselecttree.popup"; |
||||
|
||||
@shortcut() |
||||
export class MultiSelectTree extends Single { |
||||
static xtype = "bi.multi_select_tree"; |
||||
|
||||
_constant = { EDITOR_HEIGHT: 24 }; |
||||
|
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-select-tree", |
||||
itemsCreator: BI.emptyFn |
||||
itemsCreator: emptyFn, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiSelectTree.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
this.storeValue = {value: {}}; |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
this.storeValue = { value: {} }; |
||||
|
||||
this.adapter = BI.createWidget({ |
||||
type: "bi.multi_select_tree_popup", |
||||
this.adapter = createWidget({ |
||||
type: MultiSelectTreePopup.xtype, |
||||
itemsCreator: o.itemsCreator, |
||||
showLine: o.showLine |
||||
showLine: o.showLine, |
||||
}); |
||||
this.adapter.on(BI.MultiSelectTreePopup.EVENT_CHANGE, function () { |
||||
this.adapter.on(MultiSelectTreePopup.EVENT_CHANGE, () => { |
||||
if (self.searcher.isSearching()) { |
||||
self.storeValue = {value: self.searcherPane.getValue()}; |
||||
self.storeValue = { value: self.searcherPane.getValue() }; |
||||
} else { |
||||
self.storeValue = {value: self.adapter.getValue()}; |
||||
self.storeValue = { value: self.adapter.getValue() }; |
||||
} |
||||
self.setSelectedValue(self.storeValue.value); |
||||
self.fireEvent(BI.MultiSelectTree.EVENT_CHANGE); |
||||
self.fireEvent(MultiSelectTree.EVENT_CHANGE); |
||||
}); |
||||
|
||||
// 搜索中的时候用的是parttree,同adapter中的synctree不一样
|
||||
this.searcherPane = BI.createWidget({ |
||||
this.searcherPane = createWidget({ |
||||
type: "bi.multi_tree_search_pane", |
||||
cls: "bi-border-left bi-border-right bi-border-bottom", |
||||
keywordGetter: function () { |
||||
keywordGetter() { |
||||
return self.searcher.getKeyword(); |
||||
}, |
||||
itemsCreator: function (op, callback) { |
||||
itemsCreator(op, callback) { |
||||
op.keyword = self.searcher.getKeyword(); |
||||
o.itemsCreator(op, callback); |
||||
} |
||||
}, |
||||
}); |
||||
this.searcherPane.setVisible(false); |
||||
|
||||
this.searcher = BI.createWidget({ |
||||
type: "bi.searcher", |
||||
this.searcher = createWidget({ |
||||
type: Searcher.xtype, |
||||
isAutoSearch: false, |
||||
isAutoSync: false, |
||||
onSearch: function (op, callback) { |
||||
onSearch(op, callback) { |
||||
callback({ |
||||
keyword: self.searcher.getKeyword() |
||||
keyword: self.searcher.getKeyword(), |
||||
}); |
||||
}, |
||||
adapter: this.adapter, |
||||
popup: this.searcherPane, |
||||
masker: false, |
||||
listeners: [{ |
||||
eventName: BI.Searcher.EVENT_START, |
||||
action: function () { |
||||
self._showSearcherPane(); |
||||
// self.storeValue = {value: self.adapter.getValue()};
|
||||
// self.searcherPane.setSelectedValue(self.storeValue.value);
|
||||
} |
||||
}, { |
||||
eventName: BI.Searcher.EVENT_STOP, |
||||
action: function () { |
||||
self._showAdapter(); |
||||
// self.storeValue = {value: self.searcherPane.getValue()};
|
||||
// self.adapter.setSelectedValue(self.storeValue.value);
|
||||
BI.nextTick(function () { |
||||
self.adapter.populate(); |
||||
}); |
||||
} |
||||
}, { |
||||
eventName: BI.Searcher.EVENT_CHANGE, |
||||
action: function () { |
||||
if (self.searcher.isSearching()) { |
||||
self.storeValue = {value: self.searcherPane.getValue()}; |
||||
} else { |
||||
self.storeValue = {value: self.adapter.getValue()}; |
||||
} |
||||
self.setSelectedValue(self.storeValue.value); |
||||
self.fireEvent(BI.MultiSelectTree.EVENT_CHANGE); |
||||
listeners: [ |
||||
{ |
||||
eventName: Searcher.EVENT_START, |
||||
action() { |
||||
self._showSearcherPane(); |
||||
// self.storeValue = {value: self.adapter.getValue()};
|
||||
// self.searcherPane.setSelectedValue(self.storeValue.value);
|
||||
}, |
||||
}, |
||||
{ |
||||
eventName: Searcher.EVENT_STOP, |
||||
action() { |
||||
self._showAdapter(); |
||||
// self.storeValue = {value: self.searcherPane.getValue()};
|
||||
// self.adapter.setSelectedValue(self.storeValue.value);
|
||||
nextTick(() => { |
||||
self.adapter.populate(); |
||||
}); |
||||
}, |
||||
}, |
||||
{ |
||||
eventName: Searcher.EVENT_CHANGE, |
||||
action() { |
||||
if (self.searcher.isSearching()) { |
||||
self.storeValue = { |
||||
value: self.searcherPane.getValue(), |
||||
}; |
||||
} else { |
||||
self.storeValue = { |
||||
value: self.adapter.getValue(), |
||||
}; |
||||
} |
||||
self.setSelectedValue(self.storeValue.value); |
||||
self.fireEvent(MultiSelectTree.EVENT_CHANGE); |
||||
}, |
||||
}, |
||||
{ |
||||
eventName: Searcher.EVENT_PAUSE, |
||||
action() { |
||||
self._showAdapter(); |
||||
// BI-64732 pause 和stop一致, 都应该刷新adapter
|
||||
nextTick(() => { |
||||
self.adapter.populate(); |
||||
}); |
||||
}, |
||||
} |
||||
}, { |
||||
eventName: BI.Searcher.EVENT_PAUSE, |
||||
action: function () { |
||||
self._showAdapter(); |
||||
// BI-64732 pause 和stop一致, 都应该刷新adapter
|
||||
BI.nextTick(function () { |
||||
self.adapter.populate(); |
||||
}); |
||||
} |
||||
}] |
||||
], |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
createWidget({ |
||||
type: "bi.vertical_fill", |
||||
element: this, |
||||
items: [{ |
||||
el: this.searcher, |
||||
height: "" |
||||
}, { |
||||
el: this.adapter, |
||||
height: "fill" |
||||
}] |
||||
items: [ |
||||
{ |
||||
el: this.searcher, |
||||
height: "", |
||||
}, |
||||
{ |
||||
el: this.adapter, |
||||
height: "fill", |
||||
} |
||||
], |
||||
}); |
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
createWidget({ |
||||
type: AbsoluteLayout.xtype, |
||||
element: this, |
||||
items: [{ |
||||
el: this.searcherPane, |
||||
top: this._constant.EDITOR_HEIGHT, |
||||
bottom: 0, |
||||
left: 0, |
||||
right: 0 |
||||
}] |
||||
items: [ |
||||
{ |
||||
el: this.searcherPane, |
||||
top: this._constant.EDITOR_HEIGHT, |
||||
bottom: 0, |
||||
left: 0, |
||||
right: 0, |
||||
} |
||||
], |
||||
}); |
||||
} |
||||
|
||||
}, |
||||
|
||||
_showAdapter: function () { |
||||
_showAdapter() { |
||||
this.adapter.setVisible(true); |
||||
this.searcherPane.setVisible(false); |
||||
}, |
||||
} |
||||
|
||||
_showSearcherPane: function () { |
||||
_showSearcherPane() { |
||||
this.searcherPane.setVisible(true); |
||||
this.adapter.setVisible(false); |
||||
}, |
||||
|
||||
resize: function () { |
||||
} |
||||
|
||||
}, |
||||
resize() { |
||||
} |
||||
|
||||
setSelectedValue: function (v) { |
||||
setSelectedValue(v) { |
||||
this.storeValue.value = v || {}; |
||||
this.adapter.setSelectedValue(v); |
||||
this.searcherPane.setSelectedValue(v); |
||||
this.searcher.setValue({ |
||||
value: v || {} |
||||
value: v || {}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
this.adapter.setValue(v); |
||||
}, |
||||
} |
||||
|
||||
stopSearch: function () { |
||||
stopSearch() { |
||||
this.searcher.stopSearch(); |
||||
}, |
||||
} |
||||
|
||||
updateValue: function (v) { |
||||
updateValue(v) { |
||||
this.adapter.updateValue(v); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.storeValue.value; |
||||
}, |
||||
} |
||||
|
||||
populate: function () { |
||||
populate() { |
||||
this.adapter.populate(); |
||||
} |
||||
}); |
||||
BI.MultiSelectTree.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.multi_select_tree", BI.MultiSelectTree); |
||||
} |
||||
|
@ -1,58 +1,63 @@
|
||||
/** |
||||
* Created by zcf on 2016/12/21. |
||||
*/ |
||||
BI.MultiSelectTreePopup = BI.inherit(BI.Widget, { |
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiSelectTreePopup.superclass._defaultConfig.apply(this, arguments), { |
||||
baseCls: "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom", |
||||
itemsCreator: BI.emptyFn |
||||
import { shortcut, Widget, extend, emptyFn, createWidget } from "@/core"; |
||||
import { TreeView, Asynctree } from "@/case"; |
||||
|
||||
@shortcut() |
||||
export class MultiSelectTreePopup extends Widget { |
||||
static xtype = "bi.multi_select_tree_popup"; |
||||
|
||||
static EVENT_AFTER_INIT = "EVENT_AFTER_INIT"; |
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: |
||||
"bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom", |
||||
itemsCreator: emptyFn, |
||||
}); |
||||
}, |
||||
_init: function () { |
||||
BI.MultiSelectTreePopup.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
this.popup = BI.createWidget({ |
||||
type: "bi.async_tree", |
||||
} |
||||
|
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
this.popup = createWidget({ |
||||
type: Asynctree.xtype, |
||||
showLine: o.showLine, |
||||
element: this, |
||||
itemsCreator: o.itemsCreator |
||||
itemsCreator: o.itemsCreator, |
||||
}); |
||||
this.popup.on(BI.TreeView.EVENT_AFTERINIT, function () { |
||||
self.fireEvent(BI.MultiSelectTreePopup.EVENT_AFTER_INIT); |
||||
this.popup.on(TreeView.EVENT_AFTERINIT, () => { |
||||
self.fireEvent(MultiSelectTreePopup.EVENT_AFTER_INIT); |
||||
}); |
||||
this.popup.on(BI.TreeView.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.MultiSelectTreePopup.EVENT_CHANGE); |
||||
this.popup.on(TreeView.EVENT_CHANGE, () => { |
||||
self.fireEvent(MultiSelectTreePopup.EVENT_CHANGE); |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
hasChecked: function () { |
||||
hasChecked() { |
||||
return this.popup.hasChecked(); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.popup.getValue(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
v || (v = {}); |
||||
this.popup.setValue(v); |
||||
}, |
||||
} |
||||
|
||||
setSelectedValue: function (v) { |
||||
setSelectedValue(v) { |
||||
v || (v = {}); |
||||
this.popup.setSelectedValue(v); |
||||
}, |
||||
} |
||||
|
||||
updateValue: function (v) { |
||||
updateValue(v) { |
||||
this.popup.updateValue(v); |
||||
this.popup.refresh(); |
||||
}, |
||||
} |
||||
|
||||
populate: function (config) { |
||||
populate(config) { |
||||
this.popup.stroke(config); |
||||
} |
||||
|
||||
}); |
||||
BI.MultiSelectTreePopup.EVENT_AFTER_INIT = "EVENT_AFTER_INIT"; |
||||
BI.MultiSelectTreePopup.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.multi_select_tree_popup", BI.MultiSelectTreePopup); |
||||
} |
||||
|
@ -1,121 +1,128 @@
|
||||
/** |
||||
* |
||||
* @class BI.MultiTreeCheckPane |
||||
* @extends BI.Pane |
||||
*/ |
||||
BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { |
||||
|
||||
constants: { |
||||
height: 25, |
||||
lgap: 10, |
||||
tgap: 5 |
||||
}, |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiTreeCheckPane.superclass._defaultConfig.apply(this, arguments), { |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
i18nText, |
||||
nextTick, |
||||
Events, |
||||
VerticalAdaptLayout, VTapeLayout |
||||
} from "@/core"; |
||||
import { Pane, TextButton, Label } from "@/base"; |
||||
import { DisplayTree, TreeView } from "@/case"; |
||||
|
||||
@shortcut() |
||||
export class MultiTreeCheckPane extends Pane { |
||||
static xtype = "bi.multi_tree_check_pane"; |
||||
|
||||
constants = { height: 25, lgap: 10, tgap: 5 }; |
||||
|
||||
static EVENT_CONTINUE_CLICK = "EVENT_CONTINUE_CLICK"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-tree-check-pane bi-background", |
||||
onClickContinueSelect: BI.emptyFn, |
||||
onClickContinueSelect: emptyFn, |
||||
el: { |
||||
type: "bi.display_tree" |
||||
} |
||||
type: DisplayTree.xtype, |
||||
}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiTreeCheckPane.superclass._init.apply(this, arguments); |
||||
_init() { |
||||
super._init(...arguments); |
||||
|
||||
var self = this, opts = this.options; |
||||
const self = this, |
||||
opts = this.options; |
||||
|
||||
this.selectedValues = {}; |
||||
|
||||
var continueSelect = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
title: BI.i18nText("BI-Continue_Select"), |
||||
text: BI.i18nText("BI-Continue_Select"), |
||||
cls: "multi-tree-check-selected" |
||||
const continueSelect = createWidget({ |
||||
type: TextButton.xtype, |
||||
title: i18nText("BI-Continue_Select"), |
||||
text: i18nText("BI-Continue_Select"), |
||||
cls: "multi-tree-check-selected", |
||||
}); |
||||
continueSelect.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
continueSelect.on(TextButton.EVENT_CHANGE, () => { |
||||
opts.onClickContinueSelect(); |
||||
BI.nextTick(function () { |
||||
nextTick(() => { |
||||
self.empty(); |
||||
}); |
||||
}); |
||||
|
||||
var backToPopup = BI.createWidget({ |
||||
type: "bi.vertical_adapt", |
||||
const backToPopup = createWidget({ |
||||
type: VerticalAdaptLayout.xtype, |
||||
columnSize: ["auto", "auto"], |
||||
cls: "multi-tree-continue-select", |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: "bi.label", |
||||
title: BI.i18nText("BI-Selected_Data"), |
||||
text: BI.i18nText("BI-Selected_Data") |
||||
type: Label.xtype, |
||||
title: i18nText("BI-Selected_Data"), |
||||
text: i18nText("BI-Selected_Data"), |
||||
}, |
||||
lgap: this.constants.lgap, |
||||
tgap: this.constants.tgap |
||||
tgap: this.constants.tgap, |
||||
}, |
||||
{ |
||||
el: continueSelect, |
||||
hgap: this.constants.lgap, |
||||
tgap: this.constants.tgap |
||||
}] |
||||
tgap: this.constants.tgap, |
||||
} |
||||
], |
||||
}); |
||||
|
||||
this.display = BI.createWidget(opts.el, { |
||||
type: "bi.display_tree", |
||||
this.display = createWidget(opts.el, { |
||||
type: DisplayTree.xtype, |
||||
cls: "bi-multi-tree-display", |
||||
itemsCreator: function (op, callback) { |
||||
op.type = BI.TreeView.REQ_TYPE_GET_SELECTED_DATA; |
||||
itemsCreator(op, callback) { |
||||
op.type = TreeView.REQ_TYPE_GET_SELECTED_DATA; |
||||
opts.itemsCreator(op, callback); |
||||
}, |
||||
value: (opts.value || {}).value |
||||
value: (opts.value || {}).value, |
||||
}); |
||||
|
||||
this.display.on(BI.Events.AFTERINIT, function () { |
||||
self.fireEvent(BI.Events.AFTERINIT); |
||||
this.display.on(Events.AFTERINIT, () => { |
||||
self.fireEvent(Events.AFTERINIT); |
||||
}); |
||||
|
||||
this.display.on(BI.TreeView.EVENT_INIT, function () { |
||||
this.display.on(TreeView.EVENT_INIT, () => { |
||||
backToPopup.setVisible(false); |
||||
}); |
||||
|
||||
this.display.on(BI.TreeView.EVENT_AFTERINIT, function () { |
||||
this.display.on(TreeView.EVENT_AFTERINIT, () => { |
||||
backToPopup.setVisible(true); |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.vtape", |
||||
createWidget({ |
||||
type: VTapeLayout.xtype, |
||||
element: this, |
||||
items: [{ |
||||
height: this.constants.height, |
||||
el: backToPopup |
||||
}, { |
||||
height: "fill", |
||||
el: this.display |
||||
}] |
||||
items: [ |
||||
{ |
||||
height: this.constants.height, |
||||
el: backToPopup, |
||||
}, |
||||
{ |
||||
height: "fill", |
||||
el: this.display, |
||||
} |
||||
], |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
empty: function () { |
||||
empty() { |
||||
this.display.empty(); |
||||
}, |
||||
} |
||||
|
||||
populate: function (configs) { |
||||
populate(configs) { |
||||
this.display.stroke(configs); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
v || (v = {}); |
||||
this.display.setSelectedValue(v.value); |
||||
}, |
||||
|
||||
getValue: function () { |
||||
|
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreeCheckPane.EVENT_CONTINUE_CLICK = "EVENT_CONTINUE_CLICK"; |
||||
|
||||
|
||||
BI.shortcut("bi.multi_tree_check_pane", BI.MultiTreeCheckPane); |
||||
getValue() { |
||||
} |
||||
} |
||||
|
@ -1,106 +1,108 @@
|
||||
/** |
||||
* 带加载的多选下拉面板 |
||||
* @class BI.MultiTreePopup |
||||
* @extends BI.Pane |
||||
*/ |
||||
BI.MultiTreePopup = BI.inherit(BI.Pane, { |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiTreePopup.superclass._defaultConfig.apply(this, arguments), { |
||||
import { shortcut, extend, emptyFn, createWidget, i18nText } from "@/core"; |
||||
import { Pane } from "@/base"; |
||||
import { Asynctree, MultiPopupView, TreeView } from "@/case"; |
||||
|
||||
@shortcut() |
||||
export class MultiTreePopup extends Pane { |
||||
static xtype = "bi.multi_tree_popup_view"; |
||||
|
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
static EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; |
||||
static EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; |
||||
static EVENT_AFTERINIT = "EVENT_AFTERINIT"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-tree-popup", |
||||
maxWidth: "auto", |
||||
minWidth: 140, |
||||
maxHeight: 400, |
||||
onLoaded: BI.emptyFn, |
||||
onLoaded: emptyFn, |
||||
el: { |
||||
type: "bi.async_tree" |
||||
} |
||||
type: Asynctree.xtype, |
||||
}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiTreePopup.superclass._init.apply(this, arguments); |
||||
_init() { |
||||
super._init(...arguments); |
||||
|
||||
var self = this, opts = this.options, v = opts.value; |
||||
const self = this, |
||||
opts = this.options, |
||||
v = opts.value; |
||||
|
||||
this.selectedValues = {}; |
||||
|
||||
this.tree = BI.createWidget(opts.el, { |
||||
type: "bi.async_tree", |
||||
this.tree = createWidget(opts.el, { |
||||
type: Asynctree.xtype, |
||||
showLine: opts.showLine, |
||||
height: 400, |
||||
cls: "popup-view-tree", |
||||
itemsCreator: opts.itemsCreator, |
||||
onLoaded: opts.onLoaded, |
||||
value: v.value || {} |
||||
value: v.value || {}, |
||||
}); |
||||
|
||||
this.popupView = BI.createWidget({ |
||||
type: "bi.multi_popup_view", |
||||
this.popupView = createWidget({ |
||||
type: MultiPopupView.xtype, |
||||
element: this, |
||||
stopPropagation: false, |
||||
maxWidth: opts.maxWidth, |
||||
minWidth: opts.minWidth, |
||||
maxHeight: opts.maxHeight, |
||||
buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_OK")], |
||||
el: this.tree |
||||
buttons: [i18nText("BI-Basic_Clears"), i18nText("BI-Basic_OK")], |
||||
el: this.tree, |
||||
}); |
||||
|
||||
this.popupView.on(BI.MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, function (index) { |
||||
switch (index) { |
||||
this.popupView.on( |
||||
MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, |
||||
index => { |
||||
switch (index) { |
||||
case 0: |
||||
self.fireEvent(BI.MultiTreePopup.EVENT_CLICK_CLEAR); |
||||
self.fireEvent(MultiTreePopup.EVENT_CLICK_CLEAR); |
||||
break; |
||||
case 1: |
||||
self.fireEvent(BI.MultiTreePopup.EVENT_CLICK_CONFIRM); |
||||
self.fireEvent(MultiTreePopup.EVENT_CLICK_CONFIRM); |
||||
break; |
||||
} |
||||
} |
||||
}); |
||||
); |
||||
|
||||
this.tree.on(BI.TreeView.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.MultiTreePopup.EVENT_CHANGE); |
||||
this.tree.on(TreeView.EVENT_CHANGE, () => { |
||||
self.fireEvent(MultiTreePopup.EVENT_CHANGE); |
||||
}); |
||||
|
||||
this.tree.on(BI.TreeView.EVENT_AFTERINIT, function () { |
||||
self.fireEvent(BI.MultiTreePopup.EVENT_AFTERINIT); |
||||
this.tree.on(TreeView.EVENT_AFTERINIT, () => { |
||||
self.fireEvent(MultiTreePopup.EVENT_AFTERINIT); |
||||
}); |
||||
} |
||||
|
||||
}, |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.tree.getValue(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
v || (v = {}); |
||||
this.tree.setSelectedValue(v.value); |
||||
}, |
||||
} |
||||
|
||||
populate: function (config) { |
||||
populate(config) { |
||||
this.tree.stroke(config); |
||||
}, |
||||
} |
||||
|
||||
hasChecked: function () { |
||||
hasChecked() { |
||||
return this.tree.hasChecked(); |
||||
}, |
||||
} |
||||
|
||||
setDirection: function (direction, position) { |
||||
setDirection(direction, position) { |
||||
this.popupView.setDirection(direction, position); |
||||
}, |
||||
} |
||||
|
||||
resetHeight: function (h) { |
||||
resetHeight(h) { |
||||
this.popupView.resetHeight(h); |
||||
}, |
||||
} |
||||
|
||||
resetWidth: function (w) { |
||||
resetWidth(w) { |
||||
this.popupView.resetWidth(w); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreePopup.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.MultiTreePopup.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; |
||||
BI.MultiTreePopup.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; |
||||
BI.MultiTreePopup.EVENT_AFTERINIT = "EVENT_AFTERINIT"; |
||||
|
||||
|
||||
BI.shortcut("bi.multi_tree_popup_view", BI.MultiTreePopup); |
||||
} |
||||
|
@ -1,67 +1,80 @@
|
||||
/** |
||||
* 查看已选按钮 |
||||
* Created by guy on 15/11/3. |
||||
* @class BI.MultiTreeCheckSelectedButton |
||||
* @extends BI.Single |
||||
*/ |
||||
BI.MultiTreeCheckSelectedButton = BI.inherit(BI.Single, { |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
i18nText, |
||||
Controller, |
||||
size |
||||
} from "@/core"; |
||||
import { Single, TextButton, IconButton } from "@/base"; |
||||
import { MultiSelectCheckSelectedButton } from "../../multiselect/trigger/button.checkselected"; |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiTreeCheckSelectedButton.superclass._defaultConfig.apply(this, arguments), { |
||||
@shortcut() |
||||
export class MultiTreeCheckSelectedButton extends Single { |
||||
static xtype = "bi.multi_tree_check_selected_button"; |
||||
|
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-tree-check-selected-button", |
||||
itemsCreator: BI.emptyFn |
||||
itemsCreator: emptyFn, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiTreeCheckSelectedButton.superclass._init.apply(this, arguments); |
||||
var self = this; |
||||
this.indicator = BI.createWidget({ |
||||
type: "bi.icon_button", |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this; |
||||
this.indicator = createWidget({ |
||||
type: IconButton.xtype, |
||||
cls: "check-font trigger-check-selected icon-size-12", |
||||
width: 16, |
||||
height: 16, |
||||
stopPropagation: true |
||||
stopPropagation: true, |
||||
}); |
||||
|
||||
this.checkSelected = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
this.checkSelected = createWidget({ |
||||
type: TextButton.xtype, |
||||
cls: "bi-high-light-background trigger-check-text", |
||||
invisible: true, |
||||
hgap: 4, |
||||
text: BI.i18nText("BI-Check_Selected"), |
||||
text: i18nText("BI-Check_Selected"), |
||||
textAlign: "center", |
||||
}); |
||||
this.checkSelected.on(BI.Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
this.checkSelected.on(Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
|
||||
this.checkSelected.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.MultiSelectCheckSelectedButton.EVENT_CHANGE, arguments); |
||||
this.checkSelected.on(TextButton.EVENT_CHANGE, function () { |
||||
self.fireEvent( |
||||
MultiSelectCheckSelectedButton.EVENT_CHANGE, |
||||
arguments |
||||
); |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
createWidget({ |
||||
type: "bi.horizontal", |
||||
element: this, |
||||
items: [this.indicator, this.checkSelected] |
||||
items: [this.indicator, this.checkSelected], |
||||
}); |
||||
|
||||
this.element.hover(function () { |
||||
self.indicator.setVisible(false); |
||||
self.checkSelected.setVisible(true); |
||||
}, function () { |
||||
self.indicator.setVisible(true); |
||||
self.checkSelected.setVisible(false); |
||||
}); |
||||
this.element.hover( |
||||
() => { |
||||
self.indicator.setVisible(false); |
||||
self.checkSelected.setVisible(true); |
||||
}, |
||||
() => { |
||||
self.indicator.setVisible(true); |
||||
self.checkSelected.setVisible(false); |
||||
} |
||||
); |
||||
this.setVisible(false); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
v || (v = {}); |
||||
var show = BI.size(v.value) > 0; |
||||
const show = size(v.value) > 0; |
||||
this.setVisible(show); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreeCheckSelectedButton.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.multi_tree_check_selected_button", BI.MultiTreeCheckSelectedButton); |
||||
} |
||||
|
@ -1,129 +1,148 @@
|
||||
/** |
||||
* |
||||
* 在搜索框中输入文本弹出的面板 |
||||
* @class BI.MultiTreeSearchInsertPane |
||||
* @extends BI.Pane |
||||
*/ |
||||
import { |
||||
shortcut, |
||||
Widget, |
||||
i18nText, |
||||
extend, |
||||
Controller, |
||||
AbsoluteLayout, |
||||
isEmptyArray |
||||
} from "@/core"; |
||||
import { TreeView, PartTree } from "@/case"; |
||||
import { TextButton } from "@/base"; |
||||
|
||||
BI.MultiTreeSearchInsertPane = BI.inherit(BI.Widget, { |
||||
@shortcut() |
||||
export class MultiTreeSearchInsertPane extends Widget { |
||||
static xtype = "bi.multi_tree_search_insert_pane"; |
||||
|
||||
constants: { |
||||
height: 24, |
||||
}, |
||||
|
||||
props: { |
||||
props = { |
||||
baseCls: "bi-multi-tree-search-insert-pane bi-card", |
||||
itemsCreator: BI.emptyFn, |
||||
keywordGetter: BI.emptyFn, |
||||
el: { |
||||
type: "bi.part_tree" |
||||
} |
||||
}, |
||||
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: function () { |
||||
var self = this, opts = this.options; |
||||
render() { |
||||
const self = this, |
||||
opts = this.options; |
||||
|
||||
return { |
||||
type: "bi.absolute", |
||||
type: AbsoluteLayout.xtype, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: "bi.text_button", |
||||
type: TextButton.xtype, |
||||
invisible: true, |
||||
ref: function (_ref) { |
||||
ref(_ref) { |
||||
self.addTip = _ref; |
||||
}, |
||||
text: BI.i18nText("BI-Basic_Click_To_Add_Text", ""), |
||||
text: i18nText("BI-Basic_Click_To_Add_Text", ""), |
||||
height: this.constants.height, |
||||
cls: "bi-high-light", |
||||
handler: function () { |
||||
self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM, opts.keywordGetter()); |
||||
} |
||||
handler() { |
||||
self.fireEvent( |
||||
MultiTreeSearchInsertPane.EVENT_ADD_ITEM, |
||||
opts.keywordGetter() |
||||
); |
||||
}, |
||||
}, |
||||
top: 5, |
||||
left: 0, |
||||
right: 0 |
||||
}, { |
||||
el: BI.extend({ |
||||
type: "bi.part_tree", |
||||
tipText: BI.i18nText("BI-No_Select"), |
||||
itemsCreator: function (op, callback) { |
||||
op.keyword = opts.keywordGetter(); |
||||
opts.itemsCreator(op, function (res) { |
||||
callback(res); |
||||
self.setKeyword(opts.keywordGetter(), res.items); |
||||
}); |
||||
}, |
||||
ref: function (_ref) { |
||||
self.partTree = _ref; |
||||
}, |
||||
value: opts.value, |
||||
listeners: [ |
||||
{ |
||||
eventName: BI.Controller.EVENT_CHANGE, |
||||
action: function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
} |
||||
}, { |
||||
eventName: BI.TreeView.EVENT_CHANGE, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_CHANGE); |
||||
} |
||||
}, { |
||||
eventName: BI.PartTree.EVENT_CLICK_TREE_NODE, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE); |
||||
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), |
||||
], |
||||
}, |
||||
opts.el |
||||
), |
||||
left: 0, |
||||
top: 0, |
||||
bottom: 0, |
||||
right: 0 |
||||
right: 0, |
||||
} |
||||
] |
||||
], |
||||
}; |
||||
}, |
||||
} |
||||
|
||||
setKeyword: function (keyword, nodes) { |
||||
var isAddTipVisible = BI.isEmptyArray(nodes); |
||||
setKeyword(keyword, nodes) { |
||||
const isAddTipVisible = isEmptyArray(nodes); |
||||
this.addTip.setVisible(isAddTipVisible); |
||||
this.partTree.setVisible(!isAddTipVisible); |
||||
isAddTipVisible && this.addTip.setText(BI.i18nText("BI-Basic_Click_To_Add_Text", keyword)); |
||||
}, |
||||
isAddTipVisible && |
||||
this.addTip.setText( |
||||
i18nText("BI-Basic_Click_To_Add_Text", keyword) |
||||
); |
||||
} |
||||
|
||||
hasChecked: function () { |
||||
hasChecked() { |
||||
return this.partTree.hasChecked(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
this.setSelectedValue(v.value); |
||||
}, |
||||
} |
||||
|
||||
setSelectedValue: function (v) { |
||||
setSelectedValue(v) { |
||||
v || (v = {}); |
||||
this.partTree.setSelectedValue(v); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.partTree.getValue(); |
||||
}, |
||||
} |
||||
|
||||
empty: function () { |
||||
empty() { |
||||
this.partTree.empty(); |
||||
}, |
||||
|
||||
populate: function (op) { |
||||
this.partTree.stroke.apply(this.partTree, arguments); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreeSearchInsertPane.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
BI.MultiTreeSearchInsertPane.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; |
||||
BI.MultiTreeSearchInsertPane.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; |
||||
BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM = "EVENT_ADD_ITEM"; |
||||
BI.MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; |
||||
|
||||
BI.shortcut("bi.multi_tree_search_insert_pane", BI.MultiTreeSearchInsertPane); |
||||
populate(op) { |
||||
this.partTree.stroke(...arguments); |
||||
} |
||||
} |
||||
|
@ -1,84 +1,84 @@
|
||||
/** |
||||
* |
||||
* 在搜索框中输入文本弹出的面板 |
||||
* @class BI.MultiTreeSearchPane |
||||
* @extends BI.Pane |
||||
*/ |
||||
import { shortcut, extend, i18nText, Controller } from "@/core"; |
||||
import { Pane } from "@/base"; |
||||
import { TreeView, PartTree } from "@/case"; |
||||
|
||||
BI.MultiTreeSearchPane = BI.inherit(BI.Pane, { |
||||
@shortcut() |
||||
export class MultiTreeSearchPane extends Pane { |
||||
static xtype = "bi.multi_tree_search_pane"; |
||||
|
||||
props: { |
||||
baseCls: "bi-multi-tree-search-pane bi-card", |
||||
itemsCreator: BI.emptyFn, |
||||
keywordGetter: BI.emptyFn |
||||
}, |
||||
props = { baseCls: "bi-multi-tree-search-pane bi-card" }; |
||||
|
||||
render: function () { |
||||
var self = this, opts = this.options; |
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
static EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; |
||||
static EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; |
||||
static EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; |
||||
|
||||
return BI.extend({ |
||||
type: "bi.part_tree", |
||||
element: this, |
||||
tipText: BI.i18nText("BI-No_Select"), |
||||
itemsCreator: function (op, callback) { |
||||
op.keyword = opts.keywordGetter(); |
||||
opts.itemsCreator(op, callback); |
||||
}, |
||||
value: opts.value, |
||||
listeners: [ |
||||
{ |
||||
eventName: BI.Controller.EVENT_CHANGE, |
||||
action: function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
} |
||||
}, { |
||||
eventName: BI.TreeView.EVENT_CHANGE, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiTreeSearchPane.EVENT_CHANGE); |
||||
} |
||||
}, { |
||||
eventName: BI.PartTree.EVENT_CLICK_TREE_NODE, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE); |
||||
render() { |
||||
const self = this, |
||||
opts = this.options; |
||||
|
||||
return extend( |
||||
{ |
||||
type: PartTree.xtype, |
||||
element: this, |
||||
tipText: i18nText("BI-No_Select"), |
||||
itemsCreator(op, callback) { |
||||
op.keyword = opts.keywordGetter(); |
||||
opts.itemsCreator(op, callback); |
||||
}, |
||||
value: opts.value, |
||||
listeners: [ |
||||
{ |
||||
eventName: Controller.EVENT_CHANGE, |
||||
action() { |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}, |
||||
}, |
||||
{ |
||||
eventName: TreeView.EVENT_CHANGE, |
||||
action() { |
||||
self.fireEvent(MultiTreeSearchPane.EVENT_CHANGE); |
||||
}, |
||||
}, |
||||
{ |
||||
eventName: PartTree.EVENT_CLICK_TREE_NODE, |
||||
action() { |
||||
self.fireEvent( |
||||
MultiTreeSearchPane.EVENT_CLICK_TREE_NODE |
||||
); |
||||
}, |
||||
} |
||||
} |
||||
], |
||||
ref: function (_ref) { |
||||
self.partTree = _ref; |
||||
} |
||||
}, opts.el); |
||||
}, |
||||
], |
||||
ref(_ref) { |
||||
self.partTree = _ref; |
||||
}, |
||||
}, |
||||
opts.el |
||||
); |
||||
} |
||||
|
||||
hasChecked: function () { |
||||
hasChecked() { |
||||
return this.partTree.hasChecked(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
setValue(v) { |
||||
this.setSelectedValue(v.value); |
||||
}, |
||||
} |
||||
|
||||
setSelectedValue: function (v) { |
||||
setSelectedValue(v) { |
||||
v || (v = {}); |
||||
this.partTree.setSelectedValue(v); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.partTree.getValue(); |
||||
}, |
||||
} |
||||
|
||||
empty: function () { |
||||
empty() { |
||||
this.partTree.empty(); |
||||
}, |
||||
|
||||
populate: function (op) { |
||||
this.partTree.stroke.apply(this.partTree, arguments); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreeSearchPane.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
BI.MultiTreeSearchPane.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; |
||||
BI.MultiTreeSearchPane.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; |
||||
BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; |
||||
|
||||
BI.shortcut("bi.multi_tree_search_pane", BI.MultiTreeSearchPane); |
||||
populate(op) { |
||||
this.partTree.stroke(...arguments); |
||||
} |
||||
} |
||||
|
@ -1,220 +1,260 @@
|
||||
/** |
||||
* searcher |
||||
* Created by guy on 15/11/3. |
||||
* @class BI.MultiTreeSearcher |
||||
* @extends Widget |
||||
*/ |
||||
BI.MultiTreeSearcher = BI.inherit(BI.Widget, { |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.MultiTreeSearcher.superclass._defaultConfig.apply(this, arguments), { |
||||
import { |
||||
shortcut, |
||||
Widget, |
||||
extend, |
||||
emptyFn, |
||||
createWidget, |
||||
isNotNull, |
||||
isNumber, |
||||
size, |
||||
keys, |
||||
each, |
||||
isEmptyObject, Func |
||||
} from "@/core"; |
||||
import { MultiSelectEditor } from "../../multiselect/trigger/editor.multiselect"; |
||||
import { MultiSelectSearcher } from "../../multiselect/trigger/searcher.multiselect"; |
||||
import { MultiTreeSearchPane } from "multi.tree.search.pane"; |
||||
import { Searcher } from "@/base"; |
||||
import { SimpleStateEditor } from "@/case"; |
||||
|
||||
@shortcut() |
||||
export class MultiTreeSearcher extends Widget { |
||||
static xtype = "bi.multi_tree_searcher"; |
||||
|
||||
static EVENT_SEARCHING = "EVENT_SEARCHING"; |
||||
static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
static EVENT_START = "EVENT_START"; |
||||
static EVENT_STOP = "EVENT_STOP"; |
||||
static EVENT_PAUSE = "EVENT_PAUSE"; |
||||
static EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-multi-tree-searcher", |
||||
itemsCreator: BI.emptyFn, |
||||
valueFormatter: function (v) { |
||||
itemsCreator: emptyFn, |
||||
valueFormatter(v) { |
||||
return v; |
||||
}, |
||||
popup: {}, |
||||
|
||||
adapter: null, |
||||
masker: {} |
||||
masker: {}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.MultiTreeSearcher.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
this.editor = BI.createWidget({ |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
this.editor = createWidget({ |
||||
type: "bi.multi_select_editor", |
||||
watermark: o.watermark, |
||||
height: o.height, |
||||
el: { |
||||
type: "bi.simple_state_editor", |
||||
type: SimpleStateEditor.xtype, |
||||
text: o.text, |
||||
defaultText: o.defaultText, |
||||
height: o.height |
||||
height: o.height, |
||||
}, |
||||
listeners: [ |
||||
{ |
||||
eventName: BI.MultiSelectEditor.EVENT_FOCUS, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiSelectSearcher.EVENT_FOCUS); |
||||
} |
||||
}, { |
||||
eventName: BI.MultiSelectEditor.EVENT_BLUR, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiSelectSearcher.EVENT_BLUR); |
||||
} |
||||
eventName: MultiSelectEditor.EVENT_FOCUS, |
||||
action() { |
||||
self.fireEvent(MultiSelectSearcher.EVENT_FOCUS); |
||||
}, |
||||
}, |
||||
{ |
||||
eventName: MultiSelectEditor.EVENT_BLUR, |
||||
action() { |
||||
self.fireEvent(MultiSelectSearcher.EVENT_BLUR); |
||||
}, |
||||
} |
||||
] |
||||
], |
||||
}); |
||||
|
||||
this.searcher = BI.createWidget({ |
||||
type: "bi.searcher", |
||||
this.searcher = createWidget({ |
||||
type: Searcher.xtype, |
||||
element: this, |
||||
isAutoSearch: false, |
||||
isAutoSync: false, |
||||
onSearch: function (op, callback) { |
||||
onSearch(op, callback) { |
||||
callback({ |
||||
keyword: self.editor.getValue() |
||||
keyword: self.editor.getValue(), |
||||
}); |
||||
}, |
||||
el: this.editor, |
||||
|
||||
popup: BI.extend({ |
||||
type: "bi.multi_tree_search_pane", |
||||
keywordGetter: function () { |
||||
return self.editor.getValue(); |
||||
}, |
||||
itemsCreator: function (op, callback) { |
||||
op.keyword = self.editor.getValue(); |
||||
o.itemsCreator(op, callback); |
||||
}, |
||||
listeners: [ |
||||
{ |
||||
eventName: BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE, |
||||
action: function () { |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_CLICK_TREE_NODE, arguments); |
||||
popup: extend( |
||||
{ |
||||
type: MultiTreeSearchPane.xtype, |
||||
keywordGetter() { |
||||
return self.editor.getValue(); |
||||
}, |
||||
itemsCreator(op, callback) { |
||||
op.keyword = self.editor.getValue(); |
||||
o.itemsCreator(op, callback); |
||||
}, |
||||
listeners: [ |
||||
{ |
||||
eventName: |
||||
MultiTreeSearchPane.EVENT_CLICK_TREE_NODE, |
||||
action() { |
||||
self.fireEvent( |
||||
MultiTreeSearcher.EVENT_CLICK_TREE_NODE, |
||||
arguments |
||||
); |
||||
}, |
||||
} |
||||
} |
||||
], |
||||
value: o.value |
||||
}, o.popup), |
||||
], |
||||
value: o.value, |
||||
}, |
||||
o.popup |
||||
), |
||||
|
||||
adapter: o.adapter, |
||||
masker: o.masker |
||||
masker: o.masker, |
||||
}); |
||||
this.searcher.on(BI.Searcher.EVENT_START, function () { |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_START); |
||||
this.searcher.on(Searcher.EVENT_START, () => { |
||||
self.fireEvent(MultiTreeSearcher.EVENT_START); |
||||
}); |
||||
this.searcher.on(BI.Searcher.EVENT_PAUSE, function () { |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_PAUSE); |
||||
this.searcher.on(Searcher.EVENT_PAUSE, () => { |
||||
self.fireEvent(MultiTreeSearcher.EVENT_PAUSE); |
||||
}); |
||||
this.searcher.on(BI.Searcher.EVENT_STOP, function () { |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_STOP); |
||||
this.searcher.on(Searcher.EVENT_STOP, () => { |
||||
self.fireEvent(MultiTreeSearcher.EVENT_STOP); |
||||
}); |
||||
this.searcher.on(BI.Searcher.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_CHANGE, arguments); |
||||
this.searcher.on(Searcher.EVENT_CHANGE, function () { |
||||
self.fireEvent(MultiTreeSearcher.EVENT_CHANGE, arguments); |
||||
}); |
||||
this.searcher.on(BI.Searcher.EVENT_SEARCHING, function () { |
||||
var keywords = this.getKeywords(); |
||||
self.fireEvent(BI.MultiTreeSearcher.EVENT_SEARCHING, keywords); |
||||
this.searcher.on(Searcher.EVENT_SEARCHING, function () { |
||||
const keywords = this.getKeywords(); |
||||
self.fireEvent(MultiTreeSearcher.EVENT_SEARCHING, keywords); |
||||
}); |
||||
if (BI.isNotNull(o.value)) { |
||||
if (isNotNull(o.value)) { |
||||
this.setState(o.value); |
||||
} |
||||
}, |
||||
} |
||||
|
||||
adjustView: function () { |
||||
adjustView() { |
||||
this.searcher.adjustView(); |
||||
}, |
||||
} |
||||
|
||||
setAdapter: function (adapter) { |
||||
setAdapter(adapter) { |
||||
this.searcher.setAdapter(adapter); |
||||
}, |
||||
} |
||||
|
||||
isSearching: function () { |
||||
isSearching() { |
||||
return this.searcher.isSearching(); |
||||
}, |
||||
} |
||||
|
||||
stopSearch: function () { |
||||
stopSearch() { |
||||
this.searcher.stopSearch(); |
||||
}, |
||||
} |
||||
|
||||
getKeyword: function () { |
||||
getKeyword() { |
||||
return this.editor.getValue(); |
||||
}, |
||||
} |
||||
|
||||
hasMatched: function () { |
||||
hasMatched() { |
||||
return this.searcher.hasMatched(); |
||||
}, |
||||
} |
||||
|
||||
hasChecked: function () { |
||||
hasChecked() { |
||||
return this.searcher.getView() && this.searcher.getView().hasChecked(); |
||||
}, |
||||
} |
||||
|
||||
setState: function (ob) { |
||||
var o = this.options; |
||||
setState(ob) { |
||||
const o = this.options; |
||||
ob || (ob = {}); |
||||
ob.value || (ob.value = {}); |
||||
var count = 0; |
||||
if (BI.isNumber(ob)) { |
||||
let count = 0; |
||||
if (isNumber(ob)) { |
||||
this.editor.setState(ob); |
||||
} else if (BI.size(ob.value) === 0) { |
||||
} else if (size(ob.value) === 0) { |
||||
this.editor.setState(BI.Selection.None); |
||||
} else { |
||||
var text = ""; |
||||
var value = ob.value; |
||||
var names = BI.Func.getSortedResult(BI.keys(value)); |
||||
BI.each(names, function (idx, name) { |
||||
var childNodes = getChildrenNode(value[name]); |
||||
text += (name === "null" ? "" : (o.valueFormatter(name + "") || name)) + (childNodes === "" ? (BI.isEmptyObject(value[name]) ? "" : ":") : (":" + childNodes)) + "; "; |
||||
let text = ""; |
||||
const value = ob.value; |
||||
const names = BI.Func.getSortedResult(keys(value)); |
||||
each(names, (idx, name) => { |
||||
const childNodes = getChildrenNode(value[name]); |
||||
text += |
||||
`${(name === "null" |
||||
? "" |
||||
: o.valueFormatter(`${name}`) || name) + |
||||
(childNodes === "" |
||||
? isEmptyObject(value[name]) |
||||
? "" |
||||
: ":" |
||||
: `:${childNodes}`) |
||||
}; `;
|
||||
if (childNodes === "") { |
||||
count++; |
||||
} |
||||
}); |
||||
|
||||
if (count > 20) { |
||||
this.editor.setState(BI.Selection.Multi); |
||||
this.editor.setState(Selection.Multi); |
||||
} else { |
||||
this.editor.setState(text); |
||||
} |
||||
} |
||||
|
||||
function getChildrenNode(ob) { |
||||
var text = ""; |
||||
var index = 0, size = BI.size(ob); |
||||
var names = BI.Func.getSortedResult(BI.keys(ob)); |
||||
BI.each(names, function (idx, name) { |
||||
let text = ""; |
||||
const size = size(ob); |
||||
let index = 0; |
||||
|
||||
const names = Func.getSortedResult(keys(ob)); |
||||
each(names, (idx, name) => { |
||||
index++; |
||||
var childNodes = getChildrenNode(ob[name]); |
||||
text += (name === "null" ? "" : (o.valueFormatter(name + "") || name)) + (childNodes === "" ? "" : (":" + childNodes)) + (index === size ? "" : ","); |
||||
const childNodes = getChildrenNode(ob[name]); |
||||
text += |
||||
(name === "null" |
||||
? "" |
||||
: o.valueFormatter(`${name}`) || name) + |
||||
(childNodes === "" ? "" : `:${childNodes}`) + |
||||
(index === size ? "" : ","); |
||||
if (childNodes === "") { |
||||
count++; |
||||
} |
||||
}); |
||||
|
||||
return text; |
||||
} |
||||
}, |
||||
} |
||||
|
||||
getState: function () { |
||||
getState() { |
||||
return this.editor.getState(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (ob) { |
||||
setValue(ob) { |
||||
this.setState(ob); |
||||
this.searcher.setValue(ob); |
||||
}, |
||||
} |
||||
|
||||
getKey: function () { |
||||
getKey() { |
||||
return this.editor.getValue(); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.searcher.getValue(); |
||||
}, |
||||
} |
||||
|
||||
populate: function (items) { |
||||
this.searcher.populate.apply(this.searcher, arguments); |
||||
}, |
||||
populate(items) { |
||||
this.searcher.populate(...arguments); |
||||
} |
||||
|
||||
focus: function () { |
||||
focus() { |
||||
this.editor.focus(); |
||||
}, |
||||
} |
||||
|
||||
blur: function () { |
||||
blur() { |
||||
this.editor.blur(); |
||||
}, |
||||
} |
||||
|
||||
setWaterMark: function (v) { |
||||
setWaterMark(v) { |
||||
this.editor.setWaterMark(v); |
||||
} |
||||
}); |
||||
|
||||
BI.MultiTreeSearcher.EVENT_SEARCHING = "EVENT_SEARCHING"; |
||||
BI.MultiTreeSearcher.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
||||
BI.MultiTreeSearcher.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.MultiTreeSearcher.EVENT_START = "EVENT_START"; |
||||
BI.MultiTreeSearcher.EVENT_STOP = "EVENT_STOP"; |
||||
BI.MultiTreeSearcher.EVENT_PAUSE = "EVENT_PAUSE"; |
||||
BI.MultiTreeSearcher.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; |
||||
BI.shortcut("bi.multi_tree_searcher", BI.MultiTreeSearcher); |
||||
} |
||||
|
@ -1,77 +1,86 @@
|
||||
/** |
||||
* @class BI.SelectTreeExpander |
||||
* @extends BI.Widget |
||||
*/ |
||||
BI.SelectTreeExpander = BI.inherit(BI.Widget, { |
||||
import { |
||||
shortcut, |
||||
Widget, |
||||
extend, |
||||
createWidget, |
||||
Controller, |
||||
Events, |
||||
contains |
||||
} from "@/core"; |
||||
import { Expander } from "@/base"; |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.SelectTreeExpander.superclass._defaultConfig.apply(this, arguments), { |
||||
@shortcut() |
||||
export class SelectTreeExpander extends Widget { |
||||
static xtype = "bi.select_tree_expander"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-select-tree-expander", |
||||
trigger: "", |
||||
toggle: true, |
||||
direction: "bottom", |
||||
isDefaultInit: true, |
||||
el: {}, |
||||
popup: {} |
||||
popup: {}, |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.SelectTreeExpander.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
_init() { |
||||
super._init(...arguments); |
||||
const self = this, |
||||
o = this.options; |
||||
|
||||
this.trigger = BI.createWidget(o.el); |
||||
this.trigger.on(BI.Controller.EVENT_CHANGE, function (type) { |
||||
if (type === BI.Events.CLICK) { |
||||
this.trigger = createWidget(o.el); |
||||
this.trigger.on(Controller.EVENT_CHANGE, function (type) { |
||||
if (type === Events.CLICK) { |
||||
if (this.isSelected()) { |
||||
self.expander.setValue([]); |
||||
} |
||||
} |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
|
||||
this.expander = BI.createWidget({ |
||||
type: "bi.expander", |
||||
this.expander = createWidget({ |
||||
type: Expander.xtype, |
||||
element: this, |
||||
trigger: o.trigger, |
||||
toggle: o.toggle, |
||||
direction: o.direction, |
||||
isDefaultInit: o.isDefaultInit, |
||||
el: this.trigger, |
||||
popup: o.popup |
||||
popup: o.popup, |
||||
}); |
||||
this.expander.on(BI.Controller.EVENT_CHANGE, function (type) { |
||||
if (type === BI.Events.CLICK) { |
||||
this.expander.on(Controller.EVENT_CHANGE, function (type) { |
||||
if (type === Events.CLICK) { |
||||
self.trigger.setSelected(false); |
||||
} |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
getAllLeaves: function () { |
||||
getAllLeaves() { |
||||
return this.expander.getAllLeaves(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
if (BI.contains(v, this.trigger.getValue())) { |
||||
setValue(v) { |
||||
if (contains(v, this.trigger.getValue())) { |
||||
this.trigger.setSelected(true); |
||||
this.expander.setValue([]); |
||||
} else { |
||||
this.trigger.setSelected(false); |
||||
this.expander.setValue(v); |
||||
} |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
if (this.trigger.isSelected()) { |
||||
return [this.trigger.getValue()]; |
||||
} |
||||
|
||||
return this.expander.getValue(); |
||||
}, |
||||
} |
||||
|
||||
populate: function (items) { |
||||
populate(items) { |
||||
this.expander.populate(items); |
||||
} |
||||
}); |
||||
|
||||
BI.shortcut("bi.select_tree_expander", BI.SelectTreeExpander); |
||||
} |
||||
|
@ -1,94 +1,109 @@
|
||||
/** |
||||
* @class BI.SelectTreePopup |
||||
* @extends BI.Pane |
||||
*/ |
||||
|
||||
BI.SelectTreePopup = BI.inherit(BI.Pane, { |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.SelectTreePopup.superclass._defaultConfig.apply(this, arguments), { |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
i18nText, |
||||
each, |
||||
createWidget, |
||||
Controller, |
||||
isArray, isNotEmptyArray, UUID, defaults, Tree, VerticalLayout |
||||
} from "@/core"; |
||||
import { Pane } from "@/base"; |
||||
import { BasicTreeItem, BasicTreeNode, LevelTree, TreeExpander } from "@/case"; |
||||
|
||||
@shortcut() |
||||
export class SelectTreePopup extends Pane { |
||||
static xtype = "bi.select_level_tree"; |
||||
|
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-select-level-tree", |
||||
tipText: BI.i18nText("BI-No_Selected_Item"), |
||||
tipText: i18nText("BI-No_Selected_Item"), |
||||
items: [], |
||||
value: "" |
||||
value: "", |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_formatItems: function (nodes, layer, pNode) { |
||||
var self = this; |
||||
BI.each(nodes, function (i, node) { |
||||
var extend = { |
||||
layer: layer, |
||||
_formatItems(nodes, layer, pNode) { |
||||
const self = this; |
||||
each(nodes, (i, node) => { |
||||
const extend = { |
||||
layer, |
||||
isFirstNode: i === 0, |
||||
isLastNode: i === nodes.length - 1, |
||||
height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, |
||||
pNode: pNode, |
||||
pNode, |
||||
}; |
||||
node.id = node.id || BI.UUID(); |
||||
|
||||
if (node.isParent === true || node.parent === true || BI.isNotEmptyArray(node.children)) { |
||||
|
||||
extend.type = "bi.tree_node"; |
||||
node.id = node.id || UUID(); |
||||
|
||||
if ( |
||||
node.isParent === true || |
||||
node.parent === true || |
||||
isNotEmptyArray(node.children) |
||||
) { |
||||
extend.type = BasicTreeNode.xtype; |
||||
extend.selectable = true; |
||||
BI.defaults(node, extend); |
||||
defaults(node, extend); |
||||
self._formatItems(node.children, layer + 1, node); |
||||
} else { |
||||
extend.type = "bi.tree_item"; |
||||
BI.defaults(node, extend); |
||||
extend.type = BasicTreeItem.xtype; |
||||
defaults(node, extend); |
||||
} |
||||
}); |
||||
|
||||
return nodes; |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.SelectTreePopup.superclass._init.apply(this, arguments); |
||||
_init() { |
||||
super._init(...arguments); |
||||
|
||||
var self = this, o = this.options; |
||||
const self = this, |
||||
o = this.options; |
||||
|
||||
this.tree = BI.createWidget({ |
||||
type: "bi.level_tree", |
||||
this.tree = createWidget({ |
||||
type: LevelTree.xtype, |
||||
expander: { |
||||
type: "bi.tree_expander", |
||||
type: TreeExpander.xtype, |
||||
// isDefaultInit: true,
|
||||
selectable: true, |
||||
}, |
||||
items: this._formatItems(BI.Tree.transformToTreeFormat(o.items), 0), |
||||
items: this._formatItems(Tree.transformToTreeFormat(o.items), 0), |
||||
value: o.value, |
||||
chooseType: BI.Selection.Single |
||||
chooseType: Selection.Single, |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.vertical", |
||||
createWidget({ |
||||
type: VerticalLayout.xtype, |
||||
element: this, |
||||
vgap: 5, |
||||
items: [this.tree] |
||||
items: [this.tree], |
||||
}); |
||||
|
||||
this.tree.on(BI.Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
this.tree.on(Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
|
||||
this.tree.on(BI.LevelTree.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.SelectTreePopup.EVENT_CHANGE); |
||||
this.tree.on(LevelTree.EVENT_CHANGE, () => { |
||||
self.fireEvent(SelectTreePopup.EVENT_CHANGE); |
||||
}); |
||||
|
||||
this.check(); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.tree.getValue(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
v = BI.isArray(v) ? v : [v]; |
||||
setValue(v) { |
||||
v = isArray(v) ? v : [v]; |
||||
this.tree.setValue(v); |
||||
}, |
||||
|
||||
populate: function (items) { |
||||
BI.SelectTreePopup.superclass.populate.apply(this, arguments); |
||||
this.tree.populate(this._formatItems(BI.Tree.transformToTreeFormat(items))); |
||||
} |
||||
}); |
||||
|
||||
BI.SelectTreePopup.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.select_level_tree", BI.SelectTreePopup); |
||||
populate(items) { |
||||
super.populate(...arguments); |
||||
this.tree.populate( |
||||
this._formatItems(Tree.transformToTreeFormat(items)) |
||||
); |
||||
} |
||||
} |
||||
|
@ -1,66 +1,74 @@
|
||||
/** |
||||
* @class BI.SingleTreePopup |
||||
* @extends BI.Pane |
||||
*/ |
||||
import { |
||||
shortcut, |
||||
extend, |
||||
i18nText, |
||||
createWidget, |
||||
Controller, |
||||
isArray, VerticalLayout |
||||
} from "@/core"; |
||||
import { Pane } from "@/base"; |
||||
import { LevelTree } from "@/case"; |
||||
|
||||
BI.SingleTreePopup = BI.inherit(BI.Pane, { |
||||
@shortcut() |
||||
export class SingleTreePopup extends Pane { |
||||
static xtype = "bi.single_level_tree"; |
||||
|
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.SingleTreePopup.superclass._defaultConfig.apply(this, arguments), { |
||||
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||
|
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
baseCls: "bi-single-level-tree", |
||||
tipText: BI.i18nText("BI-No_Selected_Item"), |
||||
tipText: i18nText("BI-No_Selected_Item"), |
||||
items: [], |
||||
value: "" |
||||
value: "", |
||||
}); |
||||
}, |
||||
} |
||||
|
||||
_init: function () { |
||||
BI.SingleTreePopup.superclass._init.apply(this, arguments); |
||||
_init() { |
||||
super._init(...arguments); |
||||
|
||||
var self = this, o = this.options; |
||||
|
||||
this.tree = BI.createWidget({ |
||||
const self = this, |
||||
o = this.options; |
||||
|
||||
this.tree = createWidget({ |
||||
type: "bi.level_tree", |
||||
expander: { |
||||
isDefaultInit: true |
||||
isDefaultInit: true, |
||||
}, |
||||
items: o.items, |
||||
value: o.value, |
||||
chooseType: BI.Selection.Single |
||||
chooseType: Selection.Single, |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.vertical", |
||||
createWidget({ |
||||
type: VerticalLayout.xtype, |
||||
element: this, |
||||
vgap: 5, |
||||
items: [this.tree] |
||||
items: [this.tree], |
||||
}); |
||||
|
||||
this.tree.on(BI.Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
||||
this.tree.on(Controller.EVENT_CHANGE, function () { |
||||
self.fireEvent(Controller.EVENT_CHANGE, arguments); |
||||
}); |
||||
|
||||
this.tree.on(BI.LevelTree.EVENT_CHANGE, function () { |
||||
self.fireEvent(BI.SingleTreePopup.EVENT_CHANGE); |
||||
this.tree.on(LevelTree.EVENT_CHANGE, () => { |
||||
self.fireEvent(SingleTreePopup.EVENT_CHANGE); |
||||
}); |
||||
|
||||
this.check(); |
||||
}, |
||||
} |
||||
|
||||
getValue: function () { |
||||
getValue() { |
||||
return this.tree.getValue(); |
||||
}, |
||||
} |
||||
|
||||
setValue: function (v) { |
||||
v = BI.isArray(v) ? v : [v]; |
||||
setValue(v) { |
||||
v = isArray(v) ? v : [v]; |
||||
this.tree.setValue(v); |
||||
}, |
||||
} |
||||
|
||||
populate: function (items) { |
||||
BI.SingleTreePopup.superclass.populate.apply(this, arguments); |
||||
populate(items) { |
||||
super.populate(...arguments); |
||||
this.tree.populate(items); |
||||
} |
||||
}); |
||||
|
||||
BI.SingleTreePopup.EVENT_CHANGE = "EVENT_CHANGE"; |
||||
BI.shortcut("bi.single_level_tree", BI.SingleTreePopup); |
||||
} |
||||
|
Loading…
Reference in new issue