Browse Source

KERNEL-10944 feat: AllValueChooser内置分页逻辑

es6
zsmj 2 years ago
parent
commit
8cb626d0a2
  1. 25
      src/component/allvaluechooser/abstract.allvaluechooser.js
  2. 7
      src/component/allvaluechooser/pane.allvaluechooser.js
  3. 10
      src/widget/multiselectlist/multiselectlist.js

25
src/component/allvaluechooser/abstract.allvaluechooser.js

@ -40,6 +40,18 @@ BI.AbstractAllValueChooser = BI.inherit(BI.Widget, {
return text;
},
_getItemsByTimes: function (items, times) {
var res = [];
for (var i = (times - 1) * this._const.perPage; items[i] && i < times * this._const.perPage; i++) {
res.push(items[i]);
}
return res;
},
_hasNextByTimes: function (items, times) {
return times * this._const.perPage < items.length;
},
_itemsCreator: function (options, callback) {
var self = this, o = this.options;
if (!o.cache || !this.items) {
@ -50,13 +62,14 @@ BI.AbstractAllValueChooser = BI.inherit(BI.Widget, {
} else {
call(this.items);
}
function call (items) {
function call(items) {
var keywords = (options.keywords || []).slice();
if (options.keyword) {
keywords.push(options.keyword);
}
var resultItems = items;
if(BI.isNotEmptyArray(keywords)) {
if (BI.isNotEmptyArray(keywords)) {
resultItems = [];
BI.each(keywords, function (i, kw) {
var search = BI.Func.getSearchResult(items, kw);
@ -77,12 +90,12 @@ BI.AbstractAllValueChooser = BI.inherit(BI.Widget, {
return;
}
if (options.type === BI.MultiSelectCombo.REQ_GET_DATA_LENGTH) {
callback({count: resultItems.length});
callback({ count: resultItems.length });
return;
}
callback({
items: resultItems,
hasNext: false
items: self._getItemsByTimes(resultItems, options.times),
hasNext: self._hasNextByTimes(resultItems, options.times)
});
}
},
@ -101,4 +114,4 @@ BI.AbstractAllValueChooser = BI.inherit(BI.Widget, {
}
return value;
},
});
});

7
src/component/allvaluechooser/pane.allvaluechooser.js

@ -50,10 +50,11 @@ BI.AllValueChooserPane = BI.inherit(BI.AbstractAllValueChooser, {
getValue: function () {
var val = this.list.getValue() || {};
if (val.type === BI.Selection.All) {
return val.assist;
if (val.type === BI.Selection.Multi) {
return val.value || [];
}
return val.value || [];
return BI.difference(BI.map(this.items, "value"), val.value || []);
},
populate: function (items) {

10
src/widget/multiselectlist/multiselectlist.js

@ -215,7 +215,7 @@ BI.MultiSelectList = BI.inherit(BI.Widget, {
digest(values);
});
function digest (items) {
function digest(items) {
var selectedMap = self._makeMap(items);
BI.each(keywords, function (i, val) {
if (BI.isNotNull(selectedMap[val])) {
@ -235,7 +235,7 @@ BI.MultiSelectList = BI.inherit(BI.Widget, {
text: o.valueFormatter(v) || v,
value: v
};
}), this.trigger.getKey());
}), this.trigger.getKeyword());
var change = false;
var map = this._makeMap(this.storeValue.value);
BI.each(BI.concat(result.match, result.find), function (i, obj) {
@ -251,7 +251,7 @@ BI.MultiSelectList = BI.inherit(BI.Widget, {
}
o.itemsCreator({
type: BI.MultiSelectList.REQ_GET_ALL_DATA,
keywords: [this.trigger.getKey()],
keywords: [this.trigger.getKeyword()],
selectedValues: BI.filter(this.storeValue.value, function (_i, v) {
return !BI.contains(res.value, v);
}),
@ -288,7 +288,7 @@ BI.MultiSelectList = BI.inherit(BI.Widget, {
callback();
}
function adjust () {
function adjust() {
if (self.storeValue.type === BI.Selection.All && self.storeValue.value.length >= self._count) {
self.storeValue = {
type: BI.Selection.Multi,
@ -365,4 +365,4 @@ BI.extend(BI.MultiSelectList, {
});
BI.MultiSelectList.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.multi_select_list", BI.MultiSelectList);
BI.shortcut("bi.multi_select_list", BI.MultiSelectList);

Loading…
Cancel
Save