@antv/layout 0.3.2 → 0.3.4
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/position/index.js +1 -1
- package/es/layout/dagre/src/position/index.js.map +1 -1
- package/es/layout/dagre/src/rank/util.js +4 -0
- package/es/layout/dagre/src/rank/util.js.map +1 -1
- package/es/layout/force2/ForceNBody.js +1 -1
- package/es/layout/force2/ForceNBody.js.map +1 -1
- package/es/layout/force2/index.js +9 -11
- package/es/layout/force2/index.js.map +1 -1
- package/es/layout/gForce.js +1 -1
- package/es/layout/gpu/gForce.js +1 -1
- package/es/layout/gpu/gForce.js.map +1 -1
- package/es/layout/layout.d.ts +12 -1
- package/es/layout/layout.js +30 -0
- package/es/layout/layout.js.map +1 -1
- package/es/util/math.js +13 -13
- package/es/util/math.js.map +1 -1
- package/lib/layout/dagre/src/position/index.js +10 -1
- package/lib/layout/dagre/src/position/index.js.map +1 -1
- package/lib/layout/dagre/src/rank/util.js +4 -0
- package/lib/layout/dagre/src/rank/util.js.map +1 -1
- package/lib/layout/force2/ForceNBody.js.map +1 -1
- package/lib/layout/force2/index.js +1 -3
- package/lib/layout/force2/index.js.map +1 -1
- package/lib/layout/gForce.js +1 -1
- package/lib/layout/gpu/gForce.js.map +1 -1
- package/lib/layout/layout.d.ts +12 -1
- package/lib/layout/layout.js +30 -0
- package/lib/layout/layout.js.map +1 -1
- package/lib/util/math.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/dagre/src/position/index.ts +1 -1
- package/src/layout/dagre/src/rank/util.ts +4 -0
- package/src/layout/force2/ForceNBody.ts +2 -2
- package/src/layout/force2/index.ts +16 -16
- package/src/layout/gForce.ts +2 -2
- package/src/layout/gpu/gForce.ts +1 -1
- package/src/layout/layout.ts +34 -1
- package/src/layout/types.ts +1 -1
- package/src/util/math.ts +19 -19
package/src/util/math.ts
CHANGED
|
@@ -35,14 +35,14 @@ export const getDegree = (n: number, nodeIdxMap: IndexMap, edges: Edge[] | null)
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
export const getDegreeMap = (nodes: Node[], edges: Edge[] | null) => {
|
|
38
|
-
const degreesMap: { [id: string]: Degree } = {}
|
|
39
|
-
nodes.forEach(node => {
|
|
38
|
+
const degreesMap: { [id: string]: Degree } = {};
|
|
39
|
+
nodes.forEach((node) => {
|
|
40
40
|
degreesMap[node.id] = {
|
|
41
41
|
in: 0,
|
|
42
42
|
out: 0,
|
|
43
43
|
all: 0
|
|
44
|
-
}
|
|
45
|
-
})
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
46
|
|
|
47
47
|
if (!edges) return degreesMap;
|
|
48
48
|
edges.forEach((e) => {
|
|
@@ -193,8 +193,8 @@ export const findMinMaxNodeXY = (nodes: OutNode[]) => {
|
|
|
193
193
|
* @returns 平局内置
|
|
194
194
|
*/
|
|
195
195
|
export const getAvgNodePosition = (nodes: OutNode[]) => {
|
|
196
|
-
|
|
197
|
-
nodes.forEach(node => {
|
|
196
|
+
const totalNodes = { x: 0, y: 0 };
|
|
197
|
+
nodes.forEach((node) => {
|
|
198
198
|
totalNodes.x += node.x || 0;
|
|
199
199
|
totalNodes.y += node.y || 0;
|
|
200
200
|
});
|
|
@@ -209,26 +209,26 @@ export const getAvgNodePosition = (nodes: OutNode[]) => {
|
|
|
209
209
|
// 找出指定节点关联的边的起点或终点
|
|
210
210
|
const getCoreNode = (type: 'source' | 'target', node: Node, edges: Edge[]) => {
|
|
211
211
|
if (type === 'source') {
|
|
212
|
-
return (edges?.find(edge => edge.target === node.id)?.source || {}) as Node;
|
|
212
|
+
return (edges?.find((edge) => edge.target === node.id)?.source || {}) as Node;
|
|
213
213
|
}
|
|
214
|
-
return (edges?.find(edge => edge.source === node.id)?.target || {}) as Node;
|
|
214
|
+
return (edges?.find((edge) => edge.source === node.id)?.target || {}) as Node;
|
|
215
215
|
};
|
|
216
216
|
|
|
217
217
|
// 找出指定节点为起点或终点的所有一度叶子节点
|
|
218
218
|
const getRelativeNodeIds = (type: 'source' | 'target' | 'both', coreNode: Node, edges: Edge[]) => {
|
|
219
|
-
let relativeNodes: string[] = []
|
|
219
|
+
let relativeNodes: string[] = [];
|
|
220
220
|
switch (type) {
|
|
221
221
|
case 'source':
|
|
222
|
-
relativeNodes = edges?.filter(edge => edge.source === coreNode.id).map(edge => edge.target);
|
|
222
|
+
relativeNodes = edges?.filter((edge) => edge.source === coreNode.id).map((edge) => edge.target);
|
|
223
223
|
break;
|
|
224
224
|
case 'target':
|
|
225
|
-
relativeNodes = edges?.filter(edge => edge.target === coreNode.id).map(edge => edge.source);
|
|
225
|
+
relativeNodes = edges?.filter((edge) => edge.target === coreNode.id).map((edge) => edge.source);
|
|
226
226
|
break;
|
|
227
227
|
case 'both':
|
|
228
228
|
relativeNodes = edges
|
|
229
|
-
?.filter(edge => edge.source === coreNode.id)
|
|
230
|
-
.map(edge => edge.target)
|
|
231
|
-
.concat(edges?.filter(edge => edge.target === coreNode.id).map(edge => edge.source));
|
|
229
|
+
?.filter((edge) => edge.source === coreNode.id)
|
|
230
|
+
.map((edge) => edge.target)
|
|
231
|
+
.concat(edges?.filter((edge) => edge.target === coreNode.id).map((edge) => edge.source));
|
|
232
232
|
break;
|
|
233
233
|
default:
|
|
234
234
|
break;
|
|
@@ -242,9 +242,9 @@ const getSameTypeNodes = (type: 'leaf' | 'all', nodeClusterBy: string, node: Nod
|
|
|
242
242
|
// @ts-ignore
|
|
243
243
|
const typeName = node[nodeClusterBy] || '';
|
|
244
244
|
// @ts-ignore
|
|
245
|
-
let sameTypeNodes = relativeNodes?.filter(item => item[nodeClusterBy] === typeName) || [];
|
|
245
|
+
let sameTypeNodes = relativeNodes?.filter((item) => item[nodeClusterBy] === typeName) || [];
|
|
246
246
|
if (type === 'leaf') {
|
|
247
|
-
sameTypeNodes = sameTypeNodes.filter(node => degreesMap[node.id]?.in === 0 ||degreesMap[node.id]?.out === 0);
|
|
247
|
+
sameTypeNodes = sameTypeNodes.filter((node) => degreesMap[node.id]?.in === 0 ||degreesMap[node.id]?.out === 0);
|
|
248
248
|
}
|
|
249
249
|
return sameTypeNodes;
|
|
250
250
|
};
|
|
@@ -258,14 +258,14 @@ export const getCoreNodeAndRelativeLeafNodes = (type: 'leaf' | 'all', node: Node
|
|
|
258
258
|
if (inDegree === 0) {
|
|
259
259
|
// 如果为没有出边的叶子节点,则找出与它关联的边的起点出发的所有一度节点
|
|
260
260
|
coreNode = getCoreNode('source', node, edges);
|
|
261
|
-
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map(nodeId => nodeMap[nodeId]);
|
|
261
|
+
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map((nodeId) => nodeMap[nodeId]);
|
|
262
262
|
} else if (outDegree === 0) {
|
|
263
263
|
// 如果为没有入边边的叶子节点,则找出与它关联的边的起点出发的所有一度节点
|
|
264
264
|
coreNode = getCoreNode('target', node, edges);
|
|
265
|
-
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map(nodeId => nodeMap[nodeId]);
|
|
265
|
+
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map((nodeId) => nodeMap[nodeId]);
|
|
266
266
|
}
|
|
267
267
|
relativeLeafNodes = relativeLeafNodes.filter(
|
|
268
|
-
node => degreesMap[node.id] && (degreesMap[node.id].in === 0 || degreesMap[node.id].out === 0),
|
|
268
|
+
(node) => degreesMap[node.id] && (degreesMap[node.id].in === 0 || degreesMap[node.id].out === 0),
|
|
269
269
|
);
|
|
270
270
|
const sameTypeLeafNodes = getSameTypeNodes(type, nodeClusterBy, node, relativeLeafNodes, degreesMap);
|
|
271
271
|
return { coreNode, relativeLeafNodes, sameTypeLeafNodes };
|