@antv/layout 1.2.13 → 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 -542
- 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 -75
- 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/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 +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
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.order = void 0;
|
|
4
|
+
const graphlib_1 = require("@antv/graphlib");
|
|
5
|
+
const util_1 = require("@antv/util");
|
|
6
|
+
const util_2 = require("../util");
|
|
7
|
+
const add_subgraph_constraints_1 = require("./add-subgraph-constraints");
|
|
8
|
+
const build_layer_graph_1 = require("./build-layer-graph");
|
|
9
|
+
const cross_count_1 = require("./cross-count");
|
|
10
|
+
const init_order_1 = require("./init-order");
|
|
11
|
+
const sort_subgraph_1 = require("./sort-subgraph");
|
|
12
|
+
/*
|
|
13
|
+
* Applies heuristics to minimize edge crossings in the graph and sets the best
|
|
14
|
+
* order solution as an order attribute on each node.
|
|
15
|
+
*
|
|
16
|
+
* Pre-conditions:
|
|
17
|
+
*
|
|
18
|
+
* 1. Graph must be DAG
|
|
19
|
+
* 2. Graph nodes must be objects with a "rank" attribute
|
|
20
|
+
* 3. Graph edges must have the "weight" attribute
|
|
21
|
+
*
|
|
22
|
+
* Post-conditions:
|
|
23
|
+
*
|
|
24
|
+
* 1. Graph nodes will have an "order" attribute based on the results of the
|
|
25
|
+
* algorithm.
|
|
26
|
+
*/
|
|
27
|
+
const order = (g, keepNodeOrder) => {
|
|
28
|
+
const mxRank = (0, util_2.maxRank)(g);
|
|
29
|
+
const range1 = [];
|
|
30
|
+
const range2 = [];
|
|
31
|
+
for (let i = 1; i < mxRank + 1; i++)
|
|
32
|
+
range1.push(i);
|
|
33
|
+
for (let i = mxRank - 1; i > -1; i--)
|
|
34
|
+
range2.push(i);
|
|
35
|
+
const downLayerGraphs = buildLayerGraphs(g, range1, 'in');
|
|
36
|
+
const upLayerGraphs = buildLayerGraphs(g, range2, 'out');
|
|
37
|
+
let layering = (0, init_order_1.initOrder)(g);
|
|
38
|
+
assignOrder(g, layering);
|
|
39
|
+
let bestCC = Number.POSITIVE_INFINITY;
|
|
40
|
+
let best;
|
|
41
|
+
for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
|
|
42
|
+
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, false, keepNodeOrder);
|
|
43
|
+
layering = (0, util_2.buildLayerMatrix)(g);
|
|
44
|
+
const cc = (0, cross_count_1.crossCount)(g, layering);
|
|
45
|
+
if (cc < bestCC) {
|
|
46
|
+
lastBest = 0;
|
|
47
|
+
best = (0, util_1.clone)(layering);
|
|
48
|
+
bestCC = cc;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// consider use previous result, maybe somewhat reduendant
|
|
52
|
+
layering = (0, init_order_1.initOrder)(g);
|
|
53
|
+
assignOrder(g, layering);
|
|
54
|
+
for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
|
|
55
|
+
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true, keepNodeOrder);
|
|
56
|
+
layering = (0, util_2.buildLayerMatrix)(g);
|
|
57
|
+
const cc = (0, cross_count_1.crossCount)(g, layering);
|
|
58
|
+
if (cc < bestCC) {
|
|
59
|
+
lastBest = 0;
|
|
60
|
+
best = (0, util_1.clone)(layering);
|
|
61
|
+
bestCC = cc;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
assignOrder(g, best);
|
|
65
|
+
};
|
|
66
|
+
exports.order = order;
|
|
67
|
+
const buildLayerGraphs = (g, ranks, direction) => {
|
|
68
|
+
return ranks.map((rank) => {
|
|
69
|
+
return (0, build_layer_graph_1.buildLayerGraph)(g, rank, direction);
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const sweepLayerGraphs = (layerGraphs, biasRight, usePrev, keepNodeOrder) => {
|
|
73
|
+
const cg = new graphlib_1.Graph();
|
|
74
|
+
layerGraphs === null || layerGraphs === void 0 ? void 0 : layerGraphs.forEach((lg) => {
|
|
75
|
+
var _a;
|
|
76
|
+
// const root = lg.graph().root as string;
|
|
77
|
+
const root = lg.getRoots()[0].id;
|
|
78
|
+
const sorted = (0, sort_subgraph_1.sortSubgraph)(lg, root, cg, biasRight, usePrev, keepNodeOrder);
|
|
79
|
+
for (let i = 0; i < ((_a = sorted.vs) === null || _a === void 0 ? void 0 : _a.length) || 0; i++) {
|
|
80
|
+
const lnode = lg.getNode(sorted.vs[i]);
|
|
81
|
+
if (lnode) {
|
|
82
|
+
lnode.data.order = i;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
(0, add_subgraph_constraints_1.addSubgraphConstraints)(lg, cg, sorted.vs);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const assignOrder = (g, layering) => {
|
|
89
|
+
layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {
|
|
90
|
+
layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {
|
|
91
|
+
g.getNode(v).data.order = i;
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,qCAAmC;AAEnC,kCAAoD;AACpD,yEAAoE;AACpE,2DAAsD;AACtD,+CAA2C;AAC3C,6CAAyC;AACzC,mDAA+C;AAE/C;;;;;;;;;;;;;;GAcG;AACI,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,aAAuB,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAEzD,IAAI,QAAQ,GAAG,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC;IAC5B,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEzB,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,IAAI,IAAgB,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE;QAC3D,gBAAgB,CACd,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EACvC,CAAC,GAAG,CAAC,IAAI,CAAC,EACV,KAAK,EACL,aAAa,CACd,CAAC;QAEF,QAAQ,GAAG,IAAA,uBAAgB,EAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,EAAE,GAAG,MAAM,EAAE;YACf,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,IAAA,YAAK,EAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,GAAG,EAAE,CAAC;SACb;KACF;IAED,0DAA0D;IAC1D,QAAQ,GAAG,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC;IACxB,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE;QAC3D,gBAAgB,CACd,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EACvC,CAAC,GAAG,CAAC,IAAI,CAAC,EACV,IAAI,EACJ,aAAa,CACd,CAAC;QAEF,QAAQ,GAAG,IAAA,uBAAgB,EAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,EAAE,GAAG,MAAM,EAAE;YACf,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,IAAA,YAAK,EAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,GAAG,EAAE,CAAC;SACb;KACF;IACD,WAAW,CAAC,CAAC,EAAE,IAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AAnDW,QAAA,KAAK,SAmDhB;AAEF,MAAM,gBAAgB,GAAG,CACvB,CAAS,EACT,KAAe,EACf,SAAuB,EACvB,EAAE;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,OAAO,IAAA,mCAAe,EAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,WAAqB,EACrB,SAAkB,EAClB,OAAiB,EACjB,aAAuB,EACvB,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,gBAAK,EAAE,CAAC;IACvB,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;;QAC1B,0CAA0C;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAA,4BAAY,EACzB,EAAE,EACF,IAAI,EACJ,EAAE,EACF,SAAS,EACT,OAAO,EACP,aAAa,CACd,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAG,MAAA,MAAM,CAAC,EAAE,0CAAE,MAAM,CAAA,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aACtB;SACF;QACD,IAAA,iDAAsB,EAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,QAAgB,EAAE,EAAE;IAClD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,CAAK,EAAE,CAAS,EAAE,EAAE;YAClC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initDataOrder = void 0;
|
|
2
4
|
/**
|
|
3
5
|
* 按照数据中的结果设置fixorder
|
|
4
6
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
const initDataOrder = (g, nodeOrder) => {
|
|
8
|
+
const simpleNodes = g.getAllNodes().filter((v) => {
|
|
7
9
|
var _a;
|
|
8
10
|
return !((_a = g.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length);
|
|
9
11
|
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
for (
|
|
12
|
+
const ranks = simpleNodes.map((v) => v.data.rank);
|
|
13
|
+
const maxRank = Math.max(...ranks);
|
|
14
|
+
const layers = [];
|
|
15
|
+
for (let i = 0; i < maxRank + 1; i++) {
|
|
14
16
|
layers[i] = [];
|
|
15
17
|
}
|
|
16
|
-
nodeOrder === null || nodeOrder === void 0 ? void 0 : nodeOrder.forEach(
|
|
17
|
-
|
|
18
|
+
nodeOrder === null || nodeOrder === void 0 ? void 0 : nodeOrder.forEach((n) => {
|
|
19
|
+
const node = g.getNode(n);
|
|
18
20
|
// 只考虑原有节点,dummy节点需要按照后续算法排出
|
|
19
21
|
if (!node || node.data.dummy) {
|
|
20
22
|
return;
|
|
@@ -25,4 +27,5 @@ export var initDataOrder = function (g, nodeOrder) {
|
|
|
25
27
|
}
|
|
26
28
|
});
|
|
27
29
|
};
|
|
30
|
+
exports.initDataOrder = initDataOrder;
|
|
28
31
|
//# sourceMappingURL=init-data-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-data-order.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/init-data-order.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,CAAQ,EAAE,SAAgB,EAAE,EAAE;IAC1D,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;QAC/C,OAAO,CAAC,CAAA,MAAA,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,0CAAE,MAAM,CAAA,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KAChB;IAED,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,4BAA4B;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC5B,OAAO;SACR;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB;YACxE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initOrder = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Assigns an initial order value for each node by performing a DFS search
|
|
6
|
+
* starting from nodes in the first rank. Nodes are assigned an order in their
|
|
7
|
+
* rank as they are first visited.
|
|
8
|
+
*
|
|
9
|
+
* This approach comes from Gansner, et al., "A Technique for Drawing Directed
|
|
10
|
+
* Graphs."
|
|
11
|
+
*
|
|
12
|
+
* Returns a layering matrix with an array per layer and each layer sorted by
|
|
13
|
+
* the order of its nodes.
|
|
14
|
+
*/
|
|
15
|
+
const initOrder = (g) => {
|
|
16
|
+
const visited = {};
|
|
17
|
+
// const simpleNodes = g.getAllNodes().filter((v) => {
|
|
18
|
+
// return !g.getChildren(v.id)?.length;
|
|
19
|
+
// });
|
|
20
|
+
const simpleNodes = g.getAllNodes();
|
|
21
|
+
const nodeRanks = simpleNodes.map((v) => { var _a; return (_a = v.data.rank) !== null && _a !== void 0 ? _a : -Infinity; });
|
|
22
|
+
const maxRank = Math.max(...nodeRanks);
|
|
23
|
+
const layers = [];
|
|
24
|
+
for (let i = 0; i < maxRank + 1; i++) {
|
|
25
|
+
layers.push([]);
|
|
26
|
+
}
|
|
27
|
+
const orderedVs = simpleNodes.sort((a, b) => g.getNode(a.id).data.rank - g.getNode(b.id).data.rank);
|
|
28
|
+
// const orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v)!.rank; });
|
|
29
|
+
// 有fixOrder的,直接排序好放进去
|
|
30
|
+
const beforeSort = orderedVs.filter((n) => {
|
|
31
|
+
return g.getNode(n.id).data.fixorder !== undefined;
|
|
32
|
+
});
|
|
33
|
+
const fixOrderNodes = beforeSort.sort((a, b) => g.getNode(a.id).data.fixorder - g.getNode(b.id).data.fixorder);
|
|
34
|
+
fixOrderNodes === null || fixOrderNodes === void 0 ? void 0 : fixOrderNodes.forEach((n) => {
|
|
35
|
+
if (!isNaN(g.getNode(n.id).data.rank)) {
|
|
36
|
+
layers[g.getNode(n.id).data.rank].push(n.id);
|
|
37
|
+
}
|
|
38
|
+
visited[n.id] = true;
|
|
39
|
+
});
|
|
40
|
+
orderedVs === null || orderedVs === void 0 ? void 0 : orderedVs.forEach((n) => g.dfsTree(n.id, (node) => {
|
|
41
|
+
if (visited.hasOwnProperty(node.id))
|
|
42
|
+
return true;
|
|
43
|
+
visited[node.id] = true;
|
|
44
|
+
if (!isNaN(node.data.rank)) {
|
|
45
|
+
layers[node.data.rank].push(node.id);
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
return layers;
|
|
49
|
+
};
|
|
50
|
+
exports.initOrder = initOrder;
|
|
51
|
+
//# sourceMappingURL=init-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-order.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/init-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { Graph } from
|
|
3
|
-
export
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { Graph } from '../../types';
|
|
3
|
+
export type ConflictEntry = {
|
|
4
4
|
i: number;
|
|
5
5
|
indegree?: number;
|
|
6
6
|
in?: ConflictEntry[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Given a list of entries of the form {v, barycenter, weight} and a
|
|
3
4
|
* constraint graph this function will resolve any conflicts between the
|
|
@@ -23,39 +24,40 @@
|
|
|
23
24
|
* graph. The property `i` is the lowest original index of any of the
|
|
24
25
|
* elements in `vs`.
|
|
25
26
|
*/
|
|
26
|
-
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
const resolveConflicts = (entries, cg) => {
|
|
27
29
|
var _a, _b, _c;
|
|
28
|
-
|
|
29
|
-
entries === null || entries === void 0 ? void 0 : entries.forEach(
|
|
30
|
+
const mappedEntries = {};
|
|
31
|
+
entries === null || entries === void 0 ? void 0 : entries.forEach((entry, i) => {
|
|
30
32
|
mappedEntries[entry.v] = {
|
|
31
|
-
i
|
|
33
|
+
i,
|
|
32
34
|
indegree: 0,
|
|
33
35
|
in: [],
|
|
34
36
|
out: [],
|
|
35
37
|
vs: [entry.v],
|
|
36
38
|
};
|
|
37
|
-
|
|
39
|
+
const tmp = mappedEntries[entry.v];
|
|
38
40
|
if (entry.barycenter !== undefined) {
|
|
39
41
|
tmp.barycenter = entry.barycenter;
|
|
40
42
|
tmp.weight = entry.weight;
|
|
41
43
|
}
|
|
42
44
|
});
|
|
43
|
-
(_a = cg.getAllEdges()) === null || _a === void 0 ? void 0 : _a.forEach(
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
(_a = cg.getAllEdges()) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
46
|
+
const entryV = mappedEntries[e.source];
|
|
47
|
+
const entryW = mappedEntries[e.target];
|
|
46
48
|
if (entryV !== undefined && entryW !== undefined) {
|
|
47
49
|
entryW.indegree++;
|
|
48
50
|
entryV.out.push(mappedEntries[e.target]);
|
|
49
51
|
}
|
|
50
52
|
});
|
|
51
|
-
|
|
53
|
+
const sourceSet = (_c = (_b = Object.values(mappedEntries)).filter) === null || _c === void 0 ? void 0 : _c.call(_b, (entry) => !entry.indegree);
|
|
52
54
|
return doResolveConflicts(sourceSet);
|
|
53
55
|
};
|
|
54
|
-
|
|
56
|
+
const doResolveConflicts = (sourceSet) => {
|
|
55
57
|
var _a, _b;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return
|
|
58
|
+
const entries = [];
|
|
59
|
+
const handleIn = (vEntry) => {
|
|
60
|
+
return (uEntry) => {
|
|
59
61
|
if (uEntry.merged)
|
|
60
62
|
return;
|
|
61
63
|
if (uEntry.barycenter === undefined ||
|
|
@@ -65,33 +67,30 @@ var doResolveConflicts = function (sourceSet) {
|
|
|
65
67
|
}
|
|
66
68
|
};
|
|
67
69
|
};
|
|
68
|
-
|
|
69
|
-
return
|
|
70
|
-
wEntry[
|
|
70
|
+
const handleOut = (vEntry) => {
|
|
71
|
+
return (wEntry) => {
|
|
72
|
+
wEntry['in'].push(vEntry);
|
|
71
73
|
if (--wEntry.indegree === 0) {
|
|
72
74
|
sourceSet.push(wEntry);
|
|
73
75
|
}
|
|
74
76
|
};
|
|
75
77
|
};
|
|
76
|
-
var _loop_1 = function () {
|
|
77
|
-
var entry = sourceSet.pop();
|
|
78
|
-
entries.push(entry);
|
|
79
|
-
(_a = entry["in"].reverse()) === null || _a === void 0 ? void 0 : _a.forEach(function (e) { return handleIn(entry)(e); });
|
|
80
|
-
(_b = entry.out) === null || _b === void 0 ? void 0 : _b.forEach(function (e) { return handleOut(entry)(e); });
|
|
81
|
-
};
|
|
82
78
|
while (sourceSet === null || sourceSet === void 0 ? void 0 : sourceSet.length) {
|
|
83
|
-
|
|
79
|
+
const entry = sourceSet.pop();
|
|
80
|
+
entries.push(entry);
|
|
81
|
+
(_a = entry['in'].reverse()) === null || _a === void 0 ? void 0 : _a.forEach((e) => handleIn(entry)(e));
|
|
82
|
+
(_b = entry.out) === null || _b === void 0 ? void 0 : _b.forEach((e) => handleOut(entry)(e));
|
|
84
83
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
const filtered = entries.filter((entry) => !entry.merged);
|
|
85
|
+
const keys = [
|
|
86
|
+
'vs',
|
|
87
|
+
'i',
|
|
88
|
+
'barycenter',
|
|
89
|
+
'weight',
|
|
91
90
|
];
|
|
92
|
-
return filtered.map(
|
|
93
|
-
|
|
94
|
-
keys === null || keys === void 0 ? void 0 : keys.forEach(
|
|
91
|
+
return filtered.map((entry) => {
|
|
92
|
+
const picked = {};
|
|
93
|
+
keys === null || keys === void 0 ? void 0 : keys.forEach((key) => {
|
|
95
94
|
if (entry[key] === undefined)
|
|
96
95
|
return;
|
|
97
96
|
picked[key] = entry[key];
|
|
@@ -99,10 +98,10 @@ var doResolveConflicts = function (sourceSet) {
|
|
|
99
98
|
return picked;
|
|
100
99
|
});
|
|
101
100
|
};
|
|
102
|
-
|
|
101
|
+
const mergeEntries = (target, source) => {
|
|
103
102
|
var _a;
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
let sum = 0;
|
|
104
|
+
let weight = 0;
|
|
106
105
|
if (target.weight) {
|
|
107
106
|
sum += target.barycenter * target.weight;
|
|
108
107
|
weight += target.weight;
|
|
@@ -117,5 +116,5 @@ var mergeEntries = function (target, source) {
|
|
|
117
116
|
target.i = Math.min(source.i, target.i);
|
|
118
117
|
source.merged = true;
|
|
119
118
|
};
|
|
120
|
-
|
|
119
|
+
exports.default = resolveConflicts;
|
|
121
120
|
//# sourceMappingURL=resolve-conflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-conflicts.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/resolve-conflicts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sortSubgraph = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const barycenter_1 = require("./barycenter");
|
|
6
|
+
const resolve_conflicts_1 = tslib_1.__importDefault(require("./resolve-conflicts"));
|
|
7
|
+
const sort_1 = require("./sort");
|
|
8
|
+
const sortSubgraph = (g, v, cg, biasRight, usePrev, keepNodeOrder) => {
|
|
5
9
|
var _a, _b, _c, _d;
|
|
6
|
-
|
|
10
|
+
let movable = g.getChildren(v).map((n) => n.id);
|
|
7
11
|
// fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
const node = g.getNode(v);
|
|
13
|
+
const bl = node ? node.data.borderLeft : undefined;
|
|
14
|
+
const br = node ? node.data.borderRight : undefined;
|
|
15
|
+
const subgraphs = {};
|
|
12
16
|
if (bl) {
|
|
13
|
-
movable = movable === null || movable === void 0 ? void 0 : movable.filter(
|
|
17
|
+
movable = movable === null || movable === void 0 ? void 0 : movable.filter((w) => {
|
|
14
18
|
return w !== bl && w !== br;
|
|
15
19
|
});
|
|
16
20
|
}
|
|
17
|
-
|
|
18
|
-
barycenters === null || barycenters === void 0 ? void 0 : barycenters.forEach(
|
|
21
|
+
const barycenters = (0, barycenter_1.barycenter)(g, movable || []);
|
|
22
|
+
barycenters === null || barycenters === void 0 ? void 0 : barycenters.forEach((entry) => {
|
|
19
23
|
var _a;
|
|
20
24
|
if ((_a = g.getChildren(entry.v)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
21
|
-
|
|
25
|
+
const subgraphResult = (0, exports.sortSubgraph)(g, entry.v, cg, biasRight, keepNodeOrder);
|
|
22
26
|
subgraphs[entry.v] = subgraphResult;
|
|
23
27
|
if (subgraphResult.hasOwnProperty('barycenter')) {
|
|
24
28
|
mergeBarycenters(entry, subgraphResult);
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
});
|
|
28
|
-
|
|
32
|
+
const entries = (0, resolve_conflicts_1.default)(barycenters, cg);
|
|
29
33
|
expandSubgraphs(entries, subgraphs);
|
|
30
34
|
// 添加fixorder信息到entries里边
|
|
31
35
|
// TODO: 不考虑复合情况,只用第一个点的fixorder信息,后续考虑更完备的实现
|
|
32
36
|
(_a = entries
|
|
33
|
-
.filter(
|
|
34
|
-
|
|
37
|
+
.filter((e) => e.vs.length > 0)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
38
|
+
const node = g.getNode(e.vs[0]);
|
|
35
39
|
if (node) {
|
|
36
40
|
e.fixorder = node.data.fixorder;
|
|
37
41
|
e.order = node.data.order;
|
|
38
42
|
}
|
|
39
43
|
});
|
|
40
|
-
|
|
44
|
+
const result = (0, sort_1.sort)(entries, biasRight, usePrev, keepNodeOrder);
|
|
41
45
|
if (bl) {
|
|
42
46
|
result.vs = [bl, result.vs, br].flat();
|
|
43
47
|
if ((_b = g.getPredecessors(bl)) === null || _b === void 0 ? void 0 : _b.length) {
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
const blPred = g.getNode(((_c = g.getPredecessors(bl)) === null || _c === void 0 ? void 0 : _c[0].id) || '');
|
|
49
|
+
const brPred = g.getNode(((_d = g.getPredecessors(br)) === null || _d === void 0 ? void 0 : _d[0].id) || '');
|
|
46
50
|
if (!result.hasOwnProperty('barycenter')) {
|
|
47
51
|
result.barycenter = 0;
|
|
48
52
|
result.weight = 0;
|
|
@@ -57,10 +61,11 @@ export var sortSubgraph = function (g, v, cg, biasRight, usePrev, keepNodeOrder)
|
|
|
57
61
|
}
|
|
58
62
|
return result;
|
|
59
63
|
};
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
exports.sortSubgraph = sortSubgraph;
|
|
65
|
+
const expandSubgraphs = (entries, subgraphs) => {
|
|
66
|
+
entries === null || entries === void 0 ? void 0 : entries.forEach((entry) => {
|
|
62
67
|
var _a;
|
|
63
|
-
|
|
68
|
+
const vss = (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.map((v) => {
|
|
64
69
|
if (subgraphs[v]) {
|
|
65
70
|
return subgraphs[v].vs;
|
|
66
71
|
}
|
|
@@ -69,7 +74,7 @@ var expandSubgraphs = function (entries, subgraphs) {
|
|
|
69
74
|
entry.vs = vss.flat();
|
|
70
75
|
});
|
|
71
76
|
};
|
|
72
|
-
|
|
77
|
+
const mergeBarycenters = (target, other) => {
|
|
73
78
|
if (target.barycenter !== undefined) {
|
|
74
79
|
target.barycenter =
|
|
75
80
|
(target.barycenter * target.weight + other.barycenter * other.weight) /
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-subgraph.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/sort-subgraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { ConflictEntry } from
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { ConflictEntry } from './resolve-conflicts';
|
|
3
3
|
export declare const sort: (entries: ConflictEntry[], biasRight?: boolean, usePrev?: boolean, keepNodeOrder?: boolean) => {
|
|
4
4
|
vs: ID[];
|
|
5
5
|
barycenter?: number;
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sort = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const sort = (entries, biasRight, usePrev, keepNodeOrder) => {
|
|
6
|
+
const parts = (0, util_1.partition)(entries, (entry) => {
|
|
7
|
+
const hasFixOrder = entry.hasOwnProperty('fixorder') && !isNaN(entry.fixorder);
|
|
5
8
|
if (keepNodeOrder) {
|
|
6
|
-
return !hasFixOrder && entry.hasOwnProperty(
|
|
9
|
+
return !hasFixOrder && entry.hasOwnProperty('barycenter');
|
|
7
10
|
}
|
|
8
11
|
// NOTE: 有fixorder的也可以排
|
|
9
|
-
return hasFixOrder || entry.hasOwnProperty(
|
|
12
|
+
return hasFixOrder || entry.hasOwnProperty('barycenter');
|
|
10
13
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
const sortable = parts.lhs;
|
|
15
|
+
const unsortable = parts.rhs.sort((a, b) => -a.i - -b.i);
|
|
16
|
+
const vs = [];
|
|
17
|
+
let sum = 0;
|
|
18
|
+
let weight = 0;
|
|
19
|
+
let vsIndex = 0;
|
|
17
20
|
sortable === null || sortable === void 0 ? void 0 : sortable.sort(compareWithBias(!!biasRight, !!usePrev));
|
|
18
21
|
vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
|
|
19
|
-
sortable === null || sortable === void 0 ? void 0 : sortable.forEach(
|
|
22
|
+
sortable === null || sortable === void 0 ? void 0 : sortable.forEach((entry) => {
|
|
20
23
|
var _a;
|
|
21
24
|
vsIndex += (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.length;
|
|
22
25
|
vs.push(entry.vs);
|
|
@@ -24,7 +27,7 @@ export var sort = function (entries, biasRight, usePrev, keepNodeOrder) {
|
|
|
24
27
|
weight += entry.weight;
|
|
25
28
|
vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
|
|
26
29
|
});
|
|
27
|
-
|
|
30
|
+
const result = {
|
|
28
31
|
vs: vs.flat(),
|
|
29
32
|
};
|
|
30
33
|
if (weight) {
|
|
@@ -33,9 +36,10 @@ export var sort = function (entries, biasRight, usePrev, keepNodeOrder) {
|
|
|
33
36
|
}
|
|
34
37
|
return result;
|
|
35
38
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
exports.sort = sort;
|
|
40
|
+
const consumeUnsortable = (vs, unsortable, index) => {
|
|
41
|
+
let iindex = index;
|
|
42
|
+
let last;
|
|
39
43
|
while (unsortable.length &&
|
|
40
44
|
(last = unsortable[unsortable.length - 1]).i <= iindex) {
|
|
41
45
|
unsortable.pop();
|
|
@@ -47,8 +51,8 @@ var consumeUnsortable = function (vs, unsortable, index) {
|
|
|
47
51
|
/**
|
|
48
52
|
* 配置是否考虑使用之前的布局结果
|
|
49
53
|
*/
|
|
50
|
-
|
|
51
|
-
return
|
|
54
|
+
const compareWithBias = (bias, usePrev) => {
|
|
55
|
+
return (entryV, entryW) => {
|
|
52
56
|
// 排序的时候先判断fixorder,不行再判断重心
|
|
53
57
|
if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {
|
|
54
58
|
return entryV.fixorder - entryW.fixorder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/sort.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parentDummyChains = void 0;
|
|
1
4
|
// deep first search with both order low for pre, lim for post
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
g.getChildren(v).forEach(
|
|
8
|
-
result[v] = { low
|
|
5
|
+
const dfsBothOrder = (g) => {
|
|
6
|
+
const result = {};
|
|
7
|
+
let lim = 0;
|
|
8
|
+
const dfs = (v) => {
|
|
9
|
+
const low = lim;
|
|
10
|
+
g.getChildren(v).forEach((n) => dfs(n.id));
|
|
11
|
+
result[v] = { low, lim: lim++ };
|
|
9
12
|
};
|
|
10
|
-
g.getRoots().forEach(
|
|
13
|
+
g.getRoots().forEach((n) => dfs(n.id));
|
|
11
14
|
return result;
|
|
12
15
|
};
|
|
13
16
|
// Find a path from v to w through the lowest common ancestor (LCA). Return the
|
|
14
17
|
// full path and the LCA.
|
|
15
|
-
|
|
18
|
+
const findPath = (g, postorderNums, v, w) => {
|
|
16
19
|
var _a, _b;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const vPath = [];
|
|
21
|
+
const wPath = [];
|
|
22
|
+
const low = Math.min(postorderNums[v].low, postorderNums[w].low);
|
|
23
|
+
const lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
|
|
24
|
+
let parent;
|
|
25
|
+
let lca;
|
|
23
26
|
// Traverse up from v to find the LCA
|
|
24
27
|
parent = v;
|
|
25
28
|
do {
|
|
@@ -34,23 +37,23 @@ var findPath = function (g, postorderNums, v, w) {
|
|
|
34
37
|
wPath.push(parent);
|
|
35
38
|
parent = (_b = g.getParent(parent)) === null || _b === void 0 ? void 0 : _b.id;
|
|
36
39
|
}
|
|
37
|
-
return { lca
|
|
40
|
+
return { lca, path: vPath.concat(wPath.reverse()) };
|
|
38
41
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
dummyChains.forEach(
|
|
42
|
+
const parentDummyChains = (g, dummyChains) => {
|
|
43
|
+
const postorderNums = dfsBothOrder(g);
|
|
44
|
+
dummyChains.forEach((startV) => {
|
|
42
45
|
var _a, _b;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
let v = startV;
|
|
47
|
+
let node = g.getNode(v);
|
|
48
|
+
const originalEdge = node.data.originalEdge;
|
|
46
49
|
if (!originalEdge)
|
|
47
50
|
return;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
const pathData = findPath(g, postorderNums, originalEdge.source, originalEdge.target);
|
|
52
|
+
const path = pathData.path;
|
|
53
|
+
const lca = pathData.lca;
|
|
54
|
+
let pathIdx = 0;
|
|
55
|
+
let pathV = path[pathIdx];
|
|
56
|
+
let ascending = true;
|
|
54
57
|
while (v !== originalEdge.target) {
|
|
55
58
|
node = g.getNode(v);
|
|
56
59
|
if (ascending) {
|
|
@@ -77,4 +80,5 @@ export var parentDummyChains = function (g, dummyChains) {
|
|
|
77
80
|
}
|
|
78
81
|
});
|
|
79
82
|
};
|
|
83
|
+
exports.parentDummyChains = parentDummyChains;
|
|
80
84
|
//# sourceMappingURL=parent-dummy-chains.js.map
|