Browse Source

KERNEL-14101 refactor: widget/singleselect

es6
Zhenfei.Li 2 years ago
parent
commit
f32af40f0f
  1. 3
      src/widget/index.js
  2. 1
      src/widget/multiselect/index.js
  3. 9
      src/widget/singleselect/index.js
  4. 3
      src/widget/singleselect/search/index.js
  5. 177
      src/widget/singleselect/search/singleselect.search.loader.js
  6. 118
      src/widget/singleselect/search/singleselect.search.pane.insert.js
  7. 124
      src/widget/singleselect/search/singleselect.search.pane.js
  8. 315
      src/widget/singleselect/singleselect.combo.js
  9. 222
      src/widget/singleselect/singleselect.insert.combo.js
  10. 210
      src/widget/singleselect/singleselect.list.js
  11. 201
      src/widget/singleselect/singleselect.loader.js
  12. 88
      src/widget/singleselect/singleselect.popup.view.js
  13. 162
      src/widget/singleselect/singleselect.trigger.js
  14. 224
      src/widget/singleselect/singleselectlist.insert.js
  15. 102
      src/widget/singleselect/trigger/editor.singleselect.js
  16. 2
      src/widget/singleselect/trigger/index.js
  17. 187
      src/widget/singleselect/trigger/searcher.singleselect.js

3
src/widget/index.js

