@antv/layout 0.3.14 → 0.3.15
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/layout.min.js +1 -1
- package/dist/layout.min.js.map +1 -1
- package/es/layout/dagre/src/layout.js +1 -1
- package/es/layout/dagre/src/layout.js.map +1 -1
- package/es/layout/dagre/src/order/index.d.ts +1 -1
- package/es/layout/dagre/src/order/index.js +5 -5
- package/es/layout/dagre/src/order/index.js.map +1 -1
- package/es/layout/dagre/src/order/init-data-order.js +4 -1
- package/es/layout/dagre/src/order/init-data-order.js.map +1 -1
- package/es/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
- package/es/layout/dagre/src/order/sort-subgraph.js +3 -3
- package/es/layout/dagre/src/order/sort-subgraph.js.map +1 -1
- package/es/layout/dagre/src/order/sort.d.ts +1 -1
- package/es/layout/dagre/src/order/sort.js +3 -1
- package/es/layout/dagre/src/order/sort.js.map +1 -1
- package/lib/layout/dagre/src/layout.js +1 -1
- package/lib/layout/dagre/src/layout.js.map +1 -1
- package/lib/layout/dagre/src/order/index.d.ts +1 -1
- package/lib/layout/dagre/src/order/index.js +5 -5
- package/lib/layout/dagre/src/order/index.js.map +1 -1
- package/lib/layout/dagre/src/order/init-data-order.js +4 -1
- package/lib/layout/dagre/src/order/init-data-order.js.map +1 -1
- package/lib/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
- package/lib/layout/dagre/src/order/sort-subgraph.js +3 -3
- package/lib/layout/dagre/src/order/sort-subgraph.js.map +1 -1
- package/lib/layout/dagre/src/order/sort.d.ts +1 -1
- package/lib/layout/dagre/src/order/sort.js +3 -1
- package/lib/layout/dagre/src/order/sort.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/dagre/src/layout.ts +1 -1
- package/src/layout/dagre/src/order/index.ts +6 -5
- package/src/layout/dagre/src/order/init-data-order.ts +4 -1
- package/src/layout/dagre/src/order/sort-subgraph.ts +4 -3
- package/src/layout/dagre/src/order/sort.ts +2 -1
|
@@ -22,7 +22,7 @@ import { buildLayerMatrix, maxRank } from "../util";
|
|
|
22
22
|
* 1. Graph nodes will have an "order" attribute based on the results of the
|
|
23
23
|
* algorithm.
|
|
24
24
|
*/
|
|
25
|
-
const order = (g: Graph) => {
|
|
25
|
+
const order = (g: Graph, keepNodeOrder?: boolean) => {
|
|
26
26
|
const mxRank = maxRank(g);
|
|
27
27
|
const range1 = [];
|
|
28
28
|
const range2 = [];
|
|
@@ -37,7 +37,7 @@ const order = (g: Graph) => {
|
|
|
37
37
|
let bestCC = Number.POSITIVE_INFINITY;
|
|
38
38
|
let best: string[][];
|
|
39
39
|
for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
|
|
40
|
-
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);
|
|
40
|
+
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, false, keepNodeOrder);
|
|
41
41
|
|
|
42
42
|
layering = buildLayerMatrix(g);
|
|
43
43
|
const cc = crossCount(g, layering);
|
|
@@ -52,7 +52,7 @@ const order = (g: Graph) => {
|
|
|
52
52
|
layering = initOrder(g);
|
|
53
53
|
assignOrder(g, layering);
|
|
54
54
|
for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
|
|
55
|
-
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true);
|
|
55
|
+
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true, keepNodeOrder);
|
|
56
56
|
|
|
57
57
|
layering = buildLayerMatrix(g);
|
|
58
58
|
const cc = crossCount(g, layering);
|
|
@@ -78,12 +78,13 @@ const buildLayerGraphs = (
|
|
|
78
78
|
const sweepLayerGraphs = (
|
|
79
79
|
layerGraphs: Graph[],
|
|
80
80
|
biasRight: boolean,
|
|
81
|
-
usePrev?: boolean
|
|
81
|
+
usePrev?: boolean,
|
|
82
|
+
keepNodeOrder?: boolean
|
|
82
83
|
) => {
|
|
83
84
|
const cg = new Graph();
|
|
84
85
|
layerGraphs?.forEach((lg) => {
|
|
85
86
|
const root = lg.graph().root as string;
|
|
86
|
-
const sorted = sortSubgraph(lg, root, cg, biasRight, usePrev);
|
|
87
|
+
const sorted = sortSubgraph(lg, root, cg, biasRight, usePrev, keepNodeOrder);
|
|
87
88
|
for (let i = 0; i < sorted.vs?.length || 0; i++) {
|
|
88
89
|
const lnode = lg.node(sorted.vs[i]);
|
|
89
90
|
if (lnode) {
|
|
@@ -9,7 +9,10 @@ const initDataOrder = (g: Graph, nodeOrder: string[]) => {
|
|
|
9
9
|
});
|
|
10
10
|
const ranks = simpleNodes.map((v) => g.node(v)!.rank as number);
|
|
11
11
|
const maxRank = Math.max(...ranks);
|
|
12
|
-
const layers: string[][] =
|
|
12
|
+
const layers: string[][] = [];
|
|
13
|
+
for (let i = 0; i < maxRank + 1; i++) {
|
|
14
|
+
layers[i] = [];
|
|
15
|
+
}
|
|
13
16
|
|
|
14
17
|
nodeOrder?.forEach((n) => {
|
|
15
18
|
const node = g.node(n);
|
|
@@ -8,7 +8,8 @@ const sortSubgraph = (
|
|
|
8
8
|
v: string,
|
|
9
9
|
cg: Graph,
|
|
10
10
|
biasRight?: boolean,
|
|
11
|
-
usePrev?: boolean
|
|
11
|
+
usePrev?: boolean,
|
|
12
|
+
keepNodeOrder?: boolean
|
|
12
13
|
) => {
|
|
13
14
|
let movable = g.children(v);
|
|
14
15
|
// fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)
|
|
@@ -26,7 +27,7 @@ const sortSubgraph = (
|
|
|
26
27
|
const barycenters = barycenter(g, movable || []);
|
|
27
28
|
barycenters?.forEach((entry) => {
|
|
28
29
|
if (g.children(entry.v)?.length) {
|
|
29
|
-
const subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
|
|
30
|
+
const subgraphResult = sortSubgraph(g, entry.v, cg, biasRight, keepNodeOrder);
|
|
30
31
|
subgraphs[entry.v] = subgraphResult;
|
|
31
32
|
if (subgraphResult.hasOwnProperty("barycenter")) {
|
|
32
33
|
mergeBarycenters(entry, subgraphResult);
|
|
@@ -49,7 +50,7 @@ const sortSubgraph = (
|
|
|
49
50
|
}
|
|
50
51
|
});
|
|
51
52
|
|
|
52
|
-
const result = sort(entries, biasRight, usePrev);
|
|
53
|
+
const result = sort(entries, biasRight, usePrev, keepNodeOrder);
|
|
53
54
|
|
|
54
55
|
if (bl) {
|
|
55
56
|
result.vs = [bl, result.vs, br].flat();
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { partition } from "../util";
|
|
2
2
|
import { ConflictEntry } from "./resolve-conflicts";
|
|
3
3
|
|
|
4
|
-
const sort = (entries: ConflictEntry[], biasRight?: boolean, usePrev?: boolean) => {
|
|
4
|
+
const sort = (entries: ConflictEntry[], biasRight?: boolean, usePrev?: boolean, keepNodeOrder?: boolean) => {
|
|
5
5
|
const parts = partition(entries, (entry) => {
|
|
6
|
+
if (keepNodeOrder) return entry.hasOwnProperty("barycenter");
|
|
6
7
|
// NOTE: 有fixorder的也可以排
|
|
7
8
|
return (entry.hasOwnProperty("fixorder") && !isNaN(entry.fixorder!)) || entry.hasOwnProperty("barycenter");
|
|
8
9
|
});
|