@progress/kendo-charts
Version:
Kendo UI platform-independent Charts library
49 lines (41 loc) • 1.49 kB
JavaScript
export var createSankeyData = function (data, dimensions, measure) {
var nodes = new Set();
var links = new Map();
var linksMap = new Map();
data.forEach(function (row) {
dimensions.forEach(function (dimension) {
nodes.add(dimension.value(row));
});
for (var i = 0; i < dimensions.length - 1; i++) {
var source = dimensions[i].value(row);
var target = dimensions[i + 1].value(row);
var key = source + "_" + target;
var value = measure.value(row);
var existingValue = links.get(key);
if (existingValue !== undefined) {
links.set(key, existingValue + value);
} else {
links.set(key, value);
linksMap.set(key, { source: source, target: target });
}
}
});
var nodesId = new Map();
var nodesArray = Array.from(nodes).map(function (node, index) {
nodesId.set(node, index);
return { id: index, label: { text: String(node) } };
});
var linksArray = Array.from(links).map(function (ref) {
var key = ref[0];
var value = ref[1];
var ref$1 = linksMap.get(key);
var source = ref$1.source;
var target = ref$1.target;
return {
sourceId: nodesId.get(source),
targetId: nodesId.get(target),
value: value
};
});
return { nodes: nodesArray, links: linksArray };
};