UNPKG

2.61 kBTypeScriptView Raw
1/**
2 * @fileOverview random layout
3 * @author shiwu.wyy@antfin.com
4 */
5import { OutNode, Edge, PointTuple } from './types';
6import { Base } from './base';
7declare type INode = OutNode & {
8 degree: number;
9 size: number | PointTuple;
10 weight: number;
11 children: string[];
12 parent: string[];
13};
14/**
15 * 圆形布局
16 */
17export declare class CircularLayout extends Base {
18 /** 布局中心 */
19 center: PointTuple;
20 /** 固定半径,若设置了 radius,则 startRadius 与 endRadius 不起效 */
21 radius: number | null;
22 /** 起始半径 */
23 startRadius: number | null;
24 /** 终止半径 */
25 endRadius: number | null;
26 /** 起始角度 */
27 startAngle: number;
28 /** 终止角度 */
29 endAngle: number;
30 /** 是否顺时针 */
31 clockwise: boolean;
32 /** 节点在环上分成段数(几个段将均匀分布),在 endRadius - startRadius != 0 时生效 */
33 divisions: number;
34 /** 节点在环上排序的依据,可选: 'topology', 'degree', 'null' */
35 ordering: 'topology' | 'topology-directed' | 'degree' | null;
36 /** how many 2*pi from first to last nodes */
37 angleRatio: number;
38 nodes: INode[];
39 edges: Edge[];
40 private nodeMap;
41 private degrees;
42 width: number;
43 height: number;
44 constructor(options?: CircularLayout.CircularLayoutOptions);
45 getDefaultCfg(): {
46 radius: null;
47 startRadius: null;
48 endRadius: null;
49 startAngle: number;
50 endAngle: number;
51 clockwise: boolean;
52 divisions: number;
53 ordering: null;
54 angleRatio: number;
55 };
56 /**
57 * 执行布局
58 */
59 execute(): {
60 nodes: INode[];
61 edges: Edge[];
62 } | undefined;
63 /**
64 * 根据节点的拓扑结构排序
65 * @return {array} orderedNodes 排序后的结果
66 */
67 topologyOrdering(directed?: boolean): INode[];
68 /**
69 * 根据节点度数大小排序
70 * @return {array} orderedNodes 排序后的结果
71 */
72 degreeOrdering(): INode[];
73 getType(): string;
74}
75export declare namespace CircularLayout {
76 interface CircularLayoutOptions {
77 type: 'circular';
78 center?: PointTuple;
79 width?: number;
80 height?: number;
81 radius?: number | null;
82 startRadius?: number | null;
83 endRadius?: number | null;
84 clockwise?: boolean;
85 divisions?: number;
86 ordering?: 'topology' | 'topology-directed' | 'degree' | null;
87 angleRatio?: number;
88 workerEnabled?: boolean;
89 startAngle?: number;
90 endAngle?: number;
91 }
92}
93export {};