UNPKG

1.78 kBTypeScriptView Raw
1/**
2 * @fileOverview fruchterman layout
3 * @author shiwu.wyy@antfin.com
4 */
5import { OutNode, Edge, PointTuple, IndexMap } from './types';
6import { Base } from './base';
7declare type NodeMap = {
8 [key: string]: INode;
9};
10declare type INode = OutNode & {
11 cluster: string;
12};
13/**
14 * fruchterman 布局
15 */
16export declare class FruchtermanLayout extends Base {
17 /** 布局中心 */
18 center: PointTuple;
19 /** 停止迭代的最大迭代数 */
20 maxIteration: number;
21 /** 重力大小,影响图的紧凑程度 */
22 gravity: number;
23 /** 速度 */
24 speed: number;
25 /** 是否产生聚类力 */
26 clustering: boolean;
27 /** 聚类力大小 */
28 clusterGravity: number;
29 nodes: INode[];
30 edges: Edge[];
31 width: number;
32 height: number;
33 nodeMap: NodeMap;
34 nodeIdxMap: IndexMap;
35 constructor(options?: FruchtermanLayout.FruchtermanLayoutOptions);
36 getDefaultCfg(): {
37 maxIteration: number;
38 gravity: number;
39 speed: number;
40 clustering: boolean;
41 clusterGravity: number;
42 };
43 /**
44 * 执行布局
45 */
46 execute(): {
47 nodes: INode[];
48 edges: Edge[];
49 } | undefined;
50 run(): {
51 nodes: INode[];
52 edges: Edge[];
53 };
54 private applyCalculate;
55 private calRepulsive;
56 private calAttractive;
57 getType(): string;
58}
59export declare namespace FruchtermanLayout {
60 interface FruchtermanLayoutOptions {
61 type: 'fruchterman';
62 center?: PointTuple;
63 maxIteration?: number;
64 width?: number;
65 height?: number;
66 gravity?: number;
67 speed?: number;
68 clustering?: boolean;
69 clusterGravity?: number;
70 workerEnabled?: boolean;
71 gpuEnabled?: boolean;
72 }
73}
74export {};