瀏覽代碼

Update dagre.js

Lutz Roeder 1 年之前
父節點
當前提交
c8498c3f41
共有 3 個文件被更改,包括 13 次插入5 次删除
  1. 4 1
      source/dagre.js
  2. 8 3
      source/grapher.js
  3. 1 1
      source/worker.js

+ 4 - 1
source/dagre.js

@@ -5,7 +5,7 @@ const dagre = {};
 // https://github.com/dagrejs/dagre
 // https://github.com/dagrejs/graphlib
 
-dagre.layout = (identifier, nodes, edges, layout, state) => {
+dagre.layout = (nodes, edges, layout, state) => {
 
     let uniqueIdCounter = 0;
     const uniqueId = (prefix) => {
@@ -2098,6 +2098,9 @@ dagre.layout = (identifier, nodes, edges, layout, state) => {
             edge.y = label.y;
         }
     }
+    if (state.log) {
+        state.log = g.toString();
+    }
 };
 
 dagre.Graph = class {

+ 8 - 3
source/grapher.js

@@ -195,18 +195,23 @@ grapher.Graph = class {
                 labelpos: edge.label.labelpos || 'r'
             });
         }
-        const identifier = this.identifier;
+        const state = { /* log: true */ };
         const layout = this._layout;
         if (worker) {
-            const message = await worker.request({ type: 'dagre.layout', identifier, nodes, edges, layout }, 2500, 'This large graph layout might take a very long time to complete.');
+            const message = await worker.request({ type: 'dagre.layout', nodes, edges, layout, state }, 2500, 'This large graph layout might take a very long time to complete.');
             if (message.type === 'cancel') {
                 return 'graph-layout-cancelled';
             }
             nodes = message.nodes;
             edges = message.edges;
+            state.log = message.state.log;
         } else {
             const dagre = await import('./dagre.js');
-            dagre.layout(identifier, nodes, edges, layout, {});
+            dagre.layout(nodes, edges, layout, state);
+        }
+        if (state.log) {
+            const fs = await import('fs');
+            fs.writeFileSync(`dist/test/${this.identifier}.log`, state.log);
         }
         for (const node of nodes) {
             const label = this.node(node.v).label;

+ 1 - 1
source/worker.js

@@ -15,7 +15,7 @@ require().then((self) => {
             case 'dagre.layout': {
                 try {
                     const dagre = await import('./dagre.js');
-                    dagre.layout(message.identifier, message.nodes, message.edges, message.layout, {});
+                    dagre.layout(message.nodes, message.edges, message.layout, message.state);
                     self.postMessage(message);
                 } catch (error) {
                     self.postMessage({ type: 'error', message: error.message });