@dagrejs/dagre
Version:
Graph layout for JavaScript
27 lines (23 loc) • 579 B
JavaScript
module.exports = barycenter;
function barycenter(g, movable = []) {
return movable.map(v => {
let inV = g.inEdges(v);
if (!inV.length) {
return { v: v };
} else {
let result = inV.reduce((acc, e) => {
let edge = g.edge(e),
nodeU = g.node(e.v);
return {
sum: acc.sum + (edge.weight * nodeU.order),
weight: acc.weight + edge.weight
};
}, { sum: 0, weight: 0 });
return {
v: v,
barycenter: result.sum / result.weight,
weight: result.weight
};
}
});
}