UNPKG

@dagrejs/dagre

Version:

Graph layout for JavaScript

52 lines (48 loc) 1.18 kB
module.exports = addSubgraphConstraints; function addSubgraphConstraints(g, cg, vs) { let prev = {}, rootPrev; vs.forEach(v => { let child = g.parent(v), parent, prevChild; while (child) { parent = g.parent(child); if (parent) { prevChild = prev[parent]; prev[parent] = child; } else { prevChild = rootPrev; rootPrev = child; } if (prevChild && prevChild !== child) { cg.setEdge(prevChild, child); return; } child = parent; } }); /* function dfs(v) { var children = v ? g.children(v) : g.children(); if (children.length) { var min = Number.POSITIVE_INFINITY, subgraphs = []; children.forEach(function(child) { var childMin = dfs(child); if (g.children(child).length) { subgraphs.push({ v: child, order: childMin }); } min = Math.min(min, childMin); }); _.sortBy(subgraphs, "order").reduce(function(prev, curr) { cg.setEdge(prev.v, curr.v); return curr; }); return min; } return g.node(v).order; } dfs(undefined); */ }