es-grid-template
Version:
es-grid-template
107 lines (101 loc) • 2.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.convertColumnsToTreeData = convertColumnsToTreeData;
exports.filterColumnsByField = filterColumnsByField;
exports.filterVisibleColumns = filterVisibleColumns;
// import type { ColumnTable } from "../../table-component"
function convertColumnsToTreeData(columns, groupColumns, t) {
if (!columns) {
return [];
}
return columns.filter(col => {
const inGroup = groupColumns ? groupColumns.includes(String(col.field)) : false;
if (col.showInColumnChoose === false) return false;
if (inGroup && !('children' in col && Array.isArray(col.children))) {
return false;
}
return true;
}).map(col => {
const node = {
key: String(col.field),
// title: () => col.header as any
title: () => {
if (col.headerTemplate) {
if (typeof col.headerTemplate === 'function') {
return col.headerTemplate(col);
} else {
return col.headerTemplate;
}
} else {
return t ? t(col.headerText) : col.headerText;
// return field
}
}
// title: String(col.header ?? col.id ?? ''),
};
if ('children' in col && Array.isArray(col.children)) {
const children = convertColumnsToTreeData(col.children, groupColumns, t);
if (children.length > 0) {
node.children = children;
}
}
return node;
});
}
function filterColumnsByField(columns, fieldList) {
if (!columns?.length || !fieldList?.length) return [];
const fieldSet = new Set(fieldList);
const dfs = cols => {
const result = [];
for (let i = 0; i < cols.length; i++) {
const col = cols[i];
let nextChildren;
if (col.children?.length) {
nextChildren = dfs(col.children);
}
// Giữ lại nếu:
// - chính nó match
// - hoặc có children match
if (fieldSet.has(col.field) || nextChildren && nextChildren.length) {
result.push({
...col,
...(nextChildren ? {
children: nextChildren
} : {})
});
}
}
return result;
};
return dfs(columns);
}
function filterVisibleColumns(columns) {
if (!columns?.length) return [];
const dfs = cols => {
const result = [];
for (let i = 0; i < cols.length; i++) {
const col = cols[i];
// Nếu column bị ẩn hoàn toàn
if (col.visible === false) continue;
let nextChildren;
if (col.children?.length) {
nextChildren = dfs(col.children);
}
// Giữ lại nếu:
// - chính nó visible
// - hoặc có children visible
if (!col.children || nextChildren?.length) {
result.push({
...col,
...(nextChildren ? {
children: nextChildren
} : {})
});
}
}
return result;
};
return dfs(columns);
}