UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

26 lines (24 loc) 982 B
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