@antv/layout 0.3.0-beta.5 → 0.3.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/layout.min.js +1 -1
- package/dist/layout.min.js.LICENSE.txt +2 -0
- package/dist/layout.min.js.map +1 -1
- package/es/layout/dagre/src/layout.js +0 -2
- package/es/layout/dagre/src/layout.js.map +1 -1
- package/es/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
- package/es/layout/dagre/src/order/sort.d.ts +1 -1
- package/es/layout/dagre/src/position/bk.d.ts +5 -5
- package/es/layout/dagre/src/position/bk.js +1 -2
- package/es/layout/dagre/src/position/bk.js.map +1 -1
- package/es/layout/dagre/src/util.d.ts +1 -1
- package/es/layout/force2/index.js +6 -1
- package/es/layout/force2/index.js.map +1 -1
- package/es/layout/forceAtlas2/index.js +2 -0
- package/es/layout/forceAtlas2/index.js.map +1 -1
- package/es/layout/grid.js +14 -4
- package/es/layout/grid.js.map +1 -1
- package/es/layout/types.d.ts +2 -0
- package/es/util/gpu.d.ts +1 -1
- package/es/util/gpu.js +7 -4
- package/es/util/gpu.js.map +1 -1
- package/lib/layout/dagre/src/layout.js +0 -2
- package/lib/layout/dagre/src/layout.js.map +1 -1
- package/lib/layout/dagre/src/order/sort-subgraph.d.ts +1 -1
- package/lib/layout/dagre/src/order/sort.d.ts +1 -1
- package/lib/layout/dagre/src/position/bk.d.ts +5 -5
- package/lib/layout/dagre/src/position/bk.js +1 -2
- package/lib/layout/dagre/src/position/bk.js.map +1 -1
- package/lib/layout/dagre/src/util.d.ts +1 -1
- package/lib/layout/force2/index.js +6 -1
- package/lib/layout/force2/index.js.map +1 -1
- package/lib/layout/forceAtlas2/index.js +2 -0
- package/lib/layout/forceAtlas2/index.js.map +1 -1
- package/lib/layout/grid.js +13 -3
- package/lib/layout/grid.js.map +1 -1
- package/lib/layout/types.d.ts +2 -0
- package/lib/util/gpu.d.ts +1 -1
- package/lib/util/gpu.js +7 -4
- package/lib/util/gpu.js.map +1 -1
- package/package.json +3 -3
- package/src/layout/dagre/src/layout.ts +0 -1
- package/src/layout/dagre/src/position/bk.ts +1 -2
- package/src/layout/force2/index.ts +18 -15
- package/src/layout/forceAtlas2/index.ts +1 -1
- package/src/layout/grid.ts +15 -4
- package/src/layout/types.ts +2 -0
- package/src/util/gpu.ts +9 -6
package/lib/util/gpu.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { OutNode, Edge } from '../layout/types';
|
|
|
5
5
|
* @param {number} defaultV 返回函数的默认返回值
|
|
6
6
|
* @return {Function} 转换后的函数
|
|
7
7
|
*/
|
|
8
|
-
export declare const proccessToFunc: (value: number | Function | undefined, defaultV?: number
|
|
8
|
+
export declare const proccessToFunc: (value: number | Function | undefined, defaultV?: number) => (d?: any) => number;
|
|
9
9
|
/**
|
|
10
10
|
* 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数
|
|
11
11
|
* @param {NodeConfig[]} nodes 需要被转换的值
|
package/lib/util/gpu.js
CHANGED
|
@@ -51,17 +51,20 @@ var buildTextureData = function (nodes, edges) {
|
|
|
51
51
|
var e = edges[i];
|
|
52
52
|
var source = (0, math_1.getEdgeTerminal)(e, 'source');
|
|
53
53
|
var target = (0, math_1.getEdgeTerminal)(e, 'target');
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if (!isNaN(mapIdPos[source]) && !isNaN(mapIdPos[target])) {
|
|
55
|
+
nodeDict[mapIdPos[source]].push(mapIdPos[target]);
|
|
56
|
+
nodeDict[mapIdPos[target]].push(mapIdPos[source]);
|
|
57
|
+
}
|
|
56
58
|
}
|
|
57
59
|
var maxEdgePerVetex = 0;
|
|
58
60
|
for (i = 0; i < nodes.length; i++) {
|
|
59
61
|
var offset = dataArray.length;
|
|
60
62
|
var dests = nodeDict[i];
|
|
61
63
|
var len = dests.length;
|
|
64
|
+
console.log('dests', dests, len);
|
|
62
65
|
dataArray[i * 4 + 2] = offset;
|
|
63
|
-
dataArray[i * 4 + 3] =
|
|
64
|
-
maxEdgePerVetex = Math.max(maxEdgePerVetex,
|
|
66
|
+
dataArray[i * 4 + 3] = len;
|
|
67
|
+
maxEdgePerVetex = Math.max(maxEdgePerVetex, len);
|
|
65
68
|
for (var j = 0; j < len; ++j) {
|
|
66
69
|
var dest = dests[j];
|
|
67
70
|
dataArray.push(+dest);
|
package/lib/util/gpu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../src/util/gpu.ts"],"names":[],"mappings":";;;AACA,uBAA8B;AAC9B,+BAAyC;AAGzC;;;;;GAKG;AACI,IAAM,cAAc,GAAG,UAAC,KAAoC,EAAE,QAAiB;IACpF,IAAI,IAAI,CAAC;IACT,IAAI,CAAC,KAAK,EAAE;QACR,IAAI,GAAG;YACH,OAAO,QAAQ,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;KACL;SAAM,IAAI,IAAA,WAAQ,EAAC,KAAK,CAAC,EAAE;QACxB,IAAI,GAAG;YACH,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;KACL;SAAM;QACH,IAAI,GAAG,KAAK,CAAC;KAChB;IACD,OAAO,IAA6B,CAAC;AACvC,CAAC,CAAC;AAdW,QAAA,cAAc,kBAczB;AAEF;;;;;GAKG;AACI,IAAM,gBAAgB,GAAG,UAAC,KAAgB,EAAE,KAAa;IAI9D,IAAM,SAAS,GAAG,EAAE,CAAC;IACrB,IAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,IAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnB;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../src/util/gpu.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/layout",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "graph layout algorithm",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@antv/g-webgpu": "0.5.5",
|
|
47
47
|
"@antv/graphlib": "^1.0.0",
|
|
48
48
|
"d3-force": "^2.1.1",
|
|
49
|
-
"d3-quadtree": "^
|
|
49
|
+
"d3-quadtree": "^2.0.0",
|
|
50
50
|
"dagre-compound": "^0.0.11",
|
|
51
51
|
"ml-matrix": "^6.5.0"
|
|
52
52
|
},
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@types/d3-force": "^2.1.0",
|
|
61
61
|
"@types/graphlib": "^2.1.8",
|
|
62
62
|
"@types/jest": "^25.2.1",
|
|
63
|
-
"@types/d3-quadtree": "^
|
|
63
|
+
"@types/d3-quadtree": "^2.0.0",
|
|
64
64
|
"babel-jest": "*",
|
|
65
65
|
"babel-loader": "^8.2.2",
|
|
66
66
|
"eslint": "^7.11.0",
|
|
@@ -294,7 +294,6 @@ const makeSpaceForEdgeLabels = (g: Graph) => {
|
|
|
294
294
|
const node = g.node(n)!;
|
|
295
295
|
if (!isNaN(node.layer as any)) {
|
|
296
296
|
if (!node.layer) node.layer = 0;
|
|
297
|
-
else node.layer *= 2; // TODO: 因为默认的rank变为两倍,设定的layer也*2
|
|
298
297
|
}
|
|
299
298
|
});
|
|
300
299
|
g.edges().forEach((e) => {
|
|
@@ -391,8 +391,7 @@ export const balance = (
|
|
|
391
391
|
result[key] = xss[align.toLowerCase()][key];
|
|
392
392
|
} else {
|
|
393
393
|
const values = Object.values(xss).map((x) => x[key]);
|
|
394
|
-
|
|
395
|
-
result[key] = (xs[1] + xs[2]) / 2;
|
|
394
|
+
result[key] = (values[0] + values[1]) / 2; // (ur + ul) / 2
|
|
396
395
|
}
|
|
397
396
|
});
|
|
398
397
|
return result;
|
|
@@ -126,7 +126,7 @@ export class Force2Layout extends Base {
|
|
|
126
126
|
public distanceThresholdMode: 'mean' | 'max' | 'min' = 'mean';
|
|
127
127
|
|
|
128
128
|
/** 每次迭代结束的回调函数 */
|
|
129
|
-
public tick: (() => void) | null = () => {};
|
|
129
|
+
public tick: (() => void) | null = () => { };
|
|
130
130
|
|
|
131
131
|
/** 是否允许每次迭代结束调用回调函数 */
|
|
132
132
|
public enableTick: boolean;
|
|
@@ -158,7 +158,7 @@ export class Force2Layout extends Base {
|
|
|
158
158
|
|
|
159
159
|
/** 迭代中的标识 */
|
|
160
160
|
private timeInterval: number;
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
/** 与 minMovement 进行对比的判断停止迭代节点移动距离 */
|
|
163
163
|
private judgingDistance: number;
|
|
164
164
|
|
|
@@ -178,7 +178,8 @@ export class Force2Layout extends Base {
|
|
|
178
178
|
};
|
|
179
179
|
},
|
|
180
180
|
};
|
|
181
|
-
|
|
181
|
+
const { getMass } = options;
|
|
182
|
+
this.propsGetMass = getMass;
|
|
182
183
|
this.updateCfg(options);
|
|
183
184
|
}
|
|
184
185
|
|
|
@@ -193,7 +194,7 @@ export class Force2Layout extends Base {
|
|
|
193
194
|
// 如果传入了需要叶子节点聚类
|
|
194
195
|
if (leafCluster) {
|
|
195
196
|
sameTypeLeafMap = this.getSameTypeLeafMap() || {};
|
|
196
|
-
const relativeNodesType = Array.from(new Set(nodes?.map(node => node[nodeClusterBy])))|| [];
|
|
197
|
+
const relativeNodesType = Array.from(new Set(nodes?.map(node => node[nodeClusterBy]))) || [];
|
|
197
198
|
centripetalOptions = {
|
|
198
199
|
single: 100,
|
|
199
200
|
leaf: (node, nodes, edges) => {
|
|
@@ -298,7 +299,7 @@ export class Force2Layout extends Base {
|
|
|
298
299
|
const self = this;
|
|
299
300
|
self.stop();
|
|
300
301
|
const { nodes, edges, defSpringLen } = self;
|
|
301
|
-
|
|
302
|
+
|
|
302
303
|
self.judgingDistance = 0;
|
|
303
304
|
|
|
304
305
|
if (!nodes || nodes.length === 0) {
|
|
@@ -324,7 +325,9 @@ export class Force2Layout extends Base {
|
|
|
324
325
|
return;
|
|
325
326
|
}
|
|
326
327
|
self.degreesMap = getDegreeMap(nodes, edges);
|
|
327
|
-
if (
|
|
328
|
+
if (self.propsGetMass) {
|
|
329
|
+
self.getMass = self.propsGetMass;
|
|
330
|
+
} else {
|
|
328
331
|
self.getMass = (d) => {
|
|
329
332
|
let massWeight = 1;
|
|
330
333
|
if (isNumber(d.mass)) massWeight = d.mass;
|
|
@@ -352,7 +355,7 @@ export class Force2Layout extends Base {
|
|
|
352
355
|
if (d.size) {
|
|
353
356
|
if (isArray(d.size)) {
|
|
354
357
|
return Math.max(d.size[0], d.size[1]) + nodeSpacingFunc(d);
|
|
355
|
-
}
|
|
358
|
+
} if (isObject(d.size)) {
|
|
356
359
|
return Math.max(d.size.width, d.size.height) + nodeSpacingFunc(d);
|
|
357
360
|
}
|
|
358
361
|
return (d.size as number) + nodeSpacingFunc(d);
|
|
@@ -418,7 +421,7 @@ export class Force2Layout extends Base {
|
|
|
418
421
|
source: sourceNode,
|
|
419
422
|
target: targetNode
|
|
420
423
|
},
|
|
421
|
-
sourceNode,
|
|
424
|
+
sourceNode,
|
|
422
425
|
targetNode
|
|
423
426
|
) : self.linkDistance(edge, sourceNode, targetNode) || 1 + ((nodeSize(sourceNode) + nodeSize(sourceNode)) || 0) / 2
|
|
424
427
|
})
|
|
@@ -427,7 +430,7 @@ export class Force2Layout extends Base {
|
|
|
427
430
|
|
|
428
431
|
this.getCentripetalOptions();
|
|
429
432
|
|
|
430
|
-
self.onLayoutEnd = self.onLayoutEnd || (() => {});
|
|
433
|
+
self.onLayoutEnd = self.onLayoutEnd || (() => { });
|
|
431
434
|
|
|
432
435
|
self.run();
|
|
433
436
|
}
|
|
@@ -448,7 +451,7 @@ export class Force2Layout extends Base {
|
|
|
448
451
|
const silence = !animate;
|
|
449
452
|
if (workerEnabled || silence) {
|
|
450
453
|
let usedIter = 0;
|
|
451
|
-
for (let i = 0; (self.judgingDistance > minMovement || i < 1) &&
|
|
454
|
+
for (let i = 0; (self.judgingDistance > minMovement || i < 1) && i < maxIter; i++) {
|
|
452
455
|
usedIter = i;
|
|
453
456
|
self.runOneStep(i, velArray);
|
|
454
457
|
}
|
|
@@ -498,7 +501,7 @@ export class Force2Layout extends Base {
|
|
|
498
501
|
const vx = accArray[2 * i];
|
|
499
502
|
const vy = accArray[2 * i + 1];
|
|
500
503
|
const speed2 = vx * vx + vy * vy;
|
|
501
|
-
const { mass = 1} = nodeMap[node.id].data.layout.force;
|
|
504
|
+
const { mass = 1 } = nodeMap[node.id].data.layout.force;
|
|
502
505
|
energy += mass * speed2 * 0.5; // p = 1/2*(mv^2)
|
|
503
506
|
});
|
|
504
507
|
|
|
@@ -586,7 +589,7 @@ export class Force2Layout extends Base {
|
|
|
586
589
|
|
|
587
590
|
if (centripetalOptions) {
|
|
588
591
|
const { leaf, single, others, center: centriCenter } = centripetalOptions;
|
|
589
|
-
const { x: centriX, y: centriY, centerStrength } = centriCenter?.(node, nodes, edges, width, height) || { x: 0, y: 0, centerStrength: 0};
|
|
592
|
+
const { x: centriX, y: centriY, centerStrength } = centriCenter?.(node, nodes, edges, width, height) || { x: 0, y: 0, centerStrength: 0 };
|
|
590
593
|
if (!isNumber(centriX) || !isNumber(centriY)) continue;
|
|
591
594
|
const vx = (node.x - centriX) / mass;
|
|
592
595
|
const vy = (node.y - centriY) / mass;
|
|
@@ -603,7 +606,7 @@ export class Force2Layout extends Base {
|
|
|
603
606
|
accArray[idx + 1] -= singleStrength * vy;
|
|
604
607
|
continue;
|
|
605
608
|
}
|
|
606
|
-
|
|
609
|
+
|
|
607
610
|
// 没有出度或没有入度,都认为是叶子节点
|
|
608
611
|
if (inDegree === 0 || outDegree === 0) {
|
|
609
612
|
const leafStrength = leaf(node, nodes, edges);
|
|
@@ -677,7 +680,7 @@ export class Force2Layout extends Base {
|
|
|
677
680
|
node.x = node.fx;
|
|
678
681
|
node.y = node.fy;
|
|
679
682
|
mappedNode.x = node.x;
|
|
680
|
-
mappedNode.y = node.y;
|
|
683
|
+
mappedNode.y = node.y;
|
|
681
684
|
return;
|
|
682
685
|
}
|
|
683
686
|
const distX = velArray[2 * i] * stepInterval;
|
|
@@ -685,7 +688,7 @@ export class Force2Layout extends Base {
|
|
|
685
688
|
node.x += distX;
|
|
686
689
|
node.y += distY;
|
|
687
690
|
mappedNode.x = node.x;
|
|
688
|
-
mappedNode.y = node.y;
|
|
691
|
+
mappedNode.y = node.y;
|
|
689
692
|
|
|
690
693
|
const distanceMagnitude = Math.sqrt(distX * distX + distY * distY);
|
|
691
694
|
switch (distanceThresholdMode) {
|
|
@@ -538,8 +538,8 @@ export class ForceAtlas2Layout extends Base {
|
|
|
538
538
|
}
|
|
539
539
|
// update the node positions
|
|
540
540
|
for (let i = 0; i < nodeNum; i += 1) {
|
|
541
|
-
|
|
542
541
|
if (prune && (degrees[i] <= 1)) continue;
|
|
542
|
+
if (isNumber(nodes[i].fx) && isNumber(nodes[i].fy)) continue;
|
|
543
543
|
|
|
544
544
|
let sn = ks * sg / (1 + sg * Math.sqrt(swgns[i]));
|
|
545
545
|
let absForce = Math.hypot(forces[2 * i], forces[2 * i + 1]);
|
package/src/layout/grid.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* this algorithm refers to <cytoscape.js> - https://github.com/cytoscape/cytoscape.js/
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { isString, getDegree, isNaN, getFuncByUnknownType } from "../util";
|
|
7
|
+
import { isString, getDegree, isNaN, getFuncByUnknownType, isArray } from "../util";
|
|
8
8
|
import { Base } from "./base";
|
|
9
9
|
import {
|
|
10
10
|
OutNode,
|
|
@@ -239,12 +239,23 @@ export class GridLayout extends Base {
|
|
|
239
239
|
node.y = 0;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
const
|
|
242
|
+
const res = nodeSize(node) || 30;
|
|
243
|
+
|
|
244
|
+
let nodeW;
|
|
245
|
+
let nodeH;
|
|
246
|
+
|
|
247
|
+
if (isArray(res)) {
|
|
248
|
+
nodeW = res[0];
|
|
249
|
+
nodeH = res[1];
|
|
250
|
+
} else {
|
|
251
|
+
nodeW = res;
|
|
252
|
+
nodeH = res;
|
|
253
|
+
}
|
|
243
254
|
|
|
244
255
|
const p = nodeSpacing !== undefined ? nodeSpacing(node) : preventOverlapPadding;
|
|
245
256
|
|
|
246
|
-
const w =
|
|
247
|
-
const h =
|
|
257
|
+
const w = nodeW + p;
|
|
258
|
+
const h = nodeH + p;
|
|
248
259
|
|
|
249
260
|
self.cellWidth = Math.max(self.cellWidth, w);
|
|
250
261
|
self.cellHeight = Math.max(self.cellHeight, h);
|
package/src/layout/types.ts
CHANGED
package/src/util/gpu.ts
CHANGED
|
@@ -52,8 +52,10 @@ export const buildTextureData = (nodes: OutNode[], edges: Edge[]): {
|
|
|
52
52
|
const e = edges[i];
|
|
53
53
|
const source = getEdgeTerminal(e, 'source');
|
|
54
54
|
const target = getEdgeTerminal(e, 'target');
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
if (!isNaN(mapIdPos[source]) && !isNaN(mapIdPos[target])) {
|
|
56
|
+
nodeDict[mapIdPos[source]].push(mapIdPos[target]);
|
|
57
|
+
nodeDict[mapIdPos[target]].push(mapIdPos[source]);
|
|
58
|
+
}
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
let maxEdgePerVetex = 0;
|
|
@@ -61,12 +63,13 @@ export const buildTextureData = (nodes: OutNode[], edges: Edge[]): {
|
|
|
61
63
|
const offset: number = dataArray.length;
|
|
62
64
|
const dests = nodeDict[i];
|
|
63
65
|
const len = dests.length;
|
|
66
|
+
console.log('dests', dests, len)
|
|
64
67
|
dataArray[i * 4 + 2] = offset;
|
|
65
|
-
dataArray[i * 4 + 3] =
|
|
66
|
-
maxEdgePerVetex = Math.max(maxEdgePerVetex,
|
|
68
|
+
dataArray[i * 4 + 3] = len;
|
|
69
|
+
maxEdgePerVetex = Math.max(maxEdgePerVetex, len);
|
|
67
70
|
for (let j = 0; j < len; ++j) {
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
const dest = dests[j];
|
|
72
|
+
dataArray.push(+dest);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
|