@visactor/vchart
Version:
charts lib based @visactor/VGrammar
26 lines (24 loc) • 982 B
JavaScript
import { isNil } from "@visactor/vutils";
export const stackSplit = (data, op) => {
const result = {
nodes: {}
}, {fields: fields} = op;
if (!(null == fields ? void 0 : fields.length)) return result;
const lastFieldIndex = fields.length - 1;
let nextNode, leaf, temp = result;
return data.forEach((dv => {
dv.latestData && dv.latestData.forEach((d => {
temp = result;
for (let i = 0; i < fields.length; i++) {
const f = fields[i], fV = d[f];
if (isNil(fV)) break;
temp.groupField = f, temp.nodes[fV] || (i === lastFieldIndex ? temp.nodes[fV] = {
values: []
} : (nextNode = {
nodes: {}
}, temp.nodes[fV] = nextNode)), i === lastFieldIndex ? (leaf = temp.nodes[fV], leaf.values.push(d)) : temp = temp.nodes[fV];
}
}));
})), result;
};
//# sourceMappingURL=stack-split.js.map