@antv/layout 1.2.12 → 1.2.14-beta.0
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/dist/85db61ddc757dae66e04.worker.js +2 -0
- package/dist/85db61ddc757dae66e04.worker.js.map +1 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/lib/{dagre → antv-dagre}/acyclic.d.ts +1 -1
- package/lib/antv-dagre/acyclic.js +65 -0
- package/lib/antv-dagre/acyclic.js.map +1 -0
- package/lib/antv-dagre/add-border-segments.js +41 -0
- package/lib/antv-dagre/add-border-segments.js.map +1 -0
- package/lib/{dagre → antv-dagre}/coordinate-system.d.ts +2 -1
- package/lib/antv-dagre/coordinate-system.js +69 -0
- package/lib/antv-dagre/coordinate-system.js.map +1 -0
- package/lib/{dagre → antv-dagre}/data/list.d.ts +1 -1
- package/lib/{dagre → antv-dagre}/data/list.js +23 -22
- package/lib/antv-dagre/data/list.js.map +1 -0
- package/lib/{dagre → antv-dagre}/greedy-fas.d.ts +2 -2
- package/lib/antv-dagre/greedy-fas.js +141 -0
- package/lib/antv-dagre/greedy-fas.js.map +1 -0
- package/lib/{dagre → antv-dagre}/layout.d.ts +2 -1
- package/lib/{dagre → antv-dagre}/layout.js +156 -154
- package/lib/antv-dagre/layout.js.map +1 -0
- package/lib/{dagre → antv-dagre}/nesting-graph.js +42 -39
- package/lib/antv-dagre/nesting-graph.js.map +1 -0
- package/lib/{dagre → antv-dagre}/normalize.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/normalize.js +29 -25
- package/lib/antv-dagre/normalize.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.js +13 -9
- package/lib/antv-dagre/order/add-subgraph-constraints.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/barycenter.d.ts +2 -2
- package/lib/antv-dagre/order/barycenter.js +27 -0
- package/lib/antv-dagre/order/barycenter.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/build-layer-graph.js +23 -23
- package/lib/antv-dagre/order/build-layer-graph.js.map +1 -0
- package/lib/antv-dagre/order/cross-count.d.ts +3 -0
- package/lib/{dagre → antv-dagre}/order/cross-count.js +21 -17
- package/lib/antv-dagre/order/cross-count.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/index.d.ts +1 -1
- package/lib/antv-dagre/order/index.js +95 -0
- package/lib/antv-dagre/order/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/init-data-order.js +12 -9
- package/lib/antv-dagre/order/init-data-order.js.map +1 -0
- package/lib/antv-dagre/order/init-order.js +51 -0
- package/lib/antv-dagre/order/init-order.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/resolve-conflicts.d.ts +3 -3
- package/lib/{dagre → antv-dagre}/order/resolve-conflicts.js +35 -36
- package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort-subgraph.js +28 -23
- package/lib/antv-dagre/order/sort-subgraph.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/order/sort.js +23 -19
- package/lib/antv-dagre/order/sort.js.map +1 -0
- package/lib/{dagre → antv-dagre}/parent-dummy-chains.js +32 -28
- package/lib/antv-dagre/parent-dummy-chains.js.map +1 -0
- package/lib/{dagre → antv-dagre}/position/bk.d.ts +5 -4
- package/lib/{dagre → antv-dagre}/position/bk.js +162 -148
- package/lib/antv-dagre/position/bk.js.map +1 -0
- package/lib/{dagre → antv-dagre}/position/index.d.ts +2 -1
- package/lib/antv-dagre/position/index.js +55 -0
- package/lib/antv-dagre/position/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/feasible-tree.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/feasible-tree.js +42 -38
- package/lib/antv-dagre/rank/feasible-tree.js.map +1 -0
- package/lib/antv-dagre/rank/index.d.ts +2 -0
- package/lib/{dagre → antv-dagre}/rank/index.js +17 -13
- package/lib/antv-dagre/rank/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/network-simplex.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/network-simplex.js +90 -81
- package/lib/antv-dagre/rank/network-simplex.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/util.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/util.js +37 -32
- package/lib/antv-dagre/rank/util.js.map +1 -0
- package/lib/antv-dagre/types.d.ts +2 -0
- package/lib/antv-dagre/types.js +3 -0
- package/lib/antv-dagre/types.js.map +1 -0
- package/lib/{dagre → antv-dagre}/util.d.ts +1 -1
- package/lib/antv-dagre/util.js +299 -0
- package/lib/antv-dagre/util.js.map +1 -0
- package/lib/antv-dagre.d.ts +50 -0
- package/lib/antv-dagre.js +542 -0
- package/lib/antv-dagre.js.map +1 -0
- package/lib/bundle-entry.d.ts +2 -18
- package/lib/bundle-entry.js +5 -18
- package/lib/bundle-entry.js.map +1 -1
- package/lib/bundle-supervisor.d.ts +4 -22
- package/lib/bundle-supervisor.js +59 -54
- package/lib/bundle-supervisor.js.map +1 -1
- package/lib/bundle-worker.d.ts +1 -1
- package/lib/bundle-worker.js +38 -35
- package/lib/bundle-worker.js.map +1 -1
- package/lib/circular.d.ts +1 -1
- package/lib/circular.js +133 -145
- package/lib/circular.js.map +1 -1
- package/lib/comboCombined.d.ts +1 -1
- package/lib/comboCombined.js +273 -299
- package/lib/comboCombined.js.map +1 -1
- package/lib/concentric.d.ts +1 -1
- package/lib/concentric.js +173 -179
- package/lib/concentric.js.map +1 -1
- package/lib/d3Force/forceInBox.js +80 -78
- package/lib/d3Force/forceInBox.js.map +1 -1
- package/lib/d3Force/index.d.ts +2 -2
- package/lib/d3Force/index.js +207 -229
- package/lib/d3Force/index.js.map +1 -1
- package/lib/dagre.d.ts +13 -24
- package/lib/dagre.js +61 -541
- package/lib/dagre.js.map +1 -1
- package/lib/exports.d.ts +17 -0
- package/lib/exports.js +20 -0
- package/lib/exports.js.map +1 -0
- package/lib/force/forceNBody.js +48 -47
- package/lib/force/forceNBody.js.map +1 -1
- package/lib/force/index.d.ts +1 -1
- package/lib/force/index.js +301 -324
- package/lib/force/index.js.map +1 -1
- package/lib/force/types.d.ts +5 -5
- package/lib/force/types.js +2 -1
- package/lib/forceAtlas2/body.d.ts +1 -1
- package/lib/forceAtlas2/body.js +32 -31
- package/lib/forceAtlas2/body.js.map +1 -1
- package/lib/forceAtlas2/index.d.ts +1 -1
- package/lib/forceAtlas2/index.js +219 -227
- package/lib/forceAtlas2/index.js.map +1 -1
- package/lib/forceAtlas2/quad.d.ts +2 -2
- package/lib/forceAtlas2/quad.js +43 -42
- package/lib/forceAtlas2/quad.js.map +1 -1
- package/lib/forceAtlas2/quadTree.js +19 -17
- package/lib/forceAtlas2/quadTree.js.map +1 -1
- package/lib/fruchterman.d.ts +1 -1
- package/lib/fruchterman.js +203 -219
- package/lib/fruchterman.js.map +1 -1
- package/lib/grid.d.ts +1 -1
- package/lib/grid.js +201 -207
- package/lib/grid.js.map +1 -1
- package/lib/index.d.ts +1 -15
- package/lib/index.js +5 -16
- package/lib/index.js.map +1 -1
- package/lib/mds.d.ts +1 -1
- package/lib/mds.js +73 -79
- package/lib/mds.js.map +1 -1
- package/lib/radial/index.d.ts +1 -1
- package/lib/radial/index.js +183 -186
- package/lib/radial/index.js.map +1 -1
- package/lib/radial/mds.d.ts +1 -1
- package/lib/radial/mds.js +20 -14
- package/lib/radial/mds.js.map +1 -1
- package/lib/radial/radial-nonoverlap-force.d.ts +2 -2
- package/lib/radial/radial-nonoverlap-force.js +40 -37
- package/lib/radial/radial-nonoverlap-force.js.map +1 -1
- package/lib/random.d.ts +1 -1
- package/lib/random.js +57 -66
- package/lib/random.js.map +1 -1
- package/lib/registry.d.ts +2 -2
- package/lib/registry.js +30 -25
- package/lib/registry.js.map +1 -1
- package/lib/supervisor.d.ts +2 -3
- package/lib/supervisor.js +63 -58
- package/lib/supervisor.js.map +1 -1
- package/lib/types.d.ts +20 -74
- package/lib/types.js +5 -1
- package/lib/types.js.map +1 -1
- package/lib/util/array.js +4 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/common.d.ts +1 -1
- package/lib/util/common.js +11 -8
- package/lib/util/common.js.map +1 -1
- package/lib/util/function.js +41 -37
- package/lib/util/function.js.map +1 -1
- package/lib/util/index.d.ts +0 -2
- package/lib/util/index.js +7 -6
- package/lib/util/index.js.map +1 -1
- package/lib/util/math.d.ts +1 -26
- package/lib/util/math.js +55 -154
- package/lib/util/math.js.map +1 -1
- package/lib/util/object.d.ts +1 -1
- package/lib/util/object.js +20 -15
- package/lib/util/object.js.map +1 -1
- package/lib/util/size.d.ts +3 -0
- package/lib/util/size.js +16 -0
- package/lib/util/size.js.map +1 -0
- package/lib/worker.js +36 -35
- package/lib/worker.js.map +1 -1
- package/package.json +10 -6
- package/dist/4161e9d58bae8f39711a.worker.js +0 -2
- package/dist/4161e9d58bae8f39711a.worker.js.map +0 -1
- package/lib/dagre/acyclic.js +0 -62
- package/lib/dagre/acyclic.js.map +0 -1
- package/lib/dagre/add-border-segments.js +0 -37
- package/lib/dagre/add-border-segments.js.map +0 -1
- package/lib/dagre/coordinate-system.js +0 -65
- package/lib/dagre/coordinate-system.js.map +0 -1
- package/lib/dagre/data/list.js.map +0 -1
- package/lib/dagre/greedy-fas.js +0 -147
- package/lib/dagre/greedy-fas.js.map +0 -1
- package/lib/dagre/layout.js.map +0 -1
- package/lib/dagre/nesting-graph.js.map +0 -1
- package/lib/dagre/normalize.js.map +0 -1
- package/lib/dagre/order/add-subgraph-constraints.js.map +0 -1
- package/lib/dagre/order/barycenter.js +0 -23
- package/lib/dagre/order/barycenter.js.map +0 -1
- package/lib/dagre/order/build-layer-graph.js.map +0 -1
- package/lib/dagre/order/cross-count.d.ts +0 -3
- package/lib/dagre/order/cross-count.js.map +0 -1
- package/lib/dagre/order/index.js +0 -91
- package/lib/dagre/order/index.js.map +0 -1
- package/lib/dagre/order/init-data-order.js.map +0 -1
- package/lib/dagre/order/init-order.js +0 -50
- package/lib/dagre/order/init-order.js.map +0 -1
- package/lib/dagre/order/resolve-conflicts.js.map +0 -1
- package/lib/dagre/order/sort-subgraph.js.map +0 -1
- package/lib/dagre/order/sort.js.map +0 -1
- package/lib/dagre/parent-dummy-chains.js.map +0 -1
- package/lib/dagre/position/bk.js.map +0 -1
- package/lib/dagre/position/index.js +0 -54
- package/lib/dagre/position/index.js.map +0 -1
- package/lib/dagre/rank/feasible-tree.js.map +0 -1
- package/lib/dagre/rank/index.d.ts +0 -2
- package/lib/dagre/rank/index.js.map +0 -1
- package/lib/dagre/rank/network-simplex.js.map +0 -1
- package/lib/dagre/rank/util.js.map +0 -1
- package/lib/dagre/util.js +0 -289
- package/lib/dagre/util.js.map +0 -1
- package/lib/util/gpu.d.ts +0 -45
- package/lib/util/gpu.js +0 -214
- package/lib/util/gpu.js.map +0 -1
- package/lib/util/number.d.ts +0 -1
- package/lib/util/number.js +0 -5
- package/lib/util/number.js.map +0 -1
- package/lib/util/string.d.ts +0 -1
- package/lib/util/string.js +0 -15
- package/lib/util/string.js.map +0 -1
- /package/lib/{dagre → antv-dagre}/add-border-segments.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/nesting-graph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/build-layer-graph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/init-data-order.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/init-order.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/sort-subgraph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/parent-dummy-chains.d.ts +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanup = exports.run = void 0;
|
|
4
|
+
const util_1 = require("./util");
|
|
3
5
|
/*
|
|
4
6
|
* A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
|
|
5
7
|
* adds appropriate edges to ensure that all cluster nodes are placed between
|
|
@@ -23,27 +25,27 @@ import { addBorderNode, addDummyNode } from './util';
|
|
|
23
25
|
* The nesting graph idea comes from Sander, "Layout of Compound Directed
|
|
24
26
|
* Graphs."
|
|
25
27
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const run = (g) => {
|
|
29
|
+
const root = (0, util_1.addDummyNode)(g, 'root', {}, '_root');
|
|
30
|
+
const depths = treeDepths(g);
|
|
31
|
+
let maxDepth = Math.max(...Object.values(depths));
|
|
30
32
|
if (Math.abs(maxDepth) === Infinity) {
|
|
31
33
|
maxDepth = 1;
|
|
32
34
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
const height = maxDepth - 1; // Note: depths is an Object not an array
|
|
36
|
+
const nodeSep = 2 * height + 1;
|
|
35
37
|
// g.graph().nestingRoot = root;
|
|
36
38
|
// Multiply minlen by nodeSep to align nodes on non-border ranks.
|
|
37
|
-
g.getAllEdges().forEach(
|
|
39
|
+
g.getAllEdges().forEach((e) => {
|
|
38
40
|
e.data.minlen *= nodeSep;
|
|
39
41
|
});
|
|
40
42
|
// Calculate a weight that is sufficient to keep subgraphs vertically compact
|
|
41
|
-
|
|
43
|
+
const weight = sumWeights(g) + 1;
|
|
42
44
|
// Create border nodes and link them up
|
|
43
45
|
// g.children()?.forEach((child) => {
|
|
44
46
|
// dfs(g, root, nodeSep, weight, height, depths, child);
|
|
45
47
|
// });
|
|
46
|
-
g.getRoots().forEach(
|
|
48
|
+
g.getRoots().forEach((child) => {
|
|
47
49
|
dfs(g, root, nodeSep, weight, height, depths, child.id);
|
|
48
50
|
});
|
|
49
51
|
// Save the multiplier for node layers for later removal of empty border
|
|
@@ -54,13 +56,14 @@ var run = function (g) {
|
|
|
54
56
|
nodeRankFactor: nodeSep,
|
|
55
57
|
};
|
|
56
58
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
exports.run = run;
|
|
60
|
+
const dfs = (g, root, nodeSep, weight, height, depths, v) => {
|
|
61
|
+
const children = g.getChildren(v);
|
|
59
62
|
if (!(children === null || children === void 0 ? void 0 : children.length)) {
|
|
60
63
|
if (v !== root) {
|
|
61
64
|
// g.setEdge(root, v, { weight: 0, minlen: nodeSep });
|
|
62
65
|
g.addEdge({
|
|
63
|
-
id:
|
|
66
|
+
id: `e${Math.random()}`,
|
|
64
67
|
source: root,
|
|
65
68
|
target: v,
|
|
66
69
|
data: { weight: 0, minlen: nodeSep },
|
|
@@ -68,39 +71,39 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
68
71
|
}
|
|
69
72
|
return;
|
|
70
73
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
const top = (0, util_1.addBorderNode)(g, '_bt');
|
|
75
|
+
const bottom = (0, util_1.addBorderNode)(g, '_bb');
|
|
76
|
+
const label = g.getNode(v);
|
|
74
77
|
g.setParent(top, v);
|
|
75
78
|
label.data.borderTop = top;
|
|
76
79
|
g.setParent(bottom, v);
|
|
77
80
|
label.data.borderBottom = bottom;
|
|
78
|
-
children === null || children === void 0 ? void 0 : children.forEach(
|
|
81
|
+
children === null || children === void 0 ? void 0 : children.forEach((childNode) => {
|
|
79
82
|
dfs(g, root, nodeSep, weight, height, depths, childNode.id);
|
|
80
|
-
|
|
83
|
+
const childTop = childNode.data.borderTop
|
|
81
84
|
? childNode.data.borderTop
|
|
82
85
|
: childNode.id;
|
|
83
|
-
|
|
86
|
+
const childBottom = childNode.data.borderBottom
|
|
84
87
|
? childNode.data.borderBottom
|
|
85
88
|
: childNode.id;
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
const thisWeight = childNode.data.borderTop ? weight : 2 * weight;
|
|
90
|
+
const minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
|
|
88
91
|
g.addEdge({
|
|
89
|
-
id:
|
|
92
|
+
id: `e${Math.random()}`,
|
|
90
93
|
source: top,
|
|
91
94
|
target: childTop,
|
|
92
95
|
data: {
|
|
93
|
-
minlen
|
|
96
|
+
minlen,
|
|
94
97
|
weight: thisWeight,
|
|
95
98
|
nestingEdge: true,
|
|
96
99
|
},
|
|
97
100
|
});
|
|
98
101
|
g.addEdge({
|
|
99
|
-
id:
|
|
102
|
+
id: `e${Math.random()}`,
|
|
100
103
|
source: childBottom,
|
|
101
104
|
target: bottom,
|
|
102
105
|
data: {
|
|
103
|
-
minlen
|
|
106
|
+
minlen,
|
|
104
107
|
weight: thisWeight,
|
|
105
108
|
nestingEdge: true,
|
|
106
109
|
},
|
|
@@ -108,7 +111,7 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
108
111
|
});
|
|
109
112
|
if (!g.getParent(v)) {
|
|
110
113
|
g.addEdge({
|
|
111
|
-
id:
|
|
114
|
+
id: `e${Math.random()}`,
|
|
112
115
|
source: root,
|
|
113
116
|
target: top,
|
|
114
117
|
data: {
|
|
@@ -118,36 +121,36 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
118
121
|
});
|
|
119
122
|
}
|
|
120
123
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
children === null || children === void 0 ? void 0 : children.forEach(
|
|
124
|
+
const treeDepths = (g) => {
|
|
125
|
+
const depths = {};
|
|
126
|
+
const dfs = (v, depth) => {
|
|
127
|
+
const children = g.getChildren(v);
|
|
128
|
+
children === null || children === void 0 ? void 0 : children.forEach((child) => dfs(child.id, depth + 1));
|
|
126
129
|
depths[v] = depth;
|
|
127
130
|
};
|
|
128
131
|
// g.children()?.forEach((v) => dfs(v, 1));
|
|
129
|
-
g.getRoots().forEach(
|
|
132
|
+
g.getRoots().forEach((v) => dfs(v.id, 1));
|
|
130
133
|
return depths;
|
|
131
134
|
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
g.getAllEdges().forEach(
|
|
135
|
+
const sumWeights = (g) => {
|
|
136
|
+
let result = 0;
|
|
137
|
+
g.getAllEdges().forEach((e) => {
|
|
135
138
|
result += e.data.weight;
|
|
136
139
|
});
|
|
137
140
|
return result;
|
|
138
141
|
};
|
|
139
|
-
|
|
142
|
+
const cleanup = (g, nestingRoot) => {
|
|
140
143
|
// const graphLabel = g.graph();
|
|
141
144
|
// graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);
|
|
142
145
|
// delete graphLabel.nestingRoot;
|
|
143
146
|
if (nestingRoot) {
|
|
144
147
|
g.removeNode(nestingRoot);
|
|
145
148
|
}
|
|
146
|
-
g.getAllEdges().forEach(
|
|
149
|
+
g.getAllEdges().forEach((e) => {
|
|
147
150
|
if (e.data.nestingEdge) {
|
|
148
151
|
g.removeEdge(e.id);
|
|
149
152
|
}
|
|
150
153
|
});
|
|
151
154
|
};
|
|
152
|
-
|
|
155
|
+
exports.cleanup = cleanup;
|
|
153
156
|
//# sourceMappingURL=nesting-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nesting-graph.js","sourceRoot":"","sources":["../../src/antv-dagre/nesting-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { Graph as IGraph } from
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { Graph as IGraph } from '../types';
|
|
3
3
|
declare const run: (g: IGraph, dummyChains: ID[]) => void;
|
|
4
4
|
declare const undo: (g: IGraph, dummyChains: ID[]) => void;
|
|
5
5
|
export { run, undo };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.undo = exports.run = void 0;
|
|
4
|
+
const util_1 = require("./util");
|
|
2
5
|
/*
|
|
3
6
|
* Breaks any long edges in the graph into short segments that span 1 layer
|
|
4
7
|
* each. This operation is undoable with the denormalize function.
|
|
@@ -15,23 +18,24 @@ import { addDummyNode } from "./util";
|
|
|
15
18
|
* 3. The graph is augmented with a "dummyChains" attribute which contains
|
|
16
19
|
* the first dummy in each chain of dummy nodes produced.
|
|
17
20
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
g.getAllEdges().forEach(
|
|
21
|
+
const DUMMY_NODE_EDGE = 'edge';
|
|
22
|
+
const DUMMY_NODE_EDGE_LABEL = 'edge-label';
|
|
23
|
+
const run = (g, dummyChains) => {
|
|
24
|
+
g.getAllEdges().forEach((edge) => normalizeEdge(g, edge, dummyChains));
|
|
22
25
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
exports.run = run;
|
|
27
|
+
const normalizeEdge = (g, e, dummyChains) => {
|
|
28
|
+
let v = e.source;
|
|
29
|
+
let vRank = g.getNode(v).data.rank;
|
|
30
|
+
const w = e.target;
|
|
31
|
+
const wRank = g.getNode(w).data.rank;
|
|
32
|
+
const labelRank = e.data.labelRank;
|
|
29
33
|
if (wRank === vRank + 1)
|
|
30
34
|
return;
|
|
31
35
|
g.removeEdge(e.id);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
let dummy;
|
|
37
|
+
let nodeData;
|
|
38
|
+
let i;
|
|
35
39
|
for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {
|
|
36
40
|
e.data.points = [];
|
|
37
41
|
nodeData = {
|
|
@@ -40,7 +44,7 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
40
44
|
height: 0,
|
|
41
45
|
rank: vRank,
|
|
42
46
|
};
|
|
43
|
-
dummy = addDummyNode(g, DUMMY_NODE_EDGE, nodeData,
|
|
47
|
+
dummy = (0, util_1.addDummyNode)(g, DUMMY_NODE_EDGE, nodeData, '_d');
|
|
44
48
|
if (vRank === labelRank) {
|
|
45
49
|
nodeData.width = e.data.width;
|
|
46
50
|
nodeData.height = e.data.height;
|
|
@@ -48,7 +52,7 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
48
52
|
nodeData.labelpos = e.data.labelpos;
|
|
49
53
|
}
|
|
50
54
|
g.addEdge({
|
|
51
|
-
id:
|
|
55
|
+
id: `e${Math.random()}`,
|
|
52
56
|
source: v,
|
|
53
57
|
target: dummy,
|
|
54
58
|
data: { weight: e.data.weight },
|
|
@@ -59,23 +63,23 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
59
63
|
v = dummy;
|
|
60
64
|
}
|
|
61
65
|
g.addEdge({
|
|
62
|
-
id:
|
|
66
|
+
id: `e${Math.random()}`,
|
|
63
67
|
source: v,
|
|
64
68
|
target: w,
|
|
65
69
|
data: { weight: e.data.weight },
|
|
66
70
|
});
|
|
67
71
|
};
|
|
68
|
-
|
|
69
|
-
dummyChains.forEach(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
const undo = (g, dummyChains) => {
|
|
73
|
+
dummyChains.forEach((v) => {
|
|
74
|
+
let node = g.getNode(v);
|
|
75
|
+
const { data } = node;
|
|
76
|
+
const originalEdge = data.originalEdge;
|
|
77
|
+
let w;
|
|
74
78
|
// Restore original edge.
|
|
75
79
|
if (originalEdge) {
|
|
76
80
|
g.addEdge(originalEdge);
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
let currentV = v;
|
|
79
83
|
while (node.data.dummy) {
|
|
80
84
|
w = g.getSuccessors(currentV)[0];
|
|
81
85
|
g.removeNode(currentV);
|
|
@@ -94,5 +98,5 @@ var undo = function (g, dummyChains) {
|
|
|
94
98
|
}
|
|
95
99
|
});
|
|
96
100
|
};
|
|
97
|
-
|
|
101
|
+
exports.undo = undo;
|
|
98
102
|
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/antv-dagre/normalize.ts"],"names":[],"mappings":";;;AAEA,iCAAsC;AAEtC;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAE3C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,WAAiB,EAAE,EAAE;IAC3C,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AA6FO,kBAAG;AA3FZ,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,CAAiB,EAAE,WAAiB,EAAE,EAAE;IACxE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,IAAK,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,IAAK,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAEnC,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;QAAE,OAAO;IAEhC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnB,IAAI,KAAS,CAAC;IACd,IAAI,QAOH,CAAC;IACF,IAAI,CAAC,CAAC;IACN,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE;QAChD,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,QAAQ,GAAG;YACT,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,KAAK,GAAG,IAAA,mBAAY,EAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEzD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC;YAC/B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC;YACjC,QAAQ,CAAC,KAAK,GAAG,qBAAqB,CAAC;YACvC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAkB,CAAC;SAC/C;QAED,CAAC,CAAC,OAAO,CAAC;YACR,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACvB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;QACD,CAAC,GAAG,KAAK,CAAC;KACX;IAED,CAAC,CAAC,OAAO,CAAC;QACR,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;QACvB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;KAChC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,WAAiB,EAAE,EAAE;IAC5C,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,YAA8B,CAAC;QAEzD,IAAI,CAAC,CAAC;QACN,yBAAyB;QACzB,IAAI,YAAY,EAAE;YAChB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACzB;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACtB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC;gBAC7B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAE;gBACf,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAE;aAChB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,qBAAqB,EAAE;gBAC7C,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1C,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aAC7C;YACD,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEY,oBAAI"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addSubgraphConstraints = void 0;
|
|
4
|
+
const addSubgraphConstraints = (g, cg, vs) => {
|
|
5
|
+
const prev = {};
|
|
6
|
+
let rootPrev;
|
|
7
|
+
vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {
|
|
8
|
+
let child = g.getParent(v);
|
|
9
|
+
let parent;
|
|
10
|
+
let prevChild;
|
|
8
11
|
while (child) {
|
|
9
12
|
parent = g.getParent(child.id);
|
|
10
13
|
if (parent) {
|
|
@@ -28,9 +31,9 @@ export var addSubgraphConstraints = function (g, cg, vs) {
|
|
|
28
31
|
data: {},
|
|
29
32
|
});
|
|
30
33
|
}
|
|
31
|
-
if (!cg.hasEdge(
|
|
34
|
+
if (!cg.hasEdge(`e${prevChild}-${child.id}`)) {
|
|
32
35
|
cg.addEdge({
|
|
33
|
-
id:
|
|
36
|
+
id: `e${prevChild}-${child.id}`,
|
|
34
37
|
source: prevChild,
|
|
35
38
|
target: child.id,
|
|
36
39
|
data: {},
|
|
@@ -42,4 +45,5 @@ export var addSubgraphConstraints = function (g, cg, vs) {
|
|
|
42
45
|
}
|
|
43
46
|
});
|
|
44
47
|
};
|
|
48
|
+
exports.addSubgraphConstraints = addSubgraphConstraints;
|
|
45
49
|
//# sourceMappingURL=add-subgraph-constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-subgraph-constraints.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/add-subgraph-constraints.ts"],"names":[],"mappings":";;;AAGO,MAAM,sBAAsB,GAAG,CAAC,CAAQ,EAAE,EAAS,EAAE,EAAQ,EAAE,EAAE;IACtE,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,IAAI,QAAY,CAAC;IAEjB,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC;QACX,IAAI,SAAa,CAAC;QAClB,OAAO,KAAK,EAAE;YACZ,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;aAC5B;iBAAM;gBACL,SAAS,GAAG,QAAQ,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;aACrB;YACD,IAAI,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;oBAC1B,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACzB,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;oBAC5C,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,IAAI,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE;wBAC/B,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,KAAK,CAAC,EAAE;wBAChB,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,OAAO;aACR;YACD,KAAK,GAAG,MAAM,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA3CW,QAAA,sBAAsB,0BA2CjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { Graph } from
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { Graph } from '../../types';
|
|
3
3
|
/**
|
|
4
4
|
* TODO: The median method consistently performs better than the barycenter method and has a slight theoretical advantage
|
|
5
5
|
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.barycenter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* TODO: The median method consistently performs better than the barycenter method and has a slight theoretical advantage
|
|
6
|
+
*/
|
|
7
|
+
const barycenter = (g, movable) => {
|
|
8
|
+
return movable.map((v) => {
|
|
9
|
+
const inV = g.getRelatedEdges(v, 'in');
|
|
10
|
+
if (!(inV === null || inV === void 0 ? void 0 : inV.length)) {
|
|
11
|
+
return { v };
|
|
12
|
+
}
|
|
13
|
+
const result = { sum: 0, weight: 0 };
|
|
14
|
+
inV === null || inV === void 0 ? void 0 : inV.forEach((e) => {
|
|
15
|
+
const nodeU = g.getNode(e.source);
|
|
16
|
+
result.sum += e.data.weight * nodeU.data.order;
|
|
17
|
+
result.weight += e.data.weight;
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
v,
|
|
21
|
+
barycenter: result.sum / result.weight,
|
|
22
|
+
weight: result.weight,
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
exports.barycenter = barycenter;
|
|
27
|
+
//# sourceMappingURL=barycenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barycenter.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/barycenter.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,OAAa,EAAE,EAAE;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE;YAChB,OAAO,EAAE,CAAC,EAAE,CAAC;SACd;QAED,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC;YACjD,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO;YACL,CAAC;YACD,UAAU,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;YACtC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildLayerGraph = void 0;
|
|
4
|
+
const graphlib_1 = require("@antv/graphlib");
|
|
3
5
|
/*
|
|
4
6
|
* Constructs a graph that can be used to sort a layer of nodes. The graph will
|
|
5
7
|
* contain all base and subgraph nodes from the request layer in their original
|
|
@@ -30,9 +32,9 @@ import { Graph } from '@antv/graphlib';
|
|
|
30
32
|
* 5. The weights for copied edges are aggregated as need, since the output
|
|
31
33
|
* graph is not a multi-graph.
|
|
32
34
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
const buildLayerGraph = (g, rank, direction) => {
|
|
36
|
+
const root = createRootNode(g);
|
|
37
|
+
const result = new graphlib_1.Graph({
|
|
36
38
|
tree: [
|
|
37
39
|
{
|
|
38
40
|
id: root,
|
|
@@ -41,30 +43,27 @@ export var buildLayerGraph = function (g, rank, direction) {
|
|
|
41
43
|
},
|
|
42
44
|
],
|
|
43
45
|
});
|
|
44
|
-
g.getAllNodes().forEach(
|
|
45
|
-
|
|
46
|
+
g.getAllNodes().forEach((v) => {
|
|
47
|
+
const parent = g.getParent(v.id);
|
|
46
48
|
if (v.data.rank === rank ||
|
|
47
49
|
(v.data.minRank <= rank && rank <= v.data.maxRank)) {
|
|
48
50
|
if (!result.hasNode(v.id)) {
|
|
49
|
-
result.addNode(
|
|
51
|
+
result.addNode(Object.assign({}, v));
|
|
50
52
|
}
|
|
51
53
|
if ((parent === null || parent === void 0 ? void 0 : parent.id) && !result.hasNode(parent === null || parent === void 0 ? void 0 : parent.id)) {
|
|
52
|
-
result.addNode(
|
|
54
|
+
result.addNode(Object.assign({}, parent));
|
|
53
55
|
}
|
|
54
56
|
result.setParent(v.id, (parent === null || parent === void 0 ? void 0 : parent.id) || root);
|
|
55
57
|
// This assumes we have only short edges!
|
|
56
|
-
g.getRelatedEdges(v.id, direction).forEach(
|
|
57
|
-
|
|
58
|
+
g.getRelatedEdges(v.id, direction).forEach((e) => {
|
|
59
|
+
const u = e.source === v.id ? e.target : e.source;
|
|
58
60
|
if (!result.hasNode(u)) {
|
|
59
|
-
result.addNode(
|
|
61
|
+
result.addNode(Object.assign({}, g.getNode(u)));
|
|
60
62
|
}
|
|
61
|
-
|
|
63
|
+
const edge = result
|
|
62
64
|
.getRelatedEdges(u, 'out')
|
|
63
|
-
.find(
|
|
64
|
-
|
|
65
|
-
return target === v.id;
|
|
66
|
-
});
|
|
67
|
-
var weight = edge !== undefined ? edge.data.weight : 0;
|
|
65
|
+
.find(({ target }) => target === v.id);
|
|
66
|
+
const weight = edge !== undefined ? edge.data.weight : 0;
|
|
68
67
|
if (!edge) {
|
|
69
68
|
result.addEdge({
|
|
70
69
|
id: e.id,
|
|
@@ -76,20 +75,21 @@ export var buildLayerGraph = function (g, rank, direction) {
|
|
|
76
75
|
});
|
|
77
76
|
}
|
|
78
77
|
else {
|
|
79
|
-
result.updateEdgeData(edge.id,
|
|
78
|
+
result.updateEdgeData(edge.id, Object.assign(Object.assign({}, edge.data), { weight: e.data.weight + weight }));
|
|
80
79
|
}
|
|
81
80
|
});
|
|
82
81
|
// console.log(v);
|
|
83
82
|
if (v.data.hasOwnProperty('minRank')) {
|
|
84
|
-
result.updateNodeData(v.id,
|
|
83
|
+
result.updateNodeData(v.id, Object.assign(Object.assign({}, v.data), { borderLeft: v.data.borderLeft[rank], borderRight: v.data.borderRight[rank] }));
|
|
85
84
|
}
|
|
86
85
|
}
|
|
87
86
|
});
|
|
88
87
|
return result;
|
|
89
88
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
exports.buildLayerGraph = buildLayerGraph;
|
|
90
|
+
const createRootNode = (g) => {
|
|
91
|
+
let v;
|
|
92
|
+
while (g.hasNode((v = `_root${Math.random()}`)))
|
|
93
93
|
;
|
|
94
94
|
return v;
|
|
95
95
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-layer-graph.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/build-layer-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* A function that takes a layering (an array of layers, each with an array of
|
|
3
4
|
* ordererd nodes) and a graph and returns a weighted crossing count.
|
|
@@ -14,33 +15,35 @@
|
|
|
14
15
|
*
|
|
15
16
|
* This algorithm is derived from Barth, et al., "Bilayer Cross Counting."
|
|
16
17
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.crossCount = void 0;
|
|
20
|
+
const util_1 = require("../util");
|
|
21
|
+
const twoLayerCrossCount = (g, northLayer, southLayer) => {
|
|
19
22
|
// Sort all of the edges between the north and south layers by their position
|
|
20
23
|
// in the north layer and then the south. Map these edges to the position of
|
|
21
24
|
// their head in the south layer.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
const southPos = (0, util_1.zipObject)(southLayer, southLayer.map((v, i) => i));
|
|
26
|
+
const unflat = northLayer.map((v) => {
|
|
27
|
+
const unsort = g.getRelatedEdges(v, 'out').map((e) => {
|
|
25
28
|
return { pos: southPos[e.target] || 0, weight: e.data.weight };
|
|
26
29
|
});
|
|
27
|
-
return unsort === null || unsort === void 0 ? void 0 : unsort.sort(
|
|
30
|
+
return unsort === null || unsort === void 0 ? void 0 : unsort.sort((a, b) => a.pos - b.pos);
|
|
28
31
|
});
|
|
29
|
-
|
|
32
|
+
const southEntries = unflat.flat().filter((entry) => entry !== undefined);
|
|
30
33
|
// Build the accumulator tree
|
|
31
|
-
|
|
34
|
+
let firstIndex = 1;
|
|
32
35
|
while (firstIndex < southLayer.length)
|
|
33
36
|
firstIndex <<= 1;
|
|
34
|
-
|
|
37
|
+
const treeSize = 2 * firstIndex - 1;
|
|
35
38
|
firstIndex -= 1;
|
|
36
|
-
|
|
39
|
+
const tree = Array(treeSize).fill(0, 0, treeSize);
|
|
37
40
|
// Calculate the weighted crossings
|
|
38
|
-
|
|
39
|
-
southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach(
|
|
41
|
+
let cc = 0;
|
|
42
|
+
southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach((entry) => {
|
|
40
43
|
if (entry) {
|
|
41
|
-
|
|
44
|
+
let index = entry.pos + firstIndex;
|
|
42
45
|
tree[index] += entry.weight;
|
|
43
|
-
|
|
46
|
+
let weightSum = 0;
|
|
44
47
|
while (index > 0) {
|
|
45
48
|
if (index % 2) {
|
|
46
49
|
weightSum += tree[index + 1];
|
|
@@ -53,11 +56,12 @@ var twoLayerCrossCount = function (g, northLayer, southLayer) {
|
|
|
53
56
|
});
|
|
54
57
|
return cc;
|
|
55
58
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
for (
|
|
59
|
+
const crossCount = (g, layering) => {
|
|
60
|
+
let cc = 0;
|
|
61
|
+
for (let i = 1; i < (layering === null || layering === void 0 ? void 0 : layering.length); i += 1) {
|
|
59
62
|
cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);
|
|
60
63
|
}
|
|
61
64
|
return cc;
|
|
62
65
|
};
|
|
66
|
+
exports.crossCount = crossCount;
|
|
63
67
|
//# sourceMappingURL=cross-count.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-count.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/cross-count.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Graph as IGraph } from
|
|
1
|
+
import { Graph as IGraph } from '../../types';
|
|
2
2
|
export declare const order: (g: IGraph, keepNodeOrder?: boolean) => void;
|