UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

273 lines (272 loc) 15.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.combineCell = exports.getColumnClassNameExprData = exports.getColumnShowLabel = exports.syncCrossColumnInfo = exports.getCellValue = exports.getHeadRows = exports.handleFilter = exports.handleSort = exports.CROSS_SPLIT_CHAR = void 0; var tslib_1 = require("tslib"); var utils_1 = require("../../utils/utils"); var helper_1 = require("../../utils/helper"); var crud_1 = require("../crud"); var union_1 = tslib_1.__importDefault(require("lodash/union")); var intersection_1 = tslib_1.__importDefault(require("lodash/intersection")); var lodash_1 = require("lodash"); var tpl_builtin_1 = require("../../utils/tpl-builtin"); exports.CROSS_SPLIT_CHAR = '·'; function handleSort(items, columnNames, orderMap, modifiedData) { var _a; if (columnNames.length > 0) { var name_1 = (_a = columnNames.pop()) !== null && _a !== void 0 ? _a : ''; items = items.sort(function (pre, next) { var _a, _b, _c, _d; var map = (_a = orderMap.get(name_1)) === null || _a === void 0 ? void 0 : _a.map; var order = (_b = orderMap.get(name_1)) === null || _b === void 0 ? void 0 : _b.order; // 如果有编辑数据 用编辑数据排序 否则用正常的数据排序 // 判断字段类型是否是map,是的话取map值来排序 var preData = (modifiedData === null || modifiedData === void 0 ? void 0 : modifiedData[pre[crud_1.DATAKEYID]]) ? (_c = modifiedData[pre[crud_1.DATAKEYID]]) === null || _c === void 0 ? void 0 : _c[name_1] : map ? map[pre[name_1]] : pre[name_1]; var nextData = (modifiedData === null || modifiedData === void 0 ? void 0 : modifiedData[next[crud_1.DATAKEYID]]) ? (_d = modifiedData[next[crud_1.DATAKEYID]]) === null || _d === void 0 ? void 0 : _d[name_1] : map ? map[next[name_1]] : next[name_1]; return (0, utils_1.sortFn)(preData, nextData, order); }); handleSort(items, columnNames, orderMap, modifiedData); } return items; } exports.handleSort = handleSort; function handleFilter(items, columnNames, filterMap, caseSensitive) { var _a, _b, _c; if (caseSensitive === void 0) { caseSensitive = false; } if (columnNames.length > 0) { var name = (_a = columnNames.pop()) !== null && _a !== void 0 ? _a : ''; var filters = filterMap.get(name); if (filters) { var temps = []; for (var i = 0; i < filters.length; i++) { var filter = filters[i]; var relation = (_b = filters[i - 1]) === null || _b === void 0 ? void 0 : _b.relation; var arr = (0, utils_1.filterFn)(items.slice(), name, filter.condition, (_c = filter.value3) !== null && _c !== void 0 ? _c : filter.value1, filter.value2, caseSensitive); if (relation == 'and') { temps = (0, intersection_1.default)(temps, arr); } else if (relation == 'or') { temps = (0, union_1.default)(temps, arr); } else { temps = arr; } } items = handleFilter(temps, columnNames, filterMap); } } return items; } exports.handleFilter = handleFilter; function getHeadRows(filtedColumns, saveHidden) { var _a; if (saveHidden === void 0) { saveHidden = false; } if (filtedColumns.length <= 0) return []; var groupNames = filtedColumns.map(function (column) { return column.groupName.length > 0 ? column.groupName.split(',').length : 0; }); var level = Math.max.apply(Math, groupNames) + 1; var columns = filtedColumns.map(function (column, index) { if (column.type == '__checkme' || column.type == '__expandme' || column.type == '__pseudoColumn') { var name_2 = column.type == '__checkme' ? 'SF_CHECK' : 'SF_PSEUDO'; return tslib_1.__assign(tslib_1.__assign({}, column), { name: name_2, groupName: new Array(level - 1).fill(name_2).join(',') }); } var name = column.name || ('空' + (index || '')); var groupNameArr = column.groupName.split(','); var diff = level - 1 - groupNameArr.length; var groupName = column.groupName.length == 0 ? new Array(level - 1).fill(name).join(',') : column.groupName.split(',').concat(new Array(diff).fill(groupNameArr[groupNameArr.length - 1])).join(','); return tslib_1.__assign(tslib_1.__assign({}, column), { name: name, groupName: level > 1 ? groupName : '' }); }); var rows = []; var array = []; var _loop_1 = function (i) { var row = columns.map(function (column) { return ({ groupName: (column.groupName.length > 0 ? column.groupName.split(',') : []).concat(column.name)[i], column: column }); }); array.push(row); }; for (var i = 0; i < level; i++) { _loop_1(i); } var groupNamesArray = array.slice(); for (var rowIndex = 0; rowIndex < groupNamesArray.length; rowIndex++) { var rowGroupNamesArray = groupNamesArray[rowIndex]; var rowResult = []; var _loop_2 = function (colIndex) { var _b = rowGroupNamesArray[colIndex], groupName = _b.groupName, column = _b.column; var groupLabels = (_a = column.pristine.groupLabels) !== null && _a !== void 0 ? _a : []; var label = groupLabels.length > 0 ? groupLabels[rowIndex] : groupName; if (rowIndex > 0) { var upLevel = rows[rowIndex - 1][colIndex]; if (upLevel.name == groupName && upLevel.colspan == 1) { rowResult.push({ name: groupName, label: label, rowspan: 1, colspan: 1, hidden: true, column: column }); return out_colIndex_1 = colIndex, "continue"; } } var rowspan = 1; var colGroupNamesArray = (0, lodash_1.flatMap)(groupNamesArray.slice(rowIndex + 1), function (arr) { return arr[colIndex]; }); for (var i = 0; i < colGroupNamesArray.length; i++) { var item = colGroupNamesArray[i]; if (groupName == item.groupName) { rowspan += 1; } else { break; } } if (rowspan > 1) { rowResult.push({ name: groupName, label: label, rowspan: rowspan, colspan: 1, hidden: false, column: column }); return out_colIndex_1 = colIndex, "continue"; } var colspan = 1; for (var i = colIndex + 1; i < rowGroupNamesArray.length; i++) { var item = rowGroupNamesArray[i]; if (groupName == item.groupName) { colspan += 1; } else { break; } } colIndex += colspan - 1; for (var i = 1; i <= colspan; i++) { rowResult.push({ name: groupName, label: label, rowspan: rowspan, colspan: colspan, hidden: i > 1, column: column }); } out_colIndex_1 = colIndex; }; var out_colIndex_1; for (var colIndex = 0; colIndex < rowGroupNamesArray.length; colIndex++) { _loop_2(colIndex); colIndex = out_colIndex_1; } rows.push(rowResult); } return saveHidden ? rows : rows.map(function (row) { return row.filter(function (item) { return !item.hidden; }); }); } exports.getHeadRows = getHeadRows; function getCellValue(originValue, column, clearFormat, isCopyCell) { var _a, _b, _c, _d, _e, _f, _g, _h; if (clearFormat === void 0) { clearFormat = false; } var value = originValue; var prefix = (_a = column === null || column === void 0 ? void 0 : column.pristine.prefix) !== null && _a !== void 0 ? _a : ''; var suffix = (_b = column === null || column === void 0 ? void 0 : column.pristine.suffix) !== null && _b !== void 0 ? _b : ''; if ((column === null || column === void 0 ? void 0 : column.type) === 'mapping') { var delimiter = column.pristine.delimiter; if (typeof delimiter === 'string') { var originValues = String(originValue).split(delimiter); value = originValues.map(function (value) { var _a, _b; return (_b = (_a = column === null || column === void 0 ? void 0 : column.map) === null || _a === void 0 ? void 0 : _a[value]) !== null && _b !== void 0 ? _b : (value !== null && value !== void 0 ? value : ''); }).join(delimiter); } else { value = (_d = (_c = column === null || column === void 0 ? void 0 : column.map) === null || _c === void 0 ? void 0 : _c[originValue]) !== null && _d !== void 0 ? _d : (originValue !== null && originValue !== void 0 ? originValue : ''); } } else if ((column === null || column === void 0 ? void 0 : column.type) === 'number') { if ((0, lodash_1.isNil)(value)) return ''; // 不需要清空格式化的逻辑 if (!clearFormat) { var showUppercase = (_e = column === null || column === void 0 ? void 0 : column.pristine.showUppercase) !== null && _e !== void 0 ? _e : 0; var kilobitSeparator = (_f = column === null || column === void 0 ? void 0 : column.pristine.kilobitSeparator) !== null && _f !== void 0 ? _f : false; var precision = !(0, lodash_1.isNil)(column === null || column === void 0 ? void 0 : column.pristine.precision) ? column === null || column === void 0 ? void 0 : column.pristine.precision : (_h = (_g = (value + '').split('.')[1]) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0; if (showUppercase !== 0) { value = (0, utils_1.translateNumber)(value, showUppercase); } else if (kilobitSeparator && originValue != null) { value = (0, helper_1.numberFormatter)(originValue, precision); } else if (originValue != null && typeof originValue == 'number') { value = originValue.toFixed(precision); } else if (typeof originValue === 'string') { value = (+originValue).toFixed(precision); } return "".concat(prefix || '').concat(value).concat(suffix || ''); } else { // 需要清空格式化的逻辑 if (suffix === '%') { // 如果是百分比的逻辑 value = (0, lodash_1.isNil)(originValue) ? originValue : originValue / 100; } return value; } } if (value != null) { return typeof value == 'object' ? '[文件]' : "".concat(clearFormat ? '' : prefix).concat(typeof value == 'string' && !isCopyCell ? value.replace(/\n|\r|<[^>]*>/g, '') : value).concat(clearFormat ? '' : suffix); } return ''; } exports.getCellValue = getCellValue; /** 同步设置列信息 */ var syncCrossColumnInfo = function (columns, columnInfo) { if (columnInfo && Object.keys(columnInfo).length) { var newColumns_1 = columns.slice(); var colsArr = Object.entries(columnInfo).sort(function (a, b) { var _a, _b; return ((_a = a[1]) === null || _a === void 0 ? void 0 : _a.index) - ((_b = b[1]) === null || _b === void 0 ? void 0 : _b.index); }); var newCols_1 = []; colsArr.forEach(function (_a) { var k = _a[0], v = _a[1]; var target = newColumns_1.find(function (colItem) { return colItem.name === k; }); if (target) { newCols_1.push(tslib_1.__assign(tslib_1.__assign({}, target), v)); } }); var restColumns = newColumns_1.filter(function (item) { return !newCols_1.find(function (col) { return col.name === item.name; }); }); return tslib_1.__spreadArray(tslib_1.__spreadArray([], newCols_1, true), restColumns, true); } return columns; }; exports.syncCrossColumnInfo = syncCrossColumnInfo; var getColumnShowLabel = function (column) { var _a, _b; var names = (_a = column.name) === null || _a === void 0 ? void 0 : _a.split(exports.CROSS_SPLIT_CHAR); var label = column.label || column.name; var groupNames = column.groupName ? column.groupName.split(',') : []; if ((names === null || names === void 0 ? void 0 : names.length) == 1 && (groupNames.length == 0 || groupNames.every(function (item) { return item == names[0]; }))) { return label; } var labels = (_b = column.pristine.groupLabels) !== null && _b !== void 0 ? _b : []; if (labels.length > 0) { return labels.join(exports.CROSS_SPLIT_CHAR) + exports.CROSS_SPLIT_CHAR + label; } if (groupNames.length > 0) { return (column.groupName.includes(exports.CROSS_SPLIT_CHAR) ? groupNames[groupNames.length - 1] : groupNames.join(exports.CROSS_SPLIT_CHAR)) + exports.CROSS_SPLIT_CHAR + label; } return label; }; exports.getColumnShowLabel = getColumnShowLabel; var getColumnClassNameExprData = function (column, data) { var isCrossColumn = typeof column.name == 'string' && column.name.includes(exports.CROSS_SPLIT_CHAR); if (isCrossColumn && column.pristine.classNameExpr) { var classNameExprData_1 = tslib_1.__assign({}, data); var levelNames = column.name.split(exports.CROSS_SPLIT_CHAR); var groupName_1 = levelNames.slice(0, levelNames.length - 1).join(exports.CROSS_SPLIT_CHAR); Object.keys(classNameExprData_1).forEach(function (key) { if (key.startsWith(groupName_1)) { var name = key.replace("".concat(groupName_1).concat(exports.CROSS_SPLIT_CHAR), ''); classNameExprData_1[name] = classNameExprData_1[key]; } }); return classNameExprData_1; } return data; }; exports.getColumnClassNameExprData = getColumnClassNameExprData; var combineCell = function (arr, combinedColumns) { var _a, _b; for (var _i = 0, combinedColumns_1 = combinedColumns; _i < combinedColumns_1.length; _i++) { var _c = combinedColumns_1[_i], name = _c.name, _d = _c.combinedNull, combinedNull = _d === void 0 ? true : _d; var i = 0; while (i < arr.length) { if (arr[i].rowSpans[name] !== 0) { arr[i].rowSpans[name] = 1; } var j = i + 1; while (j < arr.length && (0, lodash_1.isEqual)(combinedNull ? (0, tpl_builtin_1.resolveVariable)(name, arr[i]) : (_a = (0, tpl_builtin_1.resolveVariable)(name, arr[i])) !== null && _a !== void 0 ? _a : Math.random(), combinedNull ? (0, tpl_builtin_1.resolveVariable)(name, arr[j]) : (_b = (0, tpl_builtin_1.resolveVariable)(name, arr[j])) !== null && _b !== void 0 ? _b : Math.random())) { arr[i].rowSpans[name]++; arr[j].rowSpans[name] = 0; j++; } i = j; } } return arr; }; exports.combineCell = combineCell; //# sourceMappingURL=./store/utils/commonTableFunction.js.map