@darajs/ui-causal-graph-editor 1.4.4 → 1.5.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.
Files changed (54) hide show
  1. package/dist/graph-viewer/causal-graph-editor.d.ts +2 -0
  2. package/dist/graph-viewer/causal-graph-editor.d.ts.map +1 -1
  3. package/dist/graph-viewer/causal-graph-editor.js +42 -8
  4. package/dist/graph-viewer/causal-graph-editor.js.map +1 -1
  5. package/dist/graph-viewer/utils/stories-utils.d.ts +322 -0
  6. package/dist/graph-viewer/utils/stories-utils.d.ts.map +1 -0
  7. package/dist/graph-viewer/utils/stories-utils.js +338 -0
  8. package/dist/graph-viewer/utils/stories-utils.js.map +1 -0
  9. package/dist/shared/graph-layout/common.d.ts +5 -1
  10. package/dist/shared/graph-layout/common.d.ts.map +1 -1
  11. package/dist/shared/graph-layout/fcose-layout.d.ts +26 -2
  12. package/dist/shared/graph-layout/fcose-layout.d.ts.map +1 -1
  13. package/dist/shared/graph-layout/fcose-layout.js +111 -0
  14. package/dist/shared/graph-layout/fcose-layout.js.map +1 -1
  15. package/dist/shared/graph-layout/marketing-layout.d.ts +14 -2
  16. package/dist/shared/graph-layout/marketing-layout.d.ts.map +1 -1
  17. package/dist/shared/graph-layout/marketing-layout.js +18 -0
  18. package/dist/shared/graph-layout/marketing-layout.js.map +1 -1
  19. package/dist/shared/graph-layout/planar-layout.d.ts +10 -3
  20. package/dist/shared/graph-layout/planar-layout.d.ts.map +1 -1
  21. package/dist/shared/graph-layout/planar-layout.js +67 -12
  22. package/dist/shared/graph-layout/planar-layout.js.map +1 -1
  23. package/dist/shared/graph-layout/spring-layout.d.ts +43 -2
  24. package/dist/shared/graph-layout/spring-layout.d.ts.map +1 -1
  25. package/dist/shared/graph-layout/spring-layout.js +101 -0
  26. package/dist/shared/graph-layout/spring-layout.js.map +1 -1
  27. package/dist/shared/parsers.d.ts +12 -5
  28. package/dist/shared/parsers.d.ts.map +1 -1
  29. package/dist/shared/parsers.js +33 -6
  30. package/dist/shared/parsers.js.map +1 -1
  31. package/dist/shared/rendering/engine.d.ts +4 -1
  32. package/dist/shared/rendering/engine.d.ts.map +1 -1
  33. package/dist/shared/rendering/engine.js +43 -10
  34. package/dist/shared/rendering/engine.js.map +1 -1
  35. package/dist/shared/rendering/use-render-engine.d.ts +2 -1
  36. package/dist/shared/rendering/use-render-engine.d.ts.map +1 -1
  37. package/dist/shared/rendering/use-render-engine.js +2 -2
  38. package/dist/shared/rendering/use-render-engine.js.map +1 -1
  39. package/dist/shared/rendering/utils.d.ts +2 -0
  40. package/dist/shared/rendering/utils.d.ts.map +1 -1
  41. package/dist/shared/rendering/utils.js +3 -0
  42. package/dist/shared/rendering/utils.js.map +1 -1
  43. package/dist/shared/use-causal-graph-editor.d.ts +3 -1
  44. package/dist/shared/use-causal-graph-editor.d.ts.map +1 -1
  45. package/dist/shared/use-causal-graph-editor.js +20 -1
  46. package/dist/shared/use-causal-graph-editor.js.map +1 -1
  47. package/dist/shared/utils.d.ts +27 -1
  48. package/dist/shared/utils.d.ts.map +1 -1
  49. package/dist/shared/utils.js +106 -0
  50. package/dist/shared/utils.js.map +1 -1
  51. package/dist/types.d.ts +18 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js.map +1 -1
  54. package/package.json +12 -12