@ -19,6 +19,7 @@ import { NumberEditor } from "./numbereditor/number.editor";
import { NumberInterval } from "./numberinterval/numberinterval"; import { NumberInterval } from "./numberinterval/numberinterval";
import * as multiselect from "./multiselect"; import * as multiselect from "./multiselect";
import * as multiselectlist from "./multiselectlist"; import * as multiselectlist from "./multiselectlist";
import * as singleselect from "./singleselect";
Object.assign(BI, { Object.assign(BI, {
Collapse, Collapse,
@ -42,6 +43,7 @@ Object.assign(BI, {
NumberInterval, NumberInterval,
...multiselect, ...multiselect,
...multiselectlist, ...multiselectlist,
...singleselect,
}); });
export * from "./date/calendar"; export * from "./date/calendar";
@ -57,6 +59,7 @@ export * from "./multiselectlist";
export * from "./downlist"; export * from "./downlist";
export * from "./singleslider"; export * from "./singleslider";
export * from "./intervalslider"; export * from "./intervalslider";
export * from "./singleselect";
export { export {
Collapse, Collapse,

1
src/widget/multiselect/index.js

@ -2,3 +2,4 @@ export { MultiSelectCombo } from "./multiselect.combo";
export { MultiSelectNoBarCombo } from "./multiselect.combo.nobar"; export { MultiSelectNoBarCombo } from "./multiselect.combo.nobar";
export { MultiSelectInsertCombo } from "./multiselect.insert.combo"; export { MultiSelectInsertCombo } from "./multiselect.insert.combo";
export { MultiSelectInsertNoBarCombo } from "./multiselect.insert.combo.nobar"; export { MultiSelectInsertNoBarCombo } from "./multiselect.insert.combo.nobar";
export { SelectPatchEditor } from "./trigger/editor/editor.patch";

9
src/widget/singleselect/index.js

@ -0,0 +1,9 @@
export { SingleSelectCombo } from "./singleselect.combo";
export { SingleSelectInsertCombo } from "./singleselect.insert.combo";
export { SingleSelectList } from "./singleselect.list";
export { SingleSelectLoader } from "./singleselect.loader";
export { SingleSelectPopupView } from "./singleselect.popup.view";
export { SingleSelectTrigger } from "./singleselect.trigger";
export { SingleSelectInsertList } from "./singleselectlist.insert";
export * from "./trigger";
export * from "./search";

3
src/widget/singleselect/search/index.js

@ -0,0 +1,3 @@
export { SingleSelectSearchLoader } from "./singleselect.search.loader";
export { SingleSelectSearchPane } from "./singleselect.search.pane";
export { SingleSelectSearchInsertPane } from "./singleselect.search.pane.insert";

177
src/widget/singleselect/search/singleselect.search.loader.js

@ -1,73 +1,80 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, isUndefined, Controller, VerticalLayout, map, isArray, isKey, Func } from "@/core";
* 单选加载数据搜索loader面板 import { ButtonGroup, Loader } from "@/base";
* Created by guy on 15/11/4. import { SingleSelectList } from "../singleselect.list";
* @class BI.SingleSelectSearchLoader import { SingleSelectItem, SingleSelectRadioItem } from "@/case";
* @extends Widget
*/ @shortcut()
BI.SingleSelectSearchLoader = BI.inherit(BI.Widget, { export class SingleSelectSearchLoader extends Widget {
static xtype = "bi.single_select_search_loader";
_defaultConfig: function () {
return BI.extend(BI.SingleSelectSearchLoader.superclass._defaultConfig.apply(this, arguments), { static EVENT_CHANGE = "EVENT_CHANGE";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-search-loader", baseCls: "bi-single-select-search-loader",
allowNoSelect: false, allowNoSelect: false,
logic: { logic: {
dynamic: false dynamic: false,
}, },
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
keywordGetter: BI.emptyFn, keywordGetter: emptyFn,
valueFormatter: BI.emptyFn valueFormatter: emptyFn,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectSearchLoader.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, opts = this.options; const self = this,
var hasNext = false; opts = this.options;
let hasNext = false;
this.button_group = BI.createWidget({ this.button_group = createWidget({
type: "bi.single_select_list", type: SingleSelectList.xtype,
allowNoSelect: opts.allowNoSelect, allowNoSelect: opts.allowNoSelect,
element: this, element: this,
logic: { logic: {
dynamic: false dynamic: false,
}, },
value: opts.value, value: opts.value,
el: { el: {
tipText: BI.i18nText("BI-No_Select"), tipText: i18nText("BI-No_Select"),
el: { el: {
type: "bi.loader", type: Loader.xtype,
isDefaultInit: false, isDefaultInit: false,
logic: { logic: {
dynamic: true, dynamic: true,
scrolly: true scrolly: true,
}, },
el: { el: {
chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, chooseType: ButtonGroup.CHOOSE_TYPE_SINGLE,
behaviors: { behaviors: {
redmark: function () { redmark () {
return true; return true;
}
}, },
layouts: [{ },
type: "bi.vertical" layouts: [
}] {
} type: VerticalLayout.xtype,
} }
],
},
}, },
itemsCreator: function (op, callback) { },
self.storeValue && (op = BI.extend(op || {}, { itemsCreator (op, callback) {
selectedValues: [self.storeValue] self.storeValue &&
(op = extend(op || {}, {
selectedValues: [self.storeValue],
})); }));
opts.itemsCreator(op, function (ob) { opts.itemsCreator(op, ob => {
var keyword = ob.keyword = opts.keywordGetter(); const keyword = (ob.keyword = opts.keywordGetter());
hasNext = ob.hasNext; hasNext = ob.hasNext;
var firstItems = []; let firstItems = [];
if (op.times === 1 && !BI.isUndefined(self.storeValue)) { if (op.times === 1 && !isUndefined(self.storeValue)) {
var json = self._filterValues(self.storeValue); const json = self._filterValues(self.storeValue);
firstItems = self._createItems(json); firstItems = self._createItems(json);
} }
var context = { const context = {
tipText: ob.tipText, tipText: ob.tipText,
}; };
callback(firstItems.concat(self._createItems(ob.items)), keyword || "", context); callback(firstItems.concat(self._createItems(ob.items)), keyword || "", context);
@ -76,88 +83,88 @@ BI.SingleSelectSearchLoader = BI.inherit(BI.Widget, {
} }
}); });
}, },
hasNext: function () { hasNext () {
return hasNext; return hasNext;
} },
}); });
this.button_group.on(BI.Controller.EVENT_CHANGE, function () { this.button_group.on(Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
}); });
this.button_group.on(BI.SingleSelectList.EVENT_CHANGE, function () { this.button_group.on(SingleSelectList.EVENT_CHANGE, function () {
self.fireEvent(BI.SingleSelectSearchLoader.EVENT_CHANGE, arguments); self.fireEvent(SingleSelectSearchLoader.EVENT_CHANGE, arguments);
}); });
}, }
_createItems: function (items) { _createItems(items) {
var o = this.options; const o = this.options;
return BI.map(items, function (i, item) {
return BI.extend({ return map(items, (i, item) => extend(
type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item", {
type: o.allowNoSelect ? SingleSelectItem.xtype : SingleSelectRadioItem.xtype,
logic: o.logic, logic: o.logic,
cls: "bi-list-item-active", cls: "bi-list-item-active",
height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
selected: false, selected: false,
iconWrapperWidth: 26, iconWrapperWidth: 26,
hgap: o.allowNoSelect ? 10 : 0, hgap: o.allowNoSelect ? 10 : 0,
title: item.title || item.text title: item.title || item.text,
}, item);
});
}, },
item
));
}
_filterValues: function (src) { _filterValues(src) {
var o = this.options; const o = this.options;
var keyword = o.keywordGetter(); const keyword = o.keywordGetter();
var values = src || []; let values = src || [];
var newValues = BI.map(BI.isArray(values) ? values : [values], function (i, v) { const newValues = map(isArray(values) ? values : [values], (i, v) => {
return { return {
text: o.valueFormatter(v) || v, text: o.valueFormatter(v) || v,
value: v value: v,
}; };
}); });
if (BI.isKey(keyword)) { if (isKey(keyword)) {
var search = BI.Func.getSearchResult(newValues, keyword); const search = Func.getSearchResult(newValues, keyword);
values = search.match.concat(search.find); values = search.match.concat(search.find);
} }
return BI.map(values, function (i, v) {
return map(values, (i, v) => {
return { return {
text: v.text, text: v.text,
title: v.text, title: v.text,
value: v.value, value: v.value,
selected: false selected: false,
}; };
}); });
}, }
setValue: function (v) { setValue(v) {
// 暂存的值一定是新的值,不然v改掉后,storeValue也跟着改了 // 暂存的值一定是新的值,不然v改掉后,storeValue也跟着改了
this.storeValue = v; this.storeValue = v;
this.button_group.setValue(v); this.button_group.setValue(v);
}, }
getValue: function () { getValue() {
return this.button_group.getValue(); return this.button_group.getValue();
}, }
getAllButtons: function () { getAllButtons() {
return this.button_group.getAllButtons(); return this.button_group.getAllButtons();
}, }
empty: function () { empty() {
this.button_group.empty(); this.button_group.empty();
}, }
populate: function (items) { populate(items) {
this.button_group.populate.apply(this.button_group, arguments); this.button_group.populate(...arguments);
}, }
resetHeight: function (h) { resetHeight(h) {
this.button_group.resetHeight(h); this.button_group.resetHeight(h);
}, }
resetWidth: function (w) { resetWidth(w) {
this.button_group.resetWidth(w); this.button_group.resetWidth(w);
} }
}); }
BI.SingleSelectSearchLoader.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_search_loader", BI.SingleSelectSearchLoader);

118
src/widget/singleselect/search/singleselect.search.pane.insert.js

@ -1,96 +1,96 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout, VerticalLayout } from "@/core";
* import { Label } from "@/base";
* 在搜索框中输入文本弹出的面板 import { SingleSelectSearchLoader } from "./singleselect.search.loader";
* @class BI.SingleSelectSearchInsertPane
* @extends Widget
*/
BI.SingleSelectSearchInsertPane = BI.inherit(BI.Widget, { @shortcut()
export class SingleSelectSearchInsertPane extends Widget {
static xtype = "bi.single_select_search_insert_pane";
constants: { constants = { height: 25, lgap: 10, tgap: 5 };
height: 25,
lgap: 10, static EVENT_CHANGE = "EVENT_CHANGE";
tgap: 5
},
_defaultConfig: function () { _defaultConfig() {
return BI.extend(BI.SingleSelectSearchInsertPane.superclass._defaultConfig.apply(this, arguments), { return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-search-pane-insert bi-card", baseCls: "bi-single-select-search-pane-insert bi-card",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
keywordGetter: BI.emptyFn keywordGetter: emptyFn,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectSearchInsertPane.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, o = this.options; const self = this,
o = this.options;
this.addNotMatchTip = BI.createWidget({ this.addNotMatchTip = createWidget({
type: "bi.label", type: Label.xtype,
text: BI.i18nText("BI-Basic_Press_Enter_To_Add_Text", ""), text: i18nText("BI-Basic_Press_Enter_To_Add_Text", ""),
height: this.constants.height, height: this.constants.height,
cls: "bi-keyword-red-mark", cls: "bi-keyword-red-mark",
hgap: 5, hgap: 5,
}); });
this.loader = BI.createWidget({ this.loader = createWidget({
type: "bi.single_select_search_loader", type: SingleSelectSearchLoader.xtype,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
keywordGetter: o.keywordGetter, keywordGetter: o.keywordGetter,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
itemsCreator: function (op, callback) { itemsCreator (op, callback) {
o.itemsCreator.apply(self, [op, function (res) { o.itemsCreator.apply(self, [
op,
function (res) {
callback(res); callback(res);
self.setKeyword(o.keywordGetter()); self.setKeyword(o.keywordGetter());
}]); }
]);
}, },
value: o.value value: o.value,
}); });
this.loader.on(BI.Controller.EVENT_CHANGE, function () { this.loader.on(Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
}); });
this.resizer = BI.createWidget({ this.resizer = createWidget({
type: "bi.vertical_fill", type: VerticalFillLayout.xtype,
rowSize: ["", "fill"], rowSize: ["", "fill"],
element: this, element: this,
items: [{ items: [
type: "bi.vertical", {
type: VerticalLayout.xtype,
items: [this.addNotMatchTip], items: [this.addNotMatchTip],
height: this.constants.height height: this.constants.height,
}, {
el: this.loader
}]
});
}, },
{
el: this.loader,
}
],
});
}
setKeyword: function (keyword) { setKeyword(keyword) {
this.addNotMatchTip.setText(BI.i18nText("BI-Basic_Press_Enter_To_Add_Text", keyword)); this.addNotMatchTip.setText(i18nText("BI-Basic_Press_Enter_To_Add_Text", keyword));
}, }
hasMatched: function () { hasMatched() {
return false; return false;
}, }
setValue: function (v) { setValue(v) {
this.loader.setValue(v); this.loader.setValue(v);
}, }
getValue: function () { getValue() {
return this.loader.getValue(); return this.loader.getValue();
}, }
empty: function () { empty() {
this.loader.empty(); this.loader.empty();
},
populate: function (items) {
this.loader.populate.apply(this.loader, arguments);
} }
});
BI.SingleSelectSearchInsertPane.EVENT_CHANGE = "EVENT_CHANGE"; populate(items) {
this.loader.populate(...arguments);
BI.shortcut("bi.single_select_search_insert_pane", BI.SingleSelectSearchInsertPane); }
}

124
src/widget/singleselect/search/singleselect.search.pane.js

@ -1,101 +1,105 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout } from "@/core";
* import { Label } from "@/base";
* 在搜索框中输入文本弹出的面板 import { SingleSelectSearchLoader } from "./singleselect.search.loader";
* @class BI.SingleSelectSearchPane
* @extends Widget
*/
BI.SingleSelectSearchPane = BI.inherit(BI.Widget, { @shortcut()
export class SingleSelectSearchPane extends Widget {
static xtype = "bi.single_select_search_pane";
constants: { constants = { height: 25, lgap: 10, tgap: 5 };
height: 25,
lgap: 10, static EVENT_CHANGE = "EVENT_CHANGE";
tgap: 5
},
_defaultConfig: function () { _defaultConfig() {
return BI.extend(BI.SingleSelectSearchPane.superclass._defaultConfig.apply(this, arguments), { return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-search-pane bi-card", baseCls: "bi-single-select-search-pane bi-card",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
keywordGetter: BI.emptyFn keywordGetter: emptyFn,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectSearchPane.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, o = this.options; const self = this,
o = this.options;
this.tooltipClick = BI.createWidget({ this.tooltipClick = createWidget({
type: "bi.label", type: Label.xtype,
invisible: true, invisible: true,
text: BI.i18nText("BI-Click_Blank_To_Select"), text: i18nText("BI-Click_Blank_To_Select"),
cls: "single-select-toolbar", cls: "single-select-toolbar",
height: this.constants.height height: this.constants.height,
}); });
this.loader = BI.createWidget({ this.loader = createWidget({
type: "bi.single_select_search_loader", type: SingleSelectSearchLoader.xtype,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
keywordGetter: o.keywordGetter, keywordGetter: o.keywordGetter,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
itemsCreator: function (op, callback) { itemsCreator (op, callback) {
o.itemsCreator.apply(self, [op, function (res) { o.itemsCreator.apply(self, [
op,
function (res) {
callback(res); callback(res);
self.setKeyword(o.keywordGetter()); self.setKeyword(o.keywordGetter());
}]); }
]);
}, },
value: o.value value: o.value,
}); });
this.loader.on(BI.Controller.EVENT_CHANGE, function () { this.loader.on(Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
}); });
this.resizer = BI.createWidget({ this.resizer = createWidget({
type: "bi.vertical_fill", type: VerticalFillLayout.xtype,
rowSize: ["", "fill"], rowSize: ["", "fill"],
element: this, element: this,
items: [{ items: [
{
el: this.tooltipClick, el: this.tooltipClick,
}, { },
el: this.loader {
}] el: this.loader,
}
],
}); });
this.tooltipClick.setVisible(false); this.tooltipClick.setVisible(false);
}, }
setKeyword: function (keyword) { setKeyword(keyword) {
var btn, o = this.options; let btn;
var isVisible = this.loader.getAllButtons().length > 0 && (btn = this.loader.getAllButtons()[0]) && (keyword === (o.valueFormatter(btn.getValue()) || btn.getValue())); const o = this.options;
const isVisible =
this.loader.getAllButtons().length > 0 &&
(btn = this.loader.getAllButtons()[0]) &&
keyword === (o.valueFormatter(btn.getValue()) || btn.getValue());
if (isVisible !== this.tooltipClick.isVisible()) { if (isVisible !== this.tooltipClick.isVisible()) {
this.tooltipClick.setVisible(isVisible); this.tooltipClick.setVisible(isVisible);
this.resizer.attr("items")[0].height = (isVisible ? this.constants.height : 0); this.resizer.attr("items")[0].height = isVisible ? this.constants.height : 0;
this.resizer.resize(); this.resizer.resize();
} }
}, }
hasMatched: function () { hasMatched() {
return this.tooltipClick.isVisible(); return this.tooltipClick.isVisible();
}, }
setValue: function (v) { setValue(v) {
this.loader.setValue(v); this.loader.setValue(v);
}, }
getValue: function () { getValue() {
return this.loader.getValue(); return this.loader.getValue();
}, }
empty: function () { empty() {
this.loader.empty(); this.loader.empty();
},
populate: function (items) {
this.loader.populate.apply(this.loader, arguments);
} }
});
BI.SingleSelectSearchPane.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_search_pane", BI.SingleSelectSearchPane); populate(items) {
this.loader.populate(...arguments);
}
}

315
src/widget/singleselect/singleselect.combo.js

@ -1,89 +1,104 @@
/** import { shortcut, extend, emptyFn, isKey, createWidget, toPix, isNotNull, nextTick, AbsoluteLayout, makeObject, map, each, remove } from "@/core";
* import { Single, Combo } from "@/base";
* @class BI.SingleSelectCombo import { SingleSelectTrigger } from "./singleselect.trigger";
* @extends BI.Single import { SingleSelectPopupView } from "./singleselect.popup.view";
*/ import { TriggerIconButton } from "@/case";
BI.SingleSelectCombo = BI.inherit(BI.Single, {
_defaultConfig: function () { @shortcut()
return BI.extend(BI.SingleSelectCombo.superclass._defaultConfig.apply(this, arguments), { export class SingleSelectCombo extends Single {
static xtype = "bi.single_select_combo";
static REQ_GET_DATA_LENGTH = 0;
static REQ_GET_ALL_DATA = -1;
static EVENT_BLUR = "EVENT_BLUR";
static EVENT_FOCUS = "EVENT_FOCUS";
static EVENT_STOP = "EVENT_STOP";
static EVENT_SEARCHING = "EVENT_SEARCHING";
static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM";
static EVENT_CONFIRM = "EVENT_CONFIRM";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-combo", baseCls: "bi-single-select-combo",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
itemWrapper: BI.emptyFn, itemWrapper: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
height: 24, height: 24,
allowEdit: true allowEdit: true,
}); });
}, }
_init: function () { _init() {
var self = this, o = this.options; const o = this.options;
BI.SingleSelectCombo.superclass._init.apply(this, arguments); super._init(...arguments);
var assertShowValue = function () { const assertShowValue = () => {
BI.isKey(self._startValue) && (self.storeValue = self._startValue); isKey(this._startValue) && (this.storeValue = this._startValue);
self.trigger.getSearcher().setState(self.storeValue); this.trigger.getSearcher().setState(this.storeValue);
}; };
this.storeValue = o.value; this.storeValue = o.value;
// 标记正在请求数据 // 标记正在请求数据
this.requesting = false; this.requesting = false;
this.trigger = BI.createWidget({ this.trigger = createWidget({
type: "bi.single_select_trigger", type: "bi.single_select_trigger",
height: BI.toPix(o.height, o.simple ? 1 : 2), height: toPix(o.height, o.simple ? 1 : 2),
// adapter: this.popup, // adapter: this.popup,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
allowEdit: o.allowEdit, allowEdit: o.allowEdit,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
itemsCreator: function (op, callback) { itemsCreator: (op, callback) => {
o.itemsCreator(op, function (res) { o.itemsCreator(op, (...args) => {
if (op.times === 1 && BI.isNotNull(op.keywords)) { if (op.times === 1 && isNotNull(op.keywords)) {
// 预防trigger内部把当前的storeValue改掉 // 预防trigger内部把当前的storeValue改掉
self.trigger.setValue(self.getValue()); this.trigger.setValue(this.getValue());
} }
callback.apply(self, arguments); callback.apply(this, ...args);
}); });
}, },
text: o.text, text: o.text,
value: this.storeValue value: this.storeValue,
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_FOCUS, function () { this.trigger.on(SingleSelectTrigger.EVENT_FOCUS, () => {
self.fireEvent(BI.SingleSelectCombo.EVENT_FOCUS); this.fireEvent(SingleSelectCombo.EVENT_FOCUS);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_BLUR, function () { this.trigger.on(SingleSelectTrigger.EVENT_BLUR, () => {
self.fireEvent(BI.SingleSelectCombo.EVENT_BLUR); this.fireEvent(SingleSelectCombo.EVENT_BLUR);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_START, function () { this.trigger.on(SingleSelectTrigger.EVENT_START, () => {
self._setStartValue(); this._setStartValue();
this.getSearcher().setValue(self.storeValue); this.getSearcher().setValue(this.storeValue);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_STOP, function () { this.trigger.on(SingleSelectTrigger.EVENT_STOP, () => {
self._setStartValue(); this._setStartValue();
self.fireEvent(BI.SingleSelectCombo.EVENT_STOP); this.fireEvent(SingleSelectCombo.EVENT_STOP);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_SEARCHING, function () { this.trigger.on(SingleSelectTrigger.EVENT_SEARCHING, () => {
self._dataChange = true; this._dataChange = true;
self.fireEvent(BI.SingleSelectCombo.EVENT_SEARCHING); this.fireEvent(SingleSelectCombo.EVENT_SEARCHING);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_CHANGE, function (value, obj) { this.trigger.on(
self.storeValue = this.getValue(); SingleSelectTrigger.EVENT_CHANGE,
(value, obj) => {
this.storeValue = this.trigger.getValue();
assertShowValue(); assertShowValue();
self._defaultState(); this._defaultState();
self._dataChange = true; this._dataChange = true;
}); }
this.trigger.on(BI.SingleSelectTrigger.EVENT_COUNTER_CLICK, function () { );
if (!self.combo.isViewVisible()) { this.trigger.on(SingleSelectTrigger.EVENT_COUNTER_CLICK, () => {
self.combo.showView(); if (!this.combo.isViewVisible()) {
this.combo.showView();
} }
}); });
this.combo = BI.createWidget({ this.combo = createWidget({
type: "bi.combo", type: Combo.xtype,
cls: (o.simple ? "bi-border-bottom" : "bi-border bi-border-radius"), cls: o.simple ? "bi-border-bottom" : "bi-border bi-border-radius",
container: o.container, container: o.container,
toggle: false, toggle: false,
el: this.trigger, el: this.trigger,
@ -91,182 +106,174 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, {
popup: { popup: {
type: "bi.single_select_popup_view", type: "bi.single_select_popup_view",
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
ref: function () { ref: _ref => {
self.popup = this; this.popup = _ref;
self.trigger.setAdapter(this); this.trigger.setAdapter(_ref);
}, },
listeners: [{ listeners: [{
eventName: BI.SingleSelectPopupView.EVENT_CHANGE, eventName: SingleSelectPopupView.EVENT_CHANGE,
action: function () { action: () => {
self._dataChange = true; this._dataChange = true;
self.storeValue = this.getValue(); this.storeValue = this.popup.getValue();
self._adjust(function () { this._adjust(() => {
assertShowValue(); assertShowValue();
self._defaultState(); this._defaultState();
}); });
self.fireEvent(BI.SingleSelectCombo.EVENT_CLICK_ITEM); this.fireEvent(SingleSelectCombo.EVENT_CLICK_ITEM);
} },
}], }],
itemsCreator: o.itemsCreator, itemsCreator: o.itemsCreator,
itemWrapper: o.itemWrapper, itemWrapper: o.itemWrapper,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
onLoaded: function () { onLoaded: () => {
BI.nextTick(function () { nextTick(() => {
self.combo.adjustWidth(); this.combo.adjustWidth();
self.combo.adjustHeight(); this.combo.adjustHeight();
self.trigger.getSearcher().adjustView(); this.trigger.getSearcher().adjustView();
}); });
}
}, },
hideChecker: function (e) { },
hideChecker(e) {
return triggerBtn.element.find(e.target).length === 0; return triggerBtn.element.find(e.target).length === 0;
}, },
value: o.value value: o.value,
}); });
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => {
if (!this.isViewVisible()) { if (!this.combo.isViewVisible()) {
self._dataChange = false;// 标记数据是否发生变化 this._dataChange = false; // 标记数据是否发生变化
} }
this.setValue(self.storeValue); this.setValue(this.storeValue);
BI.nextTick(function () { nextTick(() => {
self.populate(); this.populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
this.wants2Quit = false; this.wants2Quit = false;
this.combo.on(BI.Combo.EVENT_AFTER_HIDEVIEW, function () { this.combo.on(Combo.EVENT_AFTER_HIDEVIEW, () => {
// important:关闭弹出时又可能没有退出编辑状态 // important:关闭弹出时又可能没有退出编辑状态
self.trigger.stopEditing(); this.trigger.stopEditing();
if (self.requesting === true) { if (this.requesting === true) {
self.wants2Quit = true; this.wants2Quit = true;
} else { } else {
self._dataChange && self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM); this._dataChange &&
this.fireEvent(SingleSelectCombo.EVENT_CONFIRM);
} }
}); });
var triggerBtn = BI.createWidget({ const triggerBtn = createWidget({
type: "bi.trigger_icon_button", type: TriggerIconButton.xtype,
width: o.height, width: o.height,
height: o.height, height: o.height,
cls: "single-select-trigger-icon-button" cls: "single-select-trigger-icon-button",
}); });
triggerBtn.on(BI.TriggerIconButton.EVENT_CHANGE, function () { triggerBtn.on(TriggerIconButton.EVENT_CHANGE, () => {
if (self.combo.isViewVisible()) { if (this.combo.isViewVisible()) {
self.combo.hideView(); this.combo.hideView();
} else { } else {
self.combo.showView(); this.combo.showView();
} }
}); });
BI.createWidget({ createWidget({
type: "bi.absolute", type: AbsoluteLayout.xtype,
element: this, element: this,
items: [{ items: [{
el: this.combo, el: this.combo,
left: 0, left: 0,
right: 0, right: 0,
top: 0, top: 0,
bottom: 0 bottom: 0,
}, { },
{
el: triggerBtn, el: triggerBtn,
right: 0, right: 0,
top: 0, top: 0,
bottom: 0 bottom: 0,
}] }
],
}); });
}, }
_defaultState: function () { _defaultState() {
this.trigger.stopEditing(); this.trigger.stopEditing();
this.combo.hideView(); this.combo.hideView();
}, }
_assertValue: function (val) { _assertValue(val) {}
},
_makeMap: function (values) { _makeMap(values) {
return BI.makeObject(values || []); return makeObject(values || []);
}, }
_joinKeywords: function (keywords, callback) { _joinKeywords(keywords, callback) {
var self = this, o = this.options; const o = this.options;
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
this.requesting = true; this.requesting = true;
o.itemsCreator({ o.itemsCreator({
type: BI.SingleSelectCombo.REQ_GET_ALL_DATA, type: SingleSelectCombo.REQ_GET_ALL_DATA,
keywords: keywords keywords,
}, function (ob) { },
var values = BI.map(ob.items, "value"); ob => {
const values = map(ob.items, "value");
digest(values); digest(values);
}); }
);
function digest (items) { const digest = items => {
var selectedMap = self._makeMap(items); const selectedMap = this._makeMap(items);
BI.each(keywords, function (i, val) { each(keywords, (i, val) => {
if (BI.isNotNull(selectedMap[val])) { if (isNotNull(selectedMap[val])) {
BI.remove(self.storeValue.value, val); remove(this.storeValue.value, val);
} }
}); });
self._adjust(callback); this._adjust(callback);
};
} }
},
_adjust: function (callback) { _adjust(callback) {
var self = this, o = this.options; const adjust = () => {
if (this.wants2Quit === true) {
this._dataChange &&
this.fireEvent(SingleSelectCombo.EVENT_CONFIRM);
this.wants2Quit = false;
}
this.requesting = false;
};
const o = this.options;
if (!this._count) { if (!this._count) {
o.itemsCreator({ o.itemsCreator({
type: BI.SingleSelectCombo.REQ_GET_DATA_LENGTH type: SingleSelectCombo.REQ_GET_DATA_LENGTH,
}, function (res) { },
self._count = res.count; res => {
this._count = res.count;
adjust(); adjust();
callback(); callback();
}); }
);
} else { } else {
adjust(); adjust();
callback(); callback();
} }
function adjust () {
if (self.wants2Quit === true) {
self._dataChange && self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM);
self.wants2Quit = false;
}
self.requesting = false;
} }
},
_setStartValue: function (value) { _setStartValue(value) {
this._startValue = value; this._startValue = value;
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, }
setValue: function (v) { setValue(v) {
this.storeValue = v; this.storeValue = v;
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
this.combo.setValue(this.storeValue); this.combo.setValue(this.storeValue);
}, }
getValue: function () { getValue() {
return this.storeValue; return this.storeValue;
}, }
populate: function () { populate() {
this._count = null; this._count = null;
this.combo.populate.apply(this.combo, arguments); this.combo.populate(...arguments);
}
} }
});
BI.extend(BI.SingleSelectCombo, {
REQ_GET_DATA_LENGTH: 0,
REQ_GET_ALL_DATA: -1
});
BI.SingleSelectCombo.EVENT_BLUR = "EVENT_BLUR";
BI.SingleSelectCombo.EVENT_FOCUS = "EVENT_FOCUS";
BI.SingleSelectCombo.EVENT_STOP = "EVENT_STOP";
BI.SingleSelectCombo.EVENT_SEARCHING = "EVENT_SEARCHING";
BI.SingleSelectCombo.EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM";
BI.SingleSelectCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.shortcut("bi.single_select_combo", BI.SingleSelectCombo);

222
src/widget/singleselect/singleselect.insert.combo.js

@ -1,45 +1,58 @@
/** import { shortcut, extend, emptyFn, i18nText, isKey, createWidget, toPix, isNotNull, nextTick, AbsoluteLayout, makeObject } from "@/core";
* import { Single, Combo } from "@/base";
* @class BI.SingleSelectInsertCombo import { SingleSelectTrigger } from "./singleselect.trigger";
* @extends BI.Single import { SingleSelectPopupView } from "./singleselect.popup.view";
*/ import { TriggerIconButton } from "@/case";
BI.SingleSelectInsertCombo = BI.inherit(BI.Single, {
@shortcut()
_defaultConfig: function () { export class SingleSelectInsertCombo extends Single {
return BI.extend(BI.SingleSelectInsertCombo.superclass._defaultConfig.apply(this, arguments), { static xtype = "bi.single_select_insert_combo";
static REQ_GET_DATA_LENGTH = 0;
static REQ_GET_ALL_DATA = -1;
static EVENT_FOCUS = "EVENT_FOCUS";
static EVENT_BLUR = "EVENT_BLUR";
static EVENT_STOP = "EVENT_STOP";
static EVENT_SEARCHING = "EVENT_SEARCHING";
static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM";
static EVENT_CONFIRM = "EVENT_CONFIRM";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-combo", baseCls: "bi-single-select-combo",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
itemWrapper: BI.emptyFn, itemWrapper: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
height: 24, height: 24,
allowEdit: true, allowEdit: true,
watermark: BI.i18nText("BI-Basic_Search_And_Patch_Paste"), watermark: i18nText("BI-Basic_Search_And_Patch_Paste"),
}); });
}, }
_init: function () { _init() {
var self = this, o = this.options; const self = this,
BI.SingleSelectInsertCombo.superclass._init.apply(this, arguments); o = this.options;
var assertShowValue = function () { super._init(...arguments);
BI.isKey(self._startValue) && (self.storeValue = self._startValue); const assertShowValue = () => {
self.trigger.getSearcher().setState(self.storeValue); isKey(this._startValue) && (this.storeValue = this._startValue);
this.trigger.getSearcher().setState(this.storeValue);
}; };
this.storeValue = o.value; this.storeValue = o.value;
// 标记正在请求数据 // 标记正在请求数据
this.requesting = false; this.requesting = false;
this.trigger = BI.createWidget({ this.trigger = createWidget({
type: "bi.single_select_trigger", type: SingleSelectTrigger.xtype,
watermark: o.watermark, watermark: o.watermark,
height: BI.toPix(o.height, o.simple ? 1 : 2), height: toPix(o.height, o.simple ? 1 : 2),
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
allowEdit: o.allowEdit, allowEdit: o.allowEdit,
// adapter: this.popup, // adapter: this.popup,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
itemsCreator: function (op, callback) { itemsCreator (op, callback) {
o.itemsCreator(op, function (res) { o.itemsCreator(op, function (res) {
if (op.times === 1 && BI.isNotNull(op.keywords)) { if (op.times === 1 && isNotNull(op.keywords)) {
// 预防trigger内部把当前的storeValue改掉 // 预防trigger内部把当前的storeValue改掉
self.trigger.setValue(self.getValue()); self.trigger.setValue(self.getValue());
} }
@ -51,198 +64,195 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, {
searcher: { searcher: {
popup: { popup: {
type: "bi.single_select_search_insert_pane", type: "bi.single_select_search_insert_pane",
} },
} },
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_FOCUS, function () { this.trigger.on(SingleSelectTrigger.EVENT_FOCUS, () => {
self.fireEvent(BI.SingleSelectInsertCombo.EVENT_FOCUS); self.fireEvent(SingleSelectInsertCombo.EVENT_FOCUS);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_BLUR, function () { this.trigger.on(SingleSelectTrigger.EVENT_BLUR, () => {
self.fireEvent(BI.SingleSelectInsertCombo.EVENT_BLUR); self.fireEvent(SingleSelectInsertCombo.EVENT_BLUR);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_START, function () { this.trigger.on(SingleSelectTrigger.EVENT_START, function () {
self._setStartValue(); self._setStartValue();
this.getSearcher().setValue(self.storeValue); this.getSearcher().setValue(self.storeValue);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_STOP, function () { this.trigger.on(SingleSelectTrigger.EVENT_STOP, () => {
self._setStartValue(); self._setStartValue();
self.fireEvent(BI.SingleSelectInsertCombo.EVENT_STOP); self.fireEvent(SingleSelectInsertCombo.EVENT_STOP);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_PAUSE, function () { this.trigger.on(SingleSelectTrigger.EVENT_PAUSE, () => {
self.storeValue = self.trigger.getSearcher().getKeyword(); self.storeValue = self.trigger.getSearcher().getKeyword();
assertShowValue(); assertShowValue();
self._defaultState(); self._defaultState();
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_SEARCHING, function () { this.trigger.on(SingleSelectTrigger.EVENT_SEARCHING, () => {
self._dataChange = true; self._dataChange = true;
self.fireEvent(BI.SingleSelectInsertCombo.EVENT_SEARCHING); self.fireEvent(SingleSelectInsertCombo.EVENT_SEARCHING);
}); });
this.trigger.on(BI.SingleSelectTrigger.EVENT_CHANGE, function (value, obj) { this.trigger.on(
SingleSelectTrigger.EVENT_CHANGE,
function (value, obj) {
self.storeValue = this.getValue(); self.storeValue = this.getValue();
assertShowValue(); assertShowValue();
self._defaultState(); self._defaultState();
self._dataChange = true; self._dataChange = true;
}); }
this.trigger.on(BI.SingleSelectTrigger.EVENT_COUNTER_CLICK, function () { );
this.trigger.on(SingleSelectTrigger.EVENT_COUNTER_CLICK, () => {
if (!self.combo.isViewVisible()) { if (!self.combo.isViewVisible()) {
self.combo.showView(); self.combo.showView();
} }
}); });
this.combo = BI.createWidget({ this.combo = createWidget({
type: "bi.combo", type: Combo.xtype,
cls: (o.simple ? "bi-border-bottom" : "bi-border bi-border-radius"), cls: o.simple ? "bi-border-bottom" : "bi-border bi-border-radius",
container: o.container, container: o.container,
toggle: false, toggle: false,
el: this.trigger, el: this.trigger,
adjustLength: 1, adjustLength: 1,
popup: { popup: {
type: "bi.single_select_popup_view", type: SingleSelectPopupView.xtype,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
ref: function () { ref () {
self.popup = this; self.popup = this;
self.trigger.setAdapter(this); self.trigger.setAdapter(this);
}, },
listeners: [{ listeners: [
eventName: BI.SingleSelectPopupView.EVENT_CHANGE, {
action: function () { eventName: SingleSelectPopupView.EVENT_CHANGE,
action () {
self._dataChange = true; self._dataChange = true;
self.storeValue = this.getValue(); self.storeValue = this.getValue();
self._adjust(function () { self._adjust(() => {
assertShowValue(); assertShowValue();
self._defaultState(); self._defaultState();
}); });
self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CLICK_ITEM); self.fireEvent(
SingleSelectInsertCombo.EVENT_CLICK_ITEM
);
},
} }
}], ],
itemsCreator: o.itemsCreator, itemsCreator: o.itemsCreator,
itemWrapper: o.itemWrapper, itemWrapper: o.itemWrapper,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
onLoaded: function () { onLoaded () {
BI.nextTick(function () { nextTick(() => {
self.combo.adjustWidth(); self.combo.adjustWidth();
self.combo.adjustHeight(); self.combo.adjustHeight();
self.trigger.getSearcher().adjustView(); self.trigger.getSearcher().adjustView();
}); });
}
}, },
hideChecker: function (e) { },
hideChecker (e) {
return triggerBtn.element.find(e.target).length === 0; return triggerBtn.element.find(e.target).length === 0;
}, },
value: o.value value: o.value,
}); });
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(Combo.EVENT_BEFORE_POPUPVIEW, function () {
if (!this.isViewVisible()) { if (!this.isViewVisible()) {
self._dataChange = false; // 标记数据是否发生变化 self._dataChange = false; // 标记数据是否发生变化
} }
this.setValue(self.storeValue); this.setValue(self.storeValue);
BI.nextTick(function () { nextTick(() => {
self.populate(); self.populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
this.wants2Quit = false; this.wants2Quit = false;
this.combo.on(BI.Combo.EVENT_AFTER_HIDEVIEW, function () { this.combo.on(Combo.EVENT_AFTER_HIDEVIEW, () => {
// important:关闭弹出时又可能没有退出编辑状态 // important:关闭弹出时又可能没有退出编辑状态
self.trigger.stopEditing(); self.trigger.stopEditing();
if (self.requesting === true) { if (self.requesting === true) {
self.wants2Quit = true; self.wants2Quit = true;
} else { } else {
self._dataChange && self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); self._dataChange &&
self.fireEvent(SingleSelectInsertCombo.EVENT_CONFIRM);
} }
}); });
var triggerBtn = BI.createWidget({ const triggerBtn = createWidget({
type: "bi.trigger_icon_button", type: TriggerIconButton.xtype,
width: o.height, width: o.height,
height: o.height, height: o.height,
cls: "single-select-trigger-icon-button" cls: "single-select-trigger-icon-button",
}); });
triggerBtn.on(BI.TriggerIconButton.EVENT_CHANGE, function () { triggerBtn.on(TriggerIconButton.EVENT_CHANGE, () => {
if (self.combo.isViewVisible()) { if (self.combo.isViewVisible()) {
self.combo.hideView(); self.combo.hideView();
} else { } else {
self.combo.showView(); self.combo.showView();
} }
}); });
BI.createWidget({ createWidget({
type: "bi.absolute", type: AbsoluteLayout.xtype,
element: this, element: this,
items: [{ items: [
{
el: this.combo, el: this.combo,
left: 0, left: 0,
right: 0, right: 0,
top: 0, top: 0,
bottom: 0 bottom: 0,
}, { },
{
el: triggerBtn, el: triggerBtn,
right: 0, right: 0,
top: 0, top: 0,
bottom: 0 bottom: 0,
}] }
],
}); });
}, }
_defaultState: function () { _defaultState() {
this.trigger.stopEditing(); this.trigger.stopEditing();
this.combo.hideView(); this.combo.hideView();
}, }
_assertValue: function (val) { _assertValue(val) {}
},
_makeMap: function (values) { _makeMap(values) {
return BI.makeObject(values || []); return makeObject(values || []);
}, }
_adjust: function (callback) { _adjust(callback) {
var self = this, o = this.options; const self = this;
adjust(); adjust();
callback(); callback();
function adjust() { function adjust() {
if (self.wants2Quit === true) { if (self.wants2Quit === true) {
self._dataChange && self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); self._dataChange &&
self.fireEvent(SingleSelectInsertCombo.EVENT_CONFIRM);
self.wants2Quit = false; self.wants2Quit = false;
} }
self.requesting = false; self.requesting = false;
} }
}, }
_setStartValue: function (value) { _setStartValue(value) {
this._startValue = value; this._startValue = value;
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, }
setValue: function (v) { setValue(v) {
this.storeValue = v; this.storeValue = v;
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
this.combo.setValue(this.storeValue); this.combo.setValue(this.storeValue);
}, }
getValue: function () { getValue() {
return this.storeValue; return this.storeValue;
},
populate: function () {
this.combo.populate.apply(this.combo, arguments);
} }
});
BI.extend(BI.SingleSelectInsertCombo, { populate() {
REQ_GET_DATA_LENGTH: 0, this.combo.populate(...arguments);
REQ_GET_ALL_DATA: -1 }
}); }
BI.SingleSelectInsertCombo.EVENT_FOCUS = "EVENT_FOCUS";
BI.SingleSelectInsertCombo.EVENT_BLUR = "EVENT_BLUR";
BI.SingleSelectInsertCombo.EVENT_STOP = "EVENT_STOP";
BI.SingleSelectInsertCombo.EVENT_SEARCHING = "EVENT_SEARCHING";
BI.SingleSelectInsertCombo.EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM";
BI.SingleSelectInsertCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.shortcut("bi.single_select_insert_combo", BI.SingleSelectInsertCombo);

210
src/widget/singleselect/singleselect.list.js

@ -1,41 +1,41 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, Controller, Events, i18nText } from "@/core";
* 选择列表 import { ListPane, SingleSelectItem } from "@/case";
*
* Created by GUY on 2015/11/1. @shortcut()
* @class BI.SingleSelectList export class SingleSelectList extends Widget {
* @extends BI.Widget static xtype = "bi.single_select_list";
*/
BI.SingleSelectList = BI.inherit(BI.Widget, { _constants = { itemHeight: 24 };
_constants: {
itemHeight: 24
},
_defaultConfig: function () { static EVENT_CHANGE = "EVENT_CHANGE";
return BI.extend(BI.SingleSelectList.superclass._defaultConfig.apply(this, arguments), {
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-select-list", baseCls: "bi-select-list",
direction: BI.Direction.Top, // toolbar的位置 direction: BI.Direction.Top, // toolbar的位置
logic: { logic: {
dynamic: true dynamic: true,
}, },
items: [], items: [],
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
hasNext: BI.emptyFn, hasNext: emptyFn,
onLoaded: BI.emptyFn, onLoaded: emptyFn,
el: { el: {
type: "bi.list_pane" type: ListPane.xtype,
}, },
allowNoSelect: false allowNoSelect: false,
}); });
}, }
_init: function () {
BI.SingleSelectList.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.list = BI.createWidget(o.el, { _init() {
type: "bi.list_pane", super._init(...arguments);
const self = this,
o = this.options;
this.list = createWidget(o.el, {
type: ListPane.xtype,
items: o.items, items: o.items,
itemsCreator: function (op, callback) { itemsCreator (op, callback) {
op.times === 1 && self.toolbar && self.toolbar.setVisible(false); op.times === 1 && self.toolbar && self.toolbar.setVisible(false);
o.itemsCreator(op, function (items) { o.itemsCreator(op, function (items) {
callback.apply(self, arguments); callback.apply(self, arguments);
@ -47,117 +47,137 @@ BI.SingleSelectList = BI.inherit(BI.Widget, {
}, },
onLoaded: o.onLoaded, onLoaded: o.onLoaded,
hasNext: o.hasNext, hasNext: o.hasNext,
value: o.value value: o.value,
}); });
this.list.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { this.list.on(Controller.EVENT_CHANGE, function (type, value, obj) {
if (type === BI.Events.CLICK) { if (type === Events.CLICK) {
self.fireEvent(BI.SingleSelectList.EVENT_CHANGE, value, obj); self.fireEvent(SingleSelectList.EVENT_CHANGE, value, obj);
} }
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
}); });
BI.createWidget(BI.extend({ createWidget(
element: this extend(
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend({ {
scrolly: true element: this,
}, o.logic, { },
items: o.allowNoSelect ? BI.LogicFactory.createLogicItemsByDirection(o.direction, { BI.LogicFactory.createLogic(
type: "bi.single_select_item", BI.LogicFactory.createLogicTypeByDirection(o.direction),
extend(
{
scrolly: true,
},
o.logic,
{
items: o.allowNoSelect
? BI.LogicFactory.createLogicItemsByDirection(
o.direction,
{
type: SingleSelectItem.xtype,
cls: "bi-list-item-active", cls: "bi-list-item-active",
height: this._constants.itemHeight, height: this._constants.itemHeight,
forceNotSelected: true, forceNotSelected: true,
text: BI.i18nText("BI-Basic_No_Select"), text: i18nText("BI-Basic_No_Select"),
ref: function (_ref) { ref (_ref) {
self.toolbar = _ref; self.toolbar = _ref;
}, },
listeners: [{ listeners: [
eventName: BI.Controller.EVENT_CHANGE, {
action: function (type) { eventName: Controller.EVENT_CHANGE,
if (type === BI.Events.CLICK) { action (type) {
if (type === Events.CLICK) {
self.list.setValue(); self.list.setValue();
self.fireEvent(BI.SingleSelectList.EVENT_CHANGE); self.fireEvent(SingleSelectList.EVENT_CHANGE);
} }
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
},
} }
}] ],
}, this.list) : BI.LogicFactory.createLogicItemsByDirection(o.direction, this.list)
}))));
}, },
this.list
)
: BI.LogicFactory.createLogicItemsByDirection(o.direction, this.list),
}
)
)
)
);
}
hasPrev: function () { hasPrev() {
return this.list.hasPrev(); return this.list.hasPrev();
}, }
hasNext: function () { hasNext() {
return this.list.hasNext(); return this.list.hasNext();
}, }
prependItems: function (items) { prependItems(items) {
this.list.prependItems.apply(this.list, arguments); this.list.prependItems(...arguments);
}, }
addItems: function (items) { addItems(items) {
this.list.addItems.apply(this.list, arguments); this.list.addItems(...arguments);
}, }
setValue: function (v) { setValue(v) {
this.list.setValue([v]); this.list.setValue([v]);
}, }
getValue: function () { getValue() {
return this.list.getValue()[0]; return this.list.getValue()[0];
}, }
empty: function () { empty() {
this.list.empty(); this.list.empty();
}, }
populate: function (items) { populate(items) {
this.list.populate.apply(this.list, arguments); this.list.populate(...arguments);
}, }
resetHeight: function (h) { resetHeight(h) {
this.list.resetHeight ? this.list.resetHeight(h) : this.list.resetHeight
this.list.element.css({"max-height": BI.pixFormat(h - (this.options.allowNoSelect ? this._constants.itemHeight : 0))}); ? this.list.resetHeight(h)
}, : this.list.element.css({
"max-height": BI.pixFormat(h - (this.options.allowNoSelect ? this._constants.itemHeight : 0)),
});
}
setNotSelectedValue: function () { setNotSelectedValue() {
this.list.setNotSelectedValue.apply(this.list, arguments); this.list.setNotSelectedValue(...arguments);
}, }
getNotSelectedValue: function () { getNotSelectedValue() {
return this.list.getNotSelectedValue(); return this.list.getNotSelectedValue();
}, }
getAllButtons: function () { getAllButtons() {
return this.list.getAllButtons(); return this.list.getAllButtons();
}, }
getAllLeaves: function () { getAllLeaves() {
return this.list.getAllLeaves(); return this.list.getAllLeaves();
}, }
getSelectedButtons: function () { getSelectedButtons() {
return this.list.getSelectedButtons(); return this.list.getSelectedButtons();
}, }
getNotSelectedButtons: function () { getNotSelectedButtons() {
return this.list.getNotSelectedButtons(); return this.list.getNotSelectedButtons();
}, }
getIndexByValue: function (value) { getIndexByValue(value) {
return this.list.getIndexByValue(value); return this.list.getIndexByValue(value);
}, }
getNodeById: function (id) { getNodeById(id) {
return this.list.getNodeById(id); return this.list.getNodeById(id);
}, }
getNodeByValue: function (value) { getNodeByValue(value) {
return this.list.getNodeByValue(value); return this.list.getNodeByValue(value);
} }
}); }
BI.SingleSelectList.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_list", BI.SingleSelectList);

201
src/widget/singleselect/singleselect.loader.js

@ -1,178 +1,187 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, isUndefined, map, isKey, Controller, VerticalLayout, delay } from "@/core";
* 单选加载数据面板 import { ButtonGroup, Loader } from "@/base";
* Created by guy on 15/11/2. import { SingleSelectList } from "./singleselect.list";
* @class BI.SingleSelectLoader import { SingleSelectItem, SingleSelectRadioItem } from "@/case";
* @extends Widget
*/ @shortcut()
BI.SingleSelectLoader = BI.inherit(BI.Widget, { export class SingleSelectLoader extends Widget {
static xtype = "bi.single_select_loader";
_constants: {
itemVgap: 5 _constants = { itemVgap: 5 };
},
_defaultConfig: function () { static EVENT_CHANGE = "EVENT_CHANGE";
return BI.extend(BI.SingleSelectLoader.superclass._defaultConfig.apply(this, arguments), {
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-loader", baseCls: "bi-single-select-loader",
logic: { logic: {
dynamic: true dynamic: true,
}, },
el: { el: {
height: 400 height: 400,
}, },
allowNoSelect: false, allowNoSelect: false,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
itemWrapper: BI.emptyFn, itemWrapper: emptyFn,
onLoaded: BI.emptyFn onLoaded: emptyFn,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectLoader.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, opts = this.options; const self = this,
var hasNext = false; opts = this.options;
let hasNext = false;
this.storeValue = opts.value; this.storeValue = opts.value;
this.button_group = BI.createWidget({ this.button_group = createWidget({
type: "bi.single_select_list", type: SingleSelectList.xtype,
allowNoSelect: opts.allowNoSelect, allowNoSelect: opts.allowNoSelect,
logic: opts.logic, logic: opts.logic,
el: BI.extend({ el: extend(
{
onLoaded: opts.onLoaded, onLoaded: opts.onLoaded,
el: { el: {
type: "bi.loader", type: Loader.xtype,
isDefaultInit: false, isDefaultInit: false,
logic: { logic: {
dynamic: true, dynamic: true,
scrolly: true scrolly: true,
}, },
el: { el: {
chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, chooseType: ButtonGroup.CHOOSE_TYPE_SINGLE,
behaviors: { behaviors: {
redmark: function () { redmark () {
return true; return true;
}
}, },
layouts: [{ },
type: "bi.vertical" layouts: [
}] {
} type: VerticalLayout.xtype,
} }
}, opts.el), ],
itemsCreator: function (op, callback) { },
var startValue = self._startValue; },
!BI.isUndefined(self.storeValue) && (op = BI.extend(op || {}, { },
selectedValues: [self.storeValue] opts.el
),
itemsCreator (op, callback) {
const startValue = self._startValue;
!isUndefined(self.storeValue) &&
(op = extend(op || {}, {
selectedValues: [self.storeValue],
})); }));
opts.itemsCreator(op, function (ob) { opts.itemsCreator(op, ob => {
hasNext = ob.hasNext; hasNext = ob.hasNext;
var firstItems = []; let firstItems = [];
if (op.times === 1 && !BI.isUndefined(self.storeValue)) { if (op.times === 1 && !isUndefined(self.storeValue)) {
var json = BI.map([self.storeValue], function (i, v) { const json = map([self.storeValue], (i, v) => {
var txt = opts.valueFormatter(v) || v; const txt = opts.valueFormatter(v) || v;
return opts.itemWrapper({
return (
opts.itemWrapper({
text: txt, text: txt,
value: v, value: v,
title: txt, title: txt,
selected: true selected: true,
}) || { }) || {
text: txt, text: txt,
value: v, value: v,
title: txt, title: txt,
selected: true selected: true,
}; }
);
}); });
firstItems = self._createItems(json); firstItems = self._createItems(json);
} }
callback(firstItems.concat(self._createItems(ob.items)), ob.keyword || ""); callback(firstItems.concat(self._createItems(ob.items)), ob.keyword || "");
if (op.times === 1 && self.storeValue) { if (op.times === 1 && self.storeValue) {
BI.isKey(startValue) && (self.storeValue = startValue); isKey(startValue) && (self.storeValue = startValue);
self.setValue(self.storeValue); self.setValue(self.storeValue);
} }
(op.times === 1) && self._scrollToTop(); op.times === 1 && self._scrollToTop();
}); });
}, },
hasNext: function () { hasNext () {
return hasNext; return hasNext;
}, },
value: this.storeValue value: this.storeValue,
}); });
BI.createWidget({ createWidget({
type: "bi.vertical", type: VerticalLayout.xtype,
element: this, element: this,
items: [this.button_group], items: [this.button_group],
vgap: this._constants.itemVgap vgap: this._constants.itemVgap,
}); });
this.button_group.on(BI.Controller.EVENT_CHANGE, function () { this.button_group.on(Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); self.fireEvent(Controller.EVENT_CHANGE, arguments);
}); });
this.button_group.on(BI.SingleSelectList.EVENT_CHANGE, function () { this.button_group.on(SingleSelectList.EVENT_CHANGE, function () {
self.fireEvent(BI.SingleSelectLoader.EVENT_CHANGE, arguments); self.fireEvent(SingleSelectLoader.EVENT_CHANGE, arguments);
}); });
}, }
_createItems(items) {
const o = this.options;
_createItems: function (items) { return map(items, (i, item) => extend(
var o = this.options; {
return BI.map(items, function (i, item) { type: o.allowNoSelect ? SingleSelectItem.xtype : SingleSelectRadioItem.xtype,
return BI.extend({
type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item",
logic: o.logic, logic: o.logic,
cls: "bi-list-item-active", cls: "bi-list-item-active",
height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
selected: false, selected: false,
iconWrapperWidth: 26, iconWrapperWidth: 26,
textHgap: o.allowNoSelect ? 10 : 0, textHgap: o.allowNoSelect ? 10 : 0,
title: item.title || item.text title: item.title || item.text,
}, item);
});
}, },
item
));
}
_scrollToTop: function () { _scrollToTop() {
var self = this; const self = this;
BI.delay(function () { delay(() => {
self.button_group.element.scrollTop(0); self.button_group.element.scrollTop(0);
}, 30); }, 30);
}, }
_assertValue: function (val) { _assertValue(val) {}
},
setStartValue: function (v) { setStartValue(v) {
this._startValue = v; this._startValue = v;
}, }
setValue: function (v) { setValue(v) {
this.storeValue = v; this.storeValue = v;
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
this.button_group.setValue(this.storeValue); this.button_group.setValue(this.storeValue);
}, }
getValue: function () { getValue() {
return this.button_group.getValue(); return this.button_group.getValue();
}, }
getAllButtons: function () { getAllButtons() {
return this.button_group.getAllButtons(); return this.button_group.getAllButtons();
}, }
empty: function () { empty() {
this.button_group.empty(); this.button_group.empty();
}, }
populate: function (items) { populate(items) {
this.button_group.populate.apply(this.button_group, arguments); this.button_group.populate(...arguments);
}, }
resetHeight: function (h) { resetHeight(h) {
this.button_group.resetHeight(h - this._constants.itemVgap * 2); this.button_group.resetHeight(h - this._constants.itemVgap * 2);
}, }
resetWidth: function (w) { resetWidth(w) {
this.button_group.resetWidth(w); this.button_group.resetWidth(w);
} }
}); }
BI.SingleSelectLoader.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_loader", BI.SingleSelectLoader);

88
src/widget/singleselect/singleselect.popup.view.js

@ -1,84 +1,82 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget } from "@/core";
* 带加载的单选下拉面板 import { MultiPopupView } from "@/case";
* @class BI.SingleSelectPopupView import { PopupView } from "@/base";
* @extends Widget
*/
BI.SingleSelectPopupView = BI.inherit(BI.Widget, {
_defaultConfig: function () { @shortcut()
return BI.extend(BI.SingleSelectPopupView.superclass._defaultConfig.apply(this, arguments), { export class SingleSelectPopupView extends Widget {
static xtype = "bi.single_select_popup_view";
static EVENT_CHANGE = "EVENT_CHANGE";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-popup-view", baseCls: "bi-single-select-popup-view",
allowNoSelect: false, allowNoSelect: false,
maxWidth: "auto", maxWidth: "auto",
minWidth: 135, minWidth: 135,
maxHeight: 400, maxHeight: 400,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
itemWrapper: BI.emptyFn, itemWrapper: emptyFn,
onLoaded: BI.emptyFn onLoaded: emptyFn,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectPopupView.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, opts = this.options; const opts = this.options;
this.loader = BI.createWidget({ this.loader = createWidget({
type: "bi.single_select_loader", type: "bi.single_select_loader",
allowNoSelect: opts.allowNoSelect, allowNoSelect: opts.allowNoSelect,
itemsCreator: opts.itemsCreator, itemsCreator: opts.itemsCreator,
itemWrapper: opts.itemWrapper, itemWrapper: opts.itemWrapper,
valueFormatter: opts.valueFormatter, valueFormatter: opts.valueFormatter,
onLoaded: opts.onLoaded, onLoaded: opts.onLoaded,
value: opts.value value: opts.value,
}); });
this.popupView = BI.createWidget({ this.popupView = createWidget({
type: "bi.popup_view", type: PopupView.xtype,
stopPropagation: false, stopPropagation: false,
maxWidth: opts.maxWidth, maxWidth: opts.maxWidth,
minWidth: opts.minWidth, minWidth: opts.minWidth,
maxHeight: opts.maxHeight, maxHeight: opts.maxHeight,
element: this, element: this,
el: this.loader, el: this.loader,
value: opts.value value: opts.value,
}); });
this.popupView.on(BI.MultiPopupView.EVENT_CHANGE, function () { this.popupView.on(MultiPopupView.EVENT_CHANGE, () => {
self.fireEvent(BI.SingleSelectPopupView.EVENT_CHANGE); this.fireEvent(SingleSelectPopupView.EVENT_CHANGE);
}); });
}, }
setStartValue: function (v) { setStartValue(v) {
this.loader.setStartValue(v); this.loader.setStartValue(v);
}, }
setValue: function (v) { setValue(v) {
this.popupView.setValue(v); this.popupView.setValue(v);
}, }
getValue: function () { getValue() {
return this.popupView.getValue(); return this.popupView.getValue();
}, }
populate: function (items) { populate(items) {
this.popupView.populate.apply(this.popupView, arguments); this.popupView.populate(...arguments);
}, }
resetHeight: function (h) { resetHeight(h) {
this.popupView.resetHeight(h); this.popupView.resetHeight(h);
}, }
resetWidth: function (w) { resetWidth(w) {
this.popupView.resetWidth(w); this.popupView.resetWidth(w);
}, }
setDirection: function (direction, position) { setDirection(direction, position) {
this.popupView.setDirection(direction, position); this.popupView.setDirection(direction, position);
}, }
}); }
BI.SingleSelectPopupView.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_popup_view", BI.SingleSelectPopupView);

162
src/widget/singleselect/singleselect.trigger.js

@ -1,40 +1,46 @@
/** import { shortcut, extend, emptyFn, createWidget, HTapeLayout, AbsoluteLayout } from "@/core";
* import { Trigger, Text } from "@/base";
* 单选下拉框 import { SingleSelectSearcher } from "./trigger";
* @class BI.SingleSelectTrigger
* @extends BI.Trigger @shortcut()
*/ export class SingleSelectTrigger extends Trigger {
static xtype = "bi.single_select_trigger";
BI.SingleSelectTrigger = BI.inherit(BI.Trigger, {
constants = { height: 14, rgap: 4, lgap: 4 };
constants: {
height: 14, static EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK";
rgap: 4, static EVENT_COUNTER_CLICK = "EVENT_COUNTER_CLICK";
lgap: 4 static EVENT_CHANGE = "EVENT_CHANGE";
}, static EVENT_START = "EVENT_START";
static EVENT_STOP = "EVENT_STOP";
_defaultConfig: function () { static EVENT_PAUSE = "EVENT_PAUSE";
return BI.extend(BI.SingleSelectTrigger.superclass._defaultConfig.apply(this, arguments), { static EVENT_SEARCHING = "EVENT_SEARCHING";
static EVENT_BEFORE_COUNTER_POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW";
static EVENT_FOCUS = "EVENT_FOCUS";
static EVENT_BLUR = "EVENT_BLUR";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-trigger", baseCls: "bi-single-select-trigger",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
searcher: {}, searcher: {},
switcher: {}, switcher: {},
adapter: null, adapter: null,
masker: {}, masker: {},
allowEdit: true allowEdit: true,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectTrigger.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, o = this.options; const o = this.options;
this.searcher = BI.createWidget(o.searcher, { this.searcher = createWidget(o.searcher, {
type: "bi.single_select_searcher", type: SingleSelectSearcher.xtype,
watermark: o.watermark, watermark: o.watermark,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
text: o.text, text: o.text,
@ -44,95 +50,85 @@ BI.SingleSelectTrigger = BI.inherit(BI.Trigger, {
popup: {}, popup: {},
adapter: o.adapter, adapter: o.adapter,
masker: o.masker, masker: o.masker,
value: o.value value: o.value,
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_START, function () { this.searcher.on(SingleSelectSearcher.EVENT_START, () => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_START); this.fireEvent(SingleSelectTrigger.EVENT_START);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_PAUSE, function () { this.searcher.on(SingleSelectSearcher.EVENT_PAUSE, () => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_PAUSE); this.fireEvent(SingleSelectTrigger.EVENT_PAUSE);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_SEARCHING, function () { this.searcher.on(SingleSelectSearcher.EVENT_SEARCHING, (...args) => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_SEARCHING, arguments); this.fireEvent(SingleSelectTrigger.EVENT_SEARCHING, ...args);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_STOP, function () { this.searcher.on(SingleSelectSearcher.EVENT_STOP, () => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_STOP); this.fireEvent(SingleSelectTrigger.EVENT_STOP);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_CHANGE, function () { this.searcher.on(SingleSelectSearcher.EVENT_CHANGE, (...args) => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_CHANGE, arguments); this.fireEvent(SingleSelectTrigger.EVENT_CHANGE, ...args);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_FOCUS, function () { this.searcher.on(SingleSelectSearcher.EVENT_FOCUS, () => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_FOCUS); this.fireEvent(SingleSelectTrigger.EVENT_FOCUS);
}); });
this.searcher.on(BI.SingleSelectSearcher.EVENT_BLUR, function () { this.searcher.on(SingleSelectSearcher.EVENT_BLUR, (...args) => {
self.fireEvent(BI.SingleSelectTrigger.EVENT_BLUR, arguments); this.fireEvent(SingleSelectTrigger.EVENT_BLUR, ...args);
}); });
var wrapper = BI.createWidget({ createWidget({
type: "bi.htape", type: HTapeLayout.xtype,
element: this, element: this,
items: [ items: [
{ {
el: this.searcher, el: this.searcher,
width: "fill" width: "fill",
}, { },
el: BI.createWidget(), {
width: 24 el: createWidget(),
}] width: 24,
}
],
}); });
!o.allowEdit && BI.createWidget({ !o.allowEdit &&
type: "bi.absolute", createWidget({
type: AbsoluteLayout.xtype,
element: this, element: this,
items: [{ items: [
{
el: { el: {
type: "bi.text", type: Text.xtype,
title: function () { title: () => this.searcher.getState(),
return self.searcher.getState();
}
}, },
left: 0, left: 0,
right: 24, right: 24,
top: 0, top: 0,
bottom: 0 bottom: 0,
}] }
],
}); });
}, }
getSearcher: function () { getSearcher() {
return this.searcher; return this.searcher;
}, }
stopEditing: function () { stopEditing() {
this.searcher.stopSearch(); this.searcher.stopSearch();
}, }
setAdapter: function (adapter) { setAdapter(adapter) {
this.searcher.setAdapter(adapter); this.searcher.setAdapter(adapter);
}, }
setValue: function (v) { setValue(v) {
this.searcher.setValue(v); this.searcher.setValue(v);
}, }
getKey: function () { getKey() {
return this.searcher.getKey(); return this.searcher.getKey();
}, }
getValue: function () { getValue() {
return this.searcher.getValue(); return this.searcher.getValue();
} }
}); }
BI.SingleSelectTrigger.EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK";
BI.SingleSelectTrigger.EVENT_COUNTER_CLICK = "EVENT_COUNTER_CLICK";
BI.SingleSelectTrigger.EVENT_CHANGE = "EVENT_CHANGE";
BI.SingleSelectTrigger.EVENT_START = "EVENT_START";
BI.SingleSelectTrigger.EVENT_STOP = "EVENT_STOP";
BI.SingleSelectTrigger.EVENT_PAUSE = "EVENT_PAUSE";
BI.SingleSelectTrigger.EVENT_SEARCHING = "EVENT_SEARCHING";
BI.SingleSelectTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW";
BI.SingleSelectTrigger.EVENT_FOCUS = "EVENT_FOCUS";
BI.SingleSelectTrigger.EVENT_BLUR = "EVENT_BLUR";
BI.shortcut("bi.single_select_trigger", BI.SingleSelectTrigger);

224
src/widget/singleselect/singleselectlist.insert.js

@ -1,61 +1,83 @@
/** import {
* @author: Teller shortcut,
* @createdAt: 2018/3/28 extend,
* @Description emptyFn,
*/ isKey,
BI.SingleSelectInsertList = BI.inherit(BI.Single, { createWidget,
_defaultConfig: function () { isNotEmptyString,
return BI.extend(BI.SingleSelectInsertList.superclass._defaultConfig.apply(this, arguments), { i18nText,
deepClone,
VerticalFillLayout,
AbsoluteLayout,
makeObject
} from "@/core";
import { Single, Searcher } from "@/base";
import { SingleSelectLoader } from "./singleselect.loader";
import { SelectPatchEditor } from "../multiselect";
import { SearchEditor } from "../editor";
@shortcut()
export class SingleSelectInsertList extends Single {
static xtype = "bi.single_select_insert_list";
static REQ_GET_DATA_LENGTH = 0;
static REQ_GET_ALL_DATA = -1;
static EVENT_CHANGE = "EVENT_CHANGE";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-insert-list", baseCls: "bi-single-select-insert-list",
allowNoSelect: false, allowNoSelect: false,
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
itemWrapper: BI.emptyFn, itemWrapper: emptyFn,
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
searcherHeight: 24, searcherHeight: 24,
}); });
}, }
_init: function () {
BI.SingleSelectInsertList.superclass._init.apply(this, arguments); _init() {
super._init(...arguments);
var self = this, o = this.options; const self = this,
o = this.options;
this.storeValue = o.value; this.storeValue = o.value;
var assertShowValue = function () { const assertShowValue = () => {
BI.isKey(self._startValue) && (self.storeValue = self._startValue); isKey(this._startValue) && (this.storeValue = this._startValue);
// self.trigger.setValue(self.storeValue); // this.trigger.setValue(this.storeValue);
}; };
this.adapter = BI.createWidget({ this.adapter = createWidget({
type: "bi.single_select_loader", type: SingleSelectLoader.xtype,
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
cls: "popup-single-select-list bi-border-left bi-border-right bi-border-bottom", cls: "popup-single-select-list bi-border-left bi-border-right bi-border-bottom",
itemsCreator: o.itemsCreator, itemsCreator: o.itemsCreator,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
itemWrapper: o.itemWrapper, itemWrapper: o.itemWrapper,
logic: { logic: {
dynamic: true dynamic: true,
}, },
// onLoaded: o.onLoaded, // onLoaded: o.onLoaded,
el: {}, el: {},
value: o.value value: o.value,
}); });
this.adapter.on(BI.SingleSelectLoader.EVENT_CHANGE, function () { this.adapter.on(SingleSelectLoader.EVENT_CHANGE, function () {
self.storeValue = this.getValue(); self.storeValue = this.getValue();
assertShowValue(); assertShowValue();
self.fireEvent(BI.SingleSelectInsertList.EVENT_CHANGE); self.fireEvent(SingleSelectInsertList.EVENT_CHANGE);
}); });
this.searcherPane = BI.createWidget({ this.searcherPane = createWidget({
type: "bi.single_select_search_insert_pane", type: "bi.single_select_search_insert_pane",
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
cls: "bi-border-left bi-border-right bi-border-bottom", cls: "bi-border-left bi-border-right bi-border-bottom",
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
keywordGetter: function () { keywordGetter () {
return self.trigger.getKeyword(); return self.trigger.getKeyword();
}, },
itemsCreator: function (op, callback) { itemsCreator (op, callback) {
op.keywords = [self.trigger.getKeyword()]; op.keywords = [self.trigger.getKeyword()];
if (BI.isNotEmptyString(op.keywords[0])) { if (isNotEmptyString(op.keywords[0])) {
this.setKeyword(op.keywords[0]); this.setKeyword(op.keywords[0]);
o.itemsCreator(op, callback); o.itemsCreator(op, callback);
} }
@ -63,48 +85,51 @@ BI.SingleSelectInsertList = BI.inherit(BI.Single, {
}); });
this.searcherPane.setVisible(false); this.searcherPane.setVisible(false);
this.trigger = BI.createWidget({ this.trigger = createWidget({
type: "bi.searcher", type: Searcher.xtype,
el: { el: {
type: "bi.select_patch_editor", type: SelectPatchEditor.xtype,
el: { el: {
type: "bi.search_editor", type: SearchEditor.xtype,
watermark: BI.i18nText("BI-Basic_Search_And_Patch_Paste"), watermark: i18nText("BI-Basic_Search_And_Patch_Paste"),
}, },
ref: function (ref) { ref (ref) {
self.editor = ref; self.editor = ref;
}, },
height: o.searcherHeight, height: o.searcherHeight,
}, },
isAutoSearch: false, isAutoSearch: false,
isAutoSync: false, isAutoSync: false,
onSearch: function (op, callback) { onSearch (op, callback) {
callback(); callback();
}, },
adapter: this.adapter, adapter: this.adapter,
popup: this.searcherPane, popup: this.searcherPane,
masker: false, masker: false,
value: o.value, value: o.value,
listeners: [{ listeners: [
eventName: BI.Searcher.EVENT_START, {
action: function () { eventName: Searcher.EVENT_START,
action () {
self._showSearcherPane(); self._showSearcherPane();
self._setStartValue(); self._setStartValue();
this.setValue(BI.deepClone(self.storeValue)); this.setValue(deepClone(self.storeValue));
} },
}, { },
eventName: BI.Searcher.EVENT_STOP, {
action: function () { eventName: Searcher.EVENT_STOP,
action () {
self._showAdapter(); self._showAdapter();
self._setStartValue(); self._setStartValue();
self.adapter.setValue(self.storeValue); self.adapter.setValue(self.storeValue);
// 需要刷新回到初始界面,否则搜索的结果不能放在最前面 // 需要刷新回到初始界面,否则搜索的结果不能放在最前面
self.adapter.populate(); self.adapter.populate();
} },
}, { },
eventName: BI.Searcher.EVENT_PAUSE, {
action: function () { eventName: Searcher.EVENT_PAUSE,
var keyword = this.getKeyword(); action () {
const keyword = this.getKeyword();
self.storeValue = keyword; self.storeValue = keyword;
self._showAdapter(); self._showAdapter();
self.adapter.setValue(self.storeValue); self.adapter.setValue(self.storeValue);
@ -112,96 +137,95 @@ BI.SingleSelectInsertList = BI.inherit(BI.Single, {
assertShowValue(); assertShowValue();
self.adapter.populate(); self.adapter.populate();
self._setStartValue(); self._setStartValue();
self.fireEvent(BI.SingleSelectInsertList.EVENT_CHANGE); self.fireEvent(SingleSelectInsertList.EVENT_CHANGE);
},
} },
}, { {
eventName: BI.Searcher.EVENT_CHANGE, eventName: Searcher.EVENT_CHANGE,
action: function () { action () {
self.storeValue = this.getValue(); self.storeValue = this.getValue();
self.fireEvent(BI.SingleSelectInsertList.EVENT_CHANGE); self.fireEvent(SingleSelectInsertList.EVENT_CHANGE);
},
} }
}] ],
}); });
BI.createWidget({ createWidget({
type: "bi.vertical_fill", type: VerticalFillLayout.xtype,
rowSize: ["", "fill"], rowSize: ["", "fill"],
element: this, element: this,
items: [{ items: [
{
el: this.trigger, el: this.trigger,
}, { },
{
el: this.adapter, el: this.adapter,
}] }
],
}); });
BI.createWidget({ createWidget({
type: "bi.absolute", type: AbsoluteLayout.xtype,
element: this, element: this,
items: [{ items: [
{
el: this.searcherPane, el: this.searcherPane,
top: 24, top: 24,
bottom: 0, bottom: 0,
left: 0, left: 0,
right: 0 right: 0,
}] }
],
}); });
}, }
_showAdapter: function () { _showAdapter() {
this.adapter.setVisible(true); this.adapter.setVisible(true);
this.searcherPane.setVisible(false); this.searcherPane.setVisible(false);
}, }
_showSearcherPane: function () { _showSearcherPane() {
this.searcherPane.setVisible(true); this.searcherPane.setVisible(true);
this.adapter.setVisible(false); this.adapter.setVisible(false);
}, }
_defaultState: function () { _defaultState() {
this.trigger.stopEditing(); this.trigger.stopEditing();
}, }
_assertValue: function () {}, _assertValue() {}
_makeMap: function (values) { _makeMap(values) {
return BI.makeObject(values || []); return makeObject(values || []);
}, }
_setStartValue: function (value) { _setStartValue(value) {
this._startValue = value; this._startValue = value;
this.adapter.setStartValue(value); this.adapter.setStartValue(value);
}, }
isAllSelected: function () { isAllSelected() {
return this.adapter.isAllSelected(); return this.adapter.isAllSelected();
}, }
resize: function () { resize() {
// this.trigger.getCounter().adjustView(); // this.trigger.getCounter().adjustView();
// this.trigger.adjustView(); // this.trigger.adjustView();
}, }
setValue: function (v) {
setValue(v) {
this.storeValue = v; this.storeValue = v;
this.adapter.setValue(this.storeValue); this.adapter.setValue(this.storeValue);
this.trigger.setValue(this.storeValue); this.trigger.setValue(this.storeValue);
}, }
getValue: function () { getValue() {
return BI.deepClone(this.storeValue); return deepClone(this.storeValue);
}, }
populate: function () { populate() {
this._count = null; this._count = null;
this._allData = null; this._allData = null;
this.adapter.populate.apply(this.adapter, arguments); this.adapter.populate(...arguments);
this.trigger.populate.apply(this.trigger, arguments); this.trigger.populate(...arguments);
}
} }
});
BI.extend(BI.SingleSelectInsertList, {
REQ_GET_DATA_LENGTH: 0,
REQ_GET_ALL_DATA: -1
});
BI.SingleSelectInsertList.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.single_select_insert_list", BI.SingleSelectInsertList);

102
src/widget/singleselect/trigger/editor.singleselect.js

@ -1,25 +1,28 @@
/** import { shortcut, Widget, extend, i18nText, createWidget, Controller, isEmptyString, isEmptyArray, BlankSplitChar } from "@/core";
* 单选输入框 import { StateEditor } from "@/case";
* Created by guy on 15/11/3. import { SelectPatchEditor } from "../../multiselect";
* @class BI.SingleSelectEditor
* @extends Widget
*/
BI.SingleSelectEditor = BI.inherit(BI.Widget, {
_defaultConfig: function () { @shortcut()
return BI.extend(BI.SingleSelectEditor.superclass._defaultConfig.apply(this, arguments), { export class SingleSelectEditor extends Widget {
static xtype = "bi.single_select_editor";
static EVENT_FOCUS = "EVENT_FOCUS";
static EVENT_BLUR = "EVENT_BLUR";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-editor", baseCls: "bi-single-select-editor",
el: {}, el: {},
text: BI.i18nText("BI-Basic_Please_Select"), text: i18nText("BI-Basic_Please_Select"),
watermark: BI.i18nText("BI-Basic_Search"), watermark: i18nText("BI-Basic_Search"),
}); });
}, }
_init: function () { _init() {
BI.SingleSelectEditor.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, o = this.options; const o = this.options;
this.editor = BI.createWidget(o.el, { this.editor = createWidget(o.el, {
type: "bi.select_patch_editor", type: SelectPatchEditor.xtype,
element: this, element: this,
height: o.height, height: o.height,
watermark: o.watermark, watermark: o.watermark,
@ -29,64 +32,59 @@ BI.SingleSelectEditor = BI.inherit(BI.Widget, {
text: o.text, text: o.text,
}); });
this.editor.on(BI.Controller.EVENT_CHANGE, function () { this.editor.on(Controller.EVENT_CHANGE, (...args) => {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); this.fireEvent(Controller.EVENT_CHANGE, ...args);
}); });
this.editor.on(BI.StateEditor.EVENT_FOCUS, function () { this.editor.on(StateEditor.EVENT_FOCUS, () => {
self.fireEvent(BI.SingleSelectEditor.EVENT_FOCUS); this.fireEvent(SingleSelectEditor.EVENT_FOCUS);
}); });
this.editor.on(BI.StateEditor.EVENT_BLUR, function () { this.editor.on(StateEditor.EVENT_BLUR, () => {
self.fireEvent(BI.SingleSelectEditor.EVENT_BLUR); this.fireEvent(SingleSelectEditor.EVENT_BLUR);
}); });
}, }
focus: function () { focus() {
this.editor.focus(); this.editor.focus();
}, }
blur: function () { blur() {
this.editor.blur(); this.editor.blur();
}, }
setState: function (state) { setState(state) {
this.editor.setState(state); this.editor.setState(state);
}, }
setValue: function (v) { setValue(v) {
this.editor.setValue(v); this.editor.setValue(v);
}, }
getValue: function () { getValue() {
return this.editor.getValue(); return this.editor.getValue();
}, }
getKeywords: function () { getKeywords() {
var val = this.editor.getValue(); const val = this.editor.getValue();
var keywords = val.split(/\u200b\s\u200b/); let keywords = val.split(/\u200b\s\u200b/);
if (BI.isEmptyString(keywords[keywords.length - 1])) { if (isEmptyString(keywords[keywords.length - 1])) {
keywords = keywords.slice(0, keywords.length - 1); keywords = keywords.slice(0, keywords.length - 1);
} }
if (/\u200b\s\u200b$/.test(val)) { if (/\u200b\s\u200b$/.test(val)) {
return keywords.concat([BI.BlankSplitChar]); return keywords.concat([BlankSplitChar]);
} }
return keywords; return keywords;
}, }
getKeyword: function () { getKeyword() {
var val = this.editor.getValue(); const val = this.editor.getValue();
var keywords = val.split(/\u200b\s\u200b/); let keywords = val.split(/\u200b\s\u200b/);
if (BI.isEmptyString(keywords[keywords.length - 1])) { if (isEmptyString(keywords[keywords.length - 1])) {
keywords = keywords.slice(0, keywords.length - 1); keywords = keywords.slice(0, keywords.length - 1);
} }
return BI.isEmptyArray(keywords) ? "" : keywords[keywords.length - 1];
},
populate: function (items) {
return isEmptyArray(keywords) ? "" : keywords[keywords.length - 1];
} }
});
BI.SingleSelectEditor.EVENT_FOCUS = "EVENT_FOCUS"; populate(items) {}
BI.SingleSelectEditor.EVENT_BLUR = "EVENT_BLUR"; }
BI.shortcut("bi.single_select_editor", BI.SingleSelectEditor);

2
src/widget/singleselect/trigger/index.js

@ -0,0 +1,2 @@
export { SingleSelectEditor } from "./editor.singleselect";
export { SingleSelectSearcher } from "./searcher.singleselect";

187
src/widget/singleselect/trigger/searcher.singleselect.js

@ -1,162 +1,161 @@
/** import { shortcut, Widget, extend, emptyFn, createWidget, isNotNull, isUndefined, Selection } from "@/core";
* searcher import { SingleSelectEditor } from "./editor.singleselect";
* Created by guy on 15/11/3. import { Searcher } from "@/base";
* @class BI.SingleSelectSearcher
* @extends Widget @shortcut()
*/ export class SingleSelectSearcher extends Widget {
BI.SingleSelectSearcher = BI.inherit(BI.Widget, { static xtype = "bi.single_select_searcher";
_defaultConfig: function () { static EVENT_FOCUS = "EVENT_FOCUS";
return BI.extend(BI.SingleSelectSearcher.superclass._defaultConfig.apply(this, arguments), { static EVENT_BLUR = "EVENT_BLUR";
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_SEARCHING = "EVENT_SEARCHING";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-single-select-searcher", baseCls: "bi-single-select-searcher",
itemsCreator: BI.emptyFn, itemsCreator: emptyFn,
el: {}, el: {},
popup: {}, popup: {},
valueFormatter: BI.emptyFn, valueFormatter: emptyFn,
adapter: null, adapter: null,
masker: {}, masker: {},
allowNoSelect: false allowNoSelect: false,
}); });
}, }
_init: function () { _init() {
BI.SingleSelectSearcher.superclass._init.apply(this, arguments); super._init(...arguments);
var self = this, o = this.options; const self = this,
this.editor = BI.createWidget(o.el, { o = this.options;
this.editor = createWidget(o.el, {
type: "bi.single_select_editor", type: "bi.single_select_editor",
height: o.height, height: o.height,
watermark: o.watermark, watermark: o.watermark,
text: o.text, text: o.text,
listeners: [{ listeners: [{
eventName: BI.SingleSelectEditor.EVENT_FOCUS, eventName: SingleSelectEditor.EVENT_FOCUS,
action: function () { action: () => {
self.fireEvent(BI.SingleSelectSearcher.EVENT_FOCUS); this.fireEvent(SingleSelectSearcher.EVENT_FOCUS);
} },
}, { },
eventName: BI.SingleSelectEditor.EVENT_BLUR, {
action: function () { eventName: SingleSelectEditor.EVENT_BLUR,
self.fireEvent(BI.SingleSelectSearcher.EVENT_BLUR); action: () => {
this.fireEvent(SingleSelectSearcher.EVENT_BLUR);
},
} }
}] ],
}); });
this.searcher = BI.createWidget({ this.searcher = createWidget({
type: "bi.searcher", type: Searcher.xtype,
element: this, element: this,
height: o.height, height: o.height,
isAutoSearch: false, isAutoSearch: false,
isAutoSync: false, isAutoSync: false,
onSearch: function (op, callback) { onSearch(op, callback) {
callback(); callback();
}, },
el: this.editor, el: this.editor,
popup: BI.extend({ popup: extend({
type: "bi.single_select_search_pane", type: "bi.single_select_search_pane",
allowNoSelect: o.allowNoSelect, allowNoSelect: o.allowNoSelect,
valueFormatter: o.valueFormatter, valueFormatter: o.valueFormatter,
keywordGetter: function () { keywordGetter: () => this.editor.getValue(),
return self.editor.getValue(); itemsCreator(op, callback) {
}, const keyword = self.editor.getValue();
itemsCreator: function (op, callback) {
var keyword = self.editor.getValue();
op.keywords = [keyword]; op.keywords = [keyword];
this.setKeyword(keyword); this.setKeyword(keyword);
o.itemsCreator(op, callback); o.itemsCreator(op, callback);
}, },
value: o.value value: o.value,
}, o.popup), },
o.popup
),
adapter: o.adapter, adapter: o.adapter,
masker: o.masker masker: o.masker,
}); });
this.searcher.on(BI.Searcher.EVENT_START, function () { this.searcher.on(Searcher.EVENT_START, () => {
self.fireEvent(BI.SingleSelectSearcher.EVENT_START); this.fireEvent(SingleSelectSearcher.EVENT_START);
}); });
this.searcher.on(BI.Searcher.EVENT_PAUSE, function () { this.searcher.on(Searcher.EVENT_PAUSE, () => {
if (this.hasMatched()) { this.fireEvent(SingleSelectSearcher.EVENT_PAUSE);
}
self.fireEvent(BI.SingleSelectSearcher.EVENT_PAUSE);
}); });
this.searcher.on(BI.Searcher.EVENT_STOP, function () { this.searcher.on(Searcher.EVENT_STOP, () => {
self.fireEvent(BI.SingleSelectSearcher.EVENT_STOP); this.fireEvent(SingleSelectSearcher.EVENT_STOP);
}); });
this.searcher.on(BI.Searcher.EVENT_CHANGE, function () { this.searcher.on(Searcher.EVENT_CHANGE, (...args) => {
self.fireEvent(BI.SingleSelectSearcher.EVENT_CHANGE, arguments); this.fireEvent(SingleSelectSearcher.EVENT_CHANGE, ...args);
}); });
this.searcher.on(BI.Searcher.EVENT_SEARCHING, function () { this.searcher.on(Searcher.EVENT_SEARCHING, () => {
var keywords = this.getKeywords(); const keywords = this.searcher.getKeywords();
self.fireEvent(BI.SingleSelectSearcher.EVENT_SEARCHING, keywords); this.fireEvent(SingleSelectSearcher.EVENT_SEARCHING, keywords);
}); });
if(BI.isNotNull(o.value)){ if (isNotNull(o.value)) {
this.setState(o.value); this.setState(o.value);
} }
}, }
adjustView: function () { adjustView() {
this.searcher.adjustView(); this.searcher.adjustView();
}, }
isSearching: function () { isSearching() {
return this.searcher.isSearching(); return this.searcher.isSearching();
}, }
stopSearch: function () { stopSearch() {
this.searcher.stopSearch(); this.searcher.stopSearch();
}, }
getKeyword: function () { getKeyword() {
return this.editor.getKeyword(); return this.editor.getKeyword();
}, }
hasMatched: function () { hasMatched() {
return this.searcher.hasMatched(); return this.searcher.hasMatched();
}, }
hasChecked: function () { hasChecked() {
return this.searcher.getView() && this.searcher.getView().hasChecked(); return this.searcher.getView() && this.searcher.getView().hasChecked();
}, }
setAdapter: function (adapter) { setAdapter(adapter) {
this.searcher.setAdapter(adapter); this.searcher.setAdapter(adapter);
}, }
setState: function (v) { setState(v) {
var o = this.options; const o = this.options;
if (BI.isUndefined(v)) { if (isUndefined(v)) {
this.editor.setState(BI.Selection.None); this.editor.setState(Selection.None);
} else { } else {
v = v ?? ""; v = v ?? "";
this.editor.setState(o.valueFormatter(v + "") || (v + "")); this.editor.setState(o.valueFormatter(`${v}`) || `${v}`);
}
} }
},
setValue: function (ob) { setValue(ob) {
this.setState(ob); this.setState(ob);
this.searcher.setValue(ob); this.searcher.setValue(ob);
}, }
getKey: function () { getKey() {
return this.editor.getValue(); return this.editor.getValue();
}, }
getValue: function () { getValue() {
return this.searcher.getValue(); return this.searcher.getValue();
},
populate: function (items) {
this.searcher.populate.apply(this.searcher, arguments);
} }
});
BI.SingleSelectSearcher.EVENT_FOCUS = "EVENT_FOCUS"; populate(items) {
BI.SingleSelectSearcher.EVENT_BLUR = "EVENT_BLUR"; this.searcher.populate(...arguments);
BI.SingleSelectSearcher.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; }
BI.SingleSelectSearcher.EVENT_CHANGE = "EVENT_CHANGE"; }
BI.SingleSelectSearcher.EVENT_START = "EVENT_START";
BI.SingleSelectSearcher.EVENT_STOP = "EVENT_STOP";
BI.SingleSelectSearcher.EVENT_PAUSE = "EVENT_PAUSE";
BI.SingleSelectSearcher.EVENT_SEARCHING = "EVENT_SEARCHING";
BI.shortcut("bi.single_select_searcher", BI.SingleSelectSearcher);

Loading…
Cancel
Save