@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
24 lines (23 loc) • 923 B
JavaScript
export function createPivotTree(grid, values, columns, lookup, leafRows) {
const sx = grid;
const measureEntries = values.length ? values.map((c) => c.field) : ["__EMPTY_LNG__"];
if (!measureEntries.length || !columns.length) {
return [];
}
const pivotedColumns = columns.map((p) => lookup.get(p.field));
const separator = sx.state.columnGroupJoinDelimiter.get();
const paths = new Set();
for (let i = 0; i < leafRows.length; i++) {
const current = [];
const row = leafRows[i];
for (const column of pivotedColumns) {
const pivotKey = String(grid.api.columnField(column, row));
current.push(pivotKey);
}
for (const measure of measureEntries) {
paths.add([...current, measure].join(separator));
}
}
measureEntries.forEach((id) => paths.add(`total${separator}${id}`));
return [...paths];
}