UNPKG

@vlsergey/react-bootstrap-pagetable

Version:

Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.

26 lines (25 loc) 1.2 kB
/** * Returns order of fields including the ones that were added by developer after user customizes his table columns order */ export default function calcFieldsOrderWithNewOnes(allAllowedKeys, defaultKeysOrder, orderedByConfig, hiddenByConfig) { var result = orderedByConfig.filter(function (key) { return allAllowedKeys.includes(key) && !hiddenByConfig.includes(key); }); var invisibleBecauseNotInConfig = defaultKeysOrder.filter(function (key) { return !orderedByConfig.includes(key) && !hiddenByConfig.includes(key); }); // need to include invisible-because-unknown-before fields into result invisibleBecauseNotInConfig.forEach(function (fieldKey) { var insertAfterIndex = defaultKeysOrder.indexOf(fieldKey); while (insertAfterIndex > -1) { var fieldKeyAtIndex = defaultKeysOrder[insertAfterIndex]; var currentIndex = result.indexOf(fieldKeyAtIndex); if (currentIndex !== -1) { result.splice(currentIndex + 1, 0, fieldKey); return; } insertAfterIndex--; } result.splice(0, 0, fieldKey); }); return result; }