diff --git a/lib/layout.js b/lib/layout.js index 26b07304..e68d8e79 100644 --- a/lib/layout.js +++ b/lib/layout.js @@ -97,7 +97,7 @@ function updateInputGraph(inputGraph, layoutGraph) { var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; -var nodeNumAttrs = ["width", "height"]; +var nodeNumAttrs = ["width", "height", "rank"]; var nodeDefaults = { width: 0, height: 0 }; var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; var edgeDefaults = { diff --git a/lib/rank/index.js b/lib/rank/index.js index 5ec26c8d..8870cc8c 100644 --- a/lib/rank/index.js +++ b/lib/rank/index.js @@ -27,11 +27,17 @@ module.exports = rank; * fix them up later. */ function rank(g) { + var ranker = g.graph().ranker; + if (ranker instanceof Function) { + return ranker(g) + } + switch(g.graph().ranker) { - case "network-simplex": networkSimplexRanker(g); break; - case "tight-tree": tightTreeRanker(g); break; - case "longest-path": longestPathRanker(g); break; - default: networkSimplexRanker(g); + case "network-simplex": networkSimplexRanker(g); break; + case "tight-tree": tightTreeRanker(g); break; + case "longest-path": longestPathRanker(g); break; + case "none": break; + default: networkSimplexRanker(g); } }