UNPKG

es-grid-template

Version:

es-grid-template

107 lines (101 loc) 2.94 kB
"use strict"; 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); }