fastlion-amis
Version:
一种MIS页面生成工具
273 lines (272 loc) • 15.4 kB
JavaScript
"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