@antv/layout 0.1.19-beta.3 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/layout.min.js +1 -1
- package/dist/layout.min.js.LICENSE.txt +9 -0
- package/dist/layout.min.js.map +1 -1
- package/es/layout/dagre/index.d.ts +9 -0
- package/es/layout/dagre/index.js +33 -0
- package/es/layout/dagre/index.js.map +1 -0
- package/es/layout/dagre/src/acyclic.d.ts +7 -0
- package/es/layout/dagre/src/acyclic.js +52 -0
- package/es/layout/dagre/src/acyclic.js.map +1 -0
- package/es/layout/dagre/src/add-border-segments.d.ts +4 -0
- package/es/layout/dagre/src/add-border-segments.js +32 -0
- package/es/layout/dagre/src/add-border-segments.js.map +1 -0
- package/es/layout/dagre/src/coordinate-system.d.ts +7 -0
- package/es/layout/dagre/src/coordinate-system.js +57 -0
- package/es/layout/dagre/src/coordinate-system.js.map +1 -0
- package/es/layout/dagre/src/data/list.d.ts +8 -0
- package/es/layout/dagre/src/data/list.js +50 -0
- package/es/layout/dagre/src/data/list.js.map +1 -0
- package/es/layout/dagre/src/debug.d.ts +4 -0
- package/es/layout/dagre/src/debug.js +26 -0
- package/es/layout/dagre/src/debug.js.map +1 -0
- package/es/layout/dagre/src/graphlib.d.ts +2 -0
- package/es/layout/dagre/src/graphlib.js +8 -0
- package/es/layout/dagre/src/graphlib.js.map +1 -0
- package/es/layout/dagre/src/greedy-fas.d.ts +4 -0
- package/es/layout/dagre/src/greedy-fas.js +113 -0
- package/es/layout/dagre/src/greedy-fas.js.map +1 -0
- package/es/layout/dagre/src/layout.d.ts +4 -0
- package/es/layout/dagre/src/layout.js +435 -0
- package/es/layout/dagre/src/layout.js.map +1 -0
- package/es/layout/dagre/src/nesting-graph.d.ts +7 -0
- package/es/layout/dagre/src/nesting-graph.js +112 -0
- package/es/layout/dagre/src/nesting-graph.js.map +1 -0
- package/es/layout/dagre/src/normalize.d.ts +7 -0
- package/es/layout/dagre/src/normalize.js +88 -0
- package/es/layout/dagre/src/normalize.js.map +1 -0
- package/es/layout/dagre/src/order/add-subgraph-constraints.d.ts +4 -0
- package/es/layout/dagre/src/order/add-subgraph-constraints.js +27 -0
- package/es/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -0
- package/es/layout/dagre/src/order/barycenter.d.ts +12 -0
- package/es/layout/dagre/src/order/barycenter.js +24 -0
- package/es/layout/dagre/src/order/barycenter.js.map +1 -0
- package/es/layout/dagre/src/order/build-layer-graph.d.ts +4 -0
- package/es/layout/dagre/src/order/build-layer-graph.js +67 -0
- package/es/layout/dagre/src/order/build-layer-graph.js.map +1 -0
- package/es/layout/dagre/src/order/cross-count.d.ts +4 -0
- package/es/layout/dagre/src/order/cross-count.js +64 -0
- package/es/layout/dagre/src/order/cross-count.js.map +1 -0
- package/es/layout/dagre/src/order/index.d.ts +4 -0
- package/es/layout/dagre/src/order/index.js +88 -0
- package/es/layout/dagre/src/order/index.js.map +1 -0
- package/es/layout/dagre/src/order/init-data-order.d.ts +7 -0
- package/es/layout/dagre/src/order/init-data-order.js +25 -0
- package/es/layout/dagre/src/order/init-data-order.js.map +1 -0
- package/es/layout/dagre/src/order/init-order.d.ts +4 -0
- package/es/layout/dagre/src/order/init-order.js +49 -0
- package/es/layout/dagre/src/order/init-order.js.map +1 -0
- package/es/layout/dagre/src/order/resolve-conflicts.d.ts +4 -0
- package/es/layout/dagre/src/order/resolve-conflicts.js +111 -0
- package/es/layout/dagre/src/order/resolve-conflicts.js.map +1 -0
- package/es/layout/dagre/src/order/sort-subgraph.d.ts +4 -0
- package/es/layout/dagre/src/order/sort-subgraph.js +79 -0
- package/es/layout/dagre/src/order/sort-subgraph.js.map +1 -0
- package/es/layout/dagre/src/order/sort.d.ts +2 -0
- package/es/layout/dagre/src/order/sort.js +67 -0
- package/es/layout/dagre/src/order/sort.js.map +1 -0
- package/es/layout/dagre/src/parent-dummy-chains.d.ts +4 -0
- package/es/layout/dagre/src/parent-dummy-chains.js +78 -0
- package/es/layout/dagre/src/parent-dummy-chains.js.map +1 -0
- package/es/layout/dagre/src/position/bk.d.ts +32 -0
- package/es/layout/dagre/src/position/bk.js +398 -0
- package/es/layout/dagre/src/position/bk.js.map +1 -0
- package/es/layout/dagre/src/position/index.d.ts +4 -0
- package/es/layout/dagre/src/position/index.js +53 -0
- package/es/layout/dagre/src/position/index.js.map +1 -0
- package/es/layout/dagre/src/rank/feasible-tree.d.ts +10 -0
- package/es/layout/dagre/src/rank/feasible-tree.js +149 -0
- package/es/layout/dagre/src/rank/feasible-tree.js.map +1 -0
- package/es/layout/dagre/src/rank/index.d.ts +4 -0
- package/es/layout/dagre/src/rank/index.js +53 -0
- package/es/layout/dagre/src/rank/index.js.map +1 -0
- package/es/layout/dagre/src/rank/network-simplex.d.ts +12 -0
- package/es/layout/dagre/src/rank/network-simplex.js +207 -0
- package/es/layout/dagre/src/rank/network-simplex.js.map +1 -0
- package/es/layout/dagre/src/rank/util.d.ts +12 -0
- package/es/layout/dagre/src/rank/util.js +109 -0
- package/es/layout/dagre/src/rank/util.js.map +1 -0
- package/es/layout/dagre/src/util.d.ts +50 -0
- package/es/layout/dagre/src/util.js +260 -0
- package/es/layout/dagre/src/util.js.map +1 -0
- package/es/layout/dagre.d.ts +3 -3
- package/es/layout/dagre.js +35 -11
- package/es/layout/dagre.js.map +1 -1
- package/es/layout/er/core.d.ts +1 -0
- package/es/layout/er/core.js +107 -0
- package/es/layout/er/core.js.map +1 -0
- package/es/layout/er/forceGrid.d.ts +8 -0
- package/es/layout/er/forceGrid.js +88 -0
- package/es/layout/er/forceGrid.js.map +1 -0
- package/es/layout/er/grid.d.ts +26 -0
- package/es/layout/er/grid.js +162 -0
- package/es/layout/er/grid.js.map +1 -0
- package/es/layout/er/index.d.ts +29 -0
- package/es/layout/er/index.js +54 -0
- package/es/layout/er/index.js.map +1 -0
- package/es/layout/er/mysqlWorkbench.d.ts +6 -0
- package/es/layout/er/mysqlWorkbench.js +324 -0
- package/es/layout/er/mysqlWorkbench.js.map +1 -0
- package/es/layout/er/type.d.ts +35 -0
- package/es/layout/er/type.js +2 -0
- package/es/layout/er/type.js.map +1 -0
- package/es/layout/force/force-in-a-box.js +1 -0
- package/es/layout/force/force-in-a-box.js.map +1 -1
- package/es/layout/fruchterman.js +12 -36
- package/es/layout/fruchterman.js.map +1 -1
- package/es/layout/index.d.ts +2 -1
- package/es/layout/index.js +2 -1
- package/es/layout/index.js.map +1 -1
- package/es/layout/layout.js +33 -11
- package/es/layout/layout.js.map +1 -1
- package/es/layout/types.d.ts +9 -3
- package/es/registy/index.d.ts +1 -1
- package/es/registy/index.js +1 -0
- package/es/registy/index.js.map +1 -1
- package/lib/layout/dagre/index.d.ts +9 -0
- package/lib/layout/dagre/index.js +38 -0
- package/lib/layout/dagre/index.js.map +1 -0
- package/lib/layout/dagre/src/acyclic.d.ts +7 -0
- package/lib/layout/dagre/src/acyclic.js +57 -0
- package/lib/layout/dagre/src/acyclic.js.map +1 -0
- package/lib/layout/dagre/src/add-border-segments.d.ts +4 -0
- package/lib/layout/dagre/src/add-border-segments.js +37 -0
- package/lib/layout/dagre/src/add-border-segments.js.map +1 -0
- package/lib/layout/dagre/src/coordinate-system.d.ts +7 -0
- package/lib/layout/dagre/src/coordinate-system.js +59 -0
- package/lib/layout/dagre/src/coordinate-system.js.map +1 -0
- package/lib/layout/dagre/src/data/list.d.ts +8 -0
- package/lib/layout/dagre/src/data/list.js +53 -0
- package/lib/layout/dagre/src/data/list.js.map +1 -0
- package/lib/layout/dagre/src/debug.d.ts +4 -0
- package/lib/layout/dagre/src/debug.js +31 -0
- package/lib/layout/dagre/src/debug.js.map +1 -0
- package/lib/layout/dagre/src/graphlib.d.ts +2 -0
- package/lib/layout/dagre/src/graphlib.js +13 -0
- package/lib/layout/dagre/src/graphlib.js.map +1 -0
- package/lib/layout/dagre/src/greedy-fas.d.ts +4 -0
- package/lib/layout/dagre/src/greedy-fas.js +118 -0
- package/lib/layout/dagre/src/greedy-fas.js.map +1 -0
- package/lib/layout/dagre/src/layout.d.ts +4 -0
- package/lib/layout/dagre/src/layout.js +459 -0
- package/lib/layout/dagre/src/layout.js.map +1 -0
- package/lib/layout/dagre/src/nesting-graph.d.ts +7 -0
- package/lib/layout/dagre/src/nesting-graph.js +117 -0
- package/lib/layout/dagre/src/nesting-graph.js.map +1 -0
- package/lib/layout/dagre/src/normalize.d.ts +7 -0
- package/lib/layout/dagre/src/normalize.js +93 -0
- package/lib/layout/dagre/src/normalize.js.map +1 -0
- package/lib/layout/dagre/src/order/add-subgraph-constraints.d.ts +4 -0
- package/lib/layout/dagre/src/order/add-subgraph-constraints.js +29 -0
- package/lib/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -0
- package/lib/layout/dagre/src/order/barycenter.d.ts +12 -0
- package/lib/layout/dagre/src/order/barycenter.js +26 -0
- package/lib/layout/dagre/src/order/barycenter.js.map +1 -0
- package/lib/layout/dagre/src/order/build-layer-graph.d.ts +4 -0
- package/lib/layout/dagre/src/order/build-layer-graph.js +72 -0
- package/lib/layout/dagre/src/order/build-layer-graph.js.map +1 -0
- package/lib/layout/dagre/src/order/cross-count.d.ts +4 -0
- package/lib/layout/dagre/src/order/cross-count.js +66 -0
- package/lib/layout/dagre/src/order/cross-count.js.map +1 -0
- package/lib/layout/dagre/src/order/index.d.ts +4 -0
- package/lib/layout/dagre/src/order/index.js +93 -0
- package/lib/layout/dagre/src/order/index.js.map +1 -0
- package/lib/layout/dagre/src/order/init-data-order.d.ts +7 -0
- package/lib/layout/dagre/src/order/init-data-order.js +27 -0
- package/lib/layout/dagre/src/order/init-data-order.js.map +1 -0
- package/lib/layout/dagre/src/order/init-order.d.ts +4 -0
- package/lib/layout/dagre/src/order/init-order.js +51 -0
- package/lib/layout/dagre/src/order/init-order.js.map +1 -0
- package/lib/layout/dagre/src/order/resolve-conflicts.d.ts +4 -0
- package/lib/layout/dagre/src/order/resolve-conflicts.js +116 -0
- package/lib/layout/dagre/src/order/resolve-conflicts.js.map +1 -0
- package/lib/layout/dagre/src/order/sort-subgraph.d.ts +4 -0
- package/lib/layout/dagre/src/order/sort-subgraph.js +84 -0
- package/lib/layout/dagre/src/order/sort-subgraph.js.map +1 -0
- package/lib/layout/dagre/src/order/sort.d.ts +2 -0
- package/lib/layout/dagre/src/order/sort.js +72 -0
- package/lib/layout/dagre/src/order/sort.js.map +1 -0
- package/lib/layout/dagre/src/parent-dummy-chains.d.ts +4 -0
- package/lib/layout/dagre/src/parent-dummy-chains.js +80 -0
- package/lib/layout/dagre/src/parent-dummy-chains.js.map +1 -0
- package/lib/layout/dagre/src/position/bk.d.ts +32 -0
- package/lib/layout/dagre/src/position/bk.js +413 -0
- package/lib/layout/dagre/src/position/bk.js.map +1 -0
- package/lib/layout/dagre/src/position/index.d.ts +4 -0
- package/lib/layout/dagre/src/position/index.js +58 -0
- package/lib/layout/dagre/src/position/index.js.map +1 -0
- package/lib/layout/dagre/src/rank/feasible-tree.d.ts +10 -0
- package/lib/layout/dagre/src/rank/feasible-tree.js +156 -0
- package/lib/layout/dagre/src/rank/feasible-tree.js.map +1 -0
- package/lib/layout/dagre/src/rank/index.d.ts +4 -0
- package/lib/layout/dagre/src/rank/index.js +58 -0
- package/lib/layout/dagre/src/rank/index.js.map +1 -0
- package/lib/layout/dagre/src/rank/network-simplex.d.ts +12 -0
- package/lib/layout/dagre/src/rank/network-simplex.js +212 -0
- package/lib/layout/dagre/src/rank/network-simplex.js.map +1 -0
- package/lib/layout/dagre/src/rank/util.d.ts +12 -0
- package/lib/layout/dagre/src/rank/util.js +114 -0
- package/lib/layout/dagre/src/rank/util.js.map +1 -0
- package/lib/layout/dagre/src/util.d.ts +50 -0
- package/lib/layout/dagre/src/util.js +281 -0
- package/lib/layout/dagre/src/util.js.map +1 -0
- package/lib/layout/dagre.d.ts +3 -3
- package/lib/layout/dagre.js +37 -13
- package/lib/layout/dagre.js.map +1 -1
- package/lib/layout/er/core.d.ts +1 -0
- package/lib/layout/er/core.js +143 -0
- package/lib/layout/er/core.js.map +1 -0
- package/lib/layout/er/forceGrid.d.ts +8 -0
- package/lib/layout/er/forceGrid.js +97 -0
- package/lib/layout/er/forceGrid.js.map +1 -0
- package/lib/layout/er/grid.d.ts +26 -0
- package/lib/layout/er/grid.js +177 -0
- package/lib/layout/er/grid.js.map +1 -0
- package/lib/layout/er/index.d.ts +29 -0
- package/lib/layout/er/index.js +80 -0
- package/lib/layout/er/index.js.map +1 -0
- package/lib/layout/er/mysqlWorkbench.d.ts +6 -0
- package/lib/layout/er/mysqlWorkbench.js +326 -0
- package/lib/layout/er/mysqlWorkbench.js.map +1 -0
- package/lib/layout/er/type.d.ts +35 -0
- package/lib/layout/er/type.js +3 -0
- package/lib/layout/er/type.js.map +1 -0
- package/lib/layout/force/force-in-a-box.js +1 -0
- package/lib/layout/force/force-in-a-box.js.map +1 -1
- package/lib/layout/fruchterman.js +12 -36
- package/lib/layout/fruchterman.js.map +1 -1
- package/lib/layout/index.d.ts +2 -1
- package/lib/layout/index.js +3 -1
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout.js +32 -10
- package/lib/layout/layout.js.map +1 -1
- package/lib/layout/types.d.ts +9 -3
- package/lib/registy/index.d.ts +1 -1
- package/lib/registy/index.js +1 -0
- package/lib/registy/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { isNumber } from '../../../util';
|
|
2
|
+
import graphlib from './graphlib';
|
|
3
|
+
const Graph = graphlib.Graph;
|
|
4
|
+
/*
|
|
5
|
+
* Adds a dummy node to the graph and return v.
|
|
6
|
+
*/
|
|
7
|
+
const addDummyNode = (g, type, attrs, name) => {
|
|
8
|
+
let v;
|
|
9
|
+
do {
|
|
10
|
+
v = `${name}${Math.random()}`;
|
|
11
|
+
} while (g.hasNode(v));
|
|
12
|
+
attrs.dummy = type;
|
|
13
|
+
g.setNode(v, attrs);
|
|
14
|
+
return v;
|
|
15
|
+
};
|
|
16
|
+
/*
|
|
17
|
+
* Returns a new graph with only simple edges. Handles aggregation of data
|
|
18
|
+
* associated with multi-edges.
|
|
19
|
+
*/
|
|
20
|
+
const simplify = (g) => {
|
|
21
|
+
const simplified = new Graph().setGraph(g.graph());
|
|
22
|
+
g.nodes().forEach((v) => { simplified.setNode(v, g.node(v)); });
|
|
23
|
+
g.edges().forEach((e) => {
|
|
24
|
+
const simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };
|
|
25
|
+
const label = g.edge(e);
|
|
26
|
+
simplified.setEdge(e.v, e.w, {
|
|
27
|
+
weight: simpleLabel.weight + label.weight,
|
|
28
|
+
minlen: Math.max(simpleLabel.minlen, label.minlen)
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
return simplified;
|
|
32
|
+
};
|
|
33
|
+
const asNonCompoundGraph = (g) => {
|
|
34
|
+
const simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());
|
|
35
|
+
g.nodes().forEach((v) => {
|
|
36
|
+
var _a;
|
|
37
|
+
if (!((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
38
|
+
simplified.setNode(v, g.node(v));
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
g.edges().forEach((e) => simplified.setEdge(e, g.edge(e)));
|
|
42
|
+
return simplified;
|
|
43
|
+
};
|
|
44
|
+
const zipObject = (keys, values) => {
|
|
45
|
+
const result = {};
|
|
46
|
+
keys.forEach((key, i) => {
|
|
47
|
+
result[key] = values[i];
|
|
48
|
+
});
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
const successorWeights = (g) => {
|
|
52
|
+
const weightMap = g.nodes().map((v) => {
|
|
53
|
+
var _a;
|
|
54
|
+
const sucs = {};
|
|
55
|
+
(_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
56
|
+
sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;
|
|
57
|
+
});
|
|
58
|
+
return sucs;
|
|
59
|
+
});
|
|
60
|
+
return zipObject(g.nodes(), weightMap);
|
|
61
|
+
};
|
|
62
|
+
const predecessorWeights = (g) => {
|
|
63
|
+
const weightMap = g.nodes().map((v) => {
|
|
64
|
+
var _a;
|
|
65
|
+
const preds = {};
|
|
66
|
+
(_a = g.inEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
67
|
+
preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;
|
|
68
|
+
});
|
|
69
|
+
return preds;
|
|
70
|
+
});
|
|
71
|
+
return zipObject(g.nodes(), weightMap);
|
|
72
|
+
};
|
|
73
|
+
/*
|
|
74
|
+
* Finds where a line starting at point ({x, y}) would intersect a rectangle
|
|
75
|
+
* ({x, y, width, height}) if it were pointing at the rectangle's center.
|
|
76
|
+
*/
|
|
77
|
+
const intersectRect = (rect, point) => {
|
|
78
|
+
const x = rect.x;
|
|
79
|
+
const y = rect.y;
|
|
80
|
+
// Rectangle intersection algorithm from:
|
|
81
|
+
// http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
|
|
82
|
+
const dx = point.x - x;
|
|
83
|
+
const dy = point.y - y;
|
|
84
|
+
let w = rect.width / 2;
|
|
85
|
+
let h = rect.height / 2;
|
|
86
|
+
if (!dx && !dy) {
|
|
87
|
+
// throw new Error("Not possible to find intersection inside of the rectangle");
|
|
88
|
+
// completely overlapped
|
|
89
|
+
return { x: 0, y: 0 };
|
|
90
|
+
}
|
|
91
|
+
let sx;
|
|
92
|
+
let sy;
|
|
93
|
+
if (Math.abs(dy) * w > Math.abs(dx) * h) {
|
|
94
|
+
// Intersection is top or bottom of rect.
|
|
95
|
+
if (dy < 0) {
|
|
96
|
+
h = -h;
|
|
97
|
+
}
|
|
98
|
+
sx = h * dx / dy;
|
|
99
|
+
sy = h;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Intersection is left or right of rect.
|
|
103
|
+
if (dx < 0) {
|
|
104
|
+
w = -w;
|
|
105
|
+
}
|
|
106
|
+
sx = w;
|
|
107
|
+
sy = w * dy / dx;
|
|
108
|
+
}
|
|
109
|
+
return { x: x + sx, y: y + sy };
|
|
110
|
+
};
|
|
111
|
+
/*
|
|
112
|
+
* Given a DAG with each node assigned "rank" and "order" properties, this
|
|
113
|
+
* const will produce a matrix with the ids of each node.
|
|
114
|
+
*/
|
|
115
|
+
const buildLayerMatrix = (g) => {
|
|
116
|
+
const layering = [];
|
|
117
|
+
const rankMax = maxRank(g) + 1;
|
|
118
|
+
for (let i = 0; i < rankMax; i++) {
|
|
119
|
+
layering.push([]);
|
|
120
|
+
}
|
|
121
|
+
// const layering = _.map(_.range(maxRank(g) + 1), function() { return []; });
|
|
122
|
+
g.nodes().forEach((v) => {
|
|
123
|
+
const node = g.node(v);
|
|
124
|
+
const rank = node.rank;
|
|
125
|
+
if (rank !== undefined) {
|
|
126
|
+
layering[rank][node.order || 0] = v;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return layering;
|
|
130
|
+
};
|
|
131
|
+
/*
|
|
132
|
+
* Adjusts the ranks for all nodes in the graph such that all nodes v have
|
|
133
|
+
* rank(v) >= 0 and at least one node w has rank(w) = 0.
|
|
134
|
+
*/
|
|
135
|
+
const normalizeRanks = (g) => {
|
|
136
|
+
const nodeRanks = g.nodes().map((v) => g.node(v).rank);
|
|
137
|
+
const min = Math.min(...nodeRanks);
|
|
138
|
+
g.nodes().forEach((v) => {
|
|
139
|
+
const node = g.node(v);
|
|
140
|
+
if (node.hasOwnProperty("rank")) {
|
|
141
|
+
if (!node.rank)
|
|
142
|
+
node.rank = 0;
|
|
143
|
+
node.rank -= min;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
const removeEmptyRanks = (g) => {
|
|
148
|
+
// Ranks may not start at 0, so we need to offset them
|
|
149
|
+
const nodeRanks = g.nodes().map((v) => g.node(v).rank);
|
|
150
|
+
const offset = Math.min(...nodeRanks);
|
|
151
|
+
const layers = [];
|
|
152
|
+
g.nodes().forEach((v) => {
|
|
153
|
+
var _a;
|
|
154
|
+
const rank = (((_a = g.node(v)) === null || _a === void 0 ? void 0 : _a.rank) || 0) - offset;
|
|
155
|
+
if (!layers[rank]) {
|
|
156
|
+
layers[rank] = [];
|
|
157
|
+
}
|
|
158
|
+
layers[rank].push(v);
|
|
159
|
+
});
|
|
160
|
+
let delta = 0;
|
|
161
|
+
const nodeRankFactor = g.graph().nodeRankFactor || 0;
|
|
162
|
+
layers.forEach((vs, i) => {
|
|
163
|
+
if (vs === undefined && i % nodeRankFactor !== 0) {
|
|
164
|
+
--delta;
|
|
165
|
+
}
|
|
166
|
+
else if (delta) {
|
|
167
|
+
vs.forEach((v) => {
|
|
168
|
+
if (!g.node(v).rank)
|
|
169
|
+
g.node(v).rank = 0;
|
|
170
|
+
g.node(v).rank += delta;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
const addBorderNode = (g, prefix, rank, order) => {
|
|
176
|
+
const node = {
|
|
177
|
+
width: 0,
|
|
178
|
+
height: 0
|
|
179
|
+
};
|
|
180
|
+
if (isNumber(rank) && isNumber(order)) {
|
|
181
|
+
node.rank = rank;
|
|
182
|
+
node.order = order;
|
|
183
|
+
}
|
|
184
|
+
return addDummyNode(g, "border", node, prefix);
|
|
185
|
+
};
|
|
186
|
+
const maxRank = (g) => {
|
|
187
|
+
const nodeRanks = g.nodes().map((v) => {
|
|
188
|
+
const rank = g.node(v).rank;
|
|
189
|
+
if (rank !== undefined) {
|
|
190
|
+
return rank;
|
|
191
|
+
}
|
|
192
|
+
return -Infinity;
|
|
193
|
+
});
|
|
194
|
+
return Math.max(...nodeRanks);
|
|
195
|
+
};
|
|
196
|
+
/*
|
|
197
|
+
* Partition a collection into two groups: `lhs` and `rhs`. If the supplied
|
|
198
|
+
* const returns true for an entry it goes into `lhs`. Otherwise it goes
|
|
199
|
+
* into `rhs.
|
|
200
|
+
*/
|
|
201
|
+
const partition = (collection, fn) => {
|
|
202
|
+
const result = { lhs: [], rhs: [] };
|
|
203
|
+
collection.forEach((value) => {
|
|
204
|
+
if (fn(value)) {
|
|
205
|
+
result.lhs.push(value);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
result.rhs.push(value);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return result;
|
|
212
|
+
};
|
|
213
|
+
/*
|
|
214
|
+
* Returns a new const that wraps `fn` with a timer. The wrapper logs the
|
|
215
|
+
* time it takes to execute the function.
|
|
216
|
+
*/
|
|
217
|
+
const time = (name, fn) => {
|
|
218
|
+
const start = Date.now();
|
|
219
|
+
try {
|
|
220
|
+
return fn();
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
console.log(`${name} time: ${(Date.now() - start)}ms`);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
const notime = (name, fn) => {
|
|
227
|
+
return fn();
|
|
228
|
+
};
|
|
229
|
+
const minBy = (array, func) => {
|
|
230
|
+
let min = Infinity;
|
|
231
|
+
let minObject;
|
|
232
|
+
array.forEach((item) => {
|
|
233
|
+
const value = func(item);
|
|
234
|
+
if (min > value) {
|
|
235
|
+
min = value;
|
|
236
|
+
minObject = item;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
return minObject;
|
|
240
|
+
};
|
|
241
|
+
export { addDummyNode, simplify, asNonCompoundGraph, successorWeights, predecessorWeights, intersectRect, buildLayerMatrix, normalizeRanks, removeEmptyRanks, addBorderNode, maxRank, partition, time, notime, zipObject, minBy };
|
|
242
|
+
export default {
|
|
243
|
+
addDummyNode,
|
|
244
|
+
simplify,
|
|
245
|
+
asNonCompoundGraph,
|
|
246
|
+
successorWeights,
|
|
247
|
+
predecessorWeights,
|
|
248
|
+
intersectRect,
|
|
249
|
+
buildLayerMatrix,
|
|
250
|
+
normalizeRanks,
|
|
251
|
+
removeEmptyRanks,
|
|
252
|
+
addBorderNode,
|
|
253
|
+
maxRank,
|
|
254
|
+
partition,
|
|
255
|
+
time,
|
|
256
|
+
notime,
|
|
257
|
+
zipObject,
|
|
258
|
+
minBy
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/util.ts"],"names":[],"mappings":"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"}
|
package/es/layout/dagre.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileOverview random layout
|
|
3
3
|
* @author shiwu.wyy@antfin.com
|
|
4
4
|
*/
|
|
5
|
-
import { Edge, OutNode, DagreLayoutOptions } from "./types";
|
|
5
|
+
import { Edge, OutNode, DagreLayoutOptions, PointTuple } from "./types";
|
|
6
6
|
import { Base } from "./base";
|
|
7
7
|
/**
|
|
8
8
|
* 层次布局
|
|
@@ -12,6 +12,8 @@ export declare class DagreLayout extends Base {
|
|
|
12
12
|
rankdir: "TB" | "BT" | "LR" | "RL";
|
|
13
13
|
/** 节点对齐方式,可选 UL, UR, DL, DR */
|
|
14
14
|
align: undefined | "UL" | "UR" | "DL" | "DR";
|
|
15
|
+
/** 布局的起始(左上角)位置 */
|
|
16
|
+
begin: PointTuple;
|
|
15
17
|
/** 节点大小 */
|
|
16
18
|
nodeSize: number | number[] | undefined;
|
|
17
19
|
/** 节点水平间距(px) */
|
|
@@ -28,8 +30,6 @@ export declare class DagreLayout extends Base {
|
|
|
28
30
|
sortByCombo: boolean;
|
|
29
31
|
/** 是否保留每条边上的dummy node */
|
|
30
32
|
edgeLabelSpace: boolean;
|
|
31
|
-
/** 是否按照给定的节点顺序排序 */
|
|
32
|
-
keepNodeOrder: boolean;
|
|
33
33
|
/** 给定的节点顺序,配合keepNodeOrder使用 */
|
|
34
34
|
nodeOrder: string[];
|
|
35
35
|
/** 上次的布局结果 */
|
package/es/layout/dagre.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileOverview random layout
|
|
3
3
|
* @author shiwu.wyy@antfin.com
|
|
4
4
|
*/
|
|
5
|
-
import dagre from "
|
|
5
|
+
import dagre from "./dagre/index";
|
|
6
6
|
import { isArray, isNumber, isObject, getEdgeTerminal } from "../util";
|
|
7
7
|
import { Base } from "./base";
|
|
8
8
|
/**
|
|
@@ -23,8 +23,6 @@ export class DagreLayout extends Base {
|
|
|
23
23
|
this.sortByCombo = false;
|
|
24
24
|
/** 是否保留每条边上的dummy node */
|
|
25
25
|
this.edgeLabelSpace = true;
|
|
26
|
-
/** 是否按照给定的节点顺序排序 */
|
|
27
|
-
this.keepNodeOrder = false;
|
|
28
26
|
this.nodes = [];
|
|
29
27
|
this.edges = [];
|
|
30
28
|
/** 迭代结束的回调函数 */
|
|
@@ -32,7 +30,7 @@ export class DagreLayout extends Base {
|
|
|
32
30
|
this.layoutNode = (nodeId) => {
|
|
33
31
|
const self = this;
|
|
34
32
|
const { nodes } = self;
|
|
35
|
-
const node = nodes.find(node => node.id === nodeId);
|
|
33
|
+
const node = nodes.find((node) => node.id === nodeId);
|
|
36
34
|
if (node) {
|
|
37
35
|
const layout = node.layout !== false;
|
|
38
36
|
return layout;
|
|
@@ -58,7 +56,7 @@ export class DagreLayout extends Base {
|
|
|
58
56
|
*/
|
|
59
57
|
execute() {
|
|
60
58
|
const self = this;
|
|
61
|
-
const { nodes, nodeSize, rankdir, combos } = self;
|
|
59
|
+
const { nodes, nodeSize, rankdir, combos, begin } = self;
|
|
62
60
|
if (!nodes)
|
|
63
61
|
return;
|
|
64
62
|
const edges = self.edges || [];
|
|
@@ -153,22 +151,44 @@ export class DagreLayout extends Base {
|
|
|
153
151
|
dagre.layout(g, {
|
|
154
152
|
prevGraph,
|
|
155
153
|
edgeLabelSpace: self.edgeLabelSpace,
|
|
156
|
-
keepNodeOrder: self.
|
|
154
|
+
keepNodeOrder: Boolean(!!self.nodeOrder),
|
|
157
155
|
nodeOrder: self.nodeOrder,
|
|
158
156
|
});
|
|
159
|
-
|
|
157
|
+
const dBegin = [0, 0];
|
|
158
|
+
if (begin) {
|
|
159
|
+
let minX = Infinity;
|
|
160
|
+
let minY = Infinity;
|
|
161
|
+
g.nodes().forEach((node) => {
|
|
162
|
+
const coord = g.node(node);
|
|
163
|
+
if (minX > coord.x)
|
|
164
|
+
minX = coord.x;
|
|
165
|
+
if (minY > coord.y)
|
|
166
|
+
minY = coord.y;
|
|
167
|
+
});
|
|
168
|
+
g.edges().forEach((edge) => {
|
|
169
|
+
const coord = g.edge(edge);
|
|
170
|
+
coord.points.forEach((point) => {
|
|
171
|
+
if (minX > point.x)
|
|
172
|
+
minX = point.x;
|
|
173
|
+
if (minY > point.y)
|
|
174
|
+
minY = point.y;
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
dBegin[0] = begin[0] - minX;
|
|
178
|
+
dBegin[1] = begin[1] - minY;
|
|
179
|
+
}
|
|
160
180
|
g.nodes().forEach((node) => {
|
|
161
|
-
coord = g.node(node);
|
|
181
|
+
const coord = g.node(node);
|
|
162
182
|
const i = nodes.findIndex((it) => it.id === node);
|
|
163
183
|
if (!nodes[i])
|
|
164
184
|
return;
|
|
165
|
-
nodes[i].x = coord.x;
|
|
166
|
-
nodes[i].y = coord.y;
|
|
185
|
+
nodes[i].x = coord.x + dBegin[0];
|
|
186
|
+
nodes[i].y = coord.y + dBegin[1];
|
|
167
187
|
// @ts-ignore: pass layer order to data for increment layout use
|
|
168
188
|
nodes[i]._order = coord._order;
|
|
169
189
|
});
|
|
170
190
|
g.edges().forEach((edge) => {
|
|
171
|
-
coord = g.edge(edge);
|
|
191
|
+
const coord = g.edge(edge);
|
|
172
192
|
const i = edges.findIndex((it) => {
|
|
173
193
|
const source = getEdgeTerminal(it, 'source');
|
|
174
194
|
const target = getEdgeTerminal(it, 'target');
|
|
@@ -176,6 +196,10 @@ export class DagreLayout extends Base {
|
|
|
176
196
|
});
|
|
177
197
|
if ((self.edgeLabelSpace) && self.controlPoints && edges[i].type !== "loop") {
|
|
178
198
|
edges[i].controlPoints = coord.points.slice(1, coord.points.length - 1);
|
|
199
|
+
edges[i].controlPoints.forEach((point) => {
|
|
200
|
+
point.x += dBegin[0];
|
|
201
|
+
point.y += dBegin[1];
|
|
202
|
+
});
|
|
179
203
|
}
|
|
180
204
|
});
|
|
181
205
|
if (self.onLayoutEnd)
|
package/es/layout/dagre.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dagre.js","sourceRoot":"","sources":["../../src/layout/dagre.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"dagre.js","sourceRoot":"","sources":["../../src/layout/dagre.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI;IAkDnC,YAAY,OAA4B;QACtC,KAAK,EAAE,CAAC;QAlDV,mCAAmC;QAC5B,YAAO,GAA8B,IAAI,CAAC;QAiBjD,iBAAiB;QACV,YAAO,GAAW,EAAE,CAAC;QAE5B,gBAAgB;QACT,YAAO,GAAW,EAAE,CAAC;QAE5B,mBAAmB;QACZ,kBAAa,GAAY,KAAK,CAAC;QAEtC,iDAAiD;QAC1C,gBAAW,GAAY,KAAK,CAAC;QAEpC,0BAA0B;QACnB,mBAAc,GAAY,IAAI,CAAC;QAW/B,UAAK,GAAc,EAAE,CAAC;QAEtB,UAAK,GAAW,EAAE,CAAC;QAE1B,gBAAgB;QACT,gBAAW,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAoBnC,eAAU,GAAG,CAAC,MAAc,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;YACtD,IAAI,IAAI,EAAE;gBACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;gBACrC,OAAO,MAAM,CAAC;aACf;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAA;QAzBC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAEM,aAAa;QAClB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,KAAK,EAAE,eAAe;SACtC,CAAC;IACJ,CAAC;IAaD;;OAEG;IACI,OAAO;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,KAAK,GAAI,IAAI,CAAC,KAAe,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,YAAmC,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb,YAAY,GAAG,CAAC,CAAM,EAAE,EAAE;gBACxB,IAAI,CAAC,CAAC,IAAI,EAAE;oBACV,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;wBACnB,OAAO,CAAC,CAAC,IAAI,CAAC;qBACf;oBAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;wBACvB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;qBAClD;oBACD,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;iBACzB;gBACD,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClB,CAAC,CAAC;SACH;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5B,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;SAC/B;aAAM;YACL,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC3C;QACD,IAAI,OAAO,GAAa,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAa,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAErE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE;YACxC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtD,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SACxD;QACD,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjB,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACnB,4BAA4B;gBAC5B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;aAC9C;iBAAM;gBACL,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;aACvC;YAED,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;oBAC9B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC7B;gBACD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,EAAE;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAAE,OAAO;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBAC7B,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBAChC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBAC/B;gBACD,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;SACJ;QAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,4EAA4E;YAC5E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACtD,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;oBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;iBACzB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,SAAS,GAA2B,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,SAAS,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACnC,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAQ,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;QAED,KAAK,CAAC,MAAM,CAAC,CAAQ,EAAE;YACrB,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,EAAE;YACT,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAClC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;oBACnC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC7B;QAED,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YACtB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,gEAAgE;YAChE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC7C,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;gBAC3E,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAC5C,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrB,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAA;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,OAAO;YACL,KAAK;YACL,KAAK;SACN,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,SAAS,OAAO,CACd,IAAuC,EACvC,KAAa,EACb,YAAoB;IAEpB,IAAI,UAAU,CAAC;IACf,IAAI,IAAI,EAAE;QACR,UAAU,GAAG,IAAI,CAAC;KACnB;SAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC1B,UAAU,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;KAC1B;SAAM;QACL,UAAU,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;KACjC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function layout(data: any, options: any): Promise<void>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as d3Force from 'd3-force';
|
|
2
|
+
import forceGrid from './forceGrid';
|
|
3
|
+
import mysqlWorkbench from './mysqlWorkbench';
|
|
4
|
+
import { DagreLayout } from '../dagre';
|
|
5
|
+
export default function layout(data, options) {
|
|
6
|
+
const { nodes, edges } = data;
|
|
7
|
+
const width = options.width;
|
|
8
|
+
const height = options.height;
|
|
9
|
+
if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
|
|
10
|
+
return Promise.resolve();
|
|
11
|
+
// 筛选非叶子节点,做Dagre布局
|
|
12
|
+
const noLeafNodes = [];
|
|
13
|
+
nodes.forEach((node) => {
|
|
14
|
+
const relateEdges = edges.filter((edge) => {
|
|
15
|
+
return edge.source === node.id || edge.target === node.id;
|
|
16
|
+
});
|
|
17
|
+
if (relateEdges.length > 1) {
|
|
18
|
+
const temp = Object.assign({}, node);
|
|
19
|
+
delete temp.size;
|
|
20
|
+
noLeafNodes.push(temp);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const noLeafEdge = [];
|
|
24
|
+
edges.forEach((edge) => {
|
|
25
|
+
const sourceNode = noLeafNodes.find((node) => node.id === edge.source);
|
|
26
|
+
const targetNode = noLeafNodes.find((node) => node.id === edge.target);
|
|
27
|
+
if (sourceNode && targetNode) {
|
|
28
|
+
noLeafEdge.push(edge);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
const graphLayout = new DagreLayout({
|
|
32
|
+
type: 'dagre',
|
|
33
|
+
ranksep: options.nodeMinGap,
|
|
34
|
+
nodesep: options.nodeMinGap,
|
|
35
|
+
});
|
|
36
|
+
const { nodes: nodesTmp } = graphLayout.layout({
|
|
37
|
+
nodes: noLeafNodes,
|
|
38
|
+
edges: noLeafEdge,
|
|
39
|
+
});
|
|
40
|
+
// 布局后,坐标同步
|
|
41
|
+
nodes.forEach((n) => {
|
|
42
|
+
const found = (nodesTmp || []).find((temp) => temp.id === n.id);
|
|
43
|
+
n.x = (found === null || found === void 0 ? void 0 : found.x) || width / 2;
|
|
44
|
+
n.y = (found === null || found === void 0 ? void 0 : found.y) || height / 2;
|
|
45
|
+
});
|
|
46
|
+
const copyNodes = JSON.parse(JSON.stringify(nodes));
|
|
47
|
+
const copyEdges = JSON.parse(JSON.stringify(edges));
|
|
48
|
+
const simulation = d3Force.forceSimulation().nodes(copyNodes)
|
|
49
|
+
.force("link", d3Force.forceLink(copyEdges).id((d) => d.id).distance((d) => {
|
|
50
|
+
const edgeInfo = noLeafEdge.find((edge) => edge.source === d.source && edge.target === d.target);
|
|
51
|
+
if (edgeInfo) {
|
|
52
|
+
return 30;
|
|
53
|
+
}
|
|
54
|
+
return 20;
|
|
55
|
+
}))
|
|
56
|
+
.force("charge", d3Force.forceManyBody())
|
|
57
|
+
.force("center", d3Force.forceCenter(width / 2, height / 2))
|
|
58
|
+
.force("x", d3Force.forceX(width / 2))
|
|
59
|
+
.force("y", d3Force.forceY(height / 2))
|
|
60
|
+
.alpha(0.3)
|
|
61
|
+
.alphaDecay(0.08)
|
|
62
|
+
.alphaMin(0.001);
|
|
63
|
+
const layoutPromise = new Promise((resolve) => {
|
|
64
|
+
simulation.on('end', () => {
|
|
65
|
+
// 坐标信息同步到nodes,edges中
|
|
66
|
+
nodes.forEach((node) => {
|
|
67
|
+
const nodeInfo = copyNodes.find((item) => item.id === node.id);
|
|
68
|
+
if (nodeInfo) {
|
|
69
|
+
node.x = nodeInfo.x;
|
|
70
|
+
node.y = nodeInfo.y;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
const minX = Math.min(...nodes.map((node) => node.x));
|
|
74
|
+
const maxX = Math.max(...nodes.map((node) => node.x));
|
|
75
|
+
const minY = Math.min(...nodes.map((node) => node.y));
|
|
76
|
+
const maxY = Math.max(...nodes.map((node) => node.y));
|
|
77
|
+
const scalex = width / (maxX - minX);
|
|
78
|
+
const scaley = height / (maxY - minY);
|
|
79
|
+
nodes.forEach((node) => {
|
|
80
|
+
if (node.x !== undefined && scalex < 1) {
|
|
81
|
+
node.x = (node.x - minX) * scalex;
|
|
82
|
+
}
|
|
83
|
+
if (node.y !== undefined && scaley < 1) {
|
|
84
|
+
node.y = (node.y - minY) * scaley;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// 这一步就执行缩小空间。且不考虑节点size
|
|
88
|
+
nodes.forEach((node) => {
|
|
89
|
+
node.sizeTemp = node.size;
|
|
90
|
+
node.size = [10, 10];
|
|
91
|
+
});
|
|
92
|
+
mysqlWorkbench(nodes, edges);
|
|
93
|
+
nodes.forEach((node) => {
|
|
94
|
+
node.size = node.sizeTemp || [];
|
|
95
|
+
delete node.sizeTemp;
|
|
96
|
+
});
|
|
97
|
+
// 进行网格对齐+节点大小扩增
|
|
98
|
+
forceGrid({
|
|
99
|
+
nodes,
|
|
100
|
+
edges,
|
|
101
|
+
}, options);
|
|
102
|
+
resolve();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
return layoutPromise;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/layout/er/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import Grid from './grid';
|
|
2
|
+
export default function layout(data, options) {
|
|
3
|
+
if (!data.nodes || data.nodes.length === 0)
|
|
4
|
+
return data;
|
|
5
|
+
const width = options.width;
|
|
6
|
+
const height = options.height;
|
|
7
|
+
const nodeMinGap = options.nodeMinGap;
|
|
8
|
+
// 2. 网格布局
|
|
9
|
+
let CELL_W = 10000;
|
|
10
|
+
let CELL_H = 10000;
|
|
11
|
+
data.nodes.forEach((node) => {
|
|
12
|
+
const nodeWidth = node.size[0] || 50;
|
|
13
|
+
const nodeHeight = node.size[1] || 50;
|
|
14
|
+
CELL_W = Math.min(nodeWidth, CELL_W);
|
|
15
|
+
CELL_H = Math.min(nodeHeight, CELL_H);
|
|
16
|
+
});
|
|
17
|
+
const grid = new Grid();
|
|
18
|
+
grid.init(width, height, {
|
|
19
|
+
CELL_H,
|
|
20
|
+
CELL_W,
|
|
21
|
+
});
|
|
22
|
+
data.nodes.forEach((d) => {
|
|
23
|
+
const gridpoint = grid.occupyNearest(d);
|
|
24
|
+
if (gridpoint) {
|
|
25
|
+
gridpoint.node = {
|
|
26
|
+
id: d.id,
|
|
27
|
+
size: d.size,
|
|
28
|
+
};
|
|
29
|
+
d.x = gridpoint.x;
|
|
30
|
+
d.y = gridpoint.y;
|
|
31
|
+
d.dx = gridpoint.dx;
|
|
32
|
+
d.dy = gridpoint.dy;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
// 加入节点size
|
|
36
|
+
for (let i = 0; i < data.nodes.length; i++) {
|
|
37
|
+
// 节点宽度大于网格宽度,则往当前网格的右边插入列
|
|
38
|
+
const node = data.nodes[i];
|
|
39
|
+
const result = grid.findGridByNodeId(node.id);
|
|
40
|
+
if (!result)
|
|
41
|
+
throw new Error("can not find node cell");
|
|
42
|
+
const { column, row } = result;
|
|
43
|
+
if ((node.size[0] + nodeMinGap) > CELL_W) {
|
|
44
|
+
const addGridSize = Math.ceil((node.size[0] + nodeMinGap) / CELL_W) - 1;
|
|
45
|
+
let realAdd = addGridSize;
|
|
46
|
+
// 优化,假设同一列,不同行存在两个size为2的节点,遍历到第一个节点的时候,会往右插入两列,遍历到第二个节点,又往右插入。就会导致多余的网格
|
|
47
|
+
for (let j = 0; j < addGridSize; j++) {
|
|
48
|
+
const hasColumn = grid.additionColumn.indexOf(column + j + 1) > -1;
|
|
49
|
+
if (hasColumn && !grid.cells[column + j + 1][row].node) {
|
|
50
|
+
realAdd--;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
grid.insertColumn(column, realAdd);
|
|
57
|
+
}
|
|
58
|
+
// 节点高度大于网格宽度,则往当前网格的下边插入行
|
|
59
|
+
if ((node.size[1] + nodeMinGap) > CELL_H) {
|
|
60
|
+
const addGridSize = Math.ceil((node.size[1] + nodeMinGap) / CELL_H) - 1;
|
|
61
|
+
let realAdd = addGridSize;
|
|
62
|
+
for (let j = 0; j < addGridSize; j++) {
|
|
63
|
+
const hasColumn = grid.additionRow.indexOf(row + j + 1) > -1;
|
|
64
|
+
if (hasColumn && !grid.cells[column][row + j + 1].node) {
|
|
65
|
+
realAdd--;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
grid.insertRow(row, realAdd);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// 同步节点坐标
|
|
75
|
+
for (let i = 0; i < grid.columnNum; i++) {
|
|
76
|
+
for (let j = 0; j < grid.rowNum; j++) {
|
|
77
|
+
const cell = grid.cells[i][j];
|
|
78
|
+
if (cell.node) {
|
|
79
|
+
const node = data.nodes.find((node) => { var _a; return node.id === ((_a = cell === null || cell === void 0 ? void 0 : cell.node) === null || _a === void 0 ? void 0 : _a.id); });
|
|
80
|
+
if (node) {
|
|
81
|
+
node.x = cell.x + node.size[0] / 2;
|
|
82
|
+
node.y = cell.y + node.size[1] / 2;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=forceGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forceGrid.js","sourceRoot":"","sources":["../../../src/layout/er/forceGrid.ts"],"names":[],"mappings":"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"}
|