yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
730 lines (729 loc) • 23.6 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const core = require("../utils/core");
const util = require("../ele-data-table/util");
const util$1 = require("../ele-virtual-table/util");
function mergeProps(props, globalProps) {
if (props == null) {
return globalProps ?? true;
}
if (!props) {
return false;
}
if (!globalProps || typeof globalProps !== "object") {
return props;
}
if (typeof props !== "object") {
return globalProps;
}
return { ...globalProps, ...props };
}
function getPaginationProps(size, pagination, globalPagination, pageProps) {
const props = mergeProps(pagination, globalPagination);
if (props == null || props === false) {
return null;
}
const defaultProps = {
size: size !== "large" ? "small" : "default",
pagerCount: 5,
layout: "total, prev, pager, next, sizes, jumper",
pageSizes: [10, 20, 30, 40, 50, 100],
hideOnSinglePage: false
};
if (typeof props !== "object") {
return Object.assign(defaultProps, pageProps);
}
return Object.assign(defaultProps, core.omit(props, ["autoAmend"]), pageProps);
}
function getTablePage(pagination, globalPagination) {
const props = getPaginationProps(void 0, pagination, globalPagination);
return (props == null ? void 0 : props.currentPage) ?? 1;
}
function getTableLimit(pagination, globalPagination) {
const props = getPaginationProps(void 0, pagination, globalPagination);
return (props == null ? void 0 : props.pageSize) ?? 10;
}
function isAutoAmend(pagination, globalPagination) {
const props = mergeProps(pagination, globalPagination);
if (!props) {
return false;
}
if (typeof props === "object") {
return !!props.autoAmend;
}
return props === true;
}
function getTableSize(cacheKey, size, globalSize) {
return getCacheSize(cacheKey) ?? size ?? globalSize ?? "default";
}
function getDefaultFilter(columns) {
const filter = {};
core.eachTree(columns, (d) => {
const prop = d.columnKey ?? d.prop;
if (typeof prop === "string" && prop && d.filteredValue) {
filter[prop] = d.filteredValue;
}
});
return filter;
}
function getRequestName(globalRequest, request) {
const defaultRequest = {
currentPageKey: "currentPage",
pageSizeKey: "pageSize",
orderPropertyKey: "orderProperty",
orderDirectionKey: "orderDirection",
ascValue: "asc",
descValue: "desc"
};
return Object.assign(defaultRequest, globalRequest, request);
}
function getResponseName(globalResponse, response) {
const defaultResponse = {
recordsKey: "records",
totalCountKey: "totalCount"
};
return Object.assign(defaultResponse, globalResponse, response);
}
function getOrderItems(sorter) {
var _a, _b;
const orderParamList = [];
if (!sorter || !sorter.order) {
return orderParamList;
}
const descend = sorter.order === "descending";
const sortMethod = (_a = sorter.column) == null ? void 0 : _a.sortMethod;
const sortBy = (_b = sorter.column) == null ? void 0 : _b.sortBy;
if (Array.isArray(sortBy) && sortBy.length) {
sortBy.forEach((field) => {
if (typeof field === "string" && field.length) {
orderParamList.push({ field, descend, sortMethod });
}
});
} else {
const field = typeof sortBy === "string" && sortBy ? sortBy : sorter.prop;
if (field) {
orderParamList.push({ field, descend, sortMethod });
}
}
return orderParamList;
}
function getRequestOrderParamList(sorter, request, globalRequest) {
const orderParamList = [];
const { orderPropertyKey, orderDirectionKey, ascValue, descValue } = getRequestName(globalRequest, request);
if (!orderPropertyKey || !orderDirectionKey) {
return orderParamList;
}
const items = getOrderItems(sorter);
if (items.length === 1) {
const orderParam = {};
orderParam[orderPropertyKey] = items[0].field;
orderParam[orderDirectionKey] = items[0].descend ? descValue : ascValue;
orderParamList.push(orderParam);
} else if (items.length) {
orderParamList[orderPropertyKey] = items.map((d) => [d.field, d.descend ? descValue : ascValue].join(" ")).join(",");
}
return orderParamList;
}
function getRequestFilters(filter) {
const filters = {};
if (filter) {
Object.keys(filter).forEach((key) => {
const value = filter[key];
if (value == null) {
return;
}
if (typeof value === "string") {
if (value) {
filters[key] = value;
}
} else if (Array.isArray(value)) {
if (value.length) {
filters[key] = value.join(",");
}
} else {
filters[key] = value;
}
});
}
return filters;
}
function getRequestPageParam(currentPage, pageSize, request, globalRequest) {
const pageParam = {};
const { currentPageKey, pageSizeKey } = getRequestName(globalRequest, request);
if (!currentPageKey || !pageSizeKey) {
return pageParam;
}
pageParam[currentPageKey] = currentPage;
pageParam[pageSizeKey] = pageSize;
return pageParam;
}
function getResponseResult(data, response, globalResponse, lazy, treeOpt) {
if (!data || Array.isArray(data)) {
return { records: getResponseData(data, lazy, treeOpt) };
}
const { recordsKey, totalCountKey } = getResponseName(globalResponse, response);
if (!recordsKey) {
return {};
}
return {
records: getResponseData(core.getValue(data, recordsKey), lazy, treeOpt),
totalCount: (totalCountKey ? core.getValue(data, totalCountKey) : void 0) ?? 0
};
}
function getResponseData(data, lazy, treeProps) {
if (!data || !lazy) {
return data || [];
}
const name = (treeProps == null ? void 0 : treeProps.hasChildren) ?? "hasChildren";
return data.map((d) => {
const temp = { ...d };
temp[name] = temp[name] ?? true;
return temp;
});
}
function sortData(datasource, sorter) {
if (!datasource || !datasource.length) {
return [];
}
const data = [...datasource];
getOrderItems(sorter).forEach((item) => {
data.sort((a, b) => {
if (typeof item.sortMethod === "function") {
const r2 = item.sortMethod(a, b);
return item.descend ? -r2 : r2;
}
const aValue = a[item.field];
const bValue = b[item.field];
if (aValue == bValue) {
return 0;
}
const r = aValue < bValue ? -1 : 1;
return item.descend ? -r : r;
});
});
return data;
}
function reloadData(datasource, sorter, currentPage, pageSize) {
const records = sortData(datasource, sorter);
const totalCount = records.length;
if (!currentPage || !pageSize) {
return { currentPage: 1, records, totalCount };
}
const maxPage = Math.ceil(totalCount / pageSize);
if (maxPage && currentPage > maxPage) {
currentPage = maxPage;
}
const start = (currentPage - 1) * pageSize;
const end = start + pageSize;
const list = records.slice(start, end > totalCount ? totalCount : end);
return { currentPage, records: list, totalCount };
}
function getColId(column) {
if (column.columnKey == null || column.columnKey === "") {
return column.prop;
}
return column.columnKey;
}
function getInitColumns(columns, cacheColsWidth) {
const data = [];
columns.forEach((d) => {
var _a;
if (!d.hideInTable) {
const width = getCacheColWidth(cacheColsWidth, d) ?? d.width;
if ((_a = d.children) == null ? void 0 : _a.length) {
const children = getInitColumns(d.children);
if (children.length) {
data.push({ ...d, width, children });
}
} else {
data.push({ ...d, width });
}
}
});
return data;
}
function getInitCacheColumns(columns, cacheKey, sortable) {
const cacheCols = getCacheCols(getColsCacheKey(cacheKey));
if (!cacheCols) {
return getInitColumns(columns, getCacheColsWidth(cacheKey));
}
return getCheckedColumns(columns, cacheCols, sortable, (item) => item.hideInSetting, void 0, false, getCacheColsWidth(cacheKey));
}
function getCheckedColumns(columns, cols, sortable, isHideInCol, filter, reserveUnchecked, cacheColsWidth) {
const data = [];
if (!columns || !columns.length) {
return data;
}
columns.forEach((d) => {
const colId = getColId(d);
if (filter && !filter(d)) {
return;
}
const temp = colId == null ? null : core.findTree(cols, (t) => t.uid === colId);
const hideInTable = temp ? !temp.checked : d.hideInTable;
if (!reserveUnchecked && hideInTable) {
return;
}
const width = getCacheColWidth(cacheColsWidth, d) ?? d.width;
const fixed = (temp == null ? void 0 : temp.fixed) ?? d.fixed;
const uid = core.uuid(8);
if (d.children && d.children.length) {
const children = getCheckedColumns(d.children, cols, sortable, isHideInCol, filter, reserveUnchecked, cacheColsWidth);
if (children.length) {
data.push({ ...d, width, fixed, hideInTable, children, uid });
}
return;
}
data.push({ ...d, width, fixed, hideInTable, uid });
});
if (!sortable || !data.length) {
return data;
}
data.sort((a, b) => {
const aColId = getColId(a);
const bColId = getColId(b);
let i = 0;
let ai;
let bi;
core.eachTree(cols, (c) => {
if (c.uid === aColId) {
ai = i;
}
if (c.uid === bColId) {
bi = i;
}
i++;
});
if (ai == null && (isHideInCol == null ? void 0 : isHideInCol(a)) && a.fixed === "right") {
ai = i;
}
if (ai == null) {
ai = -1;
}
if (a.fixed === true || a.fixed === "left") {
ai -= i;
} else if (a.fixed === "right" || (isHideInCol == null ? void 0 : isHideInCol(a)) && !a.fixed) {
ai += i;
}
if (bi == null && (isHideInCol == null ? void 0 : isHideInCol(b)) && b.fixed === "right") {
bi = i;
}
if (bi == null) {
bi = -1;
}
if (b.fixed === true || b.fixed === "left") {
bi -= i;
} else if (b.fixed === "right" || (isHideInCol == null ? void 0 : isHideInCol(b)) && !b.fixed) {
bi += i;
}
return ai - bi;
});
return data;
}
function getColItems(columns, locale, filter, cacheCols, sortFixed, cancelFixed, cacheColsWidth) {
const temp = columns == null ? [] : [...columns];
if (sortFixed) {
temp.sort((a, b) => util.getColFixedNumber(a.fixed) - util.getColFixedNumber(b.fixed));
}
const cols = core.mapTree(temp, (d, _i, parent) => {
const colId = getColId(d);
if (colId == null || filter && !filter(d)) {
return;
}
const old = core.findTree(cacheCols, (t) => t.uid === colId);
const item = {
uid: colId,
type: d.type,
label: d.label || (d.type === "index" ? locale.columnIndex : d.type === "expand" ? locale.columnExpand : locale.columnUntitled),
checked: (old == null ? void 0 : old.checked) ?? !d.hideInTable,
fixed: cancelFixed || parent != null ? false : (old == null ? void 0 : old.fixed) ?? d.fixed,
width: getCacheColWidth(cacheColsWidth, d) ?? d.width
};
return item;
});
if (cacheCols && cacheCols.length) {
cols.sort((a, b) => {
const oldAI = cacheCols.findIndex((t) => t.uid === a.uid);
const oldBI = cacheCols.findIndex((t) => t.uid === b.uid);
const ai = oldAI === -1 ? cols.indexOf(a) : oldAI;
const bi = oldBI === -1 ? cols.indexOf(b) : oldBI;
return ai - bi;
});
core.eachTree(cols, (item) => {
var _a;
if (item.children && item.children.length) {
const oldC = (_a = core.findTree(cacheCols, (t) => t.uid === item.uid)) == null ? void 0 : _a.children;
if (oldC && oldC.length) {
item.children.sort((a, b) => {
const oldAI = oldC.findIndex((t) => t.uid === a.uid);
const oldBI = oldC.findIndex((t) => t.uid === b.uid);
const ai = oldAI === -1 ? cols.indexOf(a) : oldAI;
const bi = oldBI === -1 ? cols.indexOf(b) : oldBI;
return ai - bi;
});
}
}
});
}
let checkAll = true;
let indeterminate = false;
core.eachTree(cols, (d) => {
if (!d.checked && checkAll) {
checkAll = false;
}
if (d.checked && !indeterminate) {
indeterminate = true;
}
if (!checkAll && indeterminate) {
return false;
}
});
return {
cols,
checkAll: cols.length > 0 && checkAll,
indeterminate: !checkAll && indeterminate
};
}
function getSizeCacheKey(cacheKey) {
return `${cacheKey}Size`;
}
function getColsCacheKey(cacheKey) {
return cacheKey ? `${cacheKey}Cols` : void 0;
}
function getColsWidthCacheKey(cacheKey) {
return `${cacheKey}ColsWidth`;
}
function getCacheCols(cacheKey) {
if (cacheKey) {
const oldJSON = localStorage.getItem(cacheKey);
if (oldJSON) {
try {
const old = JSON.parse(oldJSON);
return old && Array.isArray(old) ? old : void 0;
} catch (e) {
console.error(e);
}
}
}
}
function getCacheSize(cacheKey) {
if (cacheKey) {
const size = localStorage.getItem(getSizeCacheKey(cacheKey));
if (size) {
return size;
}
}
}
function getCacheColsWidth(cacheKey) {
if (cacheKey) {
const oldJSON = localStorage.getItem(getColsWidthCacheKey(cacheKey));
if (oldJSON) {
try {
const old = JSON.parse(oldJSON);
return old && Array.isArray(old) ? old : void 0;
} catch (e) {
console.error(e);
}
}
}
}
function getCacheColWidth(cacheColsWidth, column) {
if (cacheColsWidth == null || column == null) {
return;
}
const colId = getColId(column);
const c = core.findTree(cacheColsWidth, (d) => d.uid === colId);
if (!c || c.width == null) {
return;
}
if (c.width === "" || typeof c.width === "string" && !c.width.trim()) {
return "";
}
const width = Number(c.width);
return isNaN(width) ? c.width : width;
}
function cacheColWidth(width, column, cacheKey) {
if (cacheKey && column) {
const colId = getColId(column);
if (colId) {
const colsWidth = getCacheColsWidth(cacheKey) || [];
const old = colsWidth.find((d) => d.uid === colId);
if (!old) {
colsWidth.push({ uid: colId, width });
} else {
old.width = width;
}
localStorage.setItem(getColsWidthCacheKey(cacheKey), JSON.stringify(colsWidth));
}
}
}
function getRowKey(rowKey) {
if (rowKey != null) {
return rowKey;
}
return (row) => {
return JSON.stringify(row);
};
}
function getCellText(column, row, index, pageIndex) {
if (!column) {
return "";
}
if (column.type === "index") {
return util$1.getIndexValue(index, column.index, pageIndex);
}
const propValue = column.prop == null ? void 0 : core.getValue(row, column.prop);
if (typeof column.formatter === "function") {
return column.formatter(row, column, propValue, index);
}
return propValue == null ? "" : String(propValue);
}
function getHeaderCellText(column, index) {
if (!column) {
return "";
}
if (typeof column.renderHeader === "function") {
return column.renderHeader({ column, $index: index });
}
return column.label == null ? "" : String(column.label);
}
function getExportBodyNode(data, childrenField = "children", level = 0, parents = []) {
const bodyDodes = [];
let maxDepth = 0;
data.forEach((row, index) => {
const node = { row, index, level, childSize: 0 };
bodyDodes.push(node);
parents.forEach((parent) => {
parent.childSize++;
});
const children = row[childrenField];
if (children && children.length) {
const { depth, nodes } = getExportBodyNode(children, childrenField, level + 1, [...parents, node]);
maxDepth = Math.max(maxDepth, depth);
nodes.forEach((n) => {
bodyDodes.push(n);
});
}
});
return { depth: maxDepth + 1, nodes: bodyDodes };
}
function getExportData(data, columns, spanMethod, pageIndex, showSummary, sumText, summaryMethod, childrenField, showTreeIndex, showHeader) {
const { nodes, depth } = getExportBodyNode(data, childrenField);
const { rows: headerRows, cols: bodyCols } = util$1.analyseColumns(columns);
const showExpandIndex = bodyCols.some((c) => {
var _a;
return ((_a = c.originalCol) == null ? void 0 : _a.type) === "expand";
}) ? showTreeIndex : false;
if (depth <= 1 || showExpandIndex) {
showTreeIndex = false;
}
const treeIconIndex = showTreeIndex ? void 0 : bodyCols.findIndex((c) => {
var _a;
return !((_a = c.originalCol) == null ? void 0 : _a.type) || !["index", "expand", "selection"].includes(c.originalCol.type);
});
const bodyData = [];
nodes.forEach((node, index) => {
const row = node.row;
const bodyRowData = [];
const expandRowData = [];
bodyCols.forEach((col, columnIndex) => {
const { key: colKey, originalCol: column } = col;
const key = `${index}-${columnIndex}-${colKey}`;
const { colspan, rowspan } = util$1.getCellSpan({ column, columnIndex, row, rowIndex: index }, spanMethod);
const isNone = colspan == 0 || rowspan == 0;
const text = isNone ? "" : getCellText(column, row, index, pageIndex);
const dataItem = {
key,
row,
index,
column,
text,
colspan,
rowspan,
isTreeCell: depth > 1 ? columnIndex === treeIconIndex : false,
isTreeLeaf: !node.childSize,
indent: node.level
};
if (column.type === "expand") {
dataItem.text = showExpandIndex ? String(node.index + 1) : "";
if (showExpandIndex && !expandRowData.length) {
dataItem.rowspan = 2;
}
const expandDataItem = {
key: "_expand_" + key,
row,
index,
column,
text,
colspan: showExpandIndex ? bodyCols.length - 1 : bodyCols.length,
isExpandCell: true
};
if (showExpandIndex) {
expandRowData[0] = {
key: "_expand_0-" + key,
row,
index,
rowspan: 0,
colspan: 0,
isExpandCell: true
};
expandRowData[1] = expandDataItem;
} else {
expandRowData[0] = expandDataItem;
}
}
bodyRowData.push(dataItem);
});
bodyData.push(bodyRowData);
if (expandRowData.length) {
bodyData.push(expandRowData);
}
if (showTreeIndex) {
for (let i = depth - 1; i >= 0; i--) {
const colspan = i < node.level ? 0 : 1;
bodyRowData.unshift({
key: `_index_${index}-${i}`,
index,
text: i === node.level ? String(node.index + 1) : void 0,
colspan,
rowspan: i === node.level ? node.childSize + 1 : colspan,
isTreeIndex: true,
hideLeftBorder: i === node.level ? false : true,
hideRightBorder: bodyCols.length ? true : false
});
}
}
});
const headerData = [];
if (showHeader) {
headerRows.forEach((headerCols, index) => {
const headerRowData = [];
headerCols.forEach((col) => {
const { key, colspan, rowspan, originalCol: column } = col;
const isNone = colspan == 0 || rowspan == 0;
const text = isNone ? "" : getHeaderCellText(column, index);
headerRowData.push({ key, index, column, text, colspan, rowspan });
});
headerData.push(headerRowData);
if (showTreeIndex) {
for (let i = depth - 1; i >= 0; i--) {
headerRowData.unshift({
key: `_index_th_${index}-${i}`,
index,
colspan: i === 0 ? index === 0 ? depth : 0 : 0,
rowspan: i === 0 ? index === 0 ? headerRows.length : 0 : 0,
isTreeIndex: true
});
}
}
});
}
const footerData = [];
if (showSummary && data.length) {
const footerRowData = [];
const uSum = util$1.getUserSums(summaryMethod, bodyCols, data);
bodyCols.forEach((col, i) => {
const { key, dataKey: dKey, originalCol: column } = col;
const text = uSum == null ? util$1.getSumValue(data, dKey, i, sumText) : uSum[i];
footerRowData.push({ key, column, text, index: 0 });
});
footerData.push(footerRowData);
if (showTreeIndex) {
for (let i = depth - 1; i >= 0; i--) {
footerRowData.unshift({
key: `_index_tf-${i}`,
index: 0,
colspan: i === 0 ? depth : 0,
rowspan: i === 0 ? headerRows.length : 0,
isTreeIndex: true
});
}
}
}
if (showTreeIndex) {
for (let i = depth - 1; i >= 0; i--) {
bodyCols.unshift({ key: `_index_${i}`, width: 26 });
}
}
return { headerData, bodyData, footerData, bodyCols };
}
function exportCSV(fileName, headerData, bodyData, footerData) {
const csvRows = [];
[...headerData, ...bodyData, ...footerData].forEach((item) => {
const cells = item.map((d) => {
const str = d.text ?? "";
const text = typeof str === "string" ? str.replace(/,/g, ",").replace(/\n/g, " ") : str;
if (!d.isTreeCell || !d.indent) {
return text;
}
const indent = Array.from({ length: d.indent }).fill(" ").join("");
return indent + text;
});
csvRows.push(cells.join(","));
});
const content = encodeURIComponent(csvRows.join("\n"));
const a = document.createElement("a");
a.href = "data:text/csv;charset=utf-8," + content;
a.download = fileName + ".csv";
a.style.display = "none";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
function columnsExportFilter(item) {
if (item.hideInExport) {
return false;
}
return !item.type || !["selection"].includes(item.type);
}
function columnsPrintFilter(item) {
if (item.hideInPrint) {
return false;
}
return !item.type || !["selection"].includes(item.type);
}
function columnsSettingFilter(item) {
if (item.hideInSetting) {
return false;
}
return !item.type || !["selection", "index", "expand"].includes(item.type);
}
exports.cacheColWidth = cacheColWidth;
exports.columnsExportFilter = columnsExportFilter;
exports.columnsPrintFilter = columnsPrintFilter;
exports.columnsSettingFilter = columnsSettingFilter;
exports.exportCSV = exportCSV;
exports.getCacheColWidth = getCacheColWidth;
exports.getCacheCols = getCacheCols;
exports.getCacheColsWidth = getCacheColsWidth;
exports.getCacheSize = getCacheSize;
exports.getCellText = getCellText;
exports.getCheckedColumns = getCheckedColumns;
exports.getColId = getColId;
exports.getColItems = getColItems;
exports.getColsCacheKey = getColsCacheKey;
exports.getColsWidthCacheKey = getColsWidthCacheKey;
exports.getDefaultFilter = getDefaultFilter;
exports.getExportBodyNode = getExportBodyNode;
exports.getExportData = getExportData;
exports.getHeaderCellText = getHeaderCellText;
exports.getInitCacheColumns = getInitCacheColumns;
exports.getInitColumns = getInitColumns;
exports.getOrderItems = getOrderItems;
exports.getPaginationProps = getPaginationProps;
exports.getRequestFilters = getRequestFilters;
exports.getRequestName = getRequestName;
exports.getRequestOrderParamList = getRequestOrderParamList;
exports.getRequestPageParam = getRequestPageParam;
exports.getResponseData = getResponseData;
exports.getResponseName = getResponseName;
exports.getResponseResult = getResponseResult;
exports.getRowKey = getRowKey;
exports.getSizeCacheKey = getSizeCacheKey;
exports.getTableLimit = getTableLimit;
exports.getTablePage = getTablePage;
exports.getTableSize = getTableSize;
exports.isAutoAmend = isAutoAmend;
exports.mergeProps = mergeProps;
exports.reloadData = reloadData;
exports.sortData = sortData;