| 142 | } |
| 143 | |
| 144 | function buildGraph(sinks: Object): Dagre.Graph { |
| 145 | const idTable = new IdTable(); |
| 146 | const graph = new dagre.graphlib.Graph(); |
| 147 | graph.setGraph({nodesep: 60, ranksep: 20}); |
| 148 | for (let key in sinks) { |
| 149 | if (sinks.hasOwnProperty(key)) { |
| 150 | const node: StreamGraphNode = { |
| 151 | id: idTable.getId(sinks[key]), |
| 152 | label: key, |
| 153 | type: 'sink', |
| 154 | stream: sinks[key], |
| 155 | width: SINK_NODE_SIZE[0], |
| 156 | height: SINK_NODE_SIZE[1], |
| 157 | }; |
| 158 | graph.setNode(idTable.getId(sinks[key]), node); |
| 159 | traverse(graph, idTable, sinks[key]); |
| 160 | } |
| 161 | } |
| 162 | dagre.layout(graph); |
| 163 | return graph; |
| 164 | } |
| 165 | |
| 166 | interface Diagram { |
| 167 | graph: Dagre.Graph; |