vis-rails 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vis/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/vis.js +26 -26
  4. metadata +16 -85
  5. data/vendor/assets/vis/DataSet.js +0 -926
  6. data/vendor/assets/vis/DataView.js +0 -283
  7. data/vendor/assets/vis/graph/Edge.js +0 -957
  8. data/vendor/assets/vis/graph/Graph.js +0 -2291
  9. data/vendor/assets/vis/graph/Groups.js +0 -80
  10. data/vendor/assets/vis/graph/Images.js +0 -41
  11. data/vendor/assets/vis/graph/Node.js +0 -966
  12. data/vendor/assets/vis/graph/Popup.js +0 -132
  13. data/vendor/assets/vis/graph/css/graph-manipulation.css +0 -128
  14. data/vendor/assets/vis/graph/css/graph-navigation.css +0 -66
  15. data/vendor/assets/vis/graph/dotparser.js +0 -829
  16. data/vendor/assets/vis/graph/graphMixins/ClusterMixin.js +0 -1143
  17. data/vendor/assets/vis/graph/graphMixins/HierarchicalLayoutMixin.js +0 -311
  18. data/vendor/assets/vis/graph/graphMixins/ManipulationMixin.js +0 -576
  19. data/vendor/assets/vis/graph/graphMixins/MixinLoader.js +0 -199
  20. data/vendor/assets/vis/graph/graphMixins/NavigationMixin.js +0 -205
  21. data/vendor/assets/vis/graph/graphMixins/SectorsMixin.js +0 -552
  22. data/vendor/assets/vis/graph/graphMixins/SelectionMixin.js +0 -648
  23. data/vendor/assets/vis/graph/graphMixins/physics/BarnesHut.js +0 -398
  24. data/vendor/assets/vis/graph/graphMixins/physics/HierarchialRepulsion.js +0 -64
  25. data/vendor/assets/vis/graph/graphMixins/physics/PhysicsMixin.js +0 -697
  26. data/vendor/assets/vis/graph/graphMixins/physics/Repulsion.js +0 -66
  27. data/vendor/assets/vis/graph/img/acceptDeleteIcon.png +0 -0
  28. data/vendor/assets/vis/graph/img/addNodeIcon.png +0 -0
  29. data/vendor/assets/vis/graph/img/backIcon.png +0 -0
  30. data/vendor/assets/vis/graph/img/connectIcon.png +0 -0
  31. data/vendor/assets/vis/graph/img/cross.png +0 -0
  32. data/vendor/assets/vis/graph/img/cross2.png +0 -0
  33. data/vendor/assets/vis/graph/img/deleteIcon.png +0 -0
  34. data/vendor/assets/vis/graph/img/downArrow.png +0 -0
  35. data/vendor/assets/vis/graph/img/editIcon.png +0 -0
  36. data/vendor/assets/vis/graph/img/leftArrow.png +0 -0
  37. data/vendor/assets/vis/graph/img/minus.png +0 -0
  38. data/vendor/assets/vis/graph/img/plus.png +0 -0
  39. data/vendor/assets/vis/graph/img/rightArrow.png +0 -0
  40. data/vendor/assets/vis/graph/img/upArrow.png +0 -0
  41. data/vendor/assets/vis/graph/img/zoomExtends.png +0 -0
  42. data/vendor/assets/vis/graph/shapes.js +0 -225
  43. data/vendor/assets/vis/graph3d/Graph3d.js +0 -3306
  44. data/vendor/assets/vis/module/exports.js +0 -65
  45. data/vendor/assets/vis/module/header.js +0 -24
  46. data/vendor/assets/vis/module/imports.js +0 -31
  47. data/vendor/assets/vis/shim.js +0 -252
  48. data/vendor/assets/vis/timeline/Range.js +0 -532
  49. data/vendor/assets/vis/timeline/TimeStep.js +0 -466
  50. data/vendor/assets/vis/timeline/Timeline.js +0 -851
  51. data/vendor/assets/vis/timeline/component/Component.js +0 -52
  52. data/vendor/assets/vis/timeline/component/CurrentTime.js +0 -128
  53. data/vendor/assets/vis/timeline/component/CustomTime.js +0 -182
  54. data/vendor/assets/vis/timeline/component/Group.js +0 -470
  55. data/vendor/assets/vis/timeline/component/ItemSet.js +0 -1332
  56. data/vendor/assets/vis/timeline/component/TimeAxis.js +0 -389
  57. data/vendor/assets/vis/timeline/component/css/animation.css +0 -33
  58. data/vendor/assets/vis/timeline/component/css/currenttime.css +0 -5
  59. data/vendor/assets/vis/timeline/component/css/customtime.css +0 -6
  60. data/vendor/assets/vis/timeline/component/css/item.css +0 -107
  61. data/vendor/assets/vis/timeline/component/css/itemset.css +0 -33
  62. data/vendor/assets/vis/timeline/component/css/labelset.css +0 -36
  63. data/vendor/assets/vis/timeline/component/css/panel.css +0 -71
  64. data/vendor/assets/vis/timeline/component/css/timeaxis.css +0 -48
  65. data/vendor/assets/vis/timeline/component/css/timeline.css +0 -2
  66. data/vendor/assets/vis/timeline/component/item/Item.js +0 -139
  67. data/vendor/assets/vis/timeline/component/item/ItemBox.js +0 -230
  68. data/vendor/assets/vis/timeline/component/item/ItemPoint.js +0 -190
  69. data/vendor/assets/vis/timeline/component/item/ItemRange.js +0 -262
  70. data/vendor/assets/vis/timeline/component/item/ItemRangeOverflow.js +0 -57
  71. data/vendor/assets/vis/timeline/img/delete.png +0 -0
  72. data/vendor/assets/vis/timeline/stack.js +0 -112
  73. data/vendor/assets/vis/util.js +0 -990
