UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

49 lines (48 loc) 2.65 kB
import { generateAutoRowGroupColumnForColumn, generateAutoRowGroupSingleColumn, generateAutoTreeSingleColumn, generateSelectionColumn, } from '../../../../Api/Implementation/ColumnApiImpl'; import ArrayExtensions from '../../../../Utilities/Extensions/ArrayExtensions'; import { AG_GRID_GROUPED_COLUMN, AG_GRID_SELECTION_COLUMN } from '../../../../Utilities/Constants/GeneralConstants'; import { WIZARD_COLUMN_LIST_HEADER_CLASS, WIZARD_COLUMN_LIST_OPTION_CLASS, WIZARD_COLUMN_LIST_SEARCH_CLASS, } from '../../../Components/wizardColumnListStyles'; export const LAYOUT_WIZARD_COLUMN_LIST_OPTION_CLASS = WIZARD_COLUMN_LIST_OPTION_CLASS; export const LAYOUT_WIZARD_COLUMN_LIST_HEADER_CLASS = WIZARD_COLUMN_LIST_HEADER_CLASS; export const LAYOUT_WIZARD_COLUMN_LIST_SEARCH_CLASS = WIZARD_COLUMN_LIST_SEARCH_CLASS; export function getLayoutWizardOrderedColumns(adaptable, layout) { const hasSelectionColumn = adaptable.api.columnApi .getColumns() .some((col) => col.isGeneratedSelectionColumn); const allColumns = adaptable.api.columnApi .getUIAvailableColumns() .filter((col) => !col.isGeneratedRowGroupColumn) .filter((col) => !col.isGeneratedPivotResultColumn) .filter((col) => !col.isGeneratedSelectionColumn); if (layout.RowGroupedColumns && layout.RowGroupedColumns.length > 0) { if (layout.RowGroupDisplayType === 'single') { allColumns.unshift(generateAutoRowGroupSingleColumn()); } else if (layout.RowGroupDisplayType === 'multi') { [...layout.RowGroupedColumns].reverse().forEach((col) => { const groupCol = generateAutoRowGroupColumnForColumn(adaptable.api.columnApi.getColumnWithColumnId(col)); allColumns.unshift(groupCol); }); } } if (adaptable.api.gridApi.isTreeDataGrid() && !allColumns.find((col) => col.columnId === AG_GRID_GROUPED_COLUMN)) { allColumns.unshift(generateAutoTreeSingleColumn()); } if (hasSelectionColumn) { allColumns.unshift(generateSelectionColumn()); } const colIdToCol = allColumns.reduce((acc, col) => { if (col) { acc[col.columnId] = col; } return acc; }, {}); let tableColumns = layout.TableColumns ?? []; if (hasSelectionColumn && !tableColumns.includes(AG_GRID_SELECTION_COLUMN)) { tableColumns = [AG_GRID_SELECTION_COLUMN, ...tableColumns]; } return ArrayExtensions.sortArrayWithOrder(allColumns.map((col) => col.columnId), tableColumns, { sortUnorderedItems: false }) .map((colId) => colIdToCol[colId]) .filter(Boolean); }