@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
JavaScript
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);
}