-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
123 lines (107 loc) · 1.93 KB
/
types.ts
File metadata and controls
123 lines (107 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
export type iGraph = {
nodes: iNode[];
links: iLink[];
};
export type iNode = {
id: number;
name: string;
x?: number;
y?: number;
};
export type iLink = {
source: number;
target: number;
weight: number;
};
export type d3Node = iNode & {
x?: number;
y?: number;
vx?: number;
vy?: number;
fx?: number | null;
fy?: number | null;
};
export type d3Link = {
source: d3Node;
target: d3Node;
weight: number;
};
export type d3Graph = {
nodes: d3Node[];
links: d3Link[];
};
export type AlgorithmType = {
id: string;
name: string;
function: (graph: iGraph, start: number, target: number) => AnimationStep[];
inputs: {
startNode: boolean;
targetNode: boolean;
};
};
export type AnimationStepType = "subtext" | "reset" | "node" | "link";
type NodeAnimationData = {
type: "node";
data: {
names: number[];
colors: string[];
};
};
type LinkAnimationData = {
type: "link";
data: {
links: { source: number; target: number }[];
colors: string[];
};
};
type SubtextAnimationData = {
type: "subtext";
data: {
nodes: number[];
texts: string[];
};
};
type ResetAnimationData = {
type: "reset";
data: {
nodes?: boolean;
links?: boolean;
subtexts?: boolean;
};
};
export type AnimationStep =
| NodeAnimationData
| LinkAnimationData
| SubtextAnimationData
| ResetAnimationData;
export type AnimationStatusType = "STOP" | "RUN" | "PAUSE";
export type AlgorithmConfigEventDetail = {
algorithmId: string;
startNode: number | null;
targetNode: number | null;
};
export type AlgorithmConfigEvent = CustomEvent<AlgorithmConfigEventDetail>;
export type PermissionsType = {
general: {
play: boolean;
playbackRate: boolean;
};
edit: {
enabled: boolean;
addNode: boolean;
addEdge: boolean;
editNode: boolean;
editEdge: boolean;
delNode: boolean;
delEdge: boolean;
};
algorithm: {
enabled: boolean;
executable: string[];
};
animation: {
enabled: boolean;
editStep: boolean;
delStep: boolean;
};
};