@@ -0,0 +1,338 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright 2023 Impulse Innovations Limited
4
+ *
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { NotificationWrapper, useNotifications } from '@darajs/ui-notifications';
19
+ import { EdgeType, VariableType } from '../../types';
20
+ import { default as CausalGraphViewerComponent } from '../causal-graph-editor';
21
+ export const Template = (args) => {
22
+ const { pushNotification } = useNotifications();
23
+ return (_jsxs(_Fragment, { children: [_jsx(CausalGraphViewerComponent, Object.assign({}, args, { onNotify: pushNotification, style: { margin: 0 } })), _jsx(NotificationWrapper, { style: { bottom: 0 } })] }));
24
+ };
25
+ export const causalGraph = {
26
+ edges: {
27
+ input1: {
28
+ input4: {
29
+ destination: {
30
+ identifier: 'input4',
31
+ meta: {},
32
+ variable_type: VariableType.UNSPECIFIED,
33
+ },
34
+ edge_type: EdgeType.DIRECTED_EDGE,
35
+ meta: {
36
+ rendering_properties: {
37
+ color: 'red',
38
+ description: 'my super long description text that spans a few lines, is super descriptive and goes in depth into the explanation of why this edge exists in the first place and this is some extra text that will be behind a scrollbar',
39
+ tooltip: {
40
+ key1: 'some value 1',
41
+ key2: 'some value 2',
42
+ },
43
+ },
44
+ },
45
+ source: {
46
+ identifier: 'input1',
47
+ meta: {},
48
+ variable_type: VariableType.UNSPECIFIED,
49
+ },
50
+ },
51
+ target: {
52
+ destination: {
53
+ identifier: 'target',
54
+ meta: {},
55
+ variable_type: VariableType.UNSPECIFIED,
56
+ },
57
+ edge_type: EdgeType.DIRECTED_EDGE,
58
+ meta: {},
59
+ source: {
60
+ identifier: 'input1',
61
+ meta: {},
62
+ variable_type: VariableType.UNSPECIFIED,
63
+ },
64
+ },
65
+ },
66
+ input2: {
67
+ target: {
68
+ destination: {
69
+ identifier: 'target',
70
+ meta: {},
71
+ variable_type: VariableType.UNSPECIFIED,
72
+ },
73
+ edge_type: EdgeType.DIRECTED_EDGE,
74
+ meta: {
75
+ rendering_properties: {
76
+ description: 'my super long description text that spans a few lines, is super descriptive and goes in depth into the explanation of why this edge exists in the first place. It is actually so long that it does not fit by default and triggers overflow to scroll because of the max-height set to 5 lines',
77
+ tooltip: 'some plaintext description',
78
+ },
79
+ },
80
+ source: {
81
+ identifier: 'input2',
82
+ meta: {
83
+ rendering_properties: {
84
+ label: 'input2 renamed multi word node name',
85
+ },
86
+ },
87
+ variable_type: VariableType.UNSPECIFIED,
88
+ },
89
+ },
90
+ },
91
+ input3: {
92
+ target: {
93
+ destination: {
94
+ identifier: 'target',
95
+ meta: {},
96
+ variable_type: VariableType.UNSPECIFIED,
97
+ },
98
+ edge_type: EdgeType.DIRECTED_EDGE,
99
+ meta: {},
100
+ source: {
101
+ identifier: 'input3',
102
+ meta: {},
103
+ variable_type: VariableType.UNSPECIFIED,
104
+ },
105
+ },
106
+ },
107
+ input4: {
108
+ target: {
109
+ destination: {
110
+ identifier: 'target',
111
+ meta: {},
112
+ variable_type: VariableType.UNSPECIFIED,
113
+ },
114
+ edge_type: EdgeType.DIRECTED_EDGE,
115
+ meta: { rendering_properties: {} },
116
+ source: {
117
+ identifier: 'input4',
118
+ meta: {},
119
+ variable_type: VariableType.UNSPECIFIED,
120
+ },
121
+ },
122
+ },
123
+ },
124
+ nodes: {
125
+ input1: {
126
+ identifier: 'input1',
127
+ meta: {
128
+ rendering_properties: {
129
+ label: 'input1 renamed',
130
+ },
131
+ },
132
+ variable_type: VariableType.UNSPECIFIED,
133
+ },
134
+ input2: {
135
+ identifier: 'input2',
136
+ meta: {
137
+ rendering_properties: {
138
+ label: 'input2 renamed multi word node name',
139
+ },
140
+ },
141
+ variable_type: VariableType.UNSPECIFIED,
142
+ },
143
+ input3: {
144
+ identifier: 'input3',
145
+ meta: {},
146
+ variable_type: VariableType.UNSPECIFIED,
147
+ },
148
+ input4: {
149
+ identifier: 'input4',
150
+ meta: {},
151
+ variable_type: VariableType.UNSPECIFIED,
152
+ },
153
+ target: {
154
+ identifier: 'target',
155
+ meta: {},
156
+ variable_type: VariableType.UNSPECIFIED,
157
+ },
158
+ },
159
+ version: '2.0',
160
+ };
161
+ export const pagCausalGraph = Object.assign(Object.assign({}, causalGraph), { edges: Object.assign(Object.assign({}, causalGraph.edges), { input1: Object.assign(Object.assign({}, causalGraph.edges.input1), { input4: Object.assign(Object.assign({}, causalGraph.edges.input1.input4), { edge_type: EdgeType.UNDIRECTED_EDGE }) }) }) });
162
+ export const nodeTiersCausalGraph = Object.assign(Object.assign({}, causalGraph), { nodes: Object.assign(Object.assign({}, causalGraph.nodes), { input1: Object.assign(Object.assign({}, causalGraph.nodes.input1), { group: 'group1', meta: Object.assign(Object.assign({}, causalGraph.nodes.input1.meta), { rendering_properties: Object.assign(Object.assign({}, causalGraph.nodes.input1.meta.rendering_properties), { another: 'group3' }), test: 'group2' }), order: 2 }), input2: Object.assign(Object.assign({}, causalGraph.nodes.input2), { group: 'group1', meta: Object.assign(Object.assign({}, causalGraph.nodes.input2.meta), { rendering_properties: Object.assign(Object.assign({}, causalGraph.nodes.input2.meta.rendering_properties), { another: 'group3' }), test: 'group2' }), order: 7 }), input3: Object.assign(Object.assign({}, causalGraph.nodes.input3), { group: 'group2', meta: Object.assign(Object.assign({}, causalGraph.nodes.input3.meta), { rendering_properties: Object.assign(Object.assign({}, causalGraph.nodes.input3.meta.rendering_properties), { another: 'group3' }), test: 'group1' }), order: 3 }), input4: Object.assign(Object.assign({}, causalGraph.nodes.input4), { group: 'group2', meta: Object.assign(Object.assign({}, causalGraph.nodes.input4.meta), { rendering_properties: Object.assign(Object.assign({}, causalGraph.nodes.input4.meta.rendering_properties), { another: 'group3' }), test: 'group1' }), order: 2 }), target: Object.assign(Object.assign({}, causalGraph.nodes.target), { group: 'group3', meta: Object.assign(Object.assign({}, causalGraph.nodes.target.meta), { rendering_properties: Object.assign(Object.assign({}, causalGraph.nodes.target.meta.rendering_properties), { another: 'group1' }), test: 'group3' }) }) }) });
163
+ export const nodeTiersList = [['input1', 'input2'], ['input3', 'input4'], ['target']];
164
+ export const timeSeriesCausalGraph = {
165
+ edges: {
166
+ X1: {
167
+ X3: {
168
+ destination: {
169
+ identifier: 'X3',
170
+ meta: {
171
+ time_lag: 0,
172
+ variable_name: 'X3',
173
+ },
174
+ node_class: 'TimeSeriesNode',
175
+ time_lag: 0,
176
+ variable_name: 'X3',
177
+ variable_type: 'unspecified',
178
+ },
179
+ edge_type: '->',
180
+ meta: {},
181
+ source: {
182
+ identifier: 'X1',
183
+ meta: {
184
+ time_lag: 0,
185
+ variable_name: 'X1',
186
+ },
187
+ node_class: 'TimeSeriesNode',
188
+ time_lag: 0,
189
+ variable_name: 'X1',
190
+ variable_type: 'unspecified',
191
+ },
192
+ },
193
+ },
194
+ 'X1 lag(n=1)': {
195
+ X1: {
196
+ destination: {
197
+ identifier: 'X1',
198
+ meta: {
199
+ time_lag: 0,
200
+ variable_name: 'X1',
201
+ },
202
+ node_class: 'TimeSeriesNode',
203
+ time_lag: 0,
204
+ variable_name: 'X1',
205
+ variable_type: 'unspecified',
206
+ },
207
+ edge_type: '->',
208
+ meta: {},
209
+ source: {
210
+ identifier: 'X1 lag(n=1)',
211
+ meta: {
212
+ time_lag: -1,
213
+ variable_name: 'X1',
214
+ },
215
+ node_class: 'TimeSeriesNode',
216
+ time_lag: -1,
217
+ variable_name: 'X1',
218
+ variable_type: 'unspecified',
219
+ },
220
+ },
221
+ },
222
+ X2: {
223
+ X3: {
224
+ destination: {
225
+ identifier: 'X3',
226
+ meta: {
227
+ time_lag: 0,
228
+ variable_name: 'X3',
229
+ },
230
+ node_class: 'TimeSeriesNode',
231
+ time_lag: 0,
232
+ variable_name: 'X3',
233
+ variable_type: 'unspecified',
234
+ },
235
+ edge_type: '->',
236
+ meta: {},
237
+ source: {
238
+ identifier: 'X2',
239
+ meta: {
240
+ time_lag: 0,
241
+ variable_name: 'X2',
242
+ },
243
+ node_class: 'TimeSeriesNode',
244
+ time_lag: 0,
245
+ variable_name: 'X2',
246
+ variable_type: 'unspecified',
247
+ },
248
+ },
249
+ },
250
+ 'X2 lag(n=1)': {
251
+ X2: {
252
+ destination: {
253
+ identifier: 'X2',
254
+ meta: {
255
+ time_lag: 0,
256
+ variable_name: 'X2',
257
+ },
258
+ node_class: 'TimeSeriesNode',
259
+ time_lag: 0,
260
+ variable_name: 'X2',
261
+ variable_type: 'unspecified',
262
+ },
263
+ edge_type: '->',
264
+ meta: {},
265
+ source: {
266
+ identifier: 'X2 lag(n=1)',
267
+ meta: {
268
+ time_lag: -1,
269
+ variable_name: 'X2',
270
+ },
271
+ node_class: 'TimeSeriesNode',
272
+ time_lag: -1,
273
+ variable_name: 'X2',
274
+ variable_type: 'unspecified',
275
+ },
276
+ },
277
+ },
278
+ },
279
+ nodes: {
280
+ X1: {
281
+ identifier: 'X1',
282
+ meta: {
283
+ time_lag: 0,
284
+ variable_name: 'X1',
285
+ },
286
+ node_class: 'TimeSeriesNode',
287
+ time_lag: 0,
288
+ variable_name: 'X1',
289
+ variable_type: 'unspecified',
290
+ },
291
+ 'X1 lag(n=1)': {
292
+ identifier: 'X1 lag(n=1)',
293
+ meta: {
294
+ time_lag: -1,
295
+ variable_name: 'X1',
296
+ },
297
+ node_class: 'TimeSeriesNode',
298
+ time_lag: -1,
299
+ variable_name: 'X1',
300
+ variable_type: 'unspecified',
301
+ },
302
+ X2: {
303
+ identifier: 'X2',
304
+ meta: {
305
+ time_lag: 0,
306
+ variable_name: 'X2',
307
+ },
308
+ node_class: 'TimeSeriesNode',
309
+ time_lag: 0,
310
+ variable_name: 'X2',
311
+ variable_type: 'unspecified',
312
+ },
313
+ 'X2 lag(n=1)': {
314
+ identifier: 'X2 lag(n=1)',
315
+ meta: {
316
+ time_lag: -1,
317
+ variable_name: 'X2',
318
+ },
319
+ node_class: 'TimeSeriesNode',
320
+ time_lag: -1,
321
+ variable_name: 'X2',
322
+ variable_type: 'unspecified',
323
+ },
324
+ X3: {
325
+ identifier: 'X3',
326
+ meta: {
327
+ time_lag: 0,
328
+ variable_name: 'X3',
329
+ },
330
+ node_class: 'TimeSeriesNode',
331
+ time_lag: 0,
332
+ variable_name: 'X3',
333
+ variable_type: 'unspecified',
334
+ },
335
+ },
336
+ version: '0.3.14',
337
+ };
338
+ //# sourceMappingURL=stories-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories-utils.js","sourceRoot":"","sources":["../../../src/graph-viewer/utils/stories-utils.tsx"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { LayoutMapping, XYPosition } from 'graphology-layout/utils';
18
- import { SimulationGraph } from '../../types';
18
+ import { DirectionType, GraphTiers, SimulationGraph } from '../../types';
19
19
  export declare abstract class GraphLayoutBuilder<T> {
20
20
  _nodeSize: number;
21
21
  _nodeFontSize: number;
@@ -61,4 +61,8 @@ export declare abstract class GraphLayout {
61
61
  onStartDrag?: () => void | Promise<void>;
62
62
  }>;
63
63
  }
