@sapui5/sap.suite.ui.commons 1.143.0 → 1.145.0
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/package.json +1 -1
- package/src/sap/suite/ui/commons/.library +1 -1
- package/src/sap/suite/ui/commons/AriaProperties.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilder.js +26 -14
- package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +2 -2
- package/src/sap/suite/ui/commons/CalculationBuilderFunction.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderGroup.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderInput.js +5 -5
- package/src/sap/suite/ui/commons/CalculationBuilderItem.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderValidationResult.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderVariable.js +1 -1
- package/src/sap/suite/ui/commons/CloudFilePicker.js +1 -3
- package/src/sap/suite/ui/commons/MicroProcessFlow.js +77 -73
- package/src/sap/suite/ui/commons/MicroProcessFlowItem.js +3 -3
- package/src/sap/suite/ui/commons/Timeline.js +9 -0
- package/src/sap/suite/ui/commons/TimelineNavigator.js +37 -5
- package/src/sap/suite/ui/commons/TimelineRenderer.js +3 -3
- package/src/sap/suite/ui/commons/collaboration/BaseHelperService.js +0 -1
- package/src/sap/suite/ui/commons/collaboration/CollaborationHelper.js +0 -3
- package/src/sap/suite/ui/commons/collaboration/CollaborationManagerService.js +0 -1
- package/src/sap/suite/ui/commons/collaboration/ContactHelper.js +7 -0
- package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +4 -1
- package/src/sap/suite/ui/commons/collaboration/MinimalContactPopover.fragment.xml +2 -1
- package/src/sap/suite/ui/commons/collaboration/TeamsHelperService.js +0 -6
- package/src/sap/suite/ui/commons/collaboration/channels/MessageChannel.js +0 -2
- package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component-preload.js +1 -1
- package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component.js +1 -2
- package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/library.js +100 -3
- package/src/sap/suite/ui/commons/messagebundle.properties +76 -10
- package/src/sap/suite/ui/commons/messagebundle_ar.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_bg.properties +62 -16
- package/src/sap/suite/ui/commons/messagebundle_ca.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_cnr.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_cs.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_cy.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_da.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_de.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_el.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_en.properties +50 -7
- package/src/sap/suite/ui/commons/messagebundle_en_GB.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_en_US_saprigi.properties +54 -6
- package/src/sap/suite/ui/commons/messagebundle_es.properties +53 -7
- package/src/sap/suite/ui/commons/messagebundle_es_MX.properties +54 -8
- package/src/sap/suite/ui/commons/messagebundle_et.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_fi.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_fr.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_fr_CA.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_hi.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_hr.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_hu.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_id.properties +60 -14
- package/src/sap/suite/ui/commons/messagebundle_it.properties +53 -7
- package/src/sap/suite/ui/commons/messagebundle_iw.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_ja.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_kk.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_ko.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_lt.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_lv.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_mk.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_ms.properties +59 -13
- package/src/sap/suite/ui/commons/messagebundle_nl.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_no.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_pl.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_pt.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_pt_PT.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_ro.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_ru.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_sh.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_sk.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_sl.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_sr.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_sv.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_th.properties +52 -6
- package/src/sap/suite/ui/commons/messagebundle_tr.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_uk.properties +53 -7
- package/src/sap/suite/ui/commons/messagebundle_vi.properties +55 -9
- package/src/sap/suite/ui/commons/messagebundle_zh_CN.properties +51 -5
- package/src/sap/suite/ui/commons/messagebundle_zh_TW.properties +53 -7
- package/src/sap/suite/ui/commons/networkgraph/ElementBase.js +19 -1
- package/src/sap/suite/ui/commons/networkgraph/Graph.js +371 -29
- package/src/sap/suite/ui/commons/networkgraph/GraphRenderer.js +23 -10
- package/src/sap/suite/ui/commons/networkgraph/Group.js +43 -22
- package/src/sap/suite/ui/commons/networkgraph/KeyboardNavigator.js +54 -6
- package/src/sap/suite/ui/commons/networkgraph/Line.js +736 -31
- package/src/sap/suite/ui/commons/networkgraph/Node.js +546 -96
- package/src/sap/suite/ui/commons/networkgraph/Tooltip.js +5 -0
- package/src/sap/suite/ui/commons/networkgraph/layout/NoopLayout.js +28 -5
- package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +1144 -0
- package/src/sap/suite/ui/commons/networkgraph/util/CreateConnectionPopover.js +374 -0
- package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +870 -0
- package/src/sap/suite/ui/commons/networkgraph/util/DragDropManager.js +563 -41
- package/src/sap/suite/ui/commons/networkgraph/util/PortManager.js +573 -0
- package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
- package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +13 -13
- package/src/sap/suite/ui/commons/themes/base/NetworkGroup.less +34 -2
- package/src/sap/suite/ui/commons/themes/base/NetworkLine.less +58 -13
- package/src/sap/suite/ui/commons/themes/base/NetworkNode.less +206 -1
|
@@ -31,7 +31,10 @@ sap.ui.define([
|
|
|
31
31
|
"sap/ui/performance/Measurement",
|
|
32
32
|
"sap/base/security/encodeXML",
|
|
33
33
|
"sap/m/ToggleButton",
|
|
34
|
+
"sap/m/BusyIndicator",
|
|
34
35
|
"sap/m/library",
|
|
36
|
+
"sap/m/IllustratedMessage",
|
|
37
|
+
"sap/m/IllustratedMessageType",
|
|
35
38
|
"sap/suite/ui/commons/util/FullScreenUtil",
|
|
36
39
|
"sap/ui/core/InvisibleMessage",
|
|
37
40
|
"sap/ui/core/library",
|
|
@@ -43,7 +46,9 @@ sap.ui.define([
|
|
|
43
46
|
"sap/ui/core/Theming",
|
|
44
47
|
'sap/ui/core/InvisibleText',
|
|
45
48
|
"./GraphRenderer",
|
|
46
|
-
"./util/DragDropManager"
|
|
49
|
+
"./util/DragDropManager",
|
|
50
|
+
"./util/PortManager",
|
|
51
|
+
"sap/ui/core/IconPool"
|
|
47
52
|
], function (
|
|
48
53
|
library,
|
|
49
54
|
jQuery,
|
|
@@ -70,7 +75,10 @@ sap.ui.define([
|
|
|
70
75
|
Measurement,
|
|
71
76
|
encodeXML,
|
|
72
77
|
ToggleButton,
|
|
78
|
+
BusyIndicator,
|
|
73
79
|
MobileLibrary,
|
|
80
|
+
IllustratedMessage,
|
|
81
|
+
IllustratedMessageType,
|
|
74
82
|
FullScreenUtil,
|
|
75
83
|
InvisibleMessage,
|
|
76
84
|
coreLibrary,
|
|
@@ -82,7 +90,9 @@ sap.ui.define([
|
|
|
82
90
|
Theming,
|
|
83
91
|
InvisibleText,
|
|
84
92
|
GraphRenderer,
|
|
85
|
-
DragDropManager
|
|
93
|
+
DragDropManager,
|
|
94
|
+
PortManager,
|
|
95
|
+
IconPool
|
|
86
96
|
) {
|
|
87
97
|
"use strict";
|
|
88
98
|
|
|
@@ -91,7 +101,8 @@ sap.ui.define([
|
|
|
91
101
|
Orientation = library.networkgraph.Orientation,
|
|
92
102
|
LayoutRenderType = library.networkgraph.LayoutRenderType,
|
|
93
103
|
RenderType = library.networkgraph.RenderType,
|
|
94
|
-
SemanticColorType = library.SemanticColorType
|
|
104
|
+
SemanticColorType = library.SemanticColorType,
|
|
105
|
+
NodePorts = library.networkgraph.NodePorts;
|
|
95
106
|
|
|
96
107
|
var AGG_NODES = "nodes",
|
|
97
108
|
AGG_LINES = "lines",
|
|
@@ -212,6 +223,22 @@ sap.ui.define([
|
|
|
212
223
|
noDataText: {
|
|
213
224
|
type: "string", group: "Behavior", defaultValue: ""
|
|
214
225
|
},
|
|
226
|
+
/**
|
|
227
|
+
* Set this property to <code>true</code> to display a loading indicator while the data loads.
|
|
228
|
+
* @public
|
|
229
|
+
* @since 1.144
|
|
230
|
+
*/
|
|
231
|
+
loading: {
|
|
232
|
+
type: "boolean", group: "Behavior", defaultValue: false
|
|
233
|
+
},
|
|
234
|
+
/**
|
|
235
|
+
* Text that is displayed when the loading is set. <br> This property takes effect only when the <code>loading</code> property is set to <code>true</code>.
|
|
236
|
+
* @public
|
|
237
|
+
* @since 1.144
|
|
238
|
+
*/
|
|
239
|
+
loadingText: {
|
|
240
|
+
type: "string", group: "Behavior", defaultValue: ""
|
|
241
|
+
},
|
|
215
242
|
/**
|
|
216
243
|
* Adds delay in wheel scrolling to make zooming smooth.
|
|
217
244
|
* Only works when enableWheelZoom is set to true or 'ctrl' key is pressed while wheel scrolling.
|
|
@@ -225,11 +252,49 @@ sap.ui.define([
|
|
|
225
252
|
/**
|
|
226
253
|
* Enables the drag and drop of nodes. This property is ignored if the layout property is not set to noop.
|
|
227
254
|
* If set to <code>true</code>, nodes can be dragged and dropped within the graph.
|
|
228
|
-
*
|
|
229
|
-
* @
|
|
255
|
+
* @public
|
|
256
|
+
* @since 1.144
|
|
230
257
|
*/
|
|
231
258
|
enableDragAndDrop: {
|
|
232
|
-
type: "boolean", group: "Behavior", defaultValue: false
|
|
259
|
+
type: "boolean", group: "Behavior", defaultValue: false
|
|
260
|
+
},
|
|
261
|
+
/**
|
|
262
|
+
* Specifies the ports that are to be displayed on nodes. Ports are used for creating connections between nodes.
|
|
263
|
+
* Ports are available only when the layout algorithm is set to "NoopLayout", and when the drag and drop is enabled. Otherwise, this property is ignored.
|
|
264
|
+
* @public
|
|
265
|
+
* @since 1.144
|
|
266
|
+
*/
|
|
267
|
+
nodePorts: {
|
|
268
|
+
type: "sap.suite.ui.commons.networkgraph.NodePorts", group: "Behavior", defaultValue: NodePorts.None
|
|
269
|
+
},
|
|
270
|
+
/**
|
|
271
|
+
* This action button is used to create connections between nodes as an accessible alternative to node ports.
|
|
272
|
+
* The button is displayed on each node when the layout algorithm is set to "NoopLayout" and drag and drop is enabled.
|
|
273
|
+
* shows the 'Create Connection' action button on node.
|
|
274
|
+
* If set to <code>false</code>, the button remains hidden.
|
|
275
|
+
* Hide this button when you want to implement your own way of creating connections between nodes as an accessible alternative to node ports.
|
|
276
|
+
* @public
|
|
277
|
+
* @since 1.144
|
|
278
|
+
*/
|
|
279
|
+
showCreateConnectionButton: {
|
|
280
|
+
type: "boolean", group: "Behavior", defaultValue: true
|
|
281
|
+
},
|
|
282
|
+
/**
|
|
283
|
+
* Mapping of connection types to their display text keys or custom text values.
|
|
284
|
+
* This allows customization of how connection types are displayed in the connection creation popover.
|
|
285
|
+
* The mapping should be an object where keys are connection type values (LeftToLeft, LeftToRight, RightToLeft, RightToRight)
|
|
286
|
+
* and values are custom text that follows the correct format (e.g., "Start to End", "Source to Target").
|
|
287
|
+
* If the format is invalid or not provided, default values are used
|
|
288
|
+
* @public
|
|
289
|
+
* @since 1.144
|
|
290
|
+
*/
|
|
291
|
+
connectionTypeMapping: {
|
|
292
|
+
type: "object", group: "Behavior", defaultValue: {
|
|
293
|
+
"LeftToLeft": "Left to Left",
|
|
294
|
+
"LeftToRight": "Left to Right",
|
|
295
|
+
"RightToLeft": "Right to Left",
|
|
296
|
+
"RightToRight": "Right to Right"
|
|
297
|
+
}
|
|
233
298
|
}
|
|
234
299
|
},
|
|
235
300
|
aggregations: {
|
|
@@ -243,7 +308,7 @@ sap.ui.define([
|
|
|
243
308
|
* Holds the nodes to be displayed in the graph.
|
|
244
309
|
*/
|
|
245
310
|
nodes: {
|
|
246
|
-
type: "sap.suite.ui.commons.networkgraph.Node", multiple: true, singularName: "node"
|
|
311
|
+
type: "sap.suite.ui.commons.networkgraph.Node", multiple: true, singularName: "node", dnd: true
|
|
247
312
|
},
|
|
248
313
|
/**
|
|
249
314
|
* Holds a list of groups used in the graph.
|
|
@@ -280,7 +345,12 @@ sap.ui.define([
|
|
|
280
345
|
/**
|
|
281
346
|
* Controls or IDs that label this control. This association is used by screen reader software.
|
|
282
347
|
*/
|
|
283
|
-
ariaLabelledBy: { type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" }
|
|
348
|
+
ariaLabelledBy: { type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" },
|
|
349
|
+
/**
|
|
350
|
+
* Control or ID of an auxiliary control associated with this graph.
|
|
351
|
+
* @since 1.144
|
|
352
|
+
*/
|
|
353
|
+
associatedControl: { type: "sap.ui.core.Control", multiple: false, singularName: "associatedControl" }
|
|
284
354
|
},
|
|
285
355
|
events: {
|
|
286
356
|
/**
|
|
@@ -345,8 +415,10 @@ sap.ui.define([
|
|
|
345
415
|
}
|
|
346
416
|
},
|
|
347
417
|
/**
|
|
348
|
-
* This event is fired when a user drops a node in the graph.
|
|
349
|
-
*
|
|
418
|
+
* This event is fired when a user drops a node in the graph.
|
|
419
|
+
* This event is available only when the layout algorithm is set to "NoopLayout" and the <code>enableDragAndDrop</code> property is set to <code>true</code>.
|
|
420
|
+
* @public
|
|
421
|
+
* @since 1.144
|
|
350
422
|
*/
|
|
351
423
|
nodeDropped: {
|
|
352
424
|
parameters: {
|
|
@@ -362,9 +434,51 @@ sap.ui.define([
|
|
|
362
434
|
* The new y coordinate of the node.
|
|
363
435
|
*/
|
|
364
436
|
newY: { type: "float" }
|
|
365
|
-
}
|
|
366
|
-
visibility: "hidden"
|
|
437
|
+
}
|
|
367
438
|
},
|
|
439
|
+
/**
|
|
440
|
+
* This event is fired when a new connection is created between two nodes by using node ports.
|
|
441
|
+
* @public
|
|
442
|
+
* @since 1.144
|
|
443
|
+
*/
|
|
444
|
+
connectionCreated: {
|
|
445
|
+
parameters: {
|
|
446
|
+
/**
|
|
447
|
+
* The key of the source node.
|
|
448
|
+
**/
|
|
449
|
+
from: { type: "string" },
|
|
450
|
+
/**
|
|
451
|
+
* The key of the target node.
|
|
452
|
+
**/
|
|
453
|
+
to: { type: "string" },
|
|
454
|
+
/**
|
|
455
|
+
* The connection type defining how the line connects the source and target nodes.
|
|
456
|
+
*/
|
|
457
|
+
connectionType: {type: "sap.suite.ui.commons.networkgraph.ConnectionType"},
|
|
458
|
+
/**
|
|
459
|
+
* The source node control instance.
|
|
460
|
+
**/
|
|
461
|
+
fromNode: { type: "sap.suite.ui.commons.networkgraph.Node" },
|
|
462
|
+
/**
|
|
463
|
+
* The target node control instance.
|
|
464
|
+
**/
|
|
465
|
+
toNode: { type: "sap.suite.ui.commons.networkgraph.Node" }
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
/**
|
|
469
|
+
* This event is fired when a user presses the delete key on a focused node or line.
|
|
470
|
+
* This event is available only when the layout algorithm is set to "NoopLayout" and the <code>enableDragAndDrop</code> property is set to <code>true</code>.
|
|
471
|
+
* @public
|
|
472
|
+
* @since 1.145
|
|
473
|
+
*/
|
|
474
|
+
itemDeleted: {
|
|
475
|
+
parameters: {
|
|
476
|
+
/**
|
|
477
|
+
* The item (node or line) that is to be deleted.
|
|
478
|
+
*/
|
|
479
|
+
item: { type: "sap.suite.ui.commons.networkgraph.ElementBase" }
|
|
480
|
+
}
|
|
481
|
+
}
|
|
368
482
|
}
|
|
369
483
|
}
|
|
370
484
|
});
|
|
@@ -425,6 +539,9 @@ sap.ui.define([
|
|
|
425
539
|
// RTL mode - it's reset in 'onBeforeRendering' in case it changed runtime
|
|
426
540
|
this._bIsRtl = Localization.getRTL();
|
|
427
541
|
|
|
542
|
+
// Private variable for multiple directed arrows feature
|
|
543
|
+
this._enableMultipleDirectedArrows = false;
|
|
544
|
+
|
|
428
545
|
// element with focus
|
|
429
546
|
this._oFocus = null;
|
|
430
547
|
|
|
@@ -443,6 +560,9 @@ sap.ui.define([
|
|
|
443
560
|
// flag to check if the events has been added to the graph
|
|
444
561
|
this._bEventsAdded = false;
|
|
445
562
|
|
|
563
|
+
// illustrated message instance for empty state
|
|
564
|
+
this._oIllustratedMessage = null;
|
|
565
|
+
|
|
446
566
|
this._createToolbar();
|
|
447
567
|
|
|
448
568
|
/**
|
|
@@ -452,9 +572,11 @@ sap.ui.define([
|
|
|
452
572
|
try {
|
|
453
573
|
DragDropManager.injectDnD(this);
|
|
454
574
|
} catch (error) {
|
|
455
|
-
Log.
|
|
575
|
+
Log.warning("Graph injectDnD issue: ", error);
|
|
456
576
|
}
|
|
457
577
|
}
|
|
578
|
+
// Initialize PortManager with this graph instance
|
|
579
|
+
PortManager.setGraphInstance(this);
|
|
458
580
|
|
|
459
581
|
};
|
|
460
582
|
|
|
@@ -601,6 +723,19 @@ sap.ui.define([
|
|
|
601
723
|
if (this._oFullScreenUtil) {
|
|
602
724
|
this._oFullScreenUtil.cleanUpFullScreen(this);
|
|
603
725
|
}
|
|
726
|
+
|
|
727
|
+
// Clean up busy indicator
|
|
728
|
+
if (this._oBusyIndicator) {
|
|
729
|
+
this._oBusyIndicator.destroy();
|
|
730
|
+
this._oBusyIndicator = null;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
// Clean up illustrated message
|
|
734
|
+
if (this._oIllustratedMessage) {
|
|
735
|
+
this._oIllustratedMessage.destroy();
|
|
736
|
+
this._oIllustratedMessage = null;
|
|
737
|
+
}
|
|
738
|
+
|
|
604
739
|
DragDropManager.removeDnD(this);
|
|
605
740
|
};
|
|
606
741
|
/* =========================================================== */
|
|
@@ -632,6 +767,7 @@ sap.ui.define([
|
|
|
632
767
|
/**
|
|
633
768
|
* Returns <code>true</code> if the graph is in full screen mode.
|
|
634
769
|
* @public
|
|
770
|
+
* @returns {boolean} Returns whether the graph is in full screen mode.
|
|
635
771
|
*/
|
|
636
772
|
Graph.prototype.isFullScreen = function () {
|
|
637
773
|
return this._bIsFullScreen;
|
|
@@ -766,6 +902,33 @@ sap.ui.define([
|
|
|
766
902
|
return this._mNodes[sKey];
|
|
767
903
|
};
|
|
768
904
|
|
|
905
|
+
/**
|
|
906
|
+
* Re-rendering a node and all connected lines to update the positions of both the node and the lines.
|
|
907
|
+
* Note: This method should be used only when the layout algorithm is set to NoopLayout and enableDragAndDrop is set to true.
|
|
908
|
+
*
|
|
909
|
+
* @param {sap.suite.ui.commons.networkgraph.Node|string} vNode Node instance or node key
|
|
910
|
+
* @param {number} iX New X coordinate
|
|
911
|
+
* @param {number} iY New Y coordinate
|
|
912
|
+
* @returns {sap.suite.ui.commons.networkgraph.Graph} Reference to this for method chaining
|
|
913
|
+
* @public
|
|
914
|
+
* @since 1.144
|
|
915
|
+
*/
|
|
916
|
+
Graph.prototype.updateNodePosition = function (vNode, iX, iY) {
|
|
917
|
+
if (!this._isDnDEnabled()) {
|
|
918
|
+
return this;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
var oNode = typeof vNode === "string" ? this.getNodeByKey(vNode) : vNode;
|
|
922
|
+
|
|
923
|
+
if (!oNode) {
|
|
924
|
+
Log.warning("Node not found", "updateNodePosition", "sap.suite.ui.commons.networkgraph.Graph");
|
|
925
|
+
return this;
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
this.invalidate();
|
|
929
|
+
return this;
|
|
930
|
+
};
|
|
931
|
+
|
|
769
932
|
/**
|
|
770
933
|
* Sets a custom label for the legend.
|
|
771
934
|
* @param {object} mArguments Parameters for this method
|
|
@@ -840,7 +1003,7 @@ sap.ui.define([
|
|
|
840
1003
|
/**
|
|
841
1004
|
* Returns current zoom level.
|
|
842
1005
|
*
|
|
843
|
-
* @return {number}
|
|
1006
|
+
* @return {number} Current zoom level
|
|
844
1007
|
* @public
|
|
845
1008
|
*/
|
|
846
1009
|
Graph.prototype.getCurrentZoomLevel = function () {
|
|
@@ -860,6 +1023,16 @@ sap.ui.define([
|
|
|
860
1023
|
this._oZoomLevelInvisibleText.setText(oResourceBundle.getText("NETWORK_GRAPH_ZOOM_LEVEL") + ": " + this._getZoomText());
|
|
861
1024
|
};
|
|
862
1025
|
|
|
1026
|
+
/**
|
|
1027
|
+
* Gets the associated control linked to this graph instance using the 'associatedControl' association.
|
|
1028
|
+
* This can be any UI5 control that is related to the graph.
|
|
1029
|
+
* @returns {sap.ui.core.Control|null} The associated control instance or null if not set.
|
|
1030
|
+
* @public
|
|
1031
|
+
*/
|
|
1032
|
+
Graph.prototype.getAssociatedControl = function () {
|
|
1033
|
+
var sId = this.getAssociation("associatedControl");
|
|
1034
|
+
return sId ? Element.getElementById(sId) : null;
|
|
1035
|
+
};
|
|
863
1036
|
|
|
864
1037
|
/* =========================================================== */
|
|
865
1038
|
/* Private methods */
|
|
@@ -886,6 +1059,24 @@ sap.ui.define([
|
|
|
886
1059
|
};
|
|
887
1060
|
};
|
|
888
1061
|
|
|
1062
|
+
/**
|
|
1063
|
+
* Returns a busy indicator instance for loading states.
|
|
1064
|
+
* @returns {sap.m.BusyIndicator} BusyIndicator instance
|
|
1065
|
+
* @private
|
|
1066
|
+
*/
|
|
1067
|
+
Graph.prototype._getBusyIndicator = function () {
|
|
1068
|
+
var sText = this.getLoadingText() || oResourceBundle.getText("NETWORK_GRAPH_OPENING_CANVAS");
|
|
1069
|
+
|
|
1070
|
+
if (!this._oBusyIndicator) {
|
|
1071
|
+
this._oBusyIndicator = new BusyIndicator({ text: sText });
|
|
1072
|
+
this.addDependent(this._oBusyIndicator);
|
|
1073
|
+
} else {
|
|
1074
|
+
this._oBusyIndicator.setText(sText);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
return this._oBusyIndicator;
|
|
1078
|
+
};
|
|
1079
|
+
|
|
889
1080
|
Graph.prototype._createTooltip = function () {
|
|
890
1081
|
var oTooltip = new Tooltip(this.getId() + "-tooltip");
|
|
891
1082
|
this.addDependent(oTooltip);
|
|
@@ -906,22 +1097,87 @@ sap.ui.define([
|
|
|
906
1097
|
return oTooltip;
|
|
907
1098
|
};
|
|
908
1099
|
|
|
1100
|
+
/**
|
|
1101
|
+
* Gets or creates an IllustratedMessage instance for displaying empty state.
|
|
1102
|
+
* This method reuses the same instance to avoid memory leaks.
|
|
1103
|
+
* The illustrated message content depends on whether drag-and-drop is enabled:
|
|
1104
|
+
* - When drag-and-drop is enabled: Shows "AddDimensions" illustration with plan-building message
|
|
1105
|
+
* - When drag-and-drop is disabled: Shows "NoChartData" illustration with custom or default no-data text
|
|
1106
|
+
*
|
|
1107
|
+
* @returns {sap.m.IllustratedMessage} The illustrated message instance for empty state
|
|
1108
|
+
* @private
|
|
1109
|
+
*/
|
|
1110
|
+
Graph.prototype._getIllustratedMessage = function () {
|
|
1111
|
+
// Helper function to get configuration based on current state
|
|
1112
|
+
var fnConfigureIllustratedMessage = function () {
|
|
1113
|
+
var sText = this.getNoDataText(),
|
|
1114
|
+
sTextInline = sText || oResourceBundle.getText("NETWORK_GRAPH_NO_DATA");
|
|
1115
|
+
|
|
1116
|
+
if (this._isDnDEnabled()) {
|
|
1117
|
+
return {
|
|
1118
|
+
illustrationType: IllustratedMessageType.AddDimensions,
|
|
1119
|
+
title: oResourceBundle.getText("NETWORK_GRAPH_DND_EMPTY_TITLE"),
|
|
1120
|
+
description: oResourceBundle.getText("NETWORK_GRAPH_DND_EMPTY_DESCRIPTION"),
|
|
1121
|
+
enableDefaultTitleAndDescription: false
|
|
1122
|
+
};
|
|
1123
|
+
} else {
|
|
1124
|
+
return {
|
|
1125
|
+
illustrationType: IllustratedMessageType.NoChartData,
|
|
1126
|
+
title: sTextInline,
|
|
1127
|
+
enableDefaultTitleAndDescription: false
|
|
1128
|
+
};
|
|
1129
|
+
}
|
|
1130
|
+
}.bind(this);
|
|
1131
|
+
|
|
1132
|
+
if (!this._oIllustratedMessage) {
|
|
1133
|
+
var oConfig = fnConfigureIllustratedMessage();
|
|
1134
|
+
this._oIllustratedMessage = new IllustratedMessage(oConfig);
|
|
1135
|
+
this.addDependent(this._oIllustratedMessage);
|
|
1136
|
+
} else {
|
|
1137
|
+
var oConfig = fnConfigureIllustratedMessage();
|
|
1138
|
+
this._oIllustratedMessage.setIllustrationType(oConfig.illustrationType);
|
|
1139
|
+
this._oIllustratedMessage.setTitle(oConfig.title);
|
|
1140
|
+
this._oIllustratedMessage.setDescription(oConfig.description);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
return this._oIllustratedMessage;
|
|
1144
|
+
};
|
|
1145
|
+
|
|
909
1146
|
/**
|
|
910
1147
|
* @private
|
|
1148
|
+
* Defocuses the currently focused element.
|
|
911
1149
|
*/
|
|
912
1150
|
Graph.prototype.defocus = function () {
|
|
913
1151
|
this.$().find("." + this.FOCUS_CLASS).removeClass(this.FOCUS_CLASS);
|
|
914
1152
|
};
|
|
915
1153
|
|
|
916
1154
|
/**
|
|
1155
|
+
* Sets whether drag and drop is enabled.
|
|
1156
|
+
* @param {boolean} bEnabled Whether drag and drop should be enabled
|
|
917
1157
|
* @private
|
|
918
1158
|
*/
|
|
919
1159
|
Graph.prototype.setEnableDragAndDrop = function (bEnabled) {
|
|
920
1160
|
this.setProperty("enableDragAndDrop", bEnabled, true);
|
|
1161
|
+
|
|
1162
|
+
// Update zoom button states
|
|
1163
|
+
if (this._zoomIn && this._zoomOut && this._zoomToFitButton) {
|
|
1164
|
+
var bZoomEnabled = !this._isDnDEnabled();
|
|
1165
|
+
this._zoomIn.setEnabled(bZoomEnabled);
|
|
1166
|
+
this._zoomOut.setEnabled(bZoomEnabled);
|
|
1167
|
+
this._zoomToFitButton.setEnabled(bZoomEnabled);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
// remove the node ports when drag and drop is disabled
|
|
1171
|
+
if (!bEnabled) {
|
|
1172
|
+
PortManager.removeAllPorts();
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
return this;
|
|
921
1176
|
};
|
|
922
1177
|
|
|
923
1178
|
/**
|
|
924
1179
|
* @private
|
|
1180
|
+
* @returns {boolean} Returns whether drag and drop is enabled.
|
|
925
1181
|
*/
|
|
926
1182
|
Graph.prototype.getEnableDragAndDrop = function () {
|
|
927
1183
|
return this.getProperty("enableDragAndDrop");
|
|
@@ -943,12 +1199,12 @@ sap.ui.define([
|
|
|
943
1199
|
this._oFocus.item.isA("sap.suite.ui.commons.networkgraph.Node")))) {
|
|
944
1200
|
this._updateAccessibility(oFocus);
|
|
945
1201
|
}
|
|
946
|
-
|
|
947
|
-
|
|
1202
|
+
this._updateAccessibility(oFocus);
|
|
1203
|
+
return;
|
|
948
1204
|
}
|
|
949
1205
|
|
|
950
1206
|
this.defocus();
|
|
951
|
-
if (this.getFocusDomRef()) {
|
|
1207
|
+
if (this.getFocusDomRef() && !(oFocus && oFocus.button && oFocus.button.id && oFocus.button.id.indexOf("actionOverflow") !== -1)) {
|
|
952
1208
|
this.getFocusDomRef().focus();
|
|
953
1209
|
}
|
|
954
1210
|
|
|
@@ -988,7 +1244,7 @@ sap.ui.define([
|
|
|
988
1244
|
this._setAccessibilityTitle(oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_CONTENT"));
|
|
989
1245
|
}.bind(this),
|
|
990
1246
|
fnBuildTitleForButton = function (sLabel) {
|
|
991
|
-
var sTitleLabel = sLabel + " " + oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_ACTION_BUTTON")
|
|
1247
|
+
var sTitleLabel = sLabel + " " + oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_ACTION_BUTTON");
|
|
992
1248
|
if (sLabel === "Expand/Collapse") {
|
|
993
1249
|
if (oFocus.item.getCollapsed()) {
|
|
994
1250
|
sTitleLabel = sTitleLabel + " " + oResourceBundle.getText("NETWORK_GRAPH_COLLAPSED");
|
|
@@ -1128,8 +1384,9 @@ sap.ui.define([
|
|
|
1128
1384
|
this.$background.width(iSvgWidth * this._fZoomLevel);
|
|
1129
1385
|
this.$background.height(iSvgHeight * this._fZoomLevel);
|
|
1130
1386
|
|
|
1387
|
+
var sScale = "";
|
|
1131
1388
|
if (this._isUseNodeHtml()) {
|
|
1132
|
-
|
|
1389
|
+
sScale = "scale(" + this._fZoomLevel + ")";
|
|
1133
1390
|
this.$("divnodes").css("transform", sScale);
|
|
1134
1391
|
}
|
|
1135
1392
|
|
|
@@ -1390,6 +1647,8 @@ sap.ui.define([
|
|
|
1390
1647
|
oRm.openStart("g", this.getId() + "-svgbody");
|
|
1391
1648
|
oRm.openEnd();
|
|
1392
1649
|
fnRenderItems("lines", aLines, "sapSuiteUiCommonsNetworkLines");
|
|
1650
|
+
// Render line texts after all lines are rendered to handle overlaps
|
|
1651
|
+
this._renderAllLineTexts(aLines, oRm);
|
|
1393
1652
|
if (!this._isUseNodeHtml()) {
|
|
1394
1653
|
fnRenderItems("nodes", aNodes, "sapSuiteUiCommonsNetworkNodes");
|
|
1395
1654
|
}
|
|
@@ -1414,6 +1673,45 @@ sap.ui.define([
|
|
|
1414
1673
|
|
|
1415
1674
|
};
|
|
1416
1675
|
|
|
1676
|
+
/**
|
|
1677
|
+
* Renders text labels for all lines in a dedicated SVG group container.
|
|
1678
|
+
*
|
|
1679
|
+
* This method creates a batch rendering context for line labels, enabling
|
|
1680
|
+
* potential overlap handling and positioning optimizations. Labels are only
|
|
1681
|
+
* rendered for lines that meet all of the following conditions:
|
|
1682
|
+
* - The line has a labelName property value set
|
|
1683
|
+
* - The graph is using NoopLayout
|
|
1684
|
+
* - The line's arrowPosition is set to "Both"
|
|
1685
|
+
*
|
|
1686
|
+
* @param {sap.suite.ui.commons.networkgraph.Line[]} aLines Array of line objects to render text labels for
|
|
1687
|
+
* @param {sap.ui.core.RenderManager} oRm The RenderManager instance used for SVG rendering
|
|
1688
|
+
* @private
|
|
1689
|
+
*/
|
|
1690
|
+
Graph.prototype._renderAllLineTexts = function (aLines, oRm) {
|
|
1691
|
+
// Early return if line labels are disabled or NoopLayout is not active
|
|
1692
|
+
if (!this._isNoopLayout()) {
|
|
1693
|
+
return;
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
// Create a dedicated SVG group container for all line text labels
|
|
1697
|
+
// This enables batch processing and potential overlap handling
|
|
1698
|
+
oRm.openStart("g");
|
|
1699
|
+
oRm.attr("id", this.getId() + "-line-texts");
|
|
1700
|
+
oRm.class("sapSuiteUiCommonsNetworkLineTexts");
|
|
1701
|
+
oRm.openEnd();
|
|
1702
|
+
|
|
1703
|
+
// Iterate through all lines and render their text labels within the group
|
|
1704
|
+
// Only process lines that are valid, not ignored by layout, and visible
|
|
1705
|
+
aLines.forEach(function (oLine) {
|
|
1706
|
+
if (oLine && !oLine._isIgnored() && oLine.getVisible()) {
|
|
1707
|
+
oLine._renderLineText(oRm);
|
|
1708
|
+
}
|
|
1709
|
+
});
|
|
1710
|
+
|
|
1711
|
+
// Close the SVG group container
|
|
1712
|
+
oRm.close("g");
|
|
1713
|
+
};
|
|
1714
|
+
|
|
1417
1715
|
Graph.prototype._isProperKey = function (sKey) {
|
|
1418
1716
|
return sKey || (sKey === "0");
|
|
1419
1717
|
};
|
|
@@ -1494,7 +1792,11 @@ sap.ui.define([
|
|
|
1494
1792
|
}
|
|
1495
1793
|
}
|
|
1496
1794
|
|
|
1497
|
-
this._isUseNodeHtml()
|
|
1795
|
+
if (this._isUseNodeHtml()) {
|
|
1796
|
+
oNode._resetDimensions();
|
|
1797
|
+
} else {
|
|
1798
|
+
oNode._setupWidthAndHeight();
|
|
1799
|
+
}
|
|
1498
1800
|
oNode._clearChildren();
|
|
1499
1801
|
oNode._rendered = false;
|
|
1500
1802
|
|
|
@@ -1923,16 +2225,28 @@ sap.ui.define([
|
|
|
1923
2225
|
}
|
|
1924
2226
|
});
|
|
1925
2227
|
this._toolbar.addContent(this._zoomOut);
|
|
2228
|
+
|
|
2229
|
+
// Disable zoom buttons if drag and drop is enabled
|
|
2230
|
+
if (this._isDnDEnabled()) {
|
|
2231
|
+
this._zoomIn.setEnabled(false);
|
|
2232
|
+
this._zoomOut.setEnabled(false);
|
|
1926
2233
|
}
|
|
2234
|
+
}
|
|
1927
2235
|
|
|
1928
2236
|
// fit to viewport
|
|
1929
|
-
this.
|
|
2237
|
+
this._zoomToFitButton = new OverflowToolbarButton({
|
|
1930
2238
|
type: ButtonType.Transparent,
|
|
1931
2239
|
icon: "sap-icon://popup-window",
|
|
1932
2240
|
tooltip: oResourceBundle.getText("NETWORK_GRAPH_ZOOMTOFIT"),
|
|
1933
2241
|
text: oResourceBundle.getText("NETWORK_GRAPH_ZOOMTOFIT"),
|
|
1934
2242
|
press: this._fitToScreen.bind(this)
|
|
1935
|
-
})
|
|
2243
|
+
});
|
|
2244
|
+
this._toolbar.addContent(this._zoomToFitButton);
|
|
2245
|
+
|
|
2246
|
+
// Disable zoom to fit button if drag and drop is enabled
|
|
2247
|
+
if (this._isDnDEnabled()) {
|
|
2248
|
+
this._zoomToFitButton.setEnabled(false);
|
|
2249
|
+
}
|
|
1936
2250
|
|
|
1937
2251
|
// toggle full screen
|
|
1938
2252
|
this._oFullScreenButton = new OverflowToolbarButton({
|
|
@@ -2214,7 +2528,9 @@ sap.ui.define([
|
|
|
2214
2528
|
|
|
2215
2529
|
$wrapper.on("mouseleave", this._endDragging.bind(this));
|
|
2216
2530
|
$wrapper.on("mouseup", this._mouseUp.bind(this));
|
|
2217
|
-
if (this.getEnableZoom()) {
|
|
2531
|
+
if (this.getEnableZoom() && !this._isDnDEnabled()) {
|
|
2532
|
+
// Disabling zooming capability in edit mode.
|
|
2533
|
+
// TODO: consider scaling when dragging and dropping nodes and update ghost image dimenstion and coordinates prediction, to allow zooming.
|
|
2218
2534
|
$wrapper.on("wheel", function (oEvent) {
|
|
2219
2535
|
if (this._wheel({
|
|
2220
2536
|
x: oEvent.originalEvent.clientX,
|
|
@@ -2300,6 +2616,7 @@ sap.ui.define([
|
|
|
2300
2616
|
this._oZoomLevelInvisibleText.setText(oResourceBundle.getText("NETWORK_GRAPH_ZOOM_LEVEL") + ": " + this._getZoomText());
|
|
2301
2617
|
return true;
|
|
2302
2618
|
}
|
|
2619
|
+
return false;
|
|
2303
2620
|
};
|
|
2304
2621
|
|
|
2305
2622
|
Graph.prototype._endDragging = function () {
|
|
@@ -2332,6 +2649,11 @@ sap.ui.define([
|
|
|
2332
2649
|
this._oPanning.dragging = true;
|
|
2333
2650
|
|
|
2334
2651
|
this._tooltip.instantClose();
|
|
2652
|
+
|
|
2653
|
+
// Remove all ports when deselecting
|
|
2654
|
+
if (PortManager._currentTriggerNodeKey !== null) {
|
|
2655
|
+
PortManager.removeAllPorts();
|
|
2656
|
+
}
|
|
2335
2657
|
};
|
|
2336
2658
|
|
|
2337
2659
|
Graph.prototype._mouseUp = function () {
|
|
@@ -2634,13 +2956,15 @@ sap.ui.define([
|
|
|
2634
2956
|
"class": "sapSuiteUiCommonsNetworkGraphLegendLine"
|
|
2635
2957
|
}, false, oRm);
|
|
2636
2958
|
|
|
2959
|
+
var sLegendClass = "sapSuiteUiCommonsNetworkGraphLegendColorLine " + this._getStatusClass(sStatus);
|
|
2960
|
+
if (sClass) {
|
|
2961
|
+
sLegendClass += " " + sClass;
|
|
2962
|
+
}
|
|
2637
2963
|
this._renderControl.call(that, "div", {
|
|
2638
|
-
"class":
|
|
2964
|
+
"class": sLegendClass,
|
|
2639
2965
|
/** @deprecated As of 1.120 */
|
|
2640
2966
|
"style": sStyle
|
|
2641
|
-
}, null, oRm);
|
|
2642
|
-
|
|
2643
|
-
this._renderControl.call(that, "label", {
|
|
2967
|
+
}, null, oRm); this._renderControl.call(that, "label", {
|
|
2644
2968
|
"class": "sapSuiteUiCommonsNetworkGraphLegendLineLabel"
|
|
2645
2969
|
}, false, oRm);
|
|
2646
2970
|
oRm.text(this._oLegendLabels[sType + sStatus] ? this._oLegendLabels[sType + sStatus] : sLabel);
|
|
@@ -2856,8 +3180,15 @@ sap.ui.define([
|
|
|
2856
3180
|
};
|
|
2857
3181
|
|
|
2858
3182
|
Graph.prototype._isTopBottom = function () {
|
|
2859
|
-
return this.getOrientation() === Orientation.TopBottom
|
|
2860
|
-
|
|
3183
|
+
return this.getOrientation() === Orientation.TopBottom;
|
|
3184
|
+
};
|
|
3185
|
+
|
|
3186
|
+
Graph.prototype._isBottomTop = function () {
|
|
3187
|
+
return this.getOrientation() === Orientation.BottomTop;
|
|
3188
|
+
};
|
|
3189
|
+
|
|
3190
|
+
Graph.prototype._isRightLeft = function () {
|
|
3191
|
+
return this.getOrientation() === Orientation.RightLeft;
|
|
2861
3192
|
};
|
|
2862
3193
|
|
|
2863
3194
|
/* =========================================================== */
|
|
@@ -2999,5 +3330,16 @@ sap.ui.define([
|
|
|
2999
3330
|
}
|
|
3000
3331
|
};
|
|
3001
3332
|
|
|
3333
|
+
/**
|
|
3334
|
+
* Checks if the current layout algorithm supports node ports functionality.
|
|
3335
|
+
* For now, only NoopLayout algorithms support node ports.
|
|
3336
|
+
*
|
|
3337
|
+
* @returns {boolean} True if the layout supports node ports, false otherwise
|
|
3338
|
+
* @private
|
|
3339
|
+
*/
|
|
3340
|
+
Graph.prototype._supportsNodePorts = function () {
|
|
3341
|
+
return this.getNodePorts() !== "None" && this._isDnDEnabled();
|
|
3342
|
+
};
|
|
3343
|
+
|
|
3002
3344
|
return Graph;
|
|
3003
3345
|
});
|