@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.
Files changed (34) hide show
  1. package/dist/layout.min.js +1 -1
  2. package/dist/layout.min.js.map +1 -1
  3. package/es/layout/dagre/src/layout.js +1 -1
  4. package/es/layout/dagre/src/layout.js.map +1 -1
  5. package/es/layout/dagre/src/order/index.d.ts +1 -1
  6. package/es/layout/dagre/src/order/index.js +5 -5
  7. package/es/layout/dagre/src/order/index.js.map +1 -1
  8. package/es/layout/dagre/src/order/init-data-order.js +4 -1
  9. package/es/layout/dagre/src/order/init-data-order.js.map +1 -1
  10. package/es/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
  11. package/es/layout/dagre/src/order/sort-subgraph.js +3 -3
  12. package/es/layout/dagre/src/order/sort-subgraph.js.map +1 -1
  13. package/es/layout/dagre/src/order/sort.d.ts +1 -1
  14. package/es/layout/dagre/src/order/sort.js +3 -1
  15. package/es/layout/dagre/src/order/sort.js.map +1 -1
  16. package/lib/layout/dagre/src/layout.js +1 -1
  17. package/lib/layout/dagre/src/layout.js.map +1 -1
  18. package/lib/layout/dagre/src/order/index.d.ts +1 -1
  19. package/lib/layout/dagre/src/order/index.js +5 -5
  20. package/lib/layout/dagre/src/order/index.js.map +1 -1
  21. package/lib/layout/dagre/src/order/init-data-order.js +4 -1
  22. package/lib/layout/dagre/src/order/init-data-order.js.map +1 -1
  23. package/lib/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
  24. package/lib/layout/dagre/src/order/sort-subgraph.js +3 -3
  25. package/lib/layout/dagre/src/order/sort-subgraph.js.map +1 -1
  26. package/lib/layout/dagre/src/order/sort.d.ts +1 -1
  27. package/lib/layout/dagre/src/order/sort.js +3 -1
  28. package/lib/layout/dagre/src/order/sort.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/layout/dagre/src/layout.ts +1 -1
  31. package/src/layout/dagre/src/order/index.ts +6 -5
  32. package/src/layout/dagre/src/order/init-data-order.ts +4 -1
  33. package/src/layout/dagre/src/order/sort-subgraph.ts +4 -3
  34. 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[][] = Array(maxRank + 1).fill([]);
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
  });