64
+ export interface GraphLayoutWithTiers extends GraphLayout {
65
+ orientation: DirectionType;
66
+ tiers: GraphTiers;
67
+ }
64
68
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/shared/graph-layout/common.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,8BAAsB,kBAAkB,CAAC,CAAC;IACtC,SAAS,SAAM;IAEf,aAAa,SAAM;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,QAAQ,CAAC,KAAK,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,8BAAsB,WAAW;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAMhD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAGD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAChB,KAAK,EAAE,eAAe,EACtB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,GACpG,OAAO,CAAC;QACP,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C,CAAC;CACL"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/shared/graph-layout/common.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzE,8BAAsB,kBAAkB,CAAC,CAAC;IACtC,SAAS,SAAM;IAEf,aAAa,SAAM;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,QAAQ,CAAC,KAAK,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,8BAAsB,WAAW;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAMhD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAGD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAChB,KAAK,EAAE,eAAe,EACtB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,GACpG,OAAO,CAAC;QACP,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C,CAAC;CACL;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACrD,WAAW,EAAE,aAAa,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;CACrB"}
@@ -1,7 +1,8 @@
1
+ import { FcoseRelativePlacementConstraint } from 'cytoscape-fcose';
1
2
  import { LayoutMapping, XYPosition } from 'graphology-layout/utils';
2
- import { SimulationGraph } from '../../types';
3
+ import { DirectionType, GraphTiers, SimulationGraph, TieredGraphLayoutBuilder } from '../../types';
3
4
  import { GraphLayout, GraphLayoutBuilder } from './common';
4
- declare class FcoseLayoutBuilder extends GraphLayoutBuilder<FcoseLayout> {
5
+ declare class FcoseLayoutBuilder extends GraphLayoutBuilder<FcoseLayout> implements TieredGraphLayoutBuilder {
5
6
  _edgeElasticity: number;
6
7
  _edgeLength: number;
7
8
  _energy: number;
@@ -11,6 +12,9 @@ declare class FcoseLayoutBuilder extends GraphLayoutBuilder<FcoseLayout> {
11
12
  _iterations: number;
12
13
  _nodeRepulsion: number;
13
14
  _nodeSeparation: number;
15
+ _tierSeparation: number;
16
+ orientation?: DirectionType;
17
+ tiers: GraphTiers;
14
18
  /**
15
19
  * Set edge elasticity
16
20
  *
@@ -65,8 +69,25 @@ declare class FcoseLayoutBuilder extends GraphLayoutBuilder<FcoseLayout> {
65
69
  * @param separation separation
66
70
  */
67
71
  nodeSeparation(separation: number): this;
72
+ /**
73
+ * Set tier separation
74
+ *
75
+ * @param separation separation
76
+ */
77
+ tierSeparation(separation: number): this;
68
78
  build(): FcoseLayout;
69
79
  }
80
+ interface TiersProperties {
81
+ alignmentConstraint?: string[][];
82
+ relativePlacementConstraint?: FcoseRelativePlacementConstraint[];
83
+ }
84
+ /**
85
+ * Get properties values for tiered fcose layout
86
+ * @param tiers node tiers defined by the user
87
+ * @param orientation the orientation of the graph
88
+ * @param tierSeparation tier separation
89
+ * */
90
+ export declare function getTieredLayoutProperties(graph: SimulationGraph, tiers: GraphTiers, orientation: DirectionType, tierSeparation: number): TiersProperties;
70
91
  export default class FcoseLayout extends GraphLayout {
71
92
  edgeElasticity: number;
72
93
  edgeLength: number;
@@ -77,6 +98,9 @@ export default class FcoseLayout extends GraphLayout {
77
98
  iterations: number;
78
99
  nodeRepulsion: number;
79
100
  nodeSeparation: number;
101
+ tierSeparation: number;
102
+ orientation: DirectionType;
103
+ tiers: GraphTiers;
80
104
  constructor(builder: FcoseLayoutBuilder);
81
105
  get requiresPosition(): boolean;
82
106
  applyLayout(graph: SimulationGraph): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"fcose-layout.d.ts","sourceRoot":"","sources":["../../../src/shared/graph-layout/fcose-layout.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAI3D,cAAM,kBAAmB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;IAC5D,eAAe,SAAQ;IAEvB,WAAW,SAAK;IAEhB,OAAO,SAAO;IAEd,QAAQ,SAAM;IAEd,aAAa,SAAM;IAEnB,YAAY,UAAQ;IAEpB,WAAW,SAAQ;IAEnB,cAAc,SAAQ;IAEtB,eAAe,SAAM;IAErB;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAK1C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAKvC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKtC;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKxC,KAAK,IAAI,WAAW;CAIvB;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACzC,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,MAAM,CAAC;IAEnB,aAAa,EAAE,MAAM,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,kBAAkB;IAcvC,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC;QACzC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IAiEF,MAAM,KAAK,OAAO,IAAI,kBAAkB,CAEvC;CACJ"}
1
+ {"version":3,"file":"fcose-layout.d.ts","sourceRoot":"","sources":["../../../src/shared/graph-layout/fcose-layout.tsx"],"names":[],"mappings":"AAiBA,OAAc,EAAsB,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAI3D,cAAM,kBAAmB,SAAQ,kBAAkB,CAAC,WAAW,CAAE,YAAW,wBAAwB;IAChG,eAAe,SAAQ;IAEvB,WAAW,SAAK;IAEhB,OAAO,SAAO;IAEd,QAAQ,SAAM;IAEd,aAAa,SAAM;IAEnB,YAAY,UAAQ;IAEpB,WAAW,SAAQ;IAEnB,cAAc,SAAQ;IAEtB,eAAe,SAAM;IAErB,eAAe,SAAO;IAEtB,WAAW,CAAC,EAAE,aAAa,CAAgB;IAE3C,KAAK,EAAE,UAAU,CAAC;IAElB;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAK1C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAKvC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKtC;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKxC,KAAK,IAAI,WAAW;CAIvB;AAyFD,UAAU,eAAe;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACjC,2BAA2B,CAAC,EAAE,gCAAgC,EAAE,CAAC;CACpE;AAED;;;;;MAKM;AACN,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,aAAa,EAC1B,cAAc,EAAE,MAAM,GACvB,eAAe,CAoBjB;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACzC,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,MAAM,CAAC;IAEnB,aAAa,EAAE,MAAM,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,aAAa,CAAC;IAE3B,KAAK,EAAE,UAAU,CAAC;gBAEb,OAAO,EAAE,kBAAkB;IAiBvC,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC;QACzC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;KACrC,CAAC;IA0EF,MAAM,KAAK,OAAO,IAAI,kBAAkB,CAEvC;CACJ"}
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import cytoscape from 'cytoscape';
18
18
  import fcose from 'cytoscape-fcose';
19
+ import { getNodeOrder, getTiersArray } from '../utils';
19
20
  import { GraphLayout, GraphLayoutBuilder } from './common';
20
21
  cytoscape.use(fcose);
21
22
  class FcoseLayoutBuilder extends GraphLayoutBuilder {
@@ -30,6 +31,8 @@ class FcoseLayoutBuilder extends GraphLayoutBuilder {
30
31
  this._iterations = 2500;
31
32
  this._nodeRepulsion = 6500;
32
33
  this._nodeSeparation = 75;
34
+ this._tierSeparation = 200;
35
+ this.orientation = 'horizontal';
33
36
  }
34
37
  /**
35
38
  * Set edge elasticity
@@ -112,11 +115,108 @@ class FcoseLayoutBuilder extends GraphLayoutBuilder {
112
115
  this._nodeSeparation = separation;
113
116
  return this;
114
117
  }
118
+ /**
119
+ * Set tier separation
120
+ *
121
+ * @param separation separation
122
+ */
123
+ tierSeparation(separation) {
124
+ this._tierSeparation = separation;
125
+ return this;
126
+ }
115
127
  build() {
116
128
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
117
129
  return new FcoseLayout(this);
118
130
  }
119
131
  }
132
+ /**
133
+ * Creates an array of relative placements for a given tier given a certain order of nodes and orientation
134
+ * @param tier tier to be placed
135
+ * @param orientation the orientation of the graph
136
+ * @param tierSeparation tier separation
137
+ * @param nodesOrder nodes order
138
+ * */
139
+ function createPositionedArray(tier, orientation, tierSeparation, nodesOrder) {
140
+ // Filter out any nodes that do not have an order defined in nodesOrder
141
+ const validNodes = tier.filter((node) => node in nodesOrder);
142
+ // sort tier based on nodesOrder
143
+ const sortedArray = validNodes.sort((a, b) => {
144
+ const orderA = nodesOrder[a];
145
+ const orderB = nodesOrder[b];
146
+ const parsedA = parseInt(orderA);
147
+ const parsedB = parseInt(orderB);
148
+ if (Number.isNaN(parsedA) || Number.isNaN(parsedB)) {
149
+ throw new Error(`Non-numeric order value encountered for nodes`);
150
+ }
151
+ return parsedA - parsedB;
152
+ });
153
+ // if horizontal we place nodes to the left of each other, if vertical we place nodes to the top of each other
154
+ if (orientation === 'horizontal') {
155
+ return sortedArray.slice(0, -1).map((item, index) => ({
156
+ bottom: sortedArray[index + 1],
157
+ gap: tierSeparation,
158
+ top: item,
159
+ }));
160
+ } // orientation === 'vertical'
161
+ return sortedArray.slice(0, -1).map((item, index) => ({
162
+ gap: tierSeparation,
163
+ left: item,
164
+ right: sortedArray[index + 1],
165
+ }));
166
+ }
167
+ /**
168
+ * Gets relative placements for tiered fcose layout when tiers are given as string[][]. Defines so that given nodes within a tier are placed
169
+ * right/left or top/bottom of each other. Following the defined hierarchy of tiers.
170
+ * @param tiers node tiers defined by the user
171
+ * @param orientation the orientation of the graph
172
+ * @param tierSeparation tier separation
173
+ * @param nodesOrder the order the nodes should appear in the tier
174
+ * */
175
+ function getRelativeTieredArrayPlacement(tiers, orientation, tierSeparation, nodesOrder) {
176
+ const relativePlacements = [];
177
+ tiers.forEach((tier, tierIndex) => {
178
+ // if within the tier a node order should be followed we add those placements
179
+ if (nodesOrder) {
180
+ const positionedArray = createPositionedArray(tier, orientation, tierSeparation, nodesOrder);
181
+ relativePlacements.push(...positionedArray);
182
+ }
183
+ // Next we take care of the hierarchical placement of the tiers
184
+ // if last tier do not add relative placement
185
+ if (tierIndex === tiers.length - 1) {
186
+ return;
187
+ }
188
+ // get one element for each subsequent tiers
189
+ const firstElement = tier[0];
190
+ const nextTierFirstElement = tiers[tierIndex + 1][0];
191
+ // Place onde node from the first tier to the left/top of the first node of the next tier
192
+ // That way we have one node from each tier defining the position of the tier relative to the other tiers
193
+ const placement = orientation === 'horizontal'
194
+ ? { gap: tierSeparation, left: firstElement, right: nextTierFirstElement }
195
+ : { bottom: nextTierFirstElement, gap: tierSeparation, top: firstElement };
196
+ relativePlacements.push(placement);
197
+ });
198
+ return relativePlacements;
199
+ }
200
+ /**
201
+ * Get properties values for tiered fcose layout
202
+ * @param tiers node tiers defined by the user
203
+ * @param orientation the orientation of the graph
204
+ * @param tierSeparation tier separation
205
+ * */
206
+ export function getTieredLayoutProperties(graph, tiers, orientation, tierSeparation) {
207
+ const tiersArray = getTiersArray(tiers, graph);
208
+ let nodesOrder;
209
+ if (!Array.isArray(tiers)) {
210
+ // must be of type TiersConfig
211
+ const { order_nodes_by } = tiers;
212
+ const nodes = graph.nodes();
213
+ nodesOrder = order_nodes_by ? getNodeOrder(nodes, order_nodes_by, graph) : undefined;
214
+ }
215
+ return {
216
+ alignmentConstraint: tiersArray,
217
+ relativePlacementConstraint: getRelativeTieredArrayPlacement(tiersArray, orientation, tierSeparation, nodesOrder),
218
+ };
219
+ }
120
220
  export default class FcoseLayout extends GraphLayout {
121
221
  constructor(builder) {
122
222
  super(builder);
@@ -129,6 +229,9 @@ export default class FcoseLayout extends GraphLayout {
129
229
  this.iterations = builder._iterations;
130
230
  this.nodeRepulsion = builder._nodeRepulsion;
131
231
  this.nodeSeparation = builder._nodeSeparation;
232
+ this.tierSeparation = builder._tierSeparation;
233
+ this.orientation = builder.orientation;
234
+ this.tiers = builder.tiers;
132
235
  }
133
236
  // eslint-disable-next-line class-methods-use-this
134
237
  get requiresPosition() {
@@ -138,6 +241,9 @@ export default class FcoseLayout extends GraphLayout {
138
241
  return new Promise((resolve) => {
139
242
  const hasPositions = graph.getNodeAttribute(graph.nodes()[0], 'x');
140
243
  const size = graph.getAttribute('size');
244
+ const tiersPlacement = this.tiers
245
+ ? getTieredLayoutProperties(graph, this.tiers, this.orientation, this.tierSeparation)
246
+ : { alignmentConstraint: undefined, relativePlacementConstraint: undefined };
141
247
  const elements = [
142
248
  ...graph.mapNodes((id, attrs) => ({
143
249
  data: Object.assign(Object.assign({}, attrs), { height: size, width: size }),
@@ -153,6 +259,10 @@ export default class FcoseLayout extends GraphLayout {
153
259
  elements,
154
260
  headless: true,
155
261
  layout: {
262
+ alignmentConstraint: {
263
+ horizontal: this.orientation === 'vertical' ? tiersPlacement.alignmentConstraint : undefined,
264
+ vertical: this.orientation === 'horizontal' ? tiersPlacement.alignmentConstraint : undefined,
265
+ },
156
266
  animate: false,
157
267
  edgeElasticity: this.edgeElasticity,
158
268
  gravity: this.gravity,
@@ -166,6 +276,7 @@ export default class FcoseLayout extends GraphLayout {
166
276
  quality: this.highQuality ? 'proof' : 'default',
167
277
  // only randomize if there are no position in graph yet
168
278
  randomize: !hasPositions,
279
+ relativePlacementConstraint: tiersPlacement.relativePlacementConstraint,
169
280
  stop: (ev) => {
170
281
  const positions = Object.fromEntries(ev.cy.elements('node').map((node) => {
171
282
  return [node.id(), node.position()];
@@ -1 +1 @@
1
- {"version":3,"file":"fcose-layout.js","sourceRoot":"","sources":["../../../src/shared/graph-layout/fcose-layout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fcose-layout.js","sourceRoot":"","sources":["../../../src/shared/graph-layout/fcose-layout.tsx"],"names":[],"mappings":"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"}