@antv/layout 1.2.13 → 1.2.14-beta.1
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 +61 -0
- package/lib/antv-dagre/acyclic.js.map +1 -0
- package/lib/{dagre → antv-dagre}/add-border-segments.js +12 -12
- 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 +65 -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 +20 -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 +136 -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 +125 -127
- package/lib/antv-dagre/layout.js.map +1 -0
- package/lib/{dagre → antv-dagre}/nesting-graph.js +36 -37
- 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 +24 -24
- package/lib/antv-dagre/normalize.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.js +9 -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/{dagre → antv-dagre}/order/barycenter.js +8 -8
- package/lib/antv-dagre/order/barycenter.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/build-layer-graph.js +18 -22
- 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 +17 -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/{dagre → antv-dagre}/order/index.js +35 -35
- package/lib/antv-dagre/order/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/init-data-order.js +8 -9
- package/lib/antv-dagre/order/init-data-order.js.map +1 -0
- package/lib/antv-dagre/order/init-order.js +47 -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 +32 -35
- package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort-subgraph.js +20 -20
- 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 +19 -19
- package/lib/antv-dagre/order/sort.js.map +1 -0
- package/lib/{dagre → antv-dagre}/parent-dummy-chains.js +28 -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 +140 -143
- 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 +51 -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 +32 -32
- 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 +10 -10
- 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 +70 -71
- 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 +31 -31
- 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 +2 -0
- package/lib/antv-dagre/types.js.map +1 -0
- package/lib/{dagre → antv-dagre}/util.d.ts +1 -1
- package/lib/{dagre → antv-dagre}/util.js +90 -98
- package/lib/antv-dagre/util.js.map +1 -0
- package/lib/antv-dagre.d.ts +50 -0
- package/lib/antv-dagre.js +538 -0
- package/lib/antv-dagre.js.map +1 -0
- package/lib/bundle-entry.d.ts +2 -18
- package/lib/bundle-entry.js +2 -18
- package/lib/bundle-entry.js.map +1 -1
- package/lib/bundle-supervisor.d.ts +4 -22
- package/lib/bundle-supervisor.js +54 -53
- package/lib/bundle-supervisor.js.map +1 -1
- package/lib/bundle-worker.d.ts +1 -1
- package/lib/bundle-worker.js +31 -33
- package/lib/bundle-worker.js.map +1 -1
- package/lib/circular.d.ts +1 -1
- package/lib/circular.js +124 -140
- package/lib/circular.js.map +1 -1
- package/lib/comboCombined.d.ts +1 -1
- package/lib/comboCombined.js +254 -284
- package/lib/comboCombined.js.map +1 -1
- package/lib/concentric.d.ts +1 -1
- package/lib/concentric.js +166 -176
- package/lib/concentric.js.map +1 -1
- package/lib/d3Force/forceInBox.js +75 -77
- package/lib/d3Force/forceInBox.js.map +1 -1
- package/lib/d3Force/index.d.ts +2 -2
- package/lib/d3Force/index.js +196 -222
- package/lib/d3Force/index.js.map +1 -1
- package/lib/dagre.d.ts +13 -24
- package/lib/dagre.js +57 -542
- package/lib/dagre.js.map +1 -1
- package/lib/exports.d.ts +17 -0
- package/lib/exports.js +17 -0
- package/lib/exports.js.map +1 -0
- package/lib/force/forceNBody.js +42 -45
- package/lib/force/forceNBody.js.map +1 -1
- package/lib/force/index.d.ts +1 -1
- package/lib/force/index.js +282 -309
- package/lib/force/index.js.map +1 -1
- package/lib/force/types.d.ts +5 -5
- package/lib/forceAtlas2/body.d.ts +1 -1
- package/lib/forceAtlas2/body.js +29 -31
- package/lib/forceAtlas2/body.js.map +1 -1
- package/lib/forceAtlas2/index.d.ts +1 -1
- package/lib/forceAtlas2/index.js +206 -218
- package/lib/forceAtlas2/index.js.map +1 -1
- package/lib/forceAtlas2/quad.d.ts +2 -2
- package/lib/forceAtlas2/quad.js +40 -42
- package/lib/forceAtlas2/quad.js.map +1 -1
- package/lib/forceAtlas2/quadTree.js +16 -17
- package/lib/forceAtlas2/quadTree.js.map +1 -1
- package/lib/fruchterman.d.ts +1 -1
- package/lib/fruchterman.js +185 -205
- package/lib/fruchterman.js.map +1 -1
- package/lib/grid.d.ts +1 -1
- package/lib/grid.js +197 -207
- package/lib/grid.js.map +1 -1
- package/lib/index.d.ts +1 -15
- package/lib/index.js +1 -15
- package/lib/index.js.map +1 -1
- package/lib/mds.d.ts +1 -1
- package/lib/mds.js +68 -78
- package/lib/mds.js.map +1 -1
- package/lib/radial/index.d.ts +1 -1
- package/lib/radial/index.js +177 -184
- package/lib/radial/index.js.map +1 -1
- package/lib/radial/mds.d.ts +1 -1
- package/lib/radial/mds.js +15 -13
- 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 +36 -37
- package/lib/radial/radial-nonoverlap-force.js.map +1 -1
- package/lib/random.d.ts +1 -1
- package/lib/random.js +53 -66
- package/lib/random.js.map +1 -1
- package/lib/registry.d.ts +2 -2
- package/lib/registry.js +3 -1
- package/lib/registry.js.map +1 -1
- package/lib/supervisor.d.ts +2 -3
- package/lib/supervisor.js +57 -56
- package/lib/supervisor.js.map +1 -1
- package/lib/types.d.ts +20 -75
- package/lib/types.js.map +1 -1
- package/lib/util/array.js +1 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/common.d.ts +1 -1
- package/lib/util/common.js +7 -8
- package/lib/util/common.js.map +1 -1
- package/lib/util/function.js +23 -25
- package/lib/util/function.js.map +1 -1
- package/lib/util/index.d.ts +0 -2
- package/lib/util/index.js +0 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/math.d.ts +1 -26
- package/lib/util/math.js +41 -149
- package/lib/util/math.js.map +1 -1
- package/lib/util/object.d.ts +1 -1
- package/lib/util/object.js +13 -13
- package/lib/util/object.js.map +1 -1
- package/lib/util/size.d.ts +3 -0
- package/lib/util/size.js +12 -0
- package/lib/util/size.js.map +1 -0
- package/lib/worker.js +30 -31
- package/lib/worker.js.map +1 -1
- package/package.json +9 -5
- package/dist/aa1bb0ccc06b11cf79c1.worker.js +0 -2
- package/dist/aa1bb0ccc06b11cf79c1.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.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.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.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.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,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { minBy } from
|
|
3
|
-
import {
|
|
1
|
+
import { Graph } from '@antv/graphlib';
|
|
2
|
+
import { minBy } from '../util';
|
|
3
|
+
import { slack } from './util';
|
|
4
4
|
/*
|
|
5
5
|
* Constructs a spanning tree with tight edges and adjusted the input node's
|
|
6
6
|
* ranks to achieve this. A tight edge is one that is has a length that matches
|
|
@@ -26,16 +26,16 @@ import { Graph } from "@antv/graphlib";
|
|
|
26
26
|
* Returns a tree (undirected graph) that is constructed using only "tight"
|
|
27
27
|
* edges.
|
|
28
28
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const feasibleTree = (g) => {
|
|
30
|
+
const t = new Graph({
|
|
31
31
|
tree: [],
|
|
32
32
|
});
|
|
33
33
|
// Choose arbitrary node from which to start our tree
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const start = g.getAllNodes()[0];
|
|
35
|
+
const size = g.getAllNodes().length;
|
|
36
36
|
t.addNode(start);
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
let edge;
|
|
38
|
+
let delta;
|
|
39
39
|
while (tightTree(t, g) < size) {
|
|
40
40
|
edge = findMinSlackEdge(t, g);
|
|
41
41
|
delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
|
|
@@ -47,11 +47,11 @@ var feasibleTree = function (g) {
|
|
|
47
47
|
* Finds a maximal tree of tight edges and returns the number of nodes in the
|
|
48
48
|
* tree.
|
|
49
49
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
g.getRelatedEdges(v,
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
const tightTree = (t, g) => {
|
|
51
|
+
const dfs = (v) => {
|
|
52
|
+
g.getRelatedEdges(v, 'both').forEach((e) => {
|
|
53
|
+
const edgeV = e.source;
|
|
54
|
+
const w = v === edgeV ? e.target : edgeV;
|
|
55
55
|
if (!t.hasNode(w) && !slack(g, e)) {
|
|
56
56
|
t.addNode({
|
|
57
57
|
id: w,
|
|
@@ -67,7 +67,7 @@ var tightTree = function (t, g) {
|
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
69
|
};
|
|
70
|
-
t.getAllNodes().forEach(
|
|
70
|
+
t.getAllNodes().forEach((n) => dfs(n.id));
|
|
71
71
|
return t.getAllNodes().length;
|
|
72
72
|
};
|
|
73
73
|
/*
|
|
@@ -95,14 +95,14 @@ var tightTree = function (t, g) {
|
|
|
95
95
|
* Returns a tree (undirected graph) that is constructed using only "tight"
|
|
96
96
|
* edges.
|
|
97
97
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
const feasibleTreeWithLayer = (g) => {
|
|
99
|
+
const t = new Graph({ tree: [] });
|
|
100
100
|
// Choose arbitrary node from which to start our tree
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
const start = g.getAllNodes()[0];
|
|
102
|
+
const size = g.getAllNodes().length;
|
|
103
103
|
t.addNode(start);
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
let edge;
|
|
105
|
+
let delta;
|
|
106
106
|
while (tightTreeWithLayer(t, g) < size) {
|
|
107
107
|
edge = findMinSlackEdge(t, g);
|
|
108
108
|
delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
|
|
@@ -114,12 +114,12 @@ var feasibleTreeWithLayer = function (g) {
|
|
|
114
114
|
* Finds a maximal tree of tight edges and returns the number of nodes in the
|
|
115
115
|
* tree.
|
|
116
116
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
const tightTreeWithLayer = (t, g) => {
|
|
118
|
+
const dfs = (v) => {
|
|
119
119
|
var _a;
|
|
120
|
-
(_a = g.getRelatedEdges(v,
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
(_a = g.getRelatedEdges(v, 'both')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
121
|
+
const edgeV = e.source;
|
|
122
|
+
const w = v === edgeV ? e.target : edgeV;
|
|
123
123
|
// 对于指定layer的,直接加入tight-tree,不参与调整
|
|
124
124
|
if (!t.hasNode(w) &&
|
|
125
125
|
(g.getNode(w).data.layer !== undefined || !slack(g, e))) {
|
|
@@ -137,24 +137,24 @@ var tightTreeWithLayer = function (t, g) {
|
|
|
137
137
|
}
|
|
138
138
|
});
|
|
139
139
|
};
|
|
140
|
-
t.getAllNodes().forEach(
|
|
140
|
+
t.getAllNodes().forEach((n) => dfs(n.id));
|
|
141
141
|
return t.getAllNodes().length;
|
|
142
142
|
};
|
|
143
143
|
/*
|
|
144
144
|
* Finds the edge with the smallest slack that is incident on tree and returns
|
|
145
145
|
* it.
|
|
146
146
|
*/
|
|
147
|
-
|
|
148
|
-
return minBy(g.getAllEdges(),
|
|
147
|
+
const findMinSlackEdge = (t, g) => {
|
|
148
|
+
return minBy(g.getAllEdges(), (e) => {
|
|
149
149
|
if (t.hasNode(e.source) !== t.hasNode(e.target)) {
|
|
150
150
|
return slack(g, e);
|
|
151
151
|
}
|
|
152
152
|
return Infinity;
|
|
153
153
|
});
|
|
154
154
|
};
|
|
155
|
-
|
|
156
|
-
t.getAllNodes().forEach(
|
|
157
|
-
|
|
155
|
+
const shiftRanks = (t, g, delta) => {
|
|
156
|
+
t.getAllNodes().forEach((tn) => {
|
|
157
|
+
const v = g.getNode(tn.id);
|
|
158
158
|
if (!v.data.rank)
|
|
159
159
|
v.data.rank = 0;
|
|
160
160
|
v.data.rank += delta;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feasible-tree.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/feasible-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { feasibleTreeWithLayer as feasibleTree } from './feasible-tree';
|
|
2
|
+
import { networkSimplex } from './network-simplex';
|
|
3
|
+
import { longestPath, longestPathWithLayer } from './util';
|
|
4
4
|
/*
|
|
5
5
|
* Assigns a rank to each node in the input graph that respects the "minlen"
|
|
6
6
|
* constraint specified on edges between nodes.
|
|
@@ -20,15 +20,15 @@ import { networkSimplex } from "./network-simplex";
|
|
|
20
20
|
* algorithm. Ranks can start at any index (including negative), we'll
|
|
21
21
|
* fix them up later.
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export const rank = (g, ranker) => {
|
|
24
24
|
switch (ranker) {
|
|
25
|
-
case
|
|
25
|
+
case 'network-simplex':
|
|
26
26
|
networkSimplexRanker(g);
|
|
27
27
|
break;
|
|
28
|
-
case
|
|
28
|
+
case 'tight-tree':
|
|
29
29
|
tightTreeRanker(g);
|
|
30
30
|
break;
|
|
31
|
-
case
|
|
31
|
+
case 'longest-path':
|
|
32
32
|
longestPathRanker(g);
|
|
33
33
|
break;
|
|
34
34
|
// default: networkSimplexRanker(g);
|
|
@@ -37,12 +37,12 @@ export var rank = function (g, ranker) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
// A fast and simple ranker, but results are far from optimal.
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const longestPathRanker = longestPath;
|
|
41
|
+
const tightTreeRanker = (g) => {
|
|
42
42
|
longestPathWithLayer(g);
|
|
43
43
|
feasibleTree(g);
|
|
44
44
|
};
|
|
45
|
-
|
|
45
|
+
const networkSimplexRanker = (g) => {
|
|
46
46
|
networkSimplex(g);
|
|
47
47
|
};
|
|
48
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,CAAS,EACT,MAAyD,EACzD,EAAE;IACF,QAAQ,MAAM,EAAE;QACd,KAAK,iBAAiB;YACpB,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,YAAY;YACf,eAAe,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM;QACR,oCAAoC;QACpC;YACE,eAAe,CAAC,CAAC,CAAC,CAAC;KACtB;AACH,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE;IACpC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACxB,YAAY,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAS,EAAE,EAAE;IACzC,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Edge, ID } from
|
|
2
|
-
import { EdgeData, Graph as IGraph } from
|
|
1
|
+
import { Edge, ID } from '@antv/graphlib';
|
|
2
|
+
import { EdgeData, Graph as IGraph } from '../../types';
|
|
3
3
|
export declare const networkSimplex: (og: IGraph) => void;
|
|
4
4
|
export declare const initCutValues: (t: IGraph, g: IGraph) => void;
|
|
5
5
|
export declare const calcCutValue: (t: IGraph, g: IGraph, child: ID) => number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { dfs, minBy, simplify } from '../util';
|
|
2
|
+
import { feasibleTree } from './feasible-tree';
|
|
3
|
+
import { longestPath as initRank, slack } from './util';
|
|
4
4
|
/*
|
|
5
5
|
* The network simplex algorithm assigns ranks to each node in the input graph
|
|
6
6
|
* and iteratively improves the ranking to reduce the length of edges.
|
|
@@ -34,14 +34,14 @@ import { dfs, minBy, simplify } from "../util";
|
|
|
34
34
|
* for Drawing Directed Graphs." The structure of the file roughly follows the
|
|
35
35
|
* structure of the overall algorithm.
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
38
|
-
|
|
37
|
+
export const networkSimplex = (og) => {
|
|
38
|
+
const g = simplify(og);
|
|
39
39
|
initRank(g);
|
|
40
|
-
|
|
40
|
+
const t = feasibleTree(g);
|
|
41
41
|
initLowLimValues(t);
|
|
42
42
|
initCutValues(t, g);
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
let e;
|
|
44
|
+
let f;
|
|
45
45
|
while ((e = leaveEdge(t))) {
|
|
46
46
|
f = enterEdge(t, g, e);
|
|
47
47
|
exchangeEdges(t, g, e, f);
|
|
@@ -50,56 +50,56 @@ export var networkSimplex = function (og) {
|
|
|
50
50
|
/*
|
|
51
51
|
* Initializes cut values for all edges in the tree.
|
|
52
52
|
*/
|
|
53
|
-
export
|
|
54
|
-
|
|
53
|
+
export const initCutValues = (t, g) => {
|
|
54
|
+
let vs = dfs(t, t.getAllNodes(), 'post', false);
|
|
55
55
|
vs = vs.slice(0, (vs === null || vs === void 0 ? void 0 : vs.length) - 1);
|
|
56
|
-
vs.forEach(
|
|
56
|
+
vs.forEach((v) => {
|
|
57
57
|
assignCutValue(t, g, v);
|
|
58
58
|
});
|
|
59
59
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const assignCutValue = (t, g, child) => {
|
|
61
|
+
const childLab = t.getNode(child);
|
|
62
|
+
const parent = childLab.data.parent;
|
|
63
63
|
// FIXME: use undirected edge?
|
|
64
|
-
|
|
65
|
-
.getRelatedEdges(child,
|
|
66
|
-
.find(
|
|
64
|
+
const edge = t
|
|
65
|
+
.getRelatedEdges(child, 'both')
|
|
66
|
+
.find((e) => e.target === parent || e.source === parent);
|
|
67
67
|
edge.data.cutvalue = calcCutValue(t, g, child);
|
|
68
68
|
};
|
|
69
69
|
/*
|
|
70
70
|
* Given the tight tree, its graph, and a child in the graph calculate and
|
|
71
71
|
* return the cut value for the edge between the child and its parent.
|
|
72
72
|
*/
|
|
73
|
-
export
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
export const calcCutValue = (t, g, child) => {
|
|
74
|
+
const childLab = t.getNode(child);
|
|
75
|
+
const parent = childLab.data.parent;
|
|
76
76
|
// True if the child is on the tail end of the edge in the directed graph
|
|
77
|
-
|
|
77
|
+
let childIsTail = true;
|
|
78
78
|
// The graph's view of the tree edge we're inspecting
|
|
79
|
-
|
|
80
|
-
.getRelatedEdges(child,
|
|
81
|
-
.find(
|
|
79
|
+
let graphEdge = g
|
|
80
|
+
.getRelatedEdges(child, 'out')
|
|
81
|
+
.find((e) => e.target === parent);
|
|
82
82
|
// The accumulated cut value for the edge between this node and its parent
|
|
83
|
-
|
|
83
|
+
let cutValue = 0;
|
|
84
84
|
if (!graphEdge) {
|
|
85
85
|
childIsTail = false;
|
|
86
86
|
graphEdge = g
|
|
87
|
-
.getRelatedEdges(parent,
|
|
88
|
-
.find(
|
|
87
|
+
.getRelatedEdges(parent, 'out')
|
|
88
|
+
.find((e) => e.target === child);
|
|
89
89
|
}
|
|
90
90
|
cutValue = graphEdge.data.weight;
|
|
91
|
-
g.getRelatedEdges(child,
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
g.getRelatedEdges(child, 'both').forEach((e) => {
|
|
92
|
+
const isOutEdge = e.source === child;
|
|
93
|
+
const other = isOutEdge ? e.target : e.source;
|
|
94
94
|
if (other !== parent) {
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
const pointsToHead = isOutEdge === childIsTail;
|
|
96
|
+
const otherWeight = e.data.weight;
|
|
97
97
|
cutValue += pointsToHead ? otherWeight : -otherWeight;
|
|
98
98
|
if (isTreeEdge(t, child, other)) {
|
|
99
99
|
// FIXME: use undirected edge?
|
|
100
|
-
|
|
101
|
-
.getRelatedEdges(child,
|
|
102
|
-
.find(
|
|
100
|
+
const otherCutValue = t
|
|
101
|
+
.getRelatedEdges(child, 'both')
|
|
102
|
+
.find((e) => e.source === other || e.target === other).data
|
|
103
103
|
.cutvalue;
|
|
104
104
|
cutValue += pointsToHead ? -otherCutValue : otherCutValue;
|
|
105
105
|
}
|
|
@@ -107,17 +107,16 @@ export var calcCutValue = function (t, g, child) {
|
|
|
107
107
|
});
|
|
108
108
|
return cutValue;
|
|
109
109
|
};
|
|
110
|
-
export
|
|
111
|
-
if (root === void 0) { root = tree.getAllNodes()[0].id; }
|
|
110
|
+
export const initLowLimValues = (tree, root = tree.getAllNodes()[0].id) => {
|
|
112
111
|
dfsAssignLowLim(tree, {}, 1, root);
|
|
113
112
|
};
|
|
114
|
-
|
|
113
|
+
const dfsAssignLowLim = (tree, visited, nextLim, v, parent) => {
|
|
115
114
|
var _a;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
const low = nextLim;
|
|
116
|
+
let useNextLim = nextLim;
|
|
117
|
+
const label = tree.getNode(v);
|
|
119
118
|
visited[v] = true;
|
|
120
|
-
(_a = tree.getNeighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach(
|
|
119
|
+
(_a = tree.getNeighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach((w) => {
|
|
121
120
|
if (!visited[w.id]) {
|
|
122
121
|
useNextLim = dfsAssignLowLim(tree, visited, useNextLim, w.id, v);
|
|
123
122
|
}
|
|
@@ -133,36 +132,36 @@ var dfsAssignLowLim = function (tree, visited, nextLim, v, parent) {
|
|
|
133
132
|
}
|
|
134
133
|
return useNextLim;
|
|
135
134
|
};
|
|
136
|
-
export
|
|
137
|
-
return tree.getAllEdges().find(
|
|
135
|
+
export const leaveEdge = (tree) => {
|
|
136
|
+
return tree.getAllEdges().find((e) => {
|
|
138
137
|
return e.data.cutvalue < 0;
|
|
139
138
|
});
|
|
140
139
|
};
|
|
141
|
-
export
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
export const enterEdge = (t, g, edge) => {
|
|
141
|
+
let v = edge.source;
|
|
142
|
+
let w = edge.target;
|
|
144
143
|
// For the rest of this function we assume that v is the tail and w is the
|
|
145
144
|
// head, so if we don't have this edge in the graph we should flip it to
|
|
146
145
|
// match the correct orientation.
|
|
147
|
-
if (!g.getRelatedEdges(v,
|
|
146
|
+
if (!g.getRelatedEdges(v, 'out').find((e) => e.target === w)) {
|
|
148
147
|
v = edge.target;
|
|
149
148
|
w = edge.source;
|
|
150
149
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
const vLabel = t.getNode(v);
|
|
151
|
+
const wLabel = t.getNode(w);
|
|
152
|
+
let tailLabel = vLabel;
|
|
153
|
+
let flip = false;
|
|
155
154
|
// If the root is in the tail of the edge then we need to flip the logic that
|
|
156
155
|
// checks for the head and tail nodes in the candidates function below.
|
|
157
156
|
if (vLabel.data.lim > wLabel.data.lim) {
|
|
158
157
|
tailLabel = wLabel;
|
|
159
158
|
flip = true;
|
|
160
159
|
}
|
|
161
|
-
|
|
160
|
+
const candidates = g.getAllEdges().filter((edge) => {
|
|
162
161
|
return (flip === isDescendant(t.getNode(edge.source), tailLabel) &&
|
|
163
162
|
flip !== isDescendant(t.getNode(edge.target), tailLabel));
|
|
164
163
|
});
|
|
165
|
-
return minBy(candidates,
|
|
164
|
+
return minBy(candidates, (edge) => {
|
|
166
165
|
return slack(g, edge);
|
|
167
166
|
});
|
|
168
167
|
};
|
|
@@ -173,16 +172,16 @@ export var enterEdge = function (t, g, edge) {
|
|
|
173
172
|
* @param e edge to remove
|
|
174
173
|
* @param f edge to add
|
|
175
174
|
*/
|
|
176
|
-
export
|
|
175
|
+
export const exchangeEdges = (t, g, e, f) => {
|
|
177
176
|
// FIXME: use undirected edge?
|
|
178
|
-
|
|
179
|
-
.getRelatedEdges(e.source,
|
|
180
|
-
.find(
|
|
177
|
+
const existed = t
|
|
178
|
+
.getRelatedEdges(e.source, 'both')
|
|
179
|
+
.find((edge) => edge.source === e.target || edge.target === e.target);
|
|
181
180
|
if (existed) {
|
|
182
181
|
t.removeEdge(existed.id);
|
|
183
182
|
}
|
|
184
183
|
t.addEdge({
|
|
185
|
-
id:
|
|
184
|
+
id: `e${Math.random()}`,
|
|
186
185
|
source: f.source,
|
|
187
186
|
target: f.target,
|
|
188
187
|
data: {},
|
|
@@ -191,20 +190,20 @@ export var exchangeEdges = function (t, g, e, f) {
|
|
|
191
190
|
initCutValues(t, g);
|
|
192
191
|
updateRanks(t, g);
|
|
193
192
|
};
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
const updateRanks = (t, g) => {
|
|
194
|
+
const root = t.getAllNodes().find((v) => {
|
|
196
195
|
return !v.data.parent;
|
|
197
196
|
});
|
|
198
|
-
|
|
197
|
+
let vs = dfs(t, root, 'pre', false);
|
|
199
198
|
vs = vs.slice(1);
|
|
200
|
-
vs.forEach(
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
vs.forEach((v) => {
|
|
200
|
+
const parent = t.getNode(v).data.parent;
|
|
201
|
+
let edge = g.getRelatedEdges(v, 'out').find((e) => e.target === parent);
|
|
203
202
|
// let edge = g.edgeFromArgs(v, parent);
|
|
204
|
-
|
|
203
|
+
let flipped = false;
|
|
205
204
|
if (!edge && g.hasNode(parent)) {
|
|
206
205
|
// edge = g.edgeFromArgs(parent, v)!;
|
|
207
|
-
edge = g.getRelatedEdges(parent,
|
|
206
|
+
edge = g.getRelatedEdges(parent, 'out').find((e) => e.target === v);
|
|
208
207
|
flipped = true;
|
|
209
208
|
}
|
|
210
209
|
g.getNode(v).data.rank =
|
|
@@ -215,17 +214,17 @@ var updateRanks = function (t, g) {
|
|
|
215
214
|
/*
|
|
216
215
|
* Returns true if the edge is in the tree.
|
|
217
216
|
*/
|
|
218
|
-
|
|
217
|
+
const isTreeEdge = (tree, u, v) => {
|
|
219
218
|
// FIXME: use undirected edge?
|
|
220
219
|
return tree
|
|
221
|
-
.getRelatedEdges(u,
|
|
222
|
-
.find(
|
|
220
|
+
.getRelatedEdges(u, 'both')
|
|
221
|
+
.find((e) => e.source === v || e.target === v);
|
|
223
222
|
};
|
|
224
223
|
/*
|
|
225
224
|
* Returns true if the specified node is descendant of the root node per the
|
|
226
225
|
* assigned low and lim attributes in the tree.
|
|
227
226
|
*/
|
|
228
|
-
|
|
227
|
+
const isDescendant = (vLabel, rootLabel) => {
|
|
229
228
|
return (rootLabel.data.low <= vLabel.data.lim &&
|
|
230
229
|
vLabel.data.lim <= rootLabel.data.lim);
|
|
231
230
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-simplex.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/network-simplex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Edge } from
|
|
2
|
-
import { EdgeData, Graph } from
|
|
1
|
+
import { Edge } from '@antv/graphlib';
|
|
2
|
+
import { EdgeData, Graph } from '../../types';
|
|
3
3
|
declare const longestPath: (g: Graph) => void;
|
|
4
4
|
declare const longestPathWithLayer: (g: Graph) => void;
|
|
5
5
|
declare const slack: (g: Graph, e: Edge<EdgeData>) => number;
|
|
@@ -19,22 +19,22 @@
|
|
|
19
19
|
*
|
|
20
20
|
* 1. Each node will be assign an (unnormalized) "rank" property.
|
|
21
21
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const longestPath = (g) => {
|
|
23
|
+
const visited = {};
|
|
24
|
+
const dfs = (v) => {
|
|
25
25
|
var _a;
|
|
26
|
-
|
|
26
|
+
const label = g.getNode(v);
|
|
27
27
|
if (!label)
|
|
28
28
|
return 0;
|
|
29
29
|
if (visited[v]) {
|
|
30
30
|
return label.data.rank;
|
|
31
31
|
}
|
|
32
32
|
visited[v] = true;
|
|
33
|
-
|
|
34
|
-
(_a = g.getRelatedEdges(v,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
let rank;
|
|
34
|
+
(_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
35
|
+
const wRank = dfs(e.target);
|
|
36
|
+
const minLen = e.data.minlen;
|
|
37
|
+
const r = wRank - minLen;
|
|
38
38
|
if (r) {
|
|
39
39
|
if (rank === undefined || r < rank) {
|
|
40
40
|
rank = r;
|
|
@@ -48,27 +48,27 @@ var longestPath = function (g) {
|
|
|
48
48
|
return rank;
|
|
49
49
|
};
|
|
50
50
|
g.getAllNodes()
|
|
51
|
-
.filter(
|
|
52
|
-
.forEach(
|
|
51
|
+
.filter((n) => g.getRelatedEdges(n.id, 'in').length === 0)
|
|
52
|
+
.forEach((source) => dfs(source.id));
|
|
53
53
|
};
|
|
54
|
-
|
|
54
|
+
const longestPathWithLayer = (g) => {
|
|
55
55
|
// 用longest path,找出最深的点
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
const visited = {};
|
|
57
|
+
let minRank;
|
|
58
|
+
const dfs = (v) => {
|
|
59
59
|
var _a;
|
|
60
|
-
|
|
60
|
+
const label = g.getNode(v);
|
|
61
61
|
if (!label)
|
|
62
62
|
return 0;
|
|
63
63
|
if (visited[v]) {
|
|
64
64
|
return label.data.rank;
|
|
65
65
|
}
|
|
66
66
|
visited[v] = true;
|
|
67
|
-
|
|
68
|
-
(_a = g.getRelatedEdges(v,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
let rank;
|
|
68
|
+
(_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
69
|
+
const wRank = dfs(e.target);
|
|
70
|
+
const minLen = e.data.minlen;
|
|
71
|
+
const r = wRank - minLen;
|
|
72
72
|
if (r) {
|
|
73
73
|
if (rank === undefined || r < rank) {
|
|
74
74
|
rank = r;
|
|
@@ -85,8 +85,8 @@ var longestPathWithLayer = function (g) {
|
|
|
85
85
|
return rank;
|
|
86
86
|
};
|
|
87
87
|
g.getAllNodes()
|
|
88
|
-
.filter(
|
|
89
|
-
.forEach(
|
|
88
|
+
.filter((n) => g.getRelatedEdges(n.id, 'in').length === 0)
|
|
89
|
+
.forEach((source) => {
|
|
90
90
|
if (source)
|
|
91
91
|
dfs(source.id);
|
|
92
92
|
});
|
|
@@ -95,11 +95,11 @@ var longestPathWithLayer = function (g) {
|
|
|
95
95
|
}
|
|
96
96
|
// minRank += 1; // NOTE: 最小的层级是dummy root,+1
|
|
97
97
|
// forward一遍,赋值层级
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
const forwardVisited = {};
|
|
99
|
+
const dfsForward = (v, nextRank) => {
|
|
100
100
|
var _a;
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
const label = g.getNode(v);
|
|
102
|
+
const currRank = !isNaN(label.data.layer) ? label.data.layer : nextRank;
|
|
103
103
|
// 没有指定,取最大值
|
|
104
104
|
if (label.data.rank === undefined || label.data.rank < currRank) {
|
|
105
105
|
label.data.rank = currRank;
|
|
@@ -108,13 +108,13 @@ var longestPathWithLayer = function (g) {
|
|
|
108
108
|
return;
|
|
109
109
|
forwardVisited[v] = true;
|
|
110
110
|
// DFS遍历子节点
|
|
111
|
-
(_a = g.getRelatedEdges(v,
|
|
111
|
+
(_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
112
112
|
dfsForward(e.target, currRank + e.data.minlen);
|
|
113
113
|
});
|
|
114
114
|
};
|
|
115
115
|
// 指定层级的,更新下游
|
|
116
|
-
g.getAllNodes().forEach(
|
|
117
|
-
|
|
116
|
+
g.getAllNodes().forEach((n) => {
|
|
117
|
+
const label = n.data;
|
|
118
118
|
if (!label)
|
|
119
119
|
return;
|
|
120
120
|
if (!isNaN(label.layer)) {
|
|
@@ -129,7 +129,7 @@ var longestPathWithLayer = function (g) {
|
|
|
129
129
|
* Returns the amount of slack for the given edge. The slack is defined as the
|
|
130
130
|
* difference between the length of the edge and its minimum length.
|
|
131
131
|
*/
|
|
132
|
-
|
|
132
|
+
const slack = (g, e) => {
|
|
133
133
|
return (g.getNode(e.target).data.rank -
|
|
134
134
|
g.getNode(e.source).data.rank -
|
|
135
135
|
e.data.minlen);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/antv-dagre/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Graph, ID, Node } from '@antv/graphlib';
|
|
2
2
|
import { EdgeData, Graph as IGraph, NodeData } from '../types';
|
|
3
3
|
export declare const addDummyNode: (g: IGraph, type: string, data: NodeData, name: string) => ID;
|
|
4
4
|
export declare const simplify: (g: IGraph) => Graph<NodeData, EdgeData>;
|