@visactor/vchart
Version:
charts lib based @visactor/VGrammar
32 lines (28 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.stackSplit = void 0;
const vutils_1 = require("@visactor/vutils"), 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 ((0, vutils_1.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;
};
exports.stackSplit = stackSplit;
//# sourceMappingURL=stack-split.js.map