Files
AtreidesAssetsFree/client/ui/table-state.js
T

48 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:3da7d727d9cd395ad6f678ed5763ee67308c18ed602c6296f49806e3a2cada5f
export function initialState(cfg) {
const columnExists = key => !!key && cfg.columns.some(c => c.key === key);
const groupable = key => !!key && cfg.columns.some(c => c.key === key && c.group);
const usableSort = s => ((s && columnExists(s.key)) ? { ...s } : null);
return {
sort: usableSort(cfg.sort) || usableSort(cfg.defaultSort),
groupKey: groupable(cfg.group) ? cfg.group : null,
groupKey2: groupable(cfg.group2) ? cfg.group2 : null,
groupKey3: groupable(cfg.group3) ? cfg.group3 : null,
groupFilter: cfg.groupFilter ? { ...cfg.groupFilter } : {},
groupCollapsed: cfg.groupCollapsed ? { ...cfg.groupCollapsed } : {},
sticky: cfg.sticky ? { ...cfg.sticky } : null,
};
}
export function chooseGroup(keys, level, value) {
let { groupKey, groupKey2, groupKey3 } = keys;
const v = value || null;
if (level === 1) {
groupKey = v;
if (!groupKey) { groupKey2 = null; groupKey3 = null; }
else { if (groupKey2 === groupKey) groupKey2 = null; if (groupKey3 === groupKey) groupKey3 = null; }
} else if (level === 2) {
groupKey2 = v;
if (!groupKey2) groupKey3 = null;
else if (groupKey3 === groupKey2) groupKey3 = null;
} else if (level === 3) {
groupKey3 = v;
}
return { groupKey, groupKey2, groupKey3 };
}
export function revealGroup({ groupKey, groupFilter, groupCollapsed }, token) {
if (!groupKey) return { groupFilter, groupCollapsed, changed: false };
let changed = false;
const hidden = groupFilter[groupKey] || [];
if (hidden.includes(token)) {
groupFilter = { ...groupFilter, [groupKey]: hidden.filter(t => t !== token) };
changed = true;
}
const collapsed = groupCollapsed[groupKey] || [];
if (collapsed.includes(token)) {
groupCollapsed = { ...groupCollapsed, [groupKey]: collapsed.filter(t => t !== token) };
changed = true;
}
return { groupFilter, groupCollapsed, changed };
}