fastlion-amis
Version:
一种MIS页面生成工具
266 lines (265 loc) • 9.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ListStore = exports.Item = void 0;
var tslib_1 = require("tslib");
var mobx_state_tree_1 = require("mobx-state-tree");
var iRenderer_1 = require("./iRenderer");
var isEqual_1 = (0, tslib_1.__importDefault)(require("lodash/isEqual"));
var find_1 = (0, tslib_1.__importDefault)(require("lodash/find"));
var helper_1 = require("../utils/helper");
var tpl_1 = require("../utils/tpl");
exports.Item = mobx_state_tree_1.types
.model('Item', {
id: mobx_state_tree_1.types.identifier,
pristine: mobx_state_tree_1.types.frozen(),
data: mobx_state_tree_1.types.frozen(),
index: mobx_state_tree_1.types.number,
newIndex: mobx_state_tree_1.types.number
})
.views(function (self) { return ({
get checked() {
return (0, mobx_state_tree_1.getParent)(self, 2).isSelected(self);
},
get modified() {
if (!self.data) {
return false;
}
return Object.keys(self.data).some(function (key) { return !(0, isEqual_1.default)(self.data[key], self.pristine[key]); });
},
get moved() {
return self.index !== self.newIndex;
},
get locals() {
return (0, helper_1.createObject)((0, helper_1.extendObject)((0, mobx_state_tree_1.getParent)(self, 2).data, {
index: self.index
}), self.data);
},
get checkable() {
var table = (0, mobx_state_tree_1.getParent)(self, 2);
return table && table.itemCheckableOn
? (0, tpl_1.evalExpression)(table.itemCheckableOn, self.locals)
: true;
},
get draggable() {
var table = (0, mobx_state_tree_1.getParent)(self, 2);
return table && table.itemDraggableOn
? (0, tpl_1.evalExpression)(table.itemDraggableOn, self.locals)
: true;
}
}); })
.actions(function (self) { return ({
toggle: function () {
(0, mobx_state_tree_1.getParent)(self, 2).toggle(self);
},
change: function (values, savePristine) {
self.data = (0, helper_1.immutableExtends)(self.data, values);
savePristine && (self.pristine = self.data);
},
reset: function () {
self.newIndex = self.index;
self.data = self.pristine;
}
// setCheckded(bool: boolean) {
// self.checked = bool;
// },
}); });
exports.ListStore = iRenderer_1.iRendererStore
.named('ListStore')
.props({
items: mobx_state_tree_1.types.array(exports.Item),
selectedItems: mobx_state_tree_1.types.array(mobx_state_tree_1.types.reference(exports.Item)),
primaryField: 'id',
orderBy: '',
orderDir: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.union(mobx_state_tree_1.types.literal('asc'), mobx_state_tree_1.types.literal('desc')), 'asc'),
draggable: false,
dragging: false,
multiple: true,
selectable: false,
itemCheckableOn: '',
itemDraggableOn: '',
hideCheckToggler: false,
maxKeepItemSelectionLength: 0,
keepItemSelectionOnPageChange: false,
})
.views(function (self) {
function isSelected(item) {
return !!~self.selectedItems.indexOf(item);
}
function getSelectedRows() {
return self.items.filter(function (item) { return item.checked; });
}
function getModifiedItems() {
return self.items.filter(function (item) { return item.modified; });
}
function getModified() {
return getModifiedItems().length;
}
function getMovedItems() {
return self.items.filter(function (item) { return item.moved; });
}
function getMovied() {
return getMovedItems().length;
}
return {
get allChecked() {
return !!(self.selectedItems.length ===
self.checkableItems.length &&
self.checkableItems.length);
},
get checkableItems() {
return self.items.filter(function (item) { return item.checkable; });
},
get unSelectedItems() {
return self.items.filter(function (item) { return !item.checked; });
},
isSelected: isSelected,
get modified() {
return getModified();
},
get modifiedItems() {
return getModifiedItems();
},
get moved() {
return getMovied();
},
get movedItems() {
return getMovedItems();
},
get someChecked() {
return !!getSelectedRows().length;
},
get disabledHeadCheckbox() {
var _a;
var selectedLength = (_a = self.data) === null || _a === void 0 ? void 0 : _a.selectedItems.length;
var maxLength = self.maxKeepItemSelectionLength;
if (!self.data || !self.keepItemSelectionOnPageChange || !maxLength) {
return false;
}
return maxLength === selectedLength;
},
};
})
.actions(function (self) {
function update(config) {
config.selectable === void 0 || (self.selectable = config.selectable);
config.draggable === void 0 || (self.draggable = config.draggable);
config.multiple === void 0 || (self.multiple = config.multiple);
config.hideCheckToggler === void 0 ||
(self.hideCheckToggler = config.hideCheckToggler);
if (typeof config.orderBy !== 'undefined') {
setOrderByInfo(config.orderBy, config.orderDir === 'desc' ? 'desc' : 'asc');
}
config.itemCheckableOn === void 0 ||
(self.itemCheckableOn = config.itemCheckableOn);
config.itemDraggableOn === void 0 ||
(self.itemDraggableOn = config.itemDraggableOn);
}
function initItems(items) {
var arr = items.map(function (item, key) {
item = (0, helper_1.isObject)(item)
? item
: {
item: item
};
return {
// id: String((item as any)[self.primaryField] || key),
id: (0, helper_1.guid)(),
index: key,
newIndex: key,
pristine: item,
data: item,
modified: false
};
});
self.selectedItems.clear();
self.items.replace(arr);
self.dragging = false;
}
function updateSelected(selected, valueField) {
self.selectedItems.clear();
self.items.forEach(function (item) {
if (~selected.indexOf(item.pristine)) {
self.selectedItems.push(item);
}
else if ((0, find_1.default)(selected, function (a) {
return a[valueField || 'value'] == item.pristine[valueField || 'value'];
})) {
self.selectedItems.push(item);
}
});
}
function toggleAll() {
if (self.allChecked) {
self.selectedItems.clear();
}
else {
self.selectedItems.replace(self.checkableItems);
}
}
function toggle(item) {
if (!item.checkable) {
return;
}
var idx = self.selectedItems.indexOf(item);
if (self.multiple) {
~idx
? self.selectedItems.splice(idx, 1)
: self.selectedItems.push(item);
}
else {
~idx
? self.selectedItems.splice(idx, 1)
: self.selectedItems.replace([item]);
}
}
function clear() {
self.selectedItems.clear();
}
function setOrderByInfo(key, direction) {
self.orderBy = key;
self.orderDir = direction;
}
function reset() {
self.items.forEach(function (item) { return item.reset(); });
self.dragging = false;
}
function toggleDragging() {
self.dragging = !self.dragging;
}
function stopDragging() {
self.dragging = false;
}
function exchange(fromIndex, toIndex) {
var item = self.items[fromIndex];
item.newIndex = toIndex;
var newItems = self.items.slice();
newItems.splice(fromIndex, 1);
newItems.splice(toIndex, 0, item);
self.items.replace(newItems);
}
// Aug
function toggableHideCheck() {
self.hideCheckToggler = !self.hideCheckToggler;
}
// 全部反选
function checkReverse() {
var restCheckable = self.items.filter(function (item) { return !item.checked; });
self.selectedItems.replace(restCheckable);
}
return {
update: update,
initItems: initItems,
updateSelected: updateSelected,
toggleAll: toggleAll,
toggle: toggle,
clear: clear,
setOrderByInfo: setOrderByInfo,
checkReverse: checkReverse,
reset: reset,
toggleDragging: toggleDragging,
stopDragging: stopDragging,
toggableHideCheck: toggableHideCheck,
exchange: exchange
};
});
//# sourceMappingURL=./store/list.js.map
;