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