@@ -1,648 +0,0 @@
1
-
2
- var SelectionMixin = {
3
-
4
- /**
5
- * This function can be called from the _doInAllSectors function
6
- *
7
- * @param object
8
- * @param overlappingNodes
9
- * @private
10
- */
11
- _getNodesOverlappingWith : function(object, overlappingNodes) {
12
- var nodes = this.nodes;
13
- for (var nodeId in nodes) {
14
- if (nodes.hasOwnProperty(nodeId)) {
15
- if (nodes[nodeId].isOverlappingWith(object)) {
16
- overlappingNodes.push(nodeId);
17
- }
18
- }
19
- }
20
- },
21
-
22
- /**
23
- * retrieve all nodes overlapping with given object
24
- * @param {Object} object An object with parameters left, top, right, bottom
25
- * @return {Number[]} An array with id's of the overlapping nodes
26
- * @private
27
- */
28
- _getAllNodesOverlappingWith : function (object) {
29
- var overlappingNodes = [];
30
- this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes);
31
- return overlappingNodes;
32
- },
33
-
34
-
35
- /**
36
- * Return a position object in canvasspace from a single point in screenspace
37
- *
38
- * @param pointer
39
- * @returns {{left: number, top: number, right: number, bottom: number}}
40
- * @private
41
- */
42
- _pointerToPositionObject : function(pointer) {
43
- var x = this._XconvertDOMtoCanvas(pointer.x);
44
- var y = this._YconvertDOMtoCanvas(pointer.y);
45
-
46
- return {left: x,
47
- top: y,
48
- right: x,
49
- bottom: y};
50
- },
51
-
52
-
53
- /**
54
- * Get the top node at the a specific point (like a click)
55
- *
56
- * @param {{x: Number, y: Number}} pointer
57
- * @return {Node | null} node
58
- * @private
59
- */
60
- _getNodeAt : function (pointer) {
61
- // we first check if this is an navigation controls element
62
- var positionObject = this._pointerToPositionObject(pointer);
63
- var overlappingNodes = this._getAllNodesOverlappingWith(positionObject);
64
-
65
- // if there are overlapping nodes, select the last one, this is the
66
- // one which is drawn on top of the others
67
- if (overlappingNodes.length > 0) {
68
- return this.nodes[overlappingNodes[overlappingNodes.length - 1]];
69
- }
70
- else {
71
- return null;
72
- }
73
- },
74
-
75
-
76
- /**
77
- * retrieve all edges overlapping with given object, selector is around center
78
- * @param {Object} object An object with parameters left, top, right, bottom
79
- * @return {Number[]} An array with id's of the overlapping nodes
80
- * @private
81
- */
82
- _getEdgesOverlappingWith : function (object, overlappingEdges) {
83
- var edges = this.edges;
84
- for (var edgeId in edges) {
85
- if (edges.hasOwnProperty(edgeId)) {
86
- if (edges[edgeId].isOverlappingWith(object)) {
87
- overlappingEdges.push(edgeId);
88
- }
89
- }
90
- }
91
- },
92
-
93
-
94
- /**
95
- * retrieve all nodes overlapping with given object
96
- * @param {Object} object An object with parameters left, top, right, bottom
97
- * @return {Number[]} An array with id's of the overlapping nodes
98
- * @private
99
- */
100
- _getAllEdgesOverlappingWith : function (object) {
101
- var overlappingEdges = [];
102
- this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges);
103
- return overlappingEdges;
104
- },
105
-
106
- /**
107
- * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call
108
- * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences.
109
- *
110
- * @param pointer
111
- * @returns {null}
112
- * @private
113
- */
114
- _getEdgeAt : function(pointer) {
115
- var positionObject = this._pointerToPositionObject(pointer);
116
- var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject);
117
-
118
- if (overlappingEdges.length > 0) {
119
- return this.edges[overlappingEdges[overlappingEdges.length - 1]];
120
- }
121
- else {
122
- return null;
123
- }
124
- },
125
-
126
-
127
- /**
128
- * Add object to the selection array.
129
- *
130
- * @param obj
131
- * @private
132
- */
133
- _addToSelection : function(obj) {
134
- if (obj instanceof Node) {
135
- this.selectionObj.nodes[obj.id] = obj;
136
- }
137
- else {
138
- this.selectionObj.edges[obj.id] = obj;
139
- }
140
- },
141
-
142
- /**
143
- * Add object to the selection array.
144
- *
145
- * @param obj
146
- * @private
147
- */
148
- _addToHover : function(obj) {
149
- if (obj instanceof Node) {
150
- this.hoverObj.nodes[obj.id] = obj;
151
- }
152
- else {
153
- this.hoverObj.edges[obj.id] = obj;
154
- }
155
- },
156
-
157
-
158
- /**
159
- * Remove a single option from selection.
160
- *
161
- * @param {Object} obj
162
- * @private
163
- */
164
- _removeFromSelection : function(obj) {
165
- if (obj instanceof Node) {
166
- delete this.selectionObj.nodes[obj.id];
167
- }
168
- else {
169
- delete this.selectionObj.edges[obj.id];
170
- }
171
- },
172
-
173
- /**
174
- * Unselect all. The selectionObj is useful for this.
175
- *
176
- * @param {Boolean} [doNotTrigger] | ignore trigger
177
- * @private
178
- */
179
- _unselectAll : function(doNotTrigger) {
180
- if (doNotTrigger === undefined) {
181
- doNotTrigger = false;
182
- }
183
- for(var nodeId in this.selectionObj.nodes) {
184
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
185
- this.selectionObj.nodes[nodeId].unselect();
186
- }
187
- }
188
- for(var edgeId in this.selectionObj.edges) {
189
- if(this.selectionObj.edges.hasOwnProperty(edgeId)) {
190
- this.selectionObj.edges[edgeId].unselect();
191
- }
192
- }
193
-
194
- this.selectionObj = {nodes:{},edges:{}};
195
-
196
- if (doNotTrigger == false) {
197
- this.emit('select', this.getSelection());
198
- }
199
- },
200
-
201
- /**
202
- * Unselect all clusters. The selectionObj is useful for this.
203
- *
204
- * @param {Boolean} [doNotTrigger] | ignore trigger
205
- * @private
206
- */
207
- _unselectClusters : function(doNotTrigger) {
208
- if (doNotTrigger === undefined) {
209
- doNotTrigger = false;
210
- }
211
-
212
- for (var nodeId in this.selectionObj.nodes) {
213
- if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {
214
- if (this.selectionObj.nodes[nodeId].clusterSize > 1) {
215
- this.selectionObj.nodes[nodeId].unselect();
216
- this._removeFromSelection(this.selectionObj.nodes[nodeId]);
217
- }
218
- }
219
- }
220
-
221
- if (doNotTrigger == false) {
222
- this.emit('select', this.getSelection());
223
- }
224
- },
225
-
226
-
227
- /**
228
- * return the number of selected nodes
229
- *
230
- * @returns {number}
231
- * @private
232
- */
233
- _getSelectedNodeCount : function() {
234
- var count = 0;
235
- for (var nodeId in this.selectionObj.nodes) {
236
- if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {
237
- count += 1;
238
- }
239
- }
240
- return count;
241
- },
242
-
243
- /**
244
- * return the selected node
245
- *
246
- * @returns {number}
247
- * @private
248
- */
249
- _getSelectedNode : function() {
250
- for (var nodeId in this.selectionObj.nodes) {
251
- if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {
252
- return this.selectionObj.nodes[nodeId];
253
- }
254
- }
255
- return null;
256
- },
257
-
258
- /**
259
- * return the selected edge
260
- *
261
- * @returns {number}
262
- * @private
263
- */
264
- _getSelectedEdge : function() {
265
- for (var edgeId in this.selectionObj.edges) {
266
- if (this.selectionObj.edges.hasOwnProperty(edgeId)) {
267
- return this.selectionObj.edges[edgeId];
268
- }
269
- }
270
- return null;
271
- },
272
-
273
-
274
- /**
275
- * return the number of selected edges
276
- *
277
- * @returns {number}
278
- * @private
279
- */
280
- _getSelectedEdgeCount : function() {
281
- var count = 0;
282
- for (var edgeId in this.selectionObj.edges) {
283
- if (this.selectionObj.edges.hasOwnProperty(edgeId)) {
284
- count += 1;
285
- }
286
- }
287
- return count;
288
- },
289
-
290
-
291
- /**
292
- * return the number of selected objects.
293
- *
294
- * @returns {number}
295
- * @private
296
- */
297
- _getSelectedObjectCount : function() {
298
- var count = 0;
299
- for(var nodeId in this.selectionObj.nodes) {
300
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
301
- count += 1;
302
- }
303
- }
304
- for(var edgeId in this.selectionObj.edges) {
305
- if(this.selectionObj.edges.hasOwnProperty(edgeId)) {
306
- count += 1;
307
- }
308
- }
309
- return count;
310
- },
311
-
312
- /**
313
- * Check if anything is selected
314
- *
315
- * @returns {boolean}
316
- * @private
317
- */
318
- _selectionIsEmpty : function() {
319
- for(var nodeId in this.selectionObj.nodes) {
320
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
321
- return false;
322
- }
323
- }
324
- for(var edgeId in this.selectionObj.edges) {
325
- if(this.selectionObj.edges.hasOwnProperty(edgeId)) {
326
- return false;
327
- }
328
- }
329
- return true;
330
- },
331
-
332
-
333
- /**
334
- * check if one of the selected nodes is a cluster.
335
- *
336
- * @returns {boolean}
337
- * @private
338
- */
339
- _clusterInSelection : function() {
340
- for(var nodeId in this.selectionObj.nodes) {
341
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
342
- if (this.selectionObj.nodes[nodeId].clusterSize > 1) {
343
- return true;
344
- }
345
- }
346
- }
347
- return false;
348
- },
349
-
350
- /**
351
- * select the edges connected to the node that is being selected
352
- *
353
- * @param {Node} node
354
- * @private
355
- */
356
- _selectConnectedEdges : function(node) {
357
- for (var i = 0; i < node.dynamicEdges.length; i++) {
358
- var edge = node.dynamicEdges[i];
359
- edge.select();
360
- this._addToSelection(edge);
361
- }
362
- },
363
-
364
- /**
365
- * select the edges connected to the node that is being selected
366
- *
367
- * @param {Node} node
368
- * @private
369
- */
370
- _hoverConnectedEdges : function(node) {
371
- for (var i = 0; i < node.dynamicEdges.length; i++) {
372
- var edge = node.dynamicEdges[i];
373
- edge.hover = true;
374
- this._addToHover(edge);
375
- }
376
- },
377
-
378
-
379
- /**
380
- * unselect the edges connected to the node that is being selected
381
- *
382
- * @param {Node} node
383
- * @private
384
- */
385
- _unselectConnectedEdges : function(node) {
386
- for (var i = 0; i < node.dynamicEdges.length; i++) {
387
- var edge = node.dynamicEdges[i];
388
- edge.unselect();
389
- this._removeFromSelection(edge);
390
- }
391
- },
392
-
393
-
394
-
395
-
396
- /**
397
- * This is called when someone clicks on a node. either select or deselect it.
398
- * If there is an existing selection and we don't want to append to it, clear the existing selection
399
- *
400
- * @param {Node || Edge} object
401
- * @param {Boolean} append
402
- * @param {Boolean} [doNotTrigger] | ignore trigger
403
- * @private
404
- */
405
- _selectObject : function(object, append, doNotTrigger) {
406
- if (doNotTrigger === undefined) {
407
- doNotTrigger = false;
408
- }
409
-
410
- if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) {
411
- this._unselectAll(true);
412
- }
413
-
414
- if (object.selected == false) {
415
- object.select();
416
- this._addToSelection(object);
417
- if (object instanceof Node && this.blockConnectingEdgeSelection == false) {
418
- this._selectConnectedEdges(object);
419
- }
420
- }
421
- else {
422
- object.unselect();
423
- this._removeFromSelection(object);
424
- }
425
-
426
- if (doNotTrigger == false) {
427
- this.emit('select', this.getSelection());
428
- }
429
- },
430
-
431
-
432
- /**
433
- * This is called when someone clicks on a node. either select or deselect it.
434
- * If there is an existing selection and we don't want to append to it, clear the existing selection
435
- *
436
- * @param {Node || Edge} object
437
- * @private
438
- */
439
- _blurObject : function(object) {
440
- if (object.hover == true) {
441
- object.hover = false;
442
- this.emit("blurNode",{node:object.id});
443
- }
444
- },
445
-
446
- /**
447
- * This is called when someone clicks on a node. either select or deselect it.
448
- * If there is an existing selection and we don't want to append to it, clear the existing selection
449
- *
450
- * @param {Node || Edge} object
451
- * @private
452
- */
453
- _hoverObject : function(object) {
454
- if (object.hover == false) {
455
- object.hover = true;
456
- this._addToHover(object);
457
- if (object instanceof Node) {
458
- this.emit("hoverNode",{node:object.id});
459
- }
460
- }
461
- if (object instanceof Node) {
462
- this._hoverConnectedEdges(object);
463
- }
464
- },
465
-
466
-
467
- /**
468
- * handles the selection part of the touch, only for navigation controls elements;
469
- * Touch is triggered before tap, also before hold. Hold triggers after a while.
470
- * This is the most responsive solution
471
- *
472
- * @param {Object} pointer
473
- * @private
474
- */
475
- _handleTouch : function(pointer) {
476
- },
477
-
478
-
479
- /**
480
- * handles the selection part of the tap;
481
- *
482
- * @param {Object} pointer
483
- * @private
484
- */
485
- _handleTap : function(pointer) {
486
- var node = this._getNodeAt(pointer);
487
- if (node != null) {
488
- this._selectObject(node,false);
489
- }
490
- else {
491
- var edge = this._getEdgeAt(pointer);
492
- if (edge != null) {
493
- this._selectObject(edge,false);
494
- }
495
- else {
496
- this._unselectAll();
497
- }
498
- }
499
- this.emit("click", this.getSelection());
500
- this._redraw();
501
- },
502
-
503
-
504
- /**
505
- * handles the selection part of the double tap and opens a cluster if needed
506
- *
507
- * @param {Object} pointer
508
- * @private
509
- */
510
- _handleDoubleTap : function(pointer) {
511
- var node = this._getNodeAt(pointer);
512
- if (node != null && node !== undefined) {
513
- // we reset the areaCenter here so the opening of the node will occur
514
- this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x),
515
- "y" : this._YconvertDOMtoCanvas(pointer.y)};
516
- this.openCluster(node);
517
- }
518
- this.emit("doubleClick", this.getSelection());
519
- },
520
-
521
-
522
- /**
523
- * Handle the onHold selection part
524
- *
525
- * @param pointer
526
- * @private
527
- */
528
- _handleOnHold : function(pointer) {
529
- var node = this._getNodeAt(pointer);
530
- if (node != null) {
531
- this._selectObject(node,true);
532
- }
533
- else {
534
- var edge = this._getEdgeAt(pointer);
535
- if (edge != null) {
536
- this._selectObject(edge,true);
537
- }
538
- }
539
- this._redraw();
540
- },
541
-
542
-
543
- /**
544
- * handle the onRelease event. These functions are here for the navigation controls module.
545
- *
546
- * @private
547
- */
548
- _handleOnRelease : function(pointer) {
549
-
550
- },
551
-
552
-
553
-
554
- /**
555
- *
556
- * retrieve the currently selected objects
557
- * @return {Number[] | String[]} selection An array with the ids of the
558
- * selected nodes.
559
- */
560
- getSelection : function() {
561
- var nodeIds = this.getSelectedNodes();
562
- var edgeIds = this.getSelectedEdges();
563
- return {nodes:nodeIds, edges:edgeIds};
564
- },
565
-
566
- /**
567
- *
568
- * retrieve the currently selected nodes
569
- * @return {String} selection An array with the ids of the
570
- * selected nodes.
571
- */
572
- getSelectedNodes : function() {
573
- var idArray = [];
574
- for(var nodeId in this.selectionObj.nodes) {
575
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
576
- idArray.push(nodeId);
577
- }
578
- }
579
- return idArray
580
- },
581
-
582
- /**
583
- *
584
- * retrieve the currently selected edges
585
- * @return {Array} selection An array with the ids of the
586
- * selected nodes.
587
- */
588
- getSelectedEdges : function() {
589
- var idArray = [];
590
- for(var edgeId in this.selectionObj.edges) {
591
- if(this.selectionObj.edges.hasOwnProperty(edgeId)) {
592
- idArray.push(edgeId);
593
- }
594
- }
595
- return idArray;
596
- },
597
-
598
-
599
- /**
600
- * select zero or more nodes
601
- * @param {Number[] | String[]} selection An array with the ids of the
602
- * selected nodes.
603
- */
604
- setSelection : function(selection) {
605
- var i, iMax, id;
606
-
607
- if (!selection || (selection.length == undefined))
608
- throw 'Selection must be an array with ids';
609
-
610
- // first unselect any selected node
611
- this._unselectAll(true);
612
-
613
- for (i = 0, iMax = selection.length; i < iMax; i++) {
614
- id = selection[i];
615
-
616
- var node = this.nodes[id];
617
- if (!node) {
618
- throw new RangeError('Node with id "' + id + '" not found');
619
- }
620
- this._selectObject(node,true,true);
621
- }
622
- this.redraw();
623
- },
624
-
625
-
626
- /**
627
- * Validate the selection: remove ids of nodes which no longer exist
628
- * @private
629
- */
630
- _updateSelection : function () {
631
- for(var nodeId in this.selectionObj.nodes) {
632
- if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {
633
- if (!this.nodes.hasOwnProperty(nodeId)) {
634
- delete this.selectionObj.nodes[nodeId];
635
- }
636
- }
637
- }
638
- for(var edgeId in this.selectionObj.edges) {
639
- if(this.selectionObj.edges.hasOwnProperty(edgeId)) {
640
- if (!this.edges.hasOwnProperty(edgeId)) {
641
- delete this.selectionObj.edges[edgeId];
642
- }
643
- }
644
- }
645
- }
646
- };
647
-
648
-