@logicflow/core 2.0.13 → 2.0.15
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/.turbo/turbo-build$colon$dev.log +2 -2
- package/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +12 -0
- package/__tests__/algorithm/index.test.ts +22 -17
- package/__tests__/algorithm/outline.test.ts +9 -9
- package/__tests__/event/event.test.ts +18 -18
- package/__tests__/history/history.test.ts +23 -23
- package/__tests__/logicflow.test.ts +236 -228
- package/__tests__/model/graphmodel.test.ts +51 -31
- package/__tests__/util/compatible.test.ts +5 -5
- package/__tests__/util/geometry.test.ts +10 -10
- package/__tests__/util/graph.test.ts +12 -12
- package/__tests__/util/matrix.test.ts +26 -26
- package/__tests__/util/node.test.ts +22 -22
- package/__tests__/util/sampling.test.ts +6 -10
- package/__tests__/util/vector.test.ts +36 -36
- package/__tests__/util/zIndex.test.ts +6 -6
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/LogicFlow.d.ts +24 -4
- package/es/LogicFlow.js +28 -6
- package/es/model/GraphModel.d.ts +34 -1
- package/es/model/GraphModel.js +36 -5
- package/es/model/node/RectNodeModel.js +3 -0
- package/es/options.d.ts +1 -0
- package/es/util/theme.d.ts +67 -2
- package/es/util/theme.js +189 -2
- package/es/view/edge/BaseEdge.d.ts +4 -0
- package/es/view/edge/BaseEdge.js +45 -3
- package/es/view/overlay/Grid.js +3 -2
- package/es/view/shape/Polygon.d.ts +8 -0
- package/es/view/shape/Polygon.js +50 -3
- package/lib/LogicFlow.d.ts +24 -4
- package/lib/LogicFlow.js +27 -5
- package/lib/model/GraphModel.d.ts +34 -1
- package/lib/model/GraphModel.js +34 -3
- package/lib/model/node/RectNodeModel.js +3 -0
- package/lib/options.d.ts +1 -0
- package/lib/util/theme.d.ts +67 -2
- package/lib/util/theme.js +192 -2
- package/lib/view/edge/BaseEdge.d.ts +4 -0
- package/lib/view/edge/BaseEdge.js +45 -3
- package/lib/view/overlay/Grid.js +3 -2
- package/lib/view/shape/Polygon.d.ts +8 -0
- package/lib/view/shape/Polygon.js +52 -4
- package/package.json +1 -1
- package/src/LogicFlow.tsx +48 -6
- package/src/model/GraphModel.ts +48 -3
- package/src/model/edge/index.ts +4 -4
- package/src/model/index.ts +7 -7
- package/src/model/node/RectNodeModel.ts +2 -1
- package/src/model/node/index.ts +8 -8
- package/src/options.ts +1 -0
- package/src/util/theme.ts +198 -3
- package/src/view/edge/BaseEdge.tsx +96 -12
- package/src/view/overlay/Grid.tsx +2 -1
- package/src/view/shape/Polygon.tsx +56 -4
- package/stats.html +1 -1
|
@@ -1,38 +1,42 @@
|
|
|
1
|
-
import { BaseNode, BaseNodeModel, Keyboard } from '../src'
|
|
2
|
-
import LogicFlow from '../src/LogicFlow'
|
|
3
|
-
import Tool from '../src/tool'
|
|
1
|
+
import { BaseNode, BaseNodeModel, Keyboard } from '../src'
|
|
2
|
+
import LogicFlow from '../src/LogicFlow'
|
|
3
|
+
// import Tool from '../src/tool'
|
|
4
4
|
/**
|
|
5
5
|
* @jest-environment jsdom
|
|
6
6
|
*/
|
|
7
7
|
describe('logicflow/initialize', () => {
|
|
8
8
|
test('init', () => {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
document.
|
|
9
|
+
const initContainerSpy = jest.spyOn(
|
|
10
|
+
LogicFlow.prototype as any,
|
|
11
|
+
'initContainer' as any,
|
|
12
|
+
)
|
|
13
|
+
const dom = document.createElement('div')
|
|
14
|
+
dom.id = 'main-graph'
|
|
15
|
+
document.body.appendChild(dom)
|
|
14
16
|
const lf = new LogicFlow({
|
|
15
17
|
container: dom,
|
|
16
|
-
})
|
|
17
|
-
expect(
|
|
18
|
-
expect(lf).toBeDefined()
|
|
19
|
-
})
|
|
18
|
+
})
|
|
19
|
+
expect(initContainerSpy).toBeCalled()
|
|
20
|
+
expect(lf).toBeDefined()
|
|
21
|
+
})
|
|
20
22
|
|
|
21
23
|
test('elements register', () => {
|
|
22
|
-
const defaultRegister = jest.fn()
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
document.
|
|
24
|
+
const defaultRegister = jest.fn()
|
|
25
|
+
jest
|
|
26
|
+
.spyOn(LogicFlow.prototype as any, 'defaultRegister')
|
|
27
|
+
.mockImplementation(defaultRegister)
|
|
28
|
+
|
|
29
|
+
const dom = document.createElement('div')
|
|
30
|
+
dom.id = 'main-graph'
|
|
31
|
+
document.body.appendChild(dom)
|
|
28
32
|
const lf = new LogicFlow({
|
|
29
33
|
container: dom,
|
|
30
|
-
})
|
|
34
|
+
})
|
|
31
35
|
lf.register({
|
|
32
36
|
type: 'test',
|
|
33
37
|
view: BaseNode,
|
|
34
38
|
model: BaseNodeModel,
|
|
35
|
-
})
|
|
39
|
+
})
|
|
36
40
|
|
|
37
41
|
lf.register('custom', ({ RectNode, RectNodeModel }) => {
|
|
38
42
|
class CustomView extends RectNode {}
|
|
@@ -40,57 +44,61 @@ describe('logicflow/initialize', () => {
|
|
|
40
44
|
return {
|
|
41
45
|
view: CustomView,
|
|
42
46
|
model: CustomModel,
|
|
43
|
-
}
|
|
44
|
-
})
|
|
47
|
+
}
|
|
48
|
+
})
|
|
45
49
|
|
|
46
|
-
expect(defaultRegister).toBeCalled()
|
|
47
|
-
expect(lf.getView('test')).toBeDefined()
|
|
48
|
-
expect(lf.getView('custom')).toBeDefined()
|
|
49
|
-
expect(lf.graphModel.getModel('test')).toBeDefined()
|
|
50
|
-
expect(lf.graphModel.getModel('custom')).toBeDefined()
|
|
51
|
-
})
|
|
50
|
+
expect(defaultRegister).toBeCalled()
|
|
51
|
+
expect(lf.getView('test')).toBeDefined()
|
|
52
|
+
expect(lf.getView('custom')).toBeDefined()
|
|
53
|
+
expect(lf.graphModel.getModel('test')).toBeDefined()
|
|
54
|
+
expect(lf.graphModel.getModel('custom')).toBeDefined()
|
|
55
|
+
})
|
|
52
56
|
|
|
53
57
|
test('register plugin by Logicflow.use', () => {
|
|
54
58
|
class Plugin {
|
|
55
|
-
static pluginName = 'test-use'
|
|
56
|
-
lf: LogicFlow
|
|
59
|
+
static pluginName = 'test-use'
|
|
60
|
+
lf: LogicFlow
|
|
57
61
|
constructor(lf: LogicFlow) {
|
|
58
|
-
this.lf = lf
|
|
62
|
+
this.lf = lf
|
|
59
63
|
}
|
|
60
64
|
init() {}
|
|
61
65
|
}
|
|
62
|
-
LogicFlow.use(Plugin)
|
|
63
|
-
expect(LogicFlow.extensions.get('test-use')).toBeDefined()
|
|
64
|
-
})
|
|
66
|
+
LogicFlow.use(Plugin)
|
|
67
|
+
expect(LogicFlow.extensions.get('test-use')).toBeDefined()
|
|
68
|
+
})
|
|
65
69
|
|
|
66
70
|
test('shortcut', () => {
|
|
67
|
-
const initShortcuts = jest.fn()
|
|
68
|
-
const on = jest.fn()
|
|
69
|
-
Keyboard.prototype.initShortcuts = initShortcuts
|
|
70
|
-
Keyboard.prototype.on = on
|
|
71
|
-
const dom = document.createElement('div')
|
|
72
|
-
dom.id = 'main-graph'
|
|
73
|
-
document.body.appendChild(dom)
|
|
71
|
+
const initShortcuts = jest.fn()
|
|
72
|
+
const on = jest.fn()
|
|
73
|
+
Keyboard.prototype.initShortcuts = initShortcuts
|
|
74
|
+
Keyboard.prototype.on = on
|
|
75
|
+
const dom = document.createElement('div')
|
|
76
|
+
dom.id = 'main-graph'
|
|
77
|
+
document.body.appendChild(dom)
|
|
78
|
+
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
80
|
const lf = new LogicFlow({
|
|
75
81
|
container: dom,
|
|
76
|
-
})
|
|
77
|
-
expect(initShortcuts).toBeCalled()
|
|
78
|
-
expect(on).toBeCalledTimes(5)
|
|
79
|
-
})
|
|
82
|
+
})
|
|
83
|
+
expect(initShortcuts).toBeCalled()
|
|
84
|
+
expect(on).toBeCalledTimes(5)
|
|
85
|
+
})
|
|
80
86
|
|
|
81
87
|
test('not silent mode', () => {
|
|
82
|
-
const initShortcuts = jest.fn()
|
|
83
|
-
Keyboard.prototype.initShortcuts = initShortcuts
|
|
84
|
-
const dom = document.createElement('div')
|
|
85
|
-
dom.id = 'main-graph'
|
|
86
|
-
document.body.appendChild(dom)
|
|
88
|
+
const initShortcuts = jest.fn()
|
|
89
|
+
Keyboard.prototype.initShortcuts = initShortcuts
|
|
90
|
+
const dom = document.createElement('div')
|
|
91
|
+
dom.id = 'main-graph'
|
|
92
|
+
document.body.appendChild(dom)
|
|
93
|
+
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
87
95
|
const lf = new LogicFlow({
|
|
88
96
|
container: dom,
|
|
89
97
|
isSilentMode: false,
|
|
90
|
-
})
|
|
91
|
-
expect(initShortcuts).toBeCalledTimes(1)
|
|
92
|
-
})
|
|
93
|
-
})
|
|
98
|
+
})
|
|
99
|
+
expect(initShortcuts).toBeCalledTimes(1)
|
|
100
|
+
})
|
|
101
|
+
})
|
|
94
102
|
|
|
95
103
|
describe('logicflow/apis', () => {
|
|
96
104
|
const rawData = {
|
|
@@ -146,12 +154,12 @@ describe('logicflow/apis', () => {
|
|
|
146
154
|
targetNodeId: 'node4',
|
|
147
155
|
},
|
|
148
156
|
],
|
|
149
|
-
}
|
|
157
|
+
}
|
|
150
158
|
|
|
151
159
|
describe('operations on node/edge model ', () => {
|
|
152
|
-
const dom = document.createElement('div')
|
|
153
|
-
dom.id = 'main-graph'
|
|
154
|
-
document.body.appendChild(dom)
|
|
160
|
+
const dom = document.createElement('div')
|
|
161
|
+
dom.id = 'main-graph'
|
|
162
|
+
document.body.appendChild(dom)
|
|
155
163
|
const lf = new LogicFlow({
|
|
156
164
|
container: dom,
|
|
157
165
|
width: 1000,
|
|
@@ -170,30 +178,30 @@ describe('logicflow/apis', () => {
|
|
|
170
178
|
beforeClone: (data: any) => !['node1'].includes(data.id),
|
|
171
179
|
beforeDelete: (data: any) => !['node1', 'edge1'].includes(data.id),
|
|
172
180
|
},
|
|
173
|
-
})
|
|
181
|
+
})
|
|
174
182
|
|
|
175
183
|
test('render', () => {
|
|
176
|
-
lf.render(rawData)
|
|
177
|
-
expect(lf.graphModel.nodes.length).toBe(4)
|
|
178
|
-
expect(lf.graphModel.edges.length).toBe(3)
|
|
179
|
-
})
|
|
184
|
+
lf.render(rawData)
|
|
185
|
+
expect(lf.graphModel.nodes.length).toBe(4)
|
|
186
|
+
expect(lf.graphModel.edges.length).toBe(3)
|
|
187
|
+
})
|
|
180
188
|
|
|
181
189
|
test('set default edge type', () => {
|
|
182
|
-
lf.setDefaultEdgeType('line')
|
|
183
|
-
expect(lf.graphModel.edgeType).toBe('line')
|
|
184
|
-
})
|
|
190
|
+
lf.setDefaultEdgeType('line')
|
|
191
|
+
expect(lf.graphModel.edgeType).toBe('line')
|
|
192
|
+
})
|
|
185
193
|
|
|
186
194
|
test('delete elements with guards', () => {
|
|
187
|
-
lf.render(rawData)
|
|
188
|
-
expect(lf.deleteElement('node1')).toBeFalsy()
|
|
189
|
-
expect(lf.deleteElement('node2')).toBeTruthy()
|
|
190
|
-
expect(lf.deleteElement('node5')).toBeFalsy()
|
|
195
|
+
lf.render(rawData)
|
|
196
|
+
expect(lf.deleteElement('node1')).toBeFalsy()
|
|
197
|
+
expect(lf.deleteElement('node2')).toBeTruthy()
|
|
198
|
+
expect(lf.deleteElement('node5')).toBeFalsy()
|
|
191
199
|
|
|
192
|
-
expect(lf.graphModel.nodes.length).toBe(3)
|
|
193
|
-
})
|
|
200
|
+
expect(lf.graphModel.nodes.length).toBe(3)
|
|
201
|
+
})
|
|
194
202
|
|
|
195
203
|
test('add elements', () => {
|
|
196
|
-
lf.render(rawData)
|
|
204
|
+
lf.render(rawData)
|
|
197
205
|
lf.addElements({
|
|
198
206
|
nodes: [
|
|
199
207
|
{
|
|
@@ -217,76 +225,76 @@ describe('logicflow/apis', () => {
|
|
|
217
225
|
targetNodeId: 'node_2_1',
|
|
218
226
|
},
|
|
219
227
|
],
|
|
220
|
-
})
|
|
221
|
-
expect(lf.graphModel.nodes.length).toBe(6)
|
|
222
|
-
expect(lf.graphModel.edges.length).toBe(4)
|
|
223
|
-
})
|
|
228
|
+
})
|
|
229
|
+
expect(lf.graphModel.nodes.length).toBe(6)
|
|
230
|
+
expect(lf.graphModel.edges.length).toBe(4)
|
|
231
|
+
})
|
|
224
232
|
|
|
225
233
|
test('add node', () => {
|
|
226
|
-
lf.render(rawData)
|
|
234
|
+
lf.render(rawData)
|
|
227
235
|
lf.addNode({
|
|
228
236
|
id: 'node5',
|
|
229
237
|
type: 'text',
|
|
230
238
|
x: 100,
|
|
231
239
|
y: 100,
|
|
232
240
|
text: 'node5',
|
|
233
|
-
})
|
|
234
|
-
expect(lf.graphModel.nodes.length).toBe(5)
|
|
235
|
-
lf.updateText('node5', 'node5_1')
|
|
236
|
-
lf.updateText('edge1', 'edge1')
|
|
237
|
-
expect(lf.getNodeModelById('node5').text.value).toBe('node5_1')
|
|
238
|
-
expect(lf.getEdgeModelById('edge1').text.value).toBe('edge1')
|
|
239
|
-
})
|
|
241
|
+
})
|
|
242
|
+
expect(lf.graphModel.nodes.length).toBe(5)
|
|
243
|
+
lf.updateText('node5', 'node5_1')
|
|
244
|
+
lf.updateText('edge1', 'edge1')
|
|
245
|
+
expect(lf.getNodeModelById('node5').text.value).toBe('node5_1')
|
|
246
|
+
expect(lf.getEdgeModelById('edge1').text.value).toBe('edge1')
|
|
247
|
+
})
|
|
240
248
|
|
|
241
249
|
test('change node id', () => {
|
|
242
|
-
lf.render(rawData)
|
|
243
|
-
expect(lf.changeNodeId('node1', 'node1_1')).toBe('node1_1')
|
|
244
|
-
expect(lf.changeNodeId('node1_1', 'node2')).toBeFalsy()
|
|
245
|
-
expect(lf.changeNodeId('node1_1_1', 'node1_1_2')).toBeFalsy()
|
|
246
|
-
})
|
|
250
|
+
lf.render(rawData)
|
|
251
|
+
expect(lf.changeNodeId('node1', 'node1_1')).toBe('node1_1')
|
|
252
|
+
expect(lf.changeNodeId('node1_1', 'node2')).toBeFalsy()
|
|
253
|
+
expect(lf.changeNodeId('node1_1_1', 'node1_1_2')).toBeFalsy()
|
|
254
|
+
})
|
|
247
255
|
|
|
248
256
|
test('clone node with guards', () => {
|
|
249
|
-
lf.render(rawData)
|
|
250
|
-
expect(lf.cloneNode('node1')).toBeFalsy()
|
|
251
|
-
expect(lf.cloneNode('node2')).toBeTruthy()
|
|
252
|
-
expect(lf.graphModel.nodes.length).toBe(5)
|
|
253
|
-
})
|
|
257
|
+
lf.render(rawData)
|
|
258
|
+
expect(lf.cloneNode('node1')).toBeFalsy()
|
|
259
|
+
expect(lf.cloneNode('node2')).toBeTruthy()
|
|
260
|
+
expect(lf.graphModel.nodes.length).toBe(5)
|
|
261
|
+
})
|
|
254
262
|
|
|
255
263
|
test('get data by id', () => {
|
|
256
|
-
lf.render(rawData)
|
|
257
|
-
expect(lf.getDataById('node1')).toBeDefined()
|
|
258
|
-
expect(lf.getDataById('edge1')).toBeDefined()
|
|
259
|
-
})
|
|
264
|
+
lf.render(rawData)
|
|
265
|
+
expect(lf.getDataById('node1')).toBeDefined()
|
|
266
|
+
expect(lf.getDataById('edge1')).toBeDefined()
|
|
267
|
+
})
|
|
260
268
|
|
|
261
269
|
test('get node data by id', () => {
|
|
262
|
-
lf.render(rawData)
|
|
263
|
-
expect(lf.getNodeDataById('node1')).toBeDefined()
|
|
264
|
-
expect(lf.getNodeDataById('node6')).toBeUndefined()
|
|
265
|
-
})
|
|
270
|
+
lf.render(rawData)
|
|
271
|
+
expect(lf.getNodeDataById('node1')).toBeDefined()
|
|
272
|
+
expect(lf.getNodeDataById('node6')).toBeUndefined()
|
|
273
|
+
})
|
|
266
274
|
|
|
267
275
|
test('get edge data by id', () => {
|
|
268
|
-
lf.render(rawData)
|
|
269
|
-
expect(lf.getEdgeDataById('edge1')).toBeDefined()
|
|
270
|
-
expect(lf.getEdgeDataById('edge4')).toBeUndefined()
|
|
271
|
-
})
|
|
276
|
+
lf.render(rawData)
|
|
277
|
+
expect(lf.getEdgeDataById('edge1')).toBeDefined()
|
|
278
|
+
expect(lf.getEdgeDataById('edge4')).toBeUndefined()
|
|
279
|
+
})
|
|
272
280
|
|
|
273
281
|
test('add edge', () => {
|
|
274
|
-
lf.render(rawData)
|
|
282
|
+
lf.render(rawData)
|
|
275
283
|
lf.addEdge({
|
|
276
284
|
id: 'edge4',
|
|
277
285
|
type: 'polyline',
|
|
278
286
|
sourceNodeId: 'node1',
|
|
279
287
|
targetNodeId: 'node2',
|
|
280
|
-
})
|
|
281
|
-
expect(lf.graphModel.edges.length).toBe(4)
|
|
282
|
-
})
|
|
288
|
+
})
|
|
289
|
+
expect(lf.graphModel.edges.length).toBe(4)
|
|
290
|
+
})
|
|
283
291
|
|
|
284
292
|
test('delete edge with guards', () => {
|
|
285
|
-
lf.render(rawData)
|
|
286
|
-
expect(lf.deleteEdge('edge1')).toBeFalsy()
|
|
287
|
-
expect(lf.deleteEdge('edge2')).toBeTruthy()
|
|
288
|
-
expect(lf.graphModel.edges.length).toBe(2)
|
|
289
|
-
})
|
|
293
|
+
lf.render(rawData)
|
|
294
|
+
expect(lf.deleteEdge('edge1')).toBeFalsy()
|
|
295
|
+
expect(lf.deleteEdge('edge2')).toBeTruthy()
|
|
296
|
+
expect(lf.graphModel.edges.length).toBe(2)
|
|
297
|
+
})
|
|
290
298
|
|
|
291
299
|
test('delete edge by nodeId', () => {
|
|
292
300
|
lf.render({
|
|
@@ -353,89 +361,89 @@ describe('logicflow/apis', () => {
|
|
|
353
361
|
targetNodeId: 'node5',
|
|
354
362
|
},
|
|
355
363
|
],
|
|
356
|
-
})
|
|
364
|
+
})
|
|
357
365
|
|
|
358
366
|
lf.deleteEdgeByNodeId({
|
|
359
367
|
targetNodeId: 'node3',
|
|
360
|
-
})
|
|
361
|
-
expect(lf.graphModel.edges.length).toBe(3)
|
|
368
|
+
})
|
|
369
|
+
expect(lf.graphModel.edges.length).toBe(3)
|
|
362
370
|
lf.deleteEdgeByNodeId({
|
|
363
371
|
sourceNodeId: 'node1',
|
|
364
372
|
targetNodeId: 'node2',
|
|
365
|
-
})
|
|
366
|
-
expect(lf.graphModel.edges.length).toBe(2)
|
|
373
|
+
})
|
|
374
|
+
expect(lf.graphModel.edges.length).toBe(2)
|
|
367
375
|
lf.deleteEdgeByNodeId({
|
|
368
376
|
sourceNodeId: 'node2',
|
|
369
|
-
})
|
|
370
|
-
expect(lf.graphModel.edges.length).toBe(0)
|
|
371
|
-
})
|
|
377
|
+
})
|
|
378
|
+
expect(lf.graphModel.edges.length).toBe(0)
|
|
379
|
+
})
|
|
372
380
|
|
|
373
381
|
test('change node type', () => {
|
|
374
|
-
lf.render(rawData)
|
|
375
|
-
lf.changeNodeType('node1', 'circle')
|
|
376
|
-
expect(lf.getNodeModelById('node1').type).toBe('circle')
|
|
377
|
-
})
|
|
382
|
+
lf.render(rawData)
|
|
383
|
+
lf.changeNodeType('node1', 'circle')
|
|
384
|
+
expect(lf.getNodeModelById('node1').type).toBe('circle')
|
|
385
|
+
})
|
|
378
386
|
|
|
379
387
|
test('change edge type', () => {
|
|
380
|
-
lf.render(rawData)
|
|
381
|
-
lf.changeEdgeType('edge1', 'line')
|
|
382
|
-
expect(lf.getEdgeModelById('edge1').type).toBe('line')
|
|
383
|
-
})
|
|
388
|
+
lf.render(rawData)
|
|
389
|
+
lf.changeEdgeType('edge1', 'line')
|
|
390
|
+
expect(lf.getEdgeModelById('edge1').type).toBe('line')
|
|
391
|
+
})
|
|
384
392
|
|
|
385
393
|
test('get incoming and outgoing edges of node', () => {
|
|
386
|
-
lf.render(rawData)
|
|
387
|
-
expect(lf.getNodeEdges('node2').length).toBe(3)
|
|
388
|
-
})
|
|
394
|
+
lf.render(rawData)
|
|
395
|
+
expect(lf.getNodeEdges('node2').length).toBe(3)
|
|
396
|
+
})
|
|
389
397
|
|
|
390
398
|
test('get incoming edges', () => {
|
|
391
|
-
lf.render(rawData)
|
|
392
|
-
expect(lf.getNodeIncomingEdge('node2').length).toBe(1)
|
|
393
|
-
})
|
|
399
|
+
lf.render(rawData)
|
|
400
|
+
expect(lf.getNodeIncomingEdge('node2').length).toBe(1)
|
|
401
|
+
})
|
|
394
402
|
|
|
395
403
|
test('get outgoing edges', () => {
|
|
396
|
-
lf.renderRawData(rawData)
|
|
397
|
-
expect(lf.getNodeOutgoingEdge('node2').length).toBe(2)
|
|
398
|
-
})
|
|
404
|
+
lf.renderRawData(rawData)
|
|
405
|
+
expect(lf.getNodeOutgoingEdge('node2').length).toBe(2)
|
|
406
|
+
})
|
|
399
407
|
|
|
400
408
|
test('get incoming node', () => {
|
|
401
|
-
lf.renderRawData(rawData)
|
|
402
|
-
expect(lf.getNodeIncomingNode('node2').length).toBe(1)
|
|
403
|
-
})
|
|
409
|
+
lf.renderRawData(rawData)
|
|
410
|
+
expect(lf.getNodeIncomingNode('node2').length).toBe(1)
|
|
411
|
+
})
|
|
404
412
|
|
|
405
413
|
test('get outgoing node', () => {
|
|
406
|
-
lf.renderRawData(rawData)
|
|
407
|
-
expect(lf.getNodeOutgoingNode('node2').length).toBe(2)
|
|
408
|
-
})
|
|
414
|
+
lf.renderRawData(rawData)
|
|
415
|
+
expect(lf.getNodeOutgoingNode('node2').length).toBe(2)
|
|
416
|
+
})
|
|
409
417
|
|
|
410
418
|
test('get edge model by filter', () => {
|
|
411
|
-
lf.render(rawData)
|
|
419
|
+
lf.render(rawData)
|
|
412
420
|
expect(
|
|
413
421
|
lf.getEdgeModels({
|
|
414
422
|
sourceNodeId: 'node2',
|
|
415
423
|
}).length,
|
|
416
|
-
).toBe(2)
|
|
424
|
+
).toBe(2)
|
|
417
425
|
|
|
418
426
|
expect(
|
|
419
427
|
lf.getEdgeModels({
|
|
420
428
|
targetNodeId: 'node2',
|
|
421
429
|
}).length,
|
|
422
|
-
).toBe(1)
|
|
430
|
+
).toBe(1)
|
|
423
431
|
|
|
424
432
|
expect(
|
|
425
433
|
lf.getEdgeModels({
|
|
426
434
|
sourceNodeId: 'node2',
|
|
427
435
|
targetNodeId: 'node3',
|
|
428
436
|
}).length,
|
|
429
|
-
).toBe(1)
|
|
430
|
-
})
|
|
437
|
+
).toBe(1)
|
|
438
|
+
})
|
|
431
439
|
|
|
432
440
|
test('get elements in certain area', () => {
|
|
433
|
-
lf.render(rawData)
|
|
434
|
-
expect(lf.getAreaElement([0, 0], [1000, 1000]).length).toBe(7)
|
|
435
|
-
})
|
|
441
|
+
lf.render(rawData)
|
|
442
|
+
expect(lf.getAreaElement([0, 0], [1000, 1000]).length).toBe(7)
|
|
443
|
+
})
|
|
436
444
|
|
|
437
445
|
test('set properties', () => {
|
|
438
|
-
lf.renderRawData(rawData)
|
|
446
|
+
lf.renderRawData(rawData)
|
|
439
447
|
lf.setProperties('node1', {
|
|
440
448
|
a: {
|
|
441
449
|
b: undefined,
|
|
@@ -445,7 +453,7 @@ describe('logicflow/apis', () => {
|
|
|
445
453
|
f: null,
|
|
446
454
|
},
|
|
447
455
|
},
|
|
448
|
-
})
|
|
456
|
+
})
|
|
449
457
|
expect((lf.getProperties('node1') as any).a).toEqual({
|
|
450
458
|
b: undefined,
|
|
451
459
|
c: [],
|
|
@@ -453,56 +461,56 @@ describe('logicflow/apis', () => {
|
|
|
453
461
|
e: 1,
|
|
454
462
|
f: null,
|
|
455
463
|
},
|
|
456
|
-
})
|
|
457
|
-
})
|
|
464
|
+
})
|
|
465
|
+
})
|
|
458
466
|
|
|
459
467
|
test('delete properties', () => {
|
|
460
|
-
lf.renderRawData(rawData)
|
|
461
|
-
lf.deleteProperty('node1', 'a')
|
|
462
|
-
expect(lf.getNodeModelById('node1').properties.a).toBeUndefined()
|
|
463
|
-
})
|
|
468
|
+
lf.renderRawData(rawData)
|
|
469
|
+
lf.deleteProperty('node1', 'a')
|
|
470
|
+
expect(lf.getNodeModelById('node1').properties.a).toBeUndefined()
|
|
471
|
+
})
|
|
464
472
|
|
|
465
473
|
test('select and to front in overlapMode 0', () => {
|
|
466
|
-
lf.render(rawData)
|
|
467
|
-
lf.selectElementById('node1')
|
|
468
|
-
lf.selectElementById('node2', true)
|
|
469
|
-
const selectElements = lf.getSelectElements()
|
|
470
|
-
expect(selectElements.nodes.length).toBe(2)
|
|
471
|
-
expect(selectElements.nodes[0].id).toBe('node1')
|
|
472
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
|
|
473
|
-
lf.clearSelectElements()
|
|
474
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(1)
|
|
475
|
-
})
|
|
474
|
+
lf.render(rawData)
|
|
475
|
+
lf.selectElementById('node1')
|
|
476
|
+
lf.selectElementById('node2', true)
|
|
477
|
+
const selectElements = lf.getSelectElements()
|
|
478
|
+
expect(selectElements.nodes.length).toBe(2)
|
|
479
|
+
expect(selectElements.nodes[0].id).toBe('node1')
|
|
480
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
|
|
481
|
+
lf.clearSelectElements()
|
|
482
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(1)
|
|
483
|
+
})
|
|
476
484
|
|
|
477
485
|
test('to front in overlapMode 0', () => {
|
|
478
|
-
lf.render(rawData)
|
|
479
|
-
lf.toFront('node1')
|
|
480
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
|
|
481
|
-
})
|
|
486
|
+
lf.render(rawData)
|
|
487
|
+
lf.toFront('node1')
|
|
488
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(9999)
|
|
489
|
+
})
|
|
482
490
|
|
|
483
491
|
test('get graph data', () => {
|
|
484
|
-
lf.render(rawData)
|
|
485
|
-
const graphData = lf.getGraphData()
|
|
486
|
-
expect(lf.getGraphData()).toBeDefined()
|
|
487
|
-
expect(graphData.nodes.length).toBe(4)
|
|
488
|
-
expect(graphData.edges.length).toBe(3)
|
|
489
|
-
})
|
|
492
|
+
lf.render(rawData)
|
|
493
|
+
const graphData = lf.getGraphData()
|
|
494
|
+
expect(lf.getGraphData()).toBeDefined()
|
|
495
|
+
expect(graphData.nodes.length).toBe(4)
|
|
496
|
+
expect(graphData.edges.length).toBe(3)
|
|
497
|
+
})
|
|
490
498
|
|
|
491
499
|
test('clear graph data', () => {
|
|
492
|
-
lf.render(rawData)
|
|
493
|
-
lf.clearData()
|
|
500
|
+
lf.render(rawData)
|
|
501
|
+
lf.clearData()
|
|
494
502
|
expect(lf.getGraphData()).toEqual({
|
|
495
503
|
nodes: [],
|
|
496
504
|
edges: [],
|
|
497
|
-
})
|
|
498
|
-
})
|
|
499
|
-
})
|
|
505
|
+
})
|
|
506
|
+
})
|
|
507
|
+
})
|
|
500
508
|
|
|
501
509
|
describe('transform', () => {
|
|
502
|
-
const resize = jest.fn()
|
|
503
|
-
const dom = document.createElement('div')
|
|
504
|
-
dom.id = 'main-graph'
|
|
505
|
-
document.body.appendChild(dom)
|
|
510
|
+
const resize = jest.fn()
|
|
511
|
+
const dom = document.createElement('div')
|
|
512
|
+
dom.id = 'main-graph'
|
|
513
|
+
document.body.appendChild(dom)
|
|
506
514
|
const lf = new LogicFlow({
|
|
507
515
|
container: dom,
|
|
508
516
|
stopScrollGraph: true,
|
|
@@ -511,8 +519,8 @@ describe('logicflow/apis', () => {
|
|
|
511
519
|
width: 1000,
|
|
512
520
|
height: 1000,
|
|
513
521
|
overlapMode: 1,
|
|
514
|
-
})
|
|
515
|
-
lf.graphModel.resize = resize
|
|
522
|
+
})
|
|
523
|
+
lf.graphModel.resize = resize
|
|
516
524
|
|
|
517
525
|
test('get transform information', () => {
|
|
518
526
|
expect(lf.getTransform()).toEqual({
|
|
@@ -520,48 +528,48 @@ describe('logicflow/apis', () => {
|
|
|
520
528
|
SCALE_Y: 1,
|
|
521
529
|
TRANSLATE_X: 0,
|
|
522
530
|
TRANSLATE_Y: 0,
|
|
523
|
-
})
|
|
524
|
-
})
|
|
531
|
+
})
|
|
532
|
+
})
|
|
525
533
|
|
|
526
534
|
test('resize', () => {
|
|
527
|
-
lf.resize(100, 100)
|
|
528
|
-
expect(resize).toBeCalled()
|
|
535
|
+
lf.resize(100, 100)
|
|
536
|
+
expect(resize).toBeCalled()
|
|
529
537
|
setTimeout(() => {
|
|
530
|
-
expect(lf.graphModel.width).toBe(100)
|
|
531
|
-
expect(lf.graphModel.height).toBe(100)
|
|
532
|
-
})
|
|
533
|
-
})
|
|
538
|
+
expect(lf.graphModel.width).toBe(100)
|
|
539
|
+
expect(lf.graphModel.height).toBe(100)
|
|
540
|
+
})
|
|
541
|
+
})
|
|
534
542
|
|
|
535
543
|
test('zoom', () => {
|
|
536
|
-
lf.zoom(0.5)
|
|
537
|
-
expect(lf.graphModel.transformModel.SCALE_X).toBe(0.5)
|
|
538
|
-
expect(lf.graphModel.transformModel.SCALE_Y).toBe(0.5)
|
|
539
|
-
lf.resetZoom()
|
|
540
|
-
expect(lf.graphModel.transformModel.SCALE_X).toBe(1)
|
|
541
|
-
expect(lf.graphModel.transformModel.SCALE_Y).toBe(1)
|
|
542
|
-
})
|
|
544
|
+
lf.zoom(0.5)
|
|
545
|
+
expect(lf.graphModel.transformModel.SCALE_X).toBe(0.5)
|
|
546
|
+
expect(lf.graphModel.transformModel.SCALE_Y).toBe(0.5)
|
|
547
|
+
lf.resetZoom()
|
|
548
|
+
expect(lf.graphModel.transformModel.SCALE_X).toBe(1)
|
|
549
|
+
expect(lf.graphModel.transformModel.SCALE_Y).toBe(1)
|
|
550
|
+
})
|
|
543
551
|
|
|
544
552
|
test('translate', () => {
|
|
545
|
-
lf.translate(100, 100)
|
|
546
|
-
expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(100)
|
|
547
|
-
expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(100)
|
|
548
|
-
lf.resetTranslate()
|
|
549
|
-
expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(0)
|
|
550
|
-
expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(0)
|
|
551
|
-
})
|
|
553
|
+
lf.translate(100, 100)
|
|
554
|
+
expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(100)
|
|
555
|
+
expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(100)
|
|
556
|
+
lf.resetTranslate()
|
|
557
|
+
expect(lf.graphModel.transformModel.TRANSLATE_X).toBe(0)
|
|
558
|
+
expect(lf.graphModel.transformModel.TRANSLATE_Y).toBe(0)
|
|
559
|
+
})
|
|
552
560
|
|
|
553
561
|
test('select and to front in overlapMode 1', () => {
|
|
554
|
-
lf.render(rawData)
|
|
555
|
-
lf.selectElementById('node1')
|
|
556
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
|
|
557
|
-
lf.clearSelectElements()
|
|
558
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
|
|
559
|
-
})
|
|
562
|
+
lf.render(rawData)
|
|
563
|
+
lf.selectElementById('node1')
|
|
564
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
|
|
565
|
+
lf.clearSelectElements()
|
|
566
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(1008)
|
|
567
|
+
})
|
|
560
568
|
|
|
561
569
|
test('to front in overlapMode 1', () => {
|
|
562
|
-
lf.render(rawData)
|
|
563
|
-
lf.toFront('node1')
|
|
564
|
-
expect(lf.getNodeModelById('node1').zIndex).toBe(1016)
|
|
565
|
-
})
|
|
566
|
-
})
|
|
567
|
-
})
|
|
570
|
+
lf.render(rawData)
|
|
571
|
+
lf.toFront('node1')
|
|
572
|
+
expect(lf.getNodeModelById('node1').zIndex).toBe(1016)
|
|
573
|
+
})
|
|
574
|
+
})
|
|
575
|
+
})
|