UNPKG

@adaptabletools/adaptable

Version:

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

37 lines (36 loc) 1.47 kB
function insertAtCorrectIndex(result, colState, visibleColumnsIndexes, offset = 0, lastVisibleOffset = 0) { const prevColState = result[result.length - 1 - offset]; if (!prevColState) { result.splice(result.length - lastVisibleOffset, 0, colState); return; } if (prevColState.hide) { insertAtCorrectIndex(result, colState, visibleColumnsIndexes, offset + 1, lastVisibleOffset); return; } const prevCol_visibilityIndex = visibleColumnsIndexes[prevColState.colId]; const currentCol_visibilityIndex = visibleColumnsIndexes[colState.colId]; if (currentCol_visibilityIndex < prevCol_visibilityIndex) { insertAtCorrectIndex(result, colState, visibleColumnsIndexes, offset + 1, offset + 1); } else { result.splice(result.length - lastVisibleOffset, 0, colState); } } export function sortColumnStateForVisibleColumns(columnState, visibleColumns) { const visibleColumnsIndexes = visibleColumns.reduce((acc, colId, index) => { acc[colId] = index; return acc; }, {}); const result = []; for (let i = 0, len = columnState.length; i < len; i++) { const colState = columnState[i]; const colVisible = visibleColumnsIndexes[colState.colId] != null; if (!colVisible) { result.push(colState); continue; } insertAtCorrectIndex(result, colState, visibleColumnsIndexes); } return result; }