import { filterColumnTree } from '../../../../components/RealtimeTable/utils/columnUtils'; import { formatHeaderYear } from '../../../../components/RealtimeTable/utils/headerYearUtils'; export async function loadTemplateColumnTree(formType, sheet) { const configForm = formType === 'FORM_3' ? 'PROJECT' : formType; const { config } = await import(`../../../../components/RealtimeTable/constants/${configForm}/${sheet}.js`); return config.config.columns; } export async function loadTemplateColumns(formType, sheet, excludedKeys = []) { const tree = await loadTemplateColumnTree(formType, sheet); const options = []; const collect = (nodes, parents = []) => { for (const node of nodes) { const header = typeof node.header === 'string' ? formatHeaderYear(node.header) : ''; const path = [...parents, header].filter(Boolean); if (node.columns?.length) collect(node.columns, path); else if (node.accessorKey?.startsWith('data.')) options.push({ key: node.accessorKey.slice(5), label: path.join(' → '), }); } }; collect(filterColumnTree(tree, excludedKeys)); return options; }