概要 实例 介绍 源码

分级边缘捆绑

源文件:index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  5. <link type="text/css" rel="stylesheet" href="style.css"/>
  6. <style type="text/css">
  7. path.arc {
  8. cursor: move;
  9. fill: #fff;
  10. }
  11. .node {
  12. font-size: 10px;
  13. }
  14. .node:hover {
  15. fill: #1f77b4;
  16. }
  17. .link {
  18. fill: none;
  19. stroke: #1f77b4;
  20. stroke-opacity: .4;
  21. pointer-events: none;
  22. }
  23. .link.source, .link.target {
  24. stroke-opacity: 1;
  25. stroke-width: 2px;
  26. }
  27. .node.target {
  28. fill: #d62728 !important;
  29. }
  30. .link.source {
  31. stroke: #d62728;
  32. }
  33. .node.source {
  34. fill: #2ca02c;
  35. }
  36. .link.target {
  37. stroke: #2ca02c;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div style="position:absolute;bottom:0;font-size:18px;">tension: <input style="position:relative;top:3px;" type="range" min="0" max="100" value="85"></div>
  43. <script type="text/javascript" src="/d3/d3.js"></script>
  44. <script type="text/javascript" src="/d3/d3.layout.js"></script>
  45. <script type="text/javascript" src="packages.js"></script>
  46. <script type="text/javascript">
  47. var w = 1280,
  48. h = 800,
  49. rx = w / 2,
  50. ry = h / 2,
  51. m0,
  52. rotate = 0;
  53. var splines = [];
  54. var cluster = d3.layout.cluster()
  55. .size([360, ry - 120])
  56. .sort(function(a, b) { return d3.ascending(a.key, b.key); });
  57. var bundle = d3.layout.bundle();
  58. var line = d3.svg.line.radial()
  59. .interpolate("bundle")
  60. .tension(.85)
  61. .radius(function(d) { return d.y; })
  62. .angle(function(d) { return d.x / 180 * Math.PI; });
  63. // Chrome 15 bug: <http://code.google.com/p/chromium/issues/detail?id=98951>
  64. var div = d3.select("body").insert("div", "h2")
  65. .style("top", "-80px")
  66. .style("left", "-160px")
  67. .style("width", w + "px")
  68. .style("height", w + "px")
  69. .style("position", "absolute")
  70. .style("-webkit-backface-visibility", "hidden");
  71. var svg = div.append("svg:svg")
  72. .attr("width", w)
  73. .attr("height", w)
  74. .append("svg:g")
  75. .attr("transform", "translate(" + rx + "," + ry + ")");
  76. svg.append("svg:path")
  77. .attr("class", "arc")
  78. .attr("d", d3.svg.arc().outerRadius(ry - 120).innerRadius(0).startAngle(0).endAngle(2 * Math.PI))
  79. .on("mousedown", mousedown);
  80. d3.json("flare-imports.json", function(classes) {
  81. var nodes = cluster.nodes(packages.root(classes)),
  82. links = packages.imports(nodes),
  83. splines = bundle(links);
  84. var path = svg.selectAll("path.link")
  85. .data(links)
  86. .enter().append("svg:path")
  87. .attr("class", function(d) { return "link source-" + d.source.key + " target-" + d.target.key; })
  88. .attr("d", function(d, i) { return line(splines[i]); });
  89. svg.selectAll("g.node")
  90. .data(nodes.filter(function(n) { return !n.children; }))
  91. .enter().append("svg:g")
  92. .attr("class", "node")
  93. .attr("id", function(d) { return "node-" + d.key; })
  94. .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
  95. .append("svg:text")
  96. .attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
  97. .attr("dy", ".31em")
  98. .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
  99. .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
  100. .text(function(d) { return d.key; })
  101. .on("mouseover", mouseover)
  102. .on("mouseout", mouseout);
  103. d3.select("input[type=range]").on("change", function() {
  104. line.tension(this.value / 100);
  105. path.attr("d", function(d, i) { return line(splines[i]); });
  106. });
  107. });
  108. d3.select(window)
  109. .on("mousemove", mousemove)
  110. .on("mouseup", mouseup);
  111. function mouse(e) {
  112. return [e.pageX - rx, e.pageY - ry];
  113. }
  114. function mousedown() {
  115. m0 = mouse(d3.event);
  116. d3.event.preventDefault();
  117. }
  118. function mousemove() {
  119. if (m0) {
  120. var m1 = mouse(d3.event),
  121. dm = Math.atan2(cross(m0, m1), dot(m0, m1)) * 180 / Math.PI;
  122. div.style("-webkit-transform", "translateY(" + (ry - rx) + "px)rotateZ(" + dm + "deg)translateY(" + (rx - ry) + "px)");
  123. }
  124. }
  125. function mouseup() {
  126. if (m0) {
  127. var m1 = mouse(d3.event),
  128. dm = Math.atan2(cross(m0, m1), dot(m0, m1)) * 180 / Math.PI;
  129. rotate += dm;
  130. if (rotate > 360) rotate -= 360;
  131. else if (rotate < 0) rotate += 360;
  132. m0 = null;
  133. div.style("-webkit-transform", null);
  134. svg
  135. .attr("transform", "translate(" + rx + "," + ry + ")rotate(" + rotate + ")")
  136. .selectAll("g.node text")
  137. .attr("dx", function(d) { return (d.x + rotate) % 360 < 180 ? 8 : -8; })
  138. .attr("text-anchor", function(d) { return (d.x + rotate) % 360 < 180 ? "start" : "end"; })
  139. .attr("transform", function(d) { return (d.x + rotate) % 360 < 180 ? null : "rotate(180)"; });
  140. }
  141. }
  142. function mouseover(d) {
  143. svg.selectAll("path.link.target-" + d.key)
  144. .classed("target", true)
  145. .each(updateNodes("source", true));
  146. svg.selectAll("path.link.source-" + d.key)
  147. .classed("source", true)
  148. .each(updateNodes("target", true));
  149. }
  150. function mouseout(d) {
  151. svg.selectAll("path.link.source-" + d.key)
  152. .classed("source", false)
  153. .each(updateNodes("target", false));
  154. svg.selectAll("path.link.target-" + d.key)
  155. .classed("target", false)
  156. .each(updateNodes("source", false));
  157. }
  158. function updateNodes(name, value) {
  159. return function(d) {
  160. if (value) this.parentNode.appendChild(this);
  161. svg.select("#node-" + d[name].key).classed(name, value);
  162. };
  163. }
  164. function cross(a, b) {
  165. return a[0] * b[1] - a[1] * b[0];
  166. }
  167. function dot(a, b) {
  168. return a[0] * b[0] + a[1] * b[1];
  169. }
  170. </script>
  171. </body>
  172. </html>

源文件:style.css

  1. body {
  2. font: 300 36px "Helvetica Neue";
  3. height: 640px;
  4. margin: 80px 160px 80px 160px;
  5. overflow: hidden;
  6. position: relative;
  7. width: 960px;
  8. }
  9. a:link, a:visited {
  10. color: #777;
  11. text-decoration: none;
  12. }
  13. a:hover {
  14. color: #666;
  15. }
  16. blockquote {
  17. margin: 0;
  18. }
  19. blockquote:before {
  20. content: "“";
  21. position: absolute;
  22. left: -.4em;
  23. }
  24. blockquote:after {
  25. content: "”";
  26. position: absolute;
  27. }
  28. body > ul {
  29. margin: 0;
  30. padding: 0;
  31. }
  32. h1 {
  33. font-size: 64px;
  34. }
  35. h1, h2, h3 {
  36. font-weight: inherit;
  37. margin: 0;
  38. }
  39. h2, h3 {
  40. text-align: right;
  41. font-size: inherit;
  42. position: absolute;
  43. bottom: 0;
  44. right: 0;
  45. }
  46. h2 {
  47. font-size: 24px;
  48. position: absolute;
  49. }
  50. h3 {
  51. bottom: -20px;
  52. font-size: 18px;
  53. }
  54. .invert {
  55. background: #1f1f1f;
  56. color: #dcdccc;
  57. }
  58. .invert h2, .invert h3 {
  59. color: #7f9f7f;
  60. }
  61. .string, .regexp {
  62. color: #f39;
  63. }
  64. .keyword {
  65. color: #00c;
  66. }
  67. .comment {
  68. color: #777;
  69. font-style: oblique;
  70. }
  71. .number {
  72. color: #369;
  73. }
  74. .class, .special {
  75. color: #1181B8;
  76. }
  77. body > svg {
  78. position: absolute;
  79. top: -80px;
  80. left: -160px;
  81. }

源文件:flare-imports.json

  1. [
  2. {"name":"flare.analytics.cluster.AgglomerativeCluster","size":3938,"imports":["flare.animate.Transitioner","flare.vis.data.DataList","flare.util.math.IMatrix","flare.analytics.cluster.MergeEdge","flare.analytics.cluster.HierarchicalCluster","flare.vis.data.Data"]},
  3. {"name":"flare.analytics.cluster.CommunityStructure","size":3812,"imports":["flare.analytics.cluster.HierarchicalCluster","flare.animate.Transitioner","flare.vis.data.DataList","flare.analytics.cluster.MergeEdge","flare.util.math.IMatrix"]},
  4. {"name":"flare.analytics.cluster.HierarchicalCluster","size":6714,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.Tree","flare.util.Arrays","flare.analytics.cluster.MergeEdge","flare.util.Sort","flare.vis.operator.Operator","flare.util.Property","flare.vis.data.Data"]},
  5. {"name":"flare.analytics.cluster.MergeEdge","size":743,"imports":[]},
  6. {"name":"flare.analytics.graph.BetweennessCentrality","size":3534,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.util.Arrays","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
  7. {"name":"flare.analytics.graph.LinkDistance","size":5731,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.analytics.graph.ShortestPaths","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
  8. {"name":"flare.analytics.graph.MaxFlowMinCut","size":7840,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
  9. {"name":"flare.analytics.graph.ShortestPaths","size":5914,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.animate.Transitioner","flare.vis.operator.Operator","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.vis.data.Data"]},
  10. {"name":"flare.analytics.graph.SpanningTree","size":3416,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.data.TreeBuilder","flare.vis.operator.Operator"]},
  11. {"name":"flare.analytics.optimization.AspectRatioBanker","size":7074,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.vis.Visualization","flare.util.Property","flare.vis.operator.Operator"]},
  12. {"name":"flare.animate.Easing","size":17010,"imports":["flare.animate.Transition"]},
  13. {"name":"flare.animate.FunctionSequence","size":5842,"imports":["flare.util.Maths","flare.animate.Transition","flare.util.Arrays","flare.animate.Sequence","flare.animate.Transitioner"]},
  14. {"name":"flare.animate.interpolate.ArrayInterpolator","size":1983,"imports":["flare.util.Arrays","flare.animate.interpolate.Interpolator"]},
  15. {"name":"flare.animate.interpolate.ColorInterpolator","size":2047,"imports":["flare.animate.interpolate.Interpolator"]},
  16. {"name":"flare.animate.interpolate.DateInterpolator","size":1375,"imports":["flare.animate.interpolate.Interpolator"]},
  17. {"name":"flare.animate.interpolate.Interpolator","size":8746,"imports":["flare.animate.interpolate.NumberInterpolator","flare.animate.interpolate.ColorInterpolator","flare.animate.interpolate.PointInterpolator","flare.animate.interpolate.ObjectInterpolator","flare.animate.interpolate.MatrixInterpolator","flare.animate.interpolate.RectangleInterpolator","flare.animate.interpolate.DateInterpolator","flare.util.Property","flare.animate.interpolate.ArrayInterpolator"]},
  18. {"name":"flare.animate.interpolate.MatrixInterpolator","size":2202,"imports":["flare.animate.interpolate.Interpolator"]},
  19. {"name":"flare.animate.interpolate.NumberInterpolator","size":1382,"imports":["flare.animate.interpolate.Interpolator"]},
  20. {"name":"flare.animate.interpolate.ObjectInterpolator","size":1629,"imports":["flare.animate.interpolate.Interpolator"]},
  21. {"name":"flare.animate.interpolate.PointInterpolator","size":1675,"imports":["flare.animate.interpolate.Interpolator"]},
  22. {"name":"flare.animate.interpolate.RectangleInterpolator","size":2042,"imports":["flare.animate.interpolate.Interpolator"]},
  23. {"name":"flare.animate.ISchedulable","size":1041,"imports":["flare.animate.Scheduler"]},
  24. {"name":"flare.animate.Parallel","size":5176,"imports":["flare.animate.Easing","flare.animate.Transition","flare.util.Arrays"]},
  25. {"name":"flare.animate.Pause","size":449,"imports":["flare.animate.Transition"]},
  26. {"name":"flare.animate.Scheduler","size":5593,"imports":["flare.animate.ISchedulable","flare.animate.Pause","flare.animate.Transition"]},
  27. {"name":"flare.animate.Sequence","size":5534,"imports":["flare.animate.Easing","flare.util.Maths","flare.animate.Transition","flare.util.Arrays"]},
  28. {"name":"flare.animate.Transition","size":9201,"imports":["flare.animate.Transitioner","flare.animate.TransitionEvent","flare.animate.Scheduler","flare.animate.Pause","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.ISchedulable","flare.util.Maths","flare.animate.Tween"]},
  29. {"name":"flare.animate.Transitioner","size":19975,"imports":["flare.util.IValueProxy","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.Transition","flare.animate.Tween","flare.util.Property"]},
  30. {"name":"flare.animate.TransitionEvent","size":1116,"imports":["flare.animate.Transition"]},
  31. {"name":"flare.animate.Tween","size":6006,"imports":["flare.animate.Transitioner","flare.animate.Transition","flare.animate.interpolate.Interpolator","flare.util.Property"]},
  32. {"name":"flare.data.converters.Converters","size":721,"imports":["flare.data.converters.IDataConverter","flare.data.converters.GraphMLConverter","flare.data.converters.JSONConverter","flare.data.converters.DelimitedTextConverter"]},
  33. {"name":"flare.data.converters.DelimitedTextConverter","size":4294,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]},
  34. {"name":"flare.data.converters.GraphMLConverter","size":9800,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]},
  35. {"name":"flare.data.converters.IDataConverter","size":1314,"imports":["flare.data.DataSet","flare.data.DataSchema"]},
  36. {"name":"flare.data.converters.JSONConverter","size":2220,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField","flare.util.Property"]},
  37. {"name":"flare.data.DataField","size":1759,"imports":["flare.data.DataUtil"]},
  38. {"name":"flare.data.DataSchema","size":2165,"imports":["flare.data.DataField","flare.util.Arrays"]},
  39. {"name":"flare.data.DataSet","size":586,"imports":["flare.data.DataTable"]},
  40. {"name":"flare.data.DataSource","size":3331,"imports":["flare.data.converters.IDataConverter","flare.data.converters.Converters","flare.data.DataSchema"]},
  41. {"name":"flare.data.DataTable","size":772,"imports":["flare.data.DataSchema"]},
  42. {"name":"flare.data.DataUtil","size":3322,"imports":["flare.data.DataField","flare.data.DataSchema"]},
  43. {"name":"flare.display.DirtySprite","size":8833,"imports":[]},
  44. {"name":"flare.display.LineSprite","size":1732,"imports":["flare.display.DirtySprite"]},
  45. {"name":"flare.display.RectSprite","size":3623,"imports":["flare.util.Colors","flare.display.DirtySprite"]},
  46. {"name":"flare.display.TextSprite","size":10066,"imports":["flare.display.DirtySprite"]},
  47. {"name":"flare.flex.FlareVis","size":4116,"imports":["flare.display.DirtySprite","flare.data.DataSet","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.vis.data.Data"]},
  48. {"name":"flare.physics.DragForce","size":1082,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
  49. {"name":"flare.physics.GravityForce","size":1336,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
  50. {"name":"flare.physics.IForce","size":319,"imports":["flare.physics.Simulation"]},
  51. {"name":"flare.physics.NBodyForce","size":10498,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
  52. {"name":"flare.physics.Particle","size":2822,"imports":[]},
  53. {"name":"flare.physics.Simulation","size":9983,"imports":["flare.physics.Particle","flare.physics.NBodyForce","flare.physics.DragForce","flare.physics.GravityForce","flare.physics.Spring","flare.physics.SpringForce","flare.physics.IForce"]},
  54. {"name":"flare.physics.Spring","size":2213,"imports":["flare.physics.Particle"]},
  55. {"name":"flare.physics.SpringForce","size":1681,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.Spring","flare.physics.IForce"]},
  56. {"name":"flare.query.AggregateExpression","size":1616,"imports":["flare.query.Expression"]},
  57. {"name":"flare.query.And","size":1027,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
  58. {"name":"flare.query.Arithmetic","size":3891,"imports":["flare.query.BinaryExpression","flare.query.Expression"]},
  59. {"name":"flare.query.Average","size":891,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  60. {"name":"flare.query.BinaryExpression","size":2893,"imports":["flare.query.Expression"]},
  61. {"name":"flare.query.Comparison","size":5103,"imports":["flare.query.Not","flare.query.BinaryExpression","flare.query.Expression","flare.query.Or"]},
  62. {"name":"flare.query.CompositeExpression","size":3677,"imports":["flare.query.Expression","flare.query.If"]},
  63. {"name":"flare.query.Count","size":781,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  64. {"name":"flare.query.DateUtil","size":4141,"imports":["flare.query.Fn"]},
  65. {"name":"flare.query.Distinct","size":933,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  66. {"name":"flare.query.Expression","size":5130,"imports":["flare.query.Variable","flare.query.IsA","flare.query.ExpressionIterator","flare.util.IPredicate","flare.query.Literal","flare.util.IEvaluable","flare.query.If"]},
  67. {"name":"flare.query.ExpressionIterator","size":3617,"imports":["flare.query.Expression"]},
  68. {"name":"flare.query.Fn","size":3240,"imports":["flare.query.DateUtil","flare.query.CompositeExpression","flare.query.Expression","flare.query.StringUtil"]},
  69. {"name":"flare.query.If","size":2732,"imports":["flare.query.Expression"]},
  70. {"name":"flare.query.IsA","size":2039,"imports":["flare.query.Expression","flare.query.If"]},
  71. {"name":"flare.query.Literal","size":1214,"imports":["flare.query.Expression"]},
  72. {"name":"flare.query.Match","size":3748,"imports":["flare.query.BinaryExpression","flare.query.Expression","flare.query.StringUtil"]},
  73. {"name":"flare.query.Maximum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  74. {"name":"flare.query.methods.add","size":593,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
  75. {"name":"flare.query.methods.and","size":330,"imports":["flare.query.And","flare.query.methods.or"]},
  76. {"name":"flare.query.methods.average","size":287,"imports":["flare.query.Average","flare.query.methods.or"]},
  77. {"name":"flare.query.methods.count","size":277,"imports":["flare.query.Count","flare.query.methods.or"]},
  78. {"name":"flare.query.methods.distinct","size":292,"imports":["flare.query.Distinct","flare.query.methods.or"]},
  79. {"name":"flare.query.methods.div","size":595,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
  80. {"name":"flare.query.methods.eq","size":594,"imports":["flare.query.Comparison","flare.query.methods.or"]},
  81. {"name":"flare.query.methods.fn","size":460,"imports":["flare.query.methods.or","flare.query.Fn"]},
  82. {"name":"flare.query.methods.gt","size":603,"imports":["flare.query.Comparison","flare.query.methods.or"]},
  83. {"name":"flare.query.methods.gte","size":625,"imports":["flare.query.Comparison","flare.query.methods.gt","flare.query.methods.eq","flare.query.methods.or"]},
  84. {"name":"flare.query.methods.iff","size":748,"imports":["flare.query.methods.or","flare.query.If"]},
  85. {"name":"flare.query.methods.isa","size":461,"imports":["flare.query.IsA","flare.query.methods.or"]},
  86. {"name":"flare.query.methods.lt","size":597,"imports":["flare.query.Comparison","flare.query.methods.or"]},
  87. {"name":"flare.query.methods.lte","size":619,"imports":["flare.query.Comparison","flare.query.methods.lt","flare.query.methods.eq","flare.query.methods.or"]},
  88. {"name":"flare.query.methods.max","size":283,"imports":["flare.query.Maximum","flare.query.methods.or"]},
  89. {"name":"flare.query.methods.min","size":283,"imports":["flare.query.Minimum","flare.query.methods.or"]},
  90. {"name":"flare.query.methods.mod","size":591,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
  91. {"name":"flare.query.methods.mul","size":603,"imports":["flare.query.methods.lt","flare.query.methods.or","flare.query.Arithmetic"]},
  92. {"name":"flare.query.methods.neq","size":599,"imports":["flare.query.Comparison","flare.query.methods.eq","flare.query.methods.or"]},
  93. {"name":"flare.query.methods.not","size":386,"imports":["flare.query.Not","flare.query.methods.or"]},
  94. {"name":"flare.query.methods.or","size":323,"imports":["flare.query.Or"]},
  95. {"name":"flare.query.methods.orderby","size":307,"imports":["flare.query.Query","flare.query.methods.or"]},
  96. {"name":"flare.query.methods.range","size":772,"imports":["flare.query.methods.max","flare.query.Range","flare.query.methods.or","flare.query.methods.min"]},
  97. {"name":"flare.query.methods.select","size":296,"imports":["flare.query.Query"]},
  98. {"name":"flare.query.methods.stddev","size":363,"imports":["flare.query.methods.and","flare.query.Variance","flare.query.methods.or"]},
  99. {"name":"flare.query.methods.sub","size":600,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
  100. {"name":"flare.query.methods.sum","size":280,"imports":["flare.query.Sum","flare.query.methods.or"]},
  101. {"name":"flare.query.methods.update","size":307,"imports":["flare.query.Query"]},
  102. {"name":"flare.query.methods.variance","size":335,"imports":["flare.query.Variance","flare.query.methods.or"]},
  103. {"name":"flare.query.methods.where","size":299,"imports":["flare.query.Query","flare.query.methods.lt","flare.query.methods.lte"]},
  104. {"name":"flare.query.methods.xor","size":354,"imports":["flare.query.Xor","flare.query.methods.or"]},
  105. {"name":"flare.query.methods._","size":264,"imports":["flare.query.Literal","flare.query.methods.or"]},
  106. {"name":"flare.query.Minimum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  107. {"name":"flare.query.Not","size":1554,"imports":["flare.query.Expression"]},
  108. {"name":"flare.query.Or","size":970,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
  109. {"name":"flare.query.Query","size":13896,"imports":["flare.query.Variable","flare.query.Sum","flare.query.Expression","flare.util.Sort","flare.query.Not","flare.query.AggregateExpression","flare.query.Literal","flare.util.Filter","flare.util.Property","flare.query.If"]},
  110. {"name":"flare.query.Range","size":1594,"imports":["flare.query.And","flare.query.Comparison","flare.query.Expression"]},
  111. {"name":"flare.query.StringUtil","size":4130,"imports":["flare.query.Fn"]},
  112. {"name":"flare.query.Sum","size":791,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  113. {"name":"flare.query.Variable","size":1124,"imports":["flare.query.Expression","flare.util.Property"]},
  114. {"name":"flare.query.Variance","size":1876,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
  115. {"name":"flare.query.Xor","size":1101,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
  116. {"name":"flare.scale.IScaleMap","size":2105,"imports":["flare.scale.Scale"]},
  117. {"name":"flare.scale.LinearScale","size":1316,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
  118. {"name":"flare.scale.LogScale","size":3151,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
  119. {"name":"flare.scale.OrdinalScale","size":3770,"imports":["flare.scale.ScaleType","flare.util.Arrays","flare.scale.Scale"]},
  120. {"name":"flare.scale.QuantileScale","size":2435,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.ScaleType"]},
  121. {"name":"flare.scale.QuantitativeScale","size":4839,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale"]},
  122. {"name":"flare.scale.RootScale","size":1756,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
  123. {"name":"flare.scale.Scale","size":4268,"imports":["flare.scale.ScaleType","flare.util.Strings"]},
  124. {"name":"flare.scale.ScaleType","size":1821,"imports":["flare.scale.Scale"]},
  125. {"name":"flare.scale.TimeScale","size":5833,"imports":["flare.util.Maths","flare.util.Dates","flare.scale.Scale","flare.scale.ScaleType"]},
  126. {"name":"flare.util.Arrays","size":8258,"imports":["flare.util.IValueProxy","flare.util.Property","flare.util.IEvaluable"]},
  127. {"name":"flare.util.Colors","size":10001,"imports":["flare.util.Filter"]},
  128. {"name":"flare.util.Dates","size":8217,"imports":["flare.util.Maths"]},
  129. {"name":"flare.util.Displays","size":12555,"imports":["flare.util.IValueProxy","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.util.Sort"]},
  130. {"name":"flare.util.Filter","size":2324,"imports":["flare.util.IPredicate","flare.util.Property"]},
  131. {"name":"flare.util.Geometry","size":10993,"imports":[]},
  132. {"name":"flare.util.heap.FibonacciHeap","size":9354,"imports":["flare.util.heap.HeapNode"]},
  133. {"name":"flare.util.heap.HeapNode","size":1233,"imports":["flare.util.heap.FibonacciHeap"]},
  134. {"name":"flare.util.IEvaluable","size":335,"imports":[]},
  135. {"name":"flare.util.IPredicate","size":383,"imports":[]},
  136. {"name":"flare.util.IValueProxy","size":874,"imports":[]},
  137. {"name":"flare.util.math.DenseMatrix","size":3165,"imports":["flare.util.math.IMatrix"]},
  138. {"name":"flare.util.math.IMatrix","size":2815,"imports":[]},
  139. {"name":"flare.util.math.SparseMatrix","size":3366,"imports":["flare.util.math.IMatrix"]},
  140. {"name":"flare.util.Maths","size":17705,"imports":["flare.util.Arrays"]},
  141. {"name":"flare.util.Orientation","size":1486,"imports":[]},
  142. {"name":"flare.util.palette.ColorPalette","size":6367,"imports":["flare.util.palette.Palette","flare.util.Colors"]},
  143. {"name":"flare.util.palette.Palette","size":1229,"imports":[]},
  144. {"name":"flare.util.palette.ShapePalette","size":2059,"imports":["flare.util.palette.Palette","flare.util.Shapes"]},
  145. {"name":"flare.util.palette.SizePalette","size":2291,"imports":["flare.util.palette.Palette"]},
  146. {"name":"flare.util.Property","size":5559,"imports":["flare.util.IPredicate","flare.util.IValueProxy","flare.util.IEvaluable"]},
  147. {"name":"flare.util.Shapes","size":19118,"imports":["flare.util.Arrays"]},
  148. {"name":"flare.util.Sort","size":6887,"imports":["flare.util.Arrays","flare.util.Property"]},
  149. {"name":"flare.util.Stats","size":6557,"imports":["flare.util.Arrays","flare.util.Property"]},
  150. {"name":"flare.util.Strings","size":22026,"imports":["flare.util.Dates","flare.util.Property"]},
  151. {"name":"flare.vis.axis.Axes","size":1302,"imports":["flare.animate.Transitioner","flare.vis.Visualization"]},
  152. {"name":"flare.vis.axis.Axis","size":24593,"imports":["flare.animate.Transitioner","flare.scale.LinearScale","flare.util.Arrays","flare.scale.ScaleType","flare.util.Strings","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.vis.axis.AxisLabel","flare.vis.axis.AxisGridLine"]},
  153. {"name":"flare.vis.axis.AxisGridLine","size":652,"imports":["flare.vis.axis.Axis","flare.display.LineSprite"]},
  154. {"name":"flare.vis.axis.AxisLabel","size":636,"imports":["flare.vis.axis.Axis","flare.display.TextSprite"]},
  155. {"name":"flare.vis.axis.CartesianAxes","size":6703,"imports":["flare.animate.Transitioner","flare.display.RectSprite","flare.vis.axis.Axis","flare.display.TextSprite","flare.vis.axis.Axes","flare.vis.Visualization","flare.vis.axis.AxisGridLine"]},
  156. {"name":"flare.vis.controls.AnchorControl","size":2138,"imports":["flare.vis.controls.Control","flare.vis.Visualization","flare.vis.operator.layout.Layout"]},
  157. {"name":"flare.vis.controls.ClickControl","size":3824,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
  158. {"name":"flare.vis.controls.Control","size":1353,"imports":["flare.vis.controls.IControl","flare.util.Filter"]},
  159. {"name":"flare.vis.controls.ControlList","size":4665,"imports":["flare.vis.controls.IControl","flare.util.Arrays","flare.vis.Visualization","flare.vis.controls.Control"]},
  160. {"name":"flare.vis.controls.DragControl","size":2649,"imports":["flare.vis.controls.Control","flare.vis.data.DataSprite"]},
  161. {"name":"flare.vis.controls.ExpandControl","size":2832,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.controls.Control","flare.vis.Visualization"]},
  162. {"name":"flare.vis.controls.HoverControl","size":4896,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
  163. {"name":"flare.vis.controls.IControl","size":763,"imports":["flare.vis.controls.Control"]},
  164. {"name":"flare.vis.controls.PanZoomControl","size":5222,"imports":["flare.util.Displays","flare.vis.controls.Control"]},
  165. {"name":"flare.vis.controls.SelectionControl","size":7862,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
  166. {"name":"flare.vis.controls.TooltipControl","size":8435,"imports":["flare.animate.Tween","flare.display.TextSprite","flare.vis.controls.Control","flare.vis.events.TooltipEvent"]},
  167. {"name":"flare.vis.data.Data","size":20544,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.data.DataSet","flare.vis.data.TreeBuilder","flare.vis.data.DataList","flare.data.DataSchema","flare.util.Sort","flare.data.DataField","flare.util.Property"]},
  168. {"name":"flare.vis.data.DataList","size":19788,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.math.DenseMatrix","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.util.Stats","flare.util.math.IMatrix","flare.util.Sort","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
  169. {"name":"flare.vis.data.DataSprite","size":10349,"imports":["flare.util.Colors","flare.vis.data.Data","flare.display.DirtySprite","flare.vis.data.render.IRenderer","flare.vis.data.render.ShapeRenderer"]},
  170. {"name":"flare.vis.data.EdgeSprite","size":3301,"imports":["flare.vis.data.render.EdgeRenderer","flare.vis.data.DataSprite","flare.vis.data.NodeSprite","flare.vis.data.render.ArrowType","flare.vis.data.Data"]},
  171. {"name":"flare.vis.data.NodeSprite","size":19382,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.util.Sort","flare.util.Filter","flare.util.IEvaluable","flare.vis.data.Data"]},
  172. {"name":"flare.vis.data.render.ArrowType","size":698,"imports":[]},
  173. {"name":"flare.vis.data.render.EdgeRenderer","size":5569,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.render.IRenderer","flare.util.Shapes","flare.util.Geometry","flare.vis.data.render.ArrowType"]},
  174. {"name":"flare.vis.data.render.IRenderer","size":353,"imports":["flare.vis.data.DataSprite"]},
  175. {"name":"flare.vis.data.render.ShapeRenderer","size":2247,"imports":["flare.util.Shapes","flare.vis.data.render.IRenderer","flare.vis.data.DataSprite"]},
  176. {"name":"flare.vis.data.ScaleBinding","size":11275,"imports":["flare.scale.TimeScale","flare.scale.ScaleType","flare.scale.LinearScale","flare.scale.LogScale","flare.scale.OrdinalScale","flare.scale.RootScale","flare.scale.Scale","flare.scale.QuantileScale","flare.util.Stats","flare.scale.QuantitativeScale","flare.vis.events.DataEvent","flare.vis.data.Data"]},
  177. {"name":"flare.vis.data.Tree","size":7147,"imports":["flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.vis.data.NodeSprite","flare.vis.data.Data"]},
  178. {"name":"flare.vis.data.TreeBuilder","size":9930,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.Tree","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
  179. {"name":"flare.vis.events.DataEvent","size":2313,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite"]},
  180. {"name":"flare.vis.events.SelectionEvent","size":1880,"imports":["flare.vis.events.DataEvent"]},
  181. {"name":"flare.vis.events.TooltipEvent","size":1701,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite"]},
  182. {"name":"flare.vis.events.VisualizationEvent","size":1117,"imports":["flare.animate.Transitioner"]},
  183. {"name":"flare.vis.legend.Legend","size":20859,"imports":["flare.animate.Transitioner","flare.vis.data.ScaleBinding","flare.util.palette.SizePalette","flare.scale.ScaleType","flare.vis.legend.LegendItem","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.vis.legend.LegendRange","flare.util.Displays","flare.util.Orientation","flare.util.palette.ShapePalette","flare.util.palette.Palette","flare.util.palette.ColorPalette"]},
  184. {"name":"flare.vis.legend.LegendItem","size":4614,"imports":["flare.util.Shapes","flare.display.TextSprite","flare.vis.legend.Legend","flare.display.RectSprite"]},
  185. {"name":"flare.vis.legend.LegendRange","size":10530,"imports":["flare.util.Colors","flare.vis.legend.Legend","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.util.Orientation","flare.util.palette.ColorPalette"]},
  186. {"name":"flare.vis.operator.distortion.BifocalDistortion","size":4461,"imports":["flare.vis.operator.distortion.Distortion"]},
  187. {"name":"flare.vis.operator.distortion.Distortion","size":6314,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.events.VisualizationEvent","flare.vis.axis.Axis","flare.vis.axis.CartesianAxes","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
  188. {"name":"flare.vis.operator.distortion.FisheyeDistortion","size":3444,"imports":["flare.vis.operator.distortion.Distortion"]},
  189. {"name":"flare.vis.operator.encoder.ColorEncoder","size":3179,"imports":["flare.animate.Transitioner","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.Palette","flare.util.palette.ColorPalette","flare.vis.data.Data"]},
  190. {"name":"flare.vis.operator.encoder.Encoder","size":4060,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.operator.Operator","flare.vis.data.ScaleBinding","flare.util.palette.Palette","flare.util.Filter","flare.util.Property","flare.vis.data.Data"]},
  191. {"name":"flare.vis.operator.encoder.PropertyEncoder","size":4138,"imports":["flare.animate.Transitioner","flare.vis.data.DataList","flare.vis.data.Data","flare.vis.operator.encoder.Encoder","flare.util.Filter","flare.vis.operator.Operator"]},
  192. {"name":"flare.vis.operator.encoder.ShapeEncoder","size":1690,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.util.palette.ShapePalette","flare.vis.operator.encoder.Encoder","flare.vis.data.Data"]},
  193. {"name":"flare.vis.operator.encoder.SizeEncoder","size":1830,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.SizePalette","flare.vis.data.Data"]},
  194. {"name":"flare.vis.operator.filter.FisheyeTreeFilter","size":5219,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.vis.operator.Operator","flare.vis.data.Data"]},
  195. {"name":"flare.vis.operator.filter.GraphDistanceFilter","size":3165,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.Operator","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite"]},
  196. {"name":"flare.vis.operator.filter.VisibilityFilter","size":3509,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Filter","flare.vis.data.DataSprite","flare.vis.data.Data"]},
  197. {"name":"flare.vis.operator.IOperator","size":1286,"imports":["flare.animate.Transitioner","flare.vis.Visualization","flare.vis.operator.Operator"]},
  198. {"name":"flare.vis.operator.label.Labeler","size":9956,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.display.TextSprite","flare.vis.operator.Operator","flare.util.Shapes","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
  199. {"name":"flare.vis.operator.label.RadialLabeler","size":3899,"imports":["flare.vis.operator.label.Labeler","flare.util.Shapes","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]},
  200. {"name":"flare.vis.operator.label.StackedAreaLabeler","size":3202,"imports":["flare.vis.operator.label.Labeler","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]},
  201. {"name":"flare.vis.operator.layout.AxisLayout","size":6725,"imports":["flare.scale.ScaleType","flare.vis.data.DataSprite","flare.vis.axis.CartesianAxes","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
  202. {"name":"flare.vis.operator.layout.BundledEdgeRouter","size":3727,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.util.Shapes","flare.vis.operator.layout.Layout","flare.vis.operator.Operator"]},
  203. {"name":"flare.vis.operator.layout.CircleLayout","size":9317,"imports":["flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
  204. {"name":"flare.vis.operator.layout.CirclePackingLayout","size":12003,"imports":["flare.vis.data.NodeSprite","flare.vis.data.render.ShapeRenderer","flare.util.Shapes","flare.util.Sort","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
  205. {"name":"flare.vis.operator.layout.DendrogramLayout","size":4853,"imports":["flare.util.Property","flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]},
  206. {"name":"flare.vis.operator.layout.ForceDirectedLayout","size":8411,"imports":["flare.physics.Simulation","flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.physics.Particle","flare.physics.Spring","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite","flare.vis.data.Data"]},
  207. {"name":"flare.vis.operator.layout.IcicleTreeLayout","size":4864,"imports":["flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout"]},
  208. {"name":"flare.vis.operator.layout.IndentedTreeLayout","size":3174,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]},
  209. {"name":"flare.vis.operator.layout.Layout","size":7881,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.animate.TransitionEvent","flare.vis.operator.Operator"]},
  210. {"name":"flare.vis.operator.layout.NodeLinkTreeLayout","size":12870,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.Orientation","flare.vis.operator.layout.Layout"]},
  211. {"name":"flare.vis.operator.layout.PieLayout","size":2728,"imports":["flare.vis.data.DataList","flare.vis.data.DataSprite","flare.util.Shapes","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
  212. {"name":"flare.vis.operator.layout.RadialTreeLayout","size":12348,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout"]},
  213. {"name":"flare.vis.operator.layout.RandomLayout","size":870,"imports":["flare.vis.operator.layout.Layout","flare.vis.data.DataSprite","flare.vis.data.Data"]},
  214. {"name":"flare.vis.operator.layout.StackedAreaLayout","size":9121,"imports":["flare.scale.TimeScale","flare.scale.LinearScale","flare.util.Arrays","flare.scale.OrdinalScale","flare.vis.data.NodeSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.util.Stats","flare.util.Orientation","flare.scale.QuantitativeScale","flare.util.Maths","flare.vis.operator.layout.Layout"]},
  215. {"name":"flare.vis.operator.layout.TreeMapLayout","size":9191,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Property","flare.vis.operator.layout.Layout"]},
  216. {"name":"flare.vis.operator.Operator","size":2490,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.util.Property","flare.util.IEvaluable","flare.vis.Visualization"]},
  217. {"name":"flare.vis.operator.OperatorList","size":5248,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.operator.Operator"]},
  218. {"name":"flare.vis.operator.OperatorSequence","size":4190,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.operator.OperatorList","flare.animate.FunctionSequence","flare.vis.operator.Operator"]},
  219. {"name":"flare.vis.operator.OperatorSwitch","size":2581,"imports":["flare.animate.Transitioner","flare.vis.operator.OperatorList","flare.vis.operator.IOperator","flare.vis.operator.Operator"]},
  220. {"name":"flare.vis.operator.SortOperator","size":2023,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.Data"]},
  221. {"name":"flare.vis.Visualization","size":16540,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.animate.Scheduler","flare.vis.events.VisualizationEvent","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.vis.axis.Axes","flare.vis.axis.CartesianAxes","flare.util.Displays","flare.vis.operator.OperatorList","flare.vis.controls.ControlList","flare.animate.ISchedulable","flare.vis.data.Data"]}
  222. ]

源文件:packages.js

  1. (function() {
  2. packages = {
  3. // Lazily construct the package hierarchy from class names.
  4. root: function(classes) {
  5. var map = {};
  6. function find(name, data) {
  7. var node = map[name], i;
  8. if (!node) {
  9. node = map[name] = data || {name: name, children: []};
  10. if (name.length) {
  11. node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
  12. node.parent.children.push(node);
  13. node.key = name.substring(i + 1);
  14. }
  15. }
  16. return node;
  17. }
  18. classes.forEach(function(d) {
  19. find(d.name, d);
  20. });
  21. return map[""];
  22. },
  23. // Return a list of imports for the given array of nodes.
  24. imports: function(nodes) {
  25. var map = {},
  26. imports = [];
  27. // Compute a map from name to node.
  28. nodes.forEach(function(d) {
  29. map[d.name] = d;
  30. });
  31. // For each import, construct a link from the source to target node.
  32. nodes.forEach(function(d) {
  33. if (d.imports) d.imports.forEach(function(i) {
  34. imports.push({source: map[d.name], target: map[i]});
  35. });
  36. });
  37. return imports;
  38. }
  39. };
  40. })();