bpmn-js 0.20.6 → 0.22.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 (410) hide show
  1. package/.eslintrc +33 -33
  2. package/.npmignore +8 -8
  3. package/.travis.yml +19 -17
  4. package/.wiredeps +88 -88
  5. package/CONTRIBUTING.md +55 -55
  6. package/Gruntfile.js +129 -129
  7. package/LICENSE +22 -22
  8. package/README.md +113 -113
  9. package/assets/bpmn-font/css/bpmn-embedded.css +159 -159
  10. package/assets/bpmn-font/css/bpmn.css +161 -161
  11. package/assets/bpmn-font/font/bpmn.svg +116 -116
  12. package/docs/architecture/overview.svg +48 -48
  13. package/docs/project/COMMIT_MESSAGES.md +82 -82
  14. package/docs/project/SETUP.md +66 -66
  15. package/docs/project/setup-alternative.sh +41 -41
  16. package/docs/project/setup.bat +45 -45
  17. package/docs/project/setup.sh +40 -40
  18. package/docs/translations.json +97 -97
  19. package/lib/Modeler.js +208 -208
  20. package/lib/NavigatedViewer.js +27 -27
  21. package/lib/Viewer.js +503 -503
  22. package/lib/core/index.js +5 -5
  23. package/lib/draw/BpmnRenderer.js +1934 -1934
  24. package/lib/draw/PathMap.js +478 -478
  25. package/lib/draw/index.js +5 -5
  26. package/lib/features/auto-resize/BpmnAutoResize.js +34 -34
  27. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +51 -51
  28. package/lib/features/auto-resize/index.js +5 -5
  29. package/lib/features/context-pad/ContextPadProvider.js +374 -374
  30. package/lib/features/context-pad/index.js +11 -11
  31. package/lib/features/copy-paste/BpmnCopyPaste.js +157 -154
  32. package/lib/features/copy-paste/index.js +7 -7
  33. package/lib/features/distribute-elements/BpmnDistributeElements.js +34 -34
  34. package/lib/features/distribute-elements/index.js +7 -7
  35. package/lib/features/editor-actions/BpmnEditorActions.js +130 -130
  36. package/lib/features/editor-actions/index.js +15 -15
  37. package/lib/features/global-connect/BpmnGlobalConnect.js +49 -49
  38. package/lib/features/global-connect/index.js +7 -7
  39. package/lib/features/keyboard/BpmnKeyBindings.js +72 -72
  40. package/lib/features/keyboard/index.js +7 -7
  41. package/lib/features/label-editing/LabelEditingPreview.js +122 -0
  42. package/lib/features/label-editing/LabelEditingProvider.js +292 -193
  43. package/lib/features/label-editing/LabelUtil.js +43 -43
  44. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +116 -112
  45. package/lib/features/label-editing/index.js +14 -9
  46. package/lib/features/modeling/BpmnFactory.js +97 -97
  47. package/lib/features/modeling/BpmnLayouter.js +191 -191
  48. package/lib/features/modeling/BpmnUpdater.js +692 -688
  49. package/lib/features/modeling/ElementFactory.js +218 -218
  50. package/lib/features/modeling/Modeling.js +183 -183
  51. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  52. package/lib/features/modeling/behavior/CopyPasteBehavior.js +69 -69
  53. package/lib/features/modeling/behavior/CreateBoundaryEventBehavior.js +51 -51
  54. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +37 -37
  55. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +91 -91
  56. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +151 -151
  57. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +107 -107
  58. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +165 -131
  59. package/lib/features/modeling/behavior/ImportDockingFix.js +80 -80
  60. package/lib/features/modeling/behavior/LabelBehavior.js +222 -222
  61. package/lib/features/modeling/behavior/ModelingFeedback.js +50 -50
  62. package/lib/features/modeling/behavior/RemoveElementBehavior.js +73 -73
  63. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +50 -50
  64. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +128 -128
  65. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +118 -116
  66. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +59 -59
  67. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +138 -138
  68. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +27 -27
  69. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +54 -54
  70. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +156 -156
  71. package/lib/features/modeling/behavior/index.js +44 -44
  72. package/lib/features/modeling/behavior/util/GeometricUtil.js +129 -129
  73. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +218 -218
  74. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +233 -233
  75. package/lib/features/modeling/behavior/util/LineIntersect.js +36 -36
  76. package/lib/features/modeling/cmd/AddLaneHandler.js +83 -83
  77. package/lib/features/modeling/cmd/IdClaimHandler.js +41 -41
  78. package/lib/features/modeling/cmd/ResizeLaneHandler.js +125 -125
  79. package/lib/features/modeling/cmd/SplitLaneHandler.js +82 -82
  80. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +78 -78
  81. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +185 -185
  82. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +264 -264
  83. package/lib/features/modeling/index.js +23 -23
  84. package/lib/features/modeling/util/LaneUtil.js +157 -157
  85. package/lib/features/modeling/util/ModelingUtil.js +48 -48
  86. package/lib/features/ordering/BpmnOrderingProvider.js +147 -147
  87. package/lib/features/ordering/index.js +6 -6
  88. package/lib/features/palette/PaletteProvider.js +158 -158
  89. package/lib/features/palette/index.js +13 -13
  90. package/lib/features/popup-menu/ReplaceMenuProvider.js +479 -479
  91. package/lib/features/popup-menu/index.js +7 -7
  92. package/lib/features/popup-menu/util/TypeUtil.js +41 -41
  93. package/lib/features/replace/BpmnReplace.js +197 -197
  94. package/lib/features/replace/ReplaceOptions.js +787 -787
  95. package/lib/features/replace/index.js +7 -7
  96. package/lib/features/replace-preview/BpmnReplacePreview.js +113 -113
  97. package/lib/features/replace-preview/index.js +5 -5
  98. package/lib/features/rules/BpmnRules.js +807 -806
  99. package/lib/features/rules/index.js +7 -7
  100. package/lib/features/search/BpmnSearchProvider.js +128 -128
  101. package/lib/features/search/index.js +7 -7
  102. package/lib/features/snapping/BpmnSnapping.js +511 -495
  103. package/lib/features/snapping/BpmnSnappingUtil.js +159 -159
  104. package/lib/features/snapping/index.js +3 -3
  105. package/lib/import/BpmnImporter.js +302 -302
  106. package/lib/import/BpmnTreeWalker.js +445 -445
  107. package/lib/import/Importer.js +69 -69
  108. package/lib/import/Util.js +8 -8
  109. package/lib/import/index.js +5 -5
  110. package/lib/util/DiUtil.js +60 -60
  111. package/lib/util/LabelUtil.js +139 -139
  112. package/lib/util/ModelUtil.js +31 -31
  113. package/lib/util/PoweredByUtil.js +82 -82
  114. package/lib/util/model/ModelCloneHelper.js +201 -201
  115. package/lib/util/model/ModelCloneUtils.js +35 -35
  116. package/package.json +22 -22
  117. package/resources/initial.bpmn +12 -12
  118. package/resources/screencast.gif +0 -0
  119. package/tasks/banner.txt +11 -11
  120. package/tasks/bundle.js +162 -162
  121. package/test/TestHelper.js +17 -17
  122. package/test/config/karma.unit.js +46 -46
  123. package/test/config/translation-reporter.js +48 -48
  124. package/test/fixtures/bpmn/align-elements.bpmn +136 -136
  125. package/test/fixtures/bpmn/basic.bpmn +17 -17
  126. package/test/fixtures/bpmn/boundary-events.bpmn +59 -59
  127. package/test/fixtures/bpmn/collaboration/collaboration-empty-participant.bpmn +13 -13
  128. package/test/fixtures/bpmn/collaboration/collaboration-message-flows.bpmn +89 -89
  129. package/test/fixtures/bpmn/collaboration/collaboration-participant.bpmn +59 -59
  130. package/test/fixtures/bpmn/collaboration/process-empty.bpmn +6 -6
  131. package/test/fixtures/bpmn/collaboration/process.bpmn +47 -47
  132. package/test/fixtures/bpmn/collaboration-data-items.bpmn +81 -81
  133. package/test/fixtures/bpmn/collaboration-message-flows.bpmn +82 -82
  134. package/test/fixtures/bpmn/collaboration-sequence-flows.bpmn +83 -83
  135. package/test/fixtures/bpmn/collaboration.bpmn +50 -50
  136. package/test/fixtures/bpmn/complex.bpmn +2151 -2151
  137. package/test/fixtures/bpmn/conditions.bpmn +82 -82
  138. package/test/fixtures/bpmn/containers.bpmn +128 -128
  139. package/test/fixtures/bpmn/distribute-elements-filtering.bpmn +58 -58
  140. package/test/fixtures/bpmn/distribute-elements.bpmn +232 -232
  141. package/test/fixtures/bpmn/draw/activity-markers-combination.bpmn +141 -141
  142. package/test/fixtures/bpmn/draw/activity-markers-simple.bpmn +47 -47
  143. package/test/fixtures/bpmn/draw/activity-markers.bpmn +212 -212
  144. package/test/fixtures/bpmn/draw/associations.bpmn +55 -55
  145. package/test/fixtures/bpmn/draw/boundary-event-with-refnode.bpmn +81 -81
  146. package/test/fixtures/bpmn/draw/boundary-event-without-refnode.bpmn +81 -81
  147. package/test/fixtures/bpmn/draw/boundary-event-z-index.bpmn +82 -82
  148. package/test/fixtures/bpmn/draw/call-activity.bpmn +12 -12
  149. package/test/fixtures/bpmn/draw/colors.bpmn +411 -411
  150. package/test/fixtures/bpmn/draw/conditional-flow-default.bpmn +100 -100
  151. package/test/fixtures/bpmn/draw/conditional-flow-gateways.bpmn +72 -72
  152. package/test/fixtures/bpmn/draw/conditional-flow-typed-task.bpmn +33 -33
  153. package/test/fixtures/bpmn/draw/conditional-flow.bpmn +248 -248
  154. package/test/fixtures/bpmn/draw/data-objects.bpmn +265 -265
  155. package/test/fixtures/bpmn/draw/event-subprocesses-collapsed.bpmn +200 -200
  156. package/test/fixtures/bpmn/draw/event-subprocesses-expanded.bpmn +274 -274
  157. package/test/fixtures/bpmn/draw/events-interrupting.bpmn +370 -370
  158. package/test/fixtures/bpmn/draw/events.bpmn +374 -374
  159. package/test/fixtures/bpmn/draw/gateway-type-default.bpmn +45 -45
  160. package/test/fixtures/bpmn/draw/gateways.bpmn +61 -61
  161. package/test/fixtures/bpmn/draw/group.bpmn +24 -24
  162. package/test/fixtures/bpmn/draw/message-marker.bpmn +112 -112
  163. package/test/fixtures/bpmn/draw/pools-with-collection-marker.bpmn +104 -104
  164. package/test/fixtures/bpmn/draw/pools.bpmn +82 -82
  165. package/test/fixtures/bpmn/draw/task-types.bpmn +77 -77
  166. package/test/fixtures/bpmn/draw/text-annotation.bpmn +71 -71
  167. package/test/fixtures/bpmn/draw/xor.bpmn +45 -45
  168. package/test/fixtures/bpmn/empty-definitions.bpmn +4 -4
  169. package/test/fixtures/bpmn/error/categoryValue.bpmn +26 -26
  170. package/test/fixtures/bpmn/error/di-plane-no-bpmn-element.bpmn +9 -9
  171. package/test/fixtures/bpmn/error/duplicate-ids.bpmn +14 -14
  172. package/test/fixtures/bpmn/error/invalid-child.bpmn +6 -6
  173. package/test/fixtures/bpmn/error/missing-namespace.bpmn +12 -12
  174. package/test/fixtures/bpmn/event-sub-processes.bpmn +47 -47
  175. package/test/fixtures/bpmn/extension/camunda.bpmn +52 -52
  176. package/test/fixtures/bpmn/extension/custom-override.bpmn +53 -53
  177. package/test/fixtures/bpmn/extension/custom.bpmn +53 -53
  178. package/test/fixtures/bpmn/features/copy-paste/basic.bpmn +111 -111
  179. package/test/fixtures/bpmn/features/copy-paste/collaboration-multiple.bpmn +102 -102
  180. package/test/fixtures/bpmn/features/copy-paste/collaboration.bpmn +74 -74
  181. package/test/fixtures/bpmn/features/copy-paste/data-associations.bpmn +61 -61
  182. package/test/fixtures/bpmn/features/copy-paste/properties.bpmn +43 -43
  183. package/test/fixtures/bpmn/features/drop/drop.bpmn +41 -41
  184. package/test/fixtures/bpmn/features/drop/recursive-task.bpmn +37 -37
  185. package/test/fixtures/bpmn/features/label-editing/labels.bpmn +178 -248
  186. package/test/fixtures/bpmn/features/modeling/update-label.bpmn +24 -24
  187. package/test/fixtures/bpmn/features/replace/01_replace.bpmn +193 -193
  188. package/test/fixtures/bpmn/features/replace/association-gateways.bpmn +173 -173
  189. package/test/fixtures/bpmn/features/replace/cancel-events.bpmn +49 -49
  190. package/test/fixtures/bpmn/features/replace/clone-properties.bpmn +141 -141
  191. package/test/fixtures/bpmn/features/replace/connection.bpmn +42 -42
  192. package/test/fixtures/bpmn/features/rules/event-based-gateway-outgoing-edge.bpmn +72 -72
  193. package/test/fixtures/bpmn/features/rules/link-event.bpmn +35 -35
  194. package/test/fixtures/bpmn/features/rules/text-annotation-association.bpmn +30 -30
  195. package/test/fixtures/bpmn/flow-markers.bpmn +212 -212
  196. package/test/fixtures/bpmn/import/boundaryEvent.bpmn +33 -33
  197. package/test/fixtures/bpmn/import/collaboration.bpmn +50 -50
  198. package/test/fixtures/bpmn/import/collapsed/collaboration.bpmn +76 -76
  199. package/test/fixtures/bpmn/import/collapsed/process.bpmn +84 -84
  200. package/test/fixtures/bpmn/import/collapsed/processWithChildren.bpmn +273 -273
  201. package/test/fixtures/bpmn/import/default-attrs.bpmn +24 -24
  202. package/test/fixtures/bpmn/import/error/boundaryEvent-invalidAttachToRef.bpmn +30 -30
  203. package/test/fixtures/bpmn/import/error/boundaryEvent-missingAttachToRef.bpmn +33 -33
  204. package/test/fixtures/bpmn/import/error/dangling-process-message-flow.bpmn +81 -81
  205. package/test/fixtures/bpmn/import/error/invalid-flow-element.bpmn +35 -35
  206. package/test/fixtures/bpmn/import/error/multiple-dis.bpmn +23 -23
  207. package/test/fixtures/bpmn/import/labels/collaboration-message-flows.bpmn +41 -41
  208. package/test/fixtures/bpmn/import/labels/collaboration.bpmn +72 -72
  209. package/test/fixtures/bpmn/import/labels/embedded.bpmn +39 -39
  210. package/test/fixtures/bpmn/import/labels/external-no-di.bpmn +42 -42
  211. package/test/fixtures/bpmn/import/labels/external.bpmn +69 -69
  212. package/test/fixtures/bpmn/import/position/position-testcase.bpmn +57 -57
  213. package/test/fixtures/bpmn/import/process.bpmn +60 -60
  214. package/test/fixtures/bpmn/nested-subprocesses.bpmn +118 -118
  215. package/test/fixtures/bpmn/sequence-flows.bpmn +60 -60
  216. package/test/fixtures/bpmn/simple-cropping.bpmn +84 -84
  217. package/test/fixtures/bpmn/simple-resizable.bpmn +50 -50
  218. package/test/fixtures/bpmn/simple.bpmn +60 -60
  219. package/test/fixtures/json/model/camunda.json +1042 -1042
  220. package/test/fixtures/json/model/custom-override.json +39 -39
  221. package/test/fixtures/json/model/custom.json +39 -39
  222. package/test/helper/TranslationCollector.js +17 -17
  223. package/test/helper/index.js +249 -249
  224. package/test/integration/CustomElementsSpec.js +223 -223
  225. package/test/integration/ReimportSpec.js +89 -89
  226. package/test/integration/SimpleModelingSpec.js +29 -29
  227. package/test/integration/custom-elements/CustomElementFactory.js +77 -77
  228. package/test/integration/custom-elements/CustomRenderer.js +151 -151
  229. package/test/integration/custom-elements/CustomRules.js +148 -148
  230. package/test/integration/custom-elements/CustomUpdater.js +115 -115
  231. package/test/integration/custom-elements/index.js +7 -7
  232. package/test/integration/model/BpmnModdleSpec.js +65 -65
  233. package/test/matchers/JSONMatcher.js +19 -19
  234. package/test/spec/ModelerSpec.js +401 -401
  235. package/test/spec/NavigatedViewerSpec.js +58 -58
  236. package/test/spec/ViewerSpec.js +977 -977
  237. package/test/spec/draw/BpmnRendererSpec.js +311 -311
  238. package/test/spec/environment/MockingSpec.js +53 -53
  239. package/test/spec/features/align-elements/BpmnAlignElementsSpec.js +137 -137
  240. package/test/spec/features/auto-resize/AutoResize.lanes.bpmn +54 -54
  241. package/test/spec/features/auto-resize/AutoResize.multi-selection.bpmn +22 -22
  242. package/test/spec/features/auto-resize/AutoResize.nested-sub-processes.bpmn +47 -47
  243. package/test/spec/features/auto-resize/AutoResize.participant.bpmn +38 -38
  244. package/test/spec/features/auto-resize/AutoResize.space-tool.bpmn +38 -38
  245. package/test/spec/features/auto-resize/AutoResize.sub-processes.bpmn +37 -37
  246. package/test/spec/features/auto-resize/AutoResizeSpec.js +607 -607
  247. package/test/spec/features/context-pad/ContextPad.activation.bpmn +51 -51
  248. package/test/spec/features/context-pad/ContextPadProviderSpec.js +440 -440
  249. package/test/spec/features/copy-paste/BpmnCopyPasteSpec.js +763 -725
  250. package/test/spec/features/copy-paste/DescriptorTree.js +58 -58
  251. package/test/spec/features/distribute-elements/BpmnDistributeElementsSpec.js +113 -113
  252. package/test/spec/features/editor-actions/BpmnEditorActionsSpec.js +72 -72
  253. package/test/spec/features/global-connect/BpmnGlobalConnectSpec.js +61 -61
  254. package/test/spec/features/keyboard/BpmnKeyBindingsSpec.js +142 -142
  255. package/test/spec/features/label-editing/LabelEditingPreviewSpec.js +133 -0
  256. package/test/spec/features/label-editing/LabelEditingProviderSpec.js +636 -601
  257. package/test/spec/features/label-editing/TouchIntegrationSpec.js +40 -40
  258. package/test/spec/features/modeling/AppendShapeSpec.js +332 -332
  259. package/test/spec/features/modeling/BendpointsSpec.js +25 -25
  260. package/test/spec/features/modeling/BpmnFactorySpec.js +73 -73
  261. package/test/spec/features/modeling/BpmnUpdater.bpmn +99 -99
  262. package/test/spec/features/modeling/BpmnUpdaterSpec.js +79 -79
  263. package/test/spec/features/modeling/CreateConnectionSpec.js +171 -171
  264. package/test/spec/features/modeling/DeleteConnectionSpec.js +75 -75
  265. package/test/spec/features/modeling/DeleteParticipantSpec.js +97 -97
  266. package/test/spec/features/modeling/DeleteShapeSpec.js +75 -75
  267. package/test/spec/features/modeling/DropSpec.js +123 -123
  268. package/test/spec/features/modeling/IdClaim.bpmn +13 -13
  269. package/test/spec/features/modeling/IdClaimSpec.js +50 -50
  270. package/test/spec/features/modeling/LabelBoundsSpec.js +342 -340
  271. package/test/spec/features/modeling/LabelBoundsSpec.simple.bpmn +27 -27
  272. package/test/spec/features/modeling/LabelLayouting.initial.bpmn +37 -37
  273. package/test/spec/features/modeling/LabelLayouting.move.bpmn +99 -99
  274. package/test/spec/features/modeling/LabelLayouting.special.bpmn +76 -76
  275. package/test/spec/features/modeling/LabelLayoutingSpec.js +603 -603
  276. package/test/spec/features/modeling/MoveConnectionSpec.js +101 -101
  277. package/test/spec/features/modeling/MoveElements.flow-collaboration.bpmn +45 -45
  278. package/test/spec/features/modeling/MoveElementsSpec.js +70 -70
  279. package/test/spec/features/modeling/MoveRulesSpec.js +151 -151
  280. package/test/spec/features/modeling/MoveShapeSpec.js +353 -353
  281. package/test/spec/features/modeling/ResizeShapeSpec.js +73 -73
  282. package/test/spec/features/modeling/SpaceToolSpec.js +251 -251
  283. package/test/spec/features/modeling/UpdateAttachmentSpec.js +96 -96
  284. package/test/spec/features/modeling/UpdateLabelSpec.js +130 -130
  285. package/test/spec/features/modeling/UpdatePropertiesSpec.js +503 -503
  286. package/test/spec/features/modeling/append/TextAnnotationSpec.js +136 -136
  287. package/test/spec/features/modeling/behavior/CompensationAssociationBehavior.bpmn +26 -26
  288. package/test/spec/features/modeling/behavior/CompensationAssociationBehaviorSpec.js +43 -43
  289. package/test/spec/features/modeling/behavior/CreateBoundaryEventBehaviorSpec.js +58 -58
  290. package/test/spec/features/modeling/behavior/CreateParticipantBehaviorSpec.js +224 -224
  291. package/test/spec/features/modeling/behavior/DataInputAssociationBehavior.bpmn +33 -33
  292. package/test/spec/features/modeling/behavior/DataInputAssociationBehaviorSpec.js +146 -146
  293. package/test/spec/features/modeling/behavior/DataObjectBehavior.create-data-association.bpmn +21 -21
  294. package/test/spec/features/modeling/behavior/DataObjectBehavior.data-object-reference.bpmn +13 -13
  295. package/test/spec/features/modeling/behavior/DataObjectBehavior.remove-data-association.bpmn +41 -41
  296. package/test/spec/features/modeling/behavior/DataObjectBehaviorSpec.js +297 -297
  297. package/test/spec/features/modeling/behavior/DataStoreBehavior.bpmn +26 -26
  298. package/test/spec/features/modeling/behavior/DataStoreBehavior.connect.bpmn +57 -57
  299. package/test/spec/features/modeling/behavior/DataStoreBehaviorSpec.js +228 -228
  300. package/test/spec/features/modeling/behavior/DropOnFlowBehavior.bpmn +71 -67
  301. package/test/spec/features/modeling/behavior/DropOnFlowBehaviorSpec.js +591 -418
  302. package/test/spec/features/modeling/behavior/ImportDockingFix.bpmn +61 -61
  303. package/test/spec/features/modeling/behavior/ImportDockingFixSpec.js +37 -37
  304. package/test/spec/features/modeling/behavior/LabelBehaviorSpec.js +277 -277
  305. package/test/spec/features/modeling/behavior/ReconnectConnection.data-association.bpmn +41 -41
  306. package/test/spec/features/modeling/behavior/ReconnectConnectionSpec.js +120 -120
  307. package/test/spec/features/modeling/behavior/RemoveElementBehavior.bpmn +181 -181
  308. package/test/spec/features/modeling/behavior/RemoveElementBehavior.perpendicular.bpmn +159 -159
  309. package/test/spec/features/modeling/behavior/RemoveElementBehaviorSpec.js +251 -251
  310. package/test/spec/features/modeling/behavior/RemoveParticipantBehaviorSpec.js +125 -125
  311. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.association.bpmn +26 -26
  312. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.boundary-events.bpmn +40 -40
  313. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.message-sequence-flow.bpmn +121 -121
  314. package/test/spec/features/modeling/behavior/ReplaceConnectionBehaviorSpec.js +439 -439
  315. package/test/spec/features/modeling/behavior/ReplaceElementBehaviourSpec.js +450 -450
  316. package/test/spec/features/modeling/behavior/ToggleElementCollapseBehaviourSpec.js +653 -653
  317. package/test/spec/features/modeling/behavior/UnsetDefaultFlowBehaviorSpec.bpmn +48 -48
  318. package/test/spec/features/modeling/behavior/UnsetDefaultFlowBehaviorSpec.js +77 -77
  319. package/test/spec/features/modeling/behavior/util/GeometricUtilSpec.js +127 -127
  320. package/test/spec/features/modeling/behavior/util/LabelLayoutUtilSpec.js +75 -75
  321. package/test/spec/features/modeling/behavior/util/LineAttachmentUtilSpec.js +294 -294
  322. package/test/spec/features/modeling/behavior/util/LineIntersectSpec.js +32 -32
  323. package/test/spec/features/modeling/lanes/AddLaneSpec.js +263 -263
  324. package/test/spec/features/modeling/lanes/DeleteLaneSpec.js +126 -126
  325. package/test/spec/features/modeling/lanes/ResizeLaneSpec.js +366 -366
  326. package/test/spec/features/modeling/lanes/SplitLaneSpec.js +216 -216
  327. package/test/spec/features/modeling/lanes/UpdateFlowNodeRefsSpec.js +271 -271
  328. package/test/spec/features/modeling/lanes/flowNodeRefs.bpmn +56 -56
  329. package/test/spec/features/modeling/lanes/lanes.bpmn +83 -83
  330. package/test/spec/features/modeling/lanes/participant-lane.bpmn +27 -27
  331. package/test/spec/features/modeling/lanes/participant-no-lane.bpmn +22 -22
  332. package/test/spec/features/modeling/layout/Helper.js +64 -64
  333. package/test/spec/features/modeling/layout/LayoutAssociationSpec.js +101 -101
  334. package/test/spec/features/modeling/layout/LayoutConnectionSpec.js +98 -98
  335. package/test/spec/features/modeling/layout/LayoutDataAssociationSpec.js +98 -98
  336. package/test/spec/features/modeling/layout/LayoutMessageFlowSpec.bpmn +119 -119
  337. package/test/spec/features/modeling/layout/LayoutMessageFlowSpec.js +313 -313
  338. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.boundaryEvents.bpmn +65 -65
  339. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.flowElements.bpmn +70 -70
  340. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.js +323 -323
  341. package/test/spec/features/ordering/BpmnOrderingProviderSpec.js +231 -231
  342. package/test/spec/features/ordering/Helper.js +185 -185
  343. package/test/spec/features/ordering/ordering-start-event.bpmn +17 -17
  344. package/test/spec/features/ordering/ordering-subprocesses.bpmn +41 -41
  345. package/test/spec/features/ordering/ordering.bpmn +105 -105
  346. package/test/spec/features/palette/PaletteProviderSpec.js +33 -33
  347. package/test/spec/features/popup-menu/ReplaceMenuProvider.collapsedSubProcess.bpmn +13 -13
  348. package/test/spec/features/popup-menu/ReplaceMenuProvider.compensation-activity.bpmn +12 -12
  349. package/test/spec/features/popup-menu/ReplaceMenuProvider.conditionalFlows.bpmn +66 -66
  350. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlows.bpmn +126 -126
  351. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlowsFromComplexGateways.bpmn +48 -48
  352. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlowsFromInclusiveGateways.bpmn +48 -48
  353. package/test/spec/features/popup-menu/ReplaceMenuProviderSpec.js +1957 -1957
  354. package/test/spec/features/replace/BpmnReplace.collaboration.bpmn +70 -70
  355. package/test/spec/features/replace/BpmnReplace.compensation.bpmn +12 -12
  356. package/test/spec/features/replace/BpmnReplace.eventSubProcesses.bpmn +126 -126
  357. package/test/spec/features/replace/BpmnReplaceSpec.js +1302 -1302
  358. package/test/spec/features/replace/ReplaceRulesSpec.js +78 -78
  359. package/test/spec/features/replace/SubProcess-collapsed.bpmn +36 -36
  360. package/test/spec/features/replace-preview/BpmnReplacePreviewSpec.js +304 -304
  361. package/test/spec/features/rules/BpmnRules.boundaryEvent.bpmn +93 -93
  362. package/test/spec/features/rules/BpmnRules.collaboration-dataAssociation.bpmn +35 -35
  363. package/test/spec/features/rules/BpmnRules.collaboration-lanes.bpmn +79 -79
  364. package/test/spec/features/rules/BpmnRules.collaboration.bpmn +138 -138
  365. package/test/spec/features/rules/BpmnRules.compensation.bpmn +65 -65
  366. package/test/spec/features/rules/BpmnRules.dataAssociation.bpmn +33 -33
  367. package/test/spec/features/rules/BpmnRules.eventBasedGateway.bpmn +82 -82
  368. package/test/spec/features/rules/BpmnRules.messageFlow.bpmn +27 -27
  369. package/test/spec/features/rules/BpmnRules.multiSelectionPools.bpmn +37 -37
  370. package/test/spec/features/rules/BpmnRules.process.bpmn +91 -91
  371. package/test/spec/features/rules/BpmnRules.subProcess-dataAssociation.bpmn +44 -44
  372. package/test/spec/features/rules/BpmnRulesSpec.js +1468 -1424
  373. package/test/spec/features/rules/Helper.js +82 -82
  374. package/test/spec/features/search/BpmnSearchProviderSpec.js +158 -158
  375. package/test/spec/features/search/bpmn-search-collaboration.bpmn +106 -106
  376. package/test/spec/features/search/bpmn-search.bpmn +100 -100
  377. package/test/spec/features/snapping/BpmnSnapping.connect.bpmn +36 -36
  378. package/test/spec/features/snapping/BpmnSnapping.labels.bpmn +27 -27
  379. package/test/spec/features/snapping/BpmnSnapping.lanes-resize.bpmn +43 -43
  380. package/test/spec/features/snapping/BpmnSnapping.participant-resize.bpmn +50 -50
  381. package/test/spec/features/snapping/BpmnSnapping.sequenceFlow.bpmn +41 -0
  382. package/test/spec/features/snapping/BpmnSnapping.subProcess-resize.bpmn +21 -21
  383. package/test/spec/features/snapping/BpmnSnapping.textAnnotation-resize.bpmn +22 -22
  384. package/test/spec/features/snapping/BpmnSnappingSpec.js +824 -758
  385. package/test/spec/features/snapping/BpmnSnappingUtil.lanes-flowNodes.bpmn +82 -82
  386. package/test/spec/features/snapping/BpmnSnappingUtil.lanes.bpmn +35 -35
  387. package/test/spec/features/snapping/BpmnSnappingUtilSpec.js +285 -285
  388. package/test/spec/i18n/custom-translate/custom-translate.js +14 -14
  389. package/test/spec/i18n/custom-translate/index.js +2 -2
  390. package/test/spec/i18n/translateSpec.js +56 -56
  391. package/test/spec/import/ImporterSpec.js +428 -428
  392. package/test/spec/import/ModelWiringSpec.js +194 -194
  393. package/test/spec/import/elements/AssociationSpec.collaboration.bpmn +51 -51
  394. package/test/spec/import/elements/AssociationSpec.compensation.bpmn +28 -28
  395. package/test/spec/import/elements/AssociationSpec.data-association.bpmn +39 -39
  396. package/test/spec/import/elements/AssociationSpec.data-input-output.bpmn +40 -40
  397. package/test/spec/import/elements/AssociationSpec.events.bpmn +51 -51
  398. package/test/spec/import/elements/AssociationSpec.js +175 -175
  399. package/test/spec/import/elements/AssociationSpec.text-annotation.bpmn +37 -37
  400. package/test/spec/import/elements/CollapsedSpec.js +118 -118
  401. package/test/spec/import/elements/LabelSpec.js +85 -85
  402. package/test/spec/import/lane-flowNodes.bpmn +44 -44
  403. package/test/spec/import/lane-missing-flowNodeRef.bpmn +24 -24
  404. package/test/spec/util/ModelCloneHelperSpec.js +381 -381
  405. package/test/spec/util/ModelUtilSpec.js +65 -65
  406. package/test/spec/util/camunda-moddle.js +70 -70
  407. package/test/util/MockEvents.js +62 -62
  408. package/test/util/ModelingUtil.js +117 -117
  409. package/test/util/custom-rules/CustomRules.js +18 -18
  410. package/test/util/custom-rules/index.js +4 -4
@@ -1,603 +1,603 @@
1
- 'use strict';
2
-
3
- require('../../../TestHelper');
4
-
5
- /* global bootstrapModeler, inject */
6
-
7
-
8
- var coreModule = require('lib/core'),
9
- bendpointsModule = require('diagram-js/lib/features/bendpoints'),
10
- modelingModule = require('lib/features/modeling'),
11
- labelEditingModule = require('lib/features/label-editing'),
12
- spaceTool = require('diagram-js/lib/features/space-tool');
13
-
14
- var canvasEvent = require('../../../util/MockEvents').createCanvasEvent;
15
-
16
- var testModules = [
17
- coreModule,
18
- modelingModule,
19
- labelEditingModule,
20
- bendpointsModule,
21
- spaceTool
22
- ];
23
-
24
-
25
- describe('modeling - label layouting', function() {
26
-
27
- describe('should position created label', function() {
28
-
29
- var diagramXML = require('./LabelLayouting.initial.bpmn');
30
-
31
- beforeEach(bootstrapModeler(diagramXML, {
32
- modules: testModules
33
- }));
34
-
35
-
36
- it('horizontal', inject(function(modeling, elementRegistry) {
37
-
38
- // given
39
- var element1 = elementRegistry.get('StartEvent_1'),
40
- element2 = elementRegistry.get('ExclusiveGateway_2');
41
-
42
- // when
43
- var connection = modeling.connect(element1, element2);
44
-
45
- // then
46
- expect(connection.label.x).to.be.equal(472);
47
- expect(connection.label.y).to.be.within(335, 336);
48
- }));
49
-
50
-
51
- it('vertical', inject(function(modeling, elementRegistry) {
52
-
53
- // given
54
- var element1 = elementRegistry.get('StartEvent_1'),
55
- element2 = elementRegistry.get('ExclusiveGateway_1');
56
-
57
- // when
58
- var connection = modeling.connect(element1, element2);
59
-
60
- // then
61
- expect(connection.label.x).to.be.equal(337);
62
- expect(connection.label.y).to.be.within(222, 224);
63
- }));
64
-
65
- });
66
-
67
-
68
- describe('should move label', function() {
69
-
70
- var diagramXML = require('./LabelLayouting.move.bpmn');
71
-
72
- beforeEach(bootstrapModeler(diagramXML, {
73
- modules: testModules
74
- }));
75
-
76
- describe('on segment move', function() {
77
-
78
- it('label name not set -> move label to waypoints mid', inject(
79
- function(modeling, elementRegistry, connectionSegmentMove, dragging) {
80
-
81
- // given
82
- var connection = elementRegistry.get('SequenceFlow_C'),
83
- labelPosition = getLabelPosition(connection);
84
-
85
- connection.label.businessObject.name = false;
86
- connection.label.hidden = true;
87
-
88
- // when
89
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
90
-
91
- dragging.move(canvasEvent({ x: 0, y: 50 }));
92
-
93
- dragging.end();
94
-
95
- // then
96
- expect(connection.label.y - labelPosition.y).to.be.within(13, 16);
97
- expect(connection.label.x - labelPosition.x).to.be.within(-87, -85);
98
- }
99
- ));
100
-
101
-
102
- it('left - no relayout', inject(function(elementRegistry, connectionSegmentMove, dragging) {
103
-
104
- // given
105
- var connection = elementRegistry.get('SequenceFlow_B'),
106
- labelPosition = getLabelPosition(connection);
107
-
108
- // when
109
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
110
-
111
- dragging.move(canvasEvent({ x: -30, y: 0 }));
112
-
113
- dragging.end();
114
-
115
- // then
116
- expectLabelMoved(connection, labelPosition, { x: -30, y: 0 });
117
- }));
118
-
119
-
120
- it('left - remove bendpoint', inject(
121
- function(elementRegistry, connectionSegmentMove, dragging) {
122
-
123
- // given
124
- var connection = elementRegistry.get('SequenceFlow_B'),
125
- labelPosition = getLabelPosition(connection);
126
-
127
- // when
128
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
129
-
130
- dragging.move(canvasEvent({ x: -70, y: 0 }));
131
-
132
- dragging.end();
133
-
134
- // then
135
- expectLabelMoved(connection, labelPosition, { x: -70, y: 24 });
136
- }
137
- ));
138
-
139
-
140
- it('right - no relayout', inject(
141
- function(elementRegistry, connectionSegmentMove, dragging) {
142
-
143
- // given
144
- var connection = elementRegistry.get('SequenceFlow_B'),
145
- labelPosition = getLabelPosition(connection);
146
-
147
- // when
148
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
149
-
150
- dragging.move(canvasEvent({ x: 30, y: 0 }));
151
-
152
- dragging.end();
153
-
154
- // then
155
- expectLabelMoved(connection, labelPosition, { x: 30, y: 0 });
156
- }
157
- ));
158
-
159
-
160
- it('right - remove bendpoint', inject(
161
- function(elementRegistry, connectionSegmentMove, dragging) {
162
-
163
- // given
164
- var connection = elementRegistry.get('SequenceFlow_B'),
165
- labelPosition = getLabelPosition(connection);
166
-
167
- // when
168
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
169
-
170
- dragging.move(canvasEvent({ x: 70, y: 0 }));
171
-
172
- dragging.end();
173
-
174
- // then
175
- expectLabelMoved(connection, labelPosition, { x: 70, y: -16 });
176
- }
177
- ));
178
-
179
-
180
- it('down', inject(function(elementRegistry, connectionSegmentMove, dragging) {
181
-
182
- // given
183
- var connection = elementRegistry.get('SequenceFlow_C'),
184
- labelPosition = getLabelPosition(connection);
185
-
186
- // when
187
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
188
-
189
- dragging.move(canvasEvent({ x: 0, y: 70 }));
190
-
191
- dragging.end();
192
-
193
- // then
194
- expectLabelMoved(connection, labelPosition, { x: 0, y: 70 });
195
-
196
- }));
197
-
198
-
199
- it('up - remove two bendpoints', inject(
200
- function(elementRegistry, connectionSegmentMove, dragging) {
201
-
202
- // given
203
- var connection = elementRegistry.get('SequenceFlow_C'),
204
- labelPosition = getLabelPosition(connection);
205
-
206
- // when
207
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
208
-
209
- dragging.move(canvasEvent({ x: 0, y: -90 }));
210
-
211
- dragging.end();
212
-
213
- // then
214
- expectLabelMoved(connection, labelPosition, { x: -39, y: -85 });
215
-
216
- }
217
- ));
218
-
219
-
220
- // TODO(@janstuemmel): solve by connectionSegmentMove refactoring
221
- it('up - remove two bendpoints - redundant waypoints', inject(
222
- function(elementRegistry, connectionSegmentMove, dragging, bendpointMove) {
223
-
224
- // given
225
- var connection = elementRegistry.get('SequenceFlow_C');
226
-
227
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
228
- dragging.move(canvasEvent({ x: 620, y: 435 }));
229
- dragging.end();
230
-
231
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
232
- dragging.move(canvasEvent({ x: 300, y: 435 }));
233
- dragging.end();
234
-
235
- var labelPosition = getLabelPosition(connection);
236
-
237
- // when
238
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
239
- dragging.move(canvasEvent({ x: 0, y: -160 }));
240
- dragging.end();
241
-
242
- // then
243
- expect(getLabelPosition(connection)).to.not.eql(labelPosition);
244
-
245
- }
246
- ));
247
-
248
- });
249
-
250
-
251
- describe('on reconnect', function() {
252
-
253
- it('start', inject(function(elementRegistry, modeling) {
254
-
255
- // given
256
- var connection = elementRegistry.get('SequenceFlow_D'),
257
- shape = elementRegistry.get('Task_1');
258
-
259
- // when
260
- modeling.reconnectStart(connection, shape, { x: 0, y: 0 });
261
-
262
- // then
263
- expect(Math.round(connection.label.x)).to.be.within(570, 575);
264
- expect(Math.round(connection.label.y)).to.be.within(138, 139);
265
-
266
- }));
267
-
268
-
269
- it('end', inject(function(elementRegistry, modeling) {
270
-
271
- // given
272
- var connection = elementRegistry.get('SequenceFlow_A'),
273
- shape = elementRegistry.get('Task_2');
274
-
275
- // when
276
- modeling.reconnectEnd(connection, shape, { x: 294, y: 270 });
277
-
278
- // then
279
- expect(Math.round(connection.label.x)).to.be.within(257, 260);
280
- expect(Math.round(connection.label.y)).to.be.within(185, 186);
281
-
282
- }));
283
-
284
- });
285
-
286
-
287
- describe('on shape move', function() {
288
-
289
- it('down', inject(function(elementRegistry, modeling) {
290
-
291
- // given
292
- var connection = elementRegistry.get('SequenceFlow_E'),
293
- shape = elementRegistry.get('Task_4'),
294
- labelPosition = getLabelPosition(connection);
295
-
296
- // when
297
- modeling.moveShape(shape, { x: 0, y: 100 });
298
-
299
- // then
300
- expectLabelMoved(connection, labelPosition, { x: 0, y: 100 });
301
-
302
- }));
303
-
304
- });
305
-
306
-
307
- describe('on bendpoint add/delete/moving', function() {
308
-
309
-
310
- it('move, label on segment', inject(function(elementRegistry, bendpointMove, dragging) {
311
-
312
- // given
313
- var connection = elementRegistry.get('SequenceFlow_B');
314
-
315
- // when
316
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
317
-
318
- dragging.move(canvasEvent({ x: 455 + 50, y: 120 }));
319
-
320
- dragging.end();
321
-
322
- // then
323
- expect(Math.round(connection.label.x)).to.be.within(466, 468);
324
- expect(Math.round(connection.label.y)).to.be.within(170, 171);
325
-
326
- }));
327
-
328
-
329
- it('move, label on bendpoint', inject(
330
- function(elementRegistry, bendpointMove, dragging, modeling) {
331
-
332
- // given
333
- var connection = elementRegistry.get('SequenceFlow_C');
334
-
335
- // label out of segments, on a bendpoint (idx=1)
336
- modeling.moveShape(connection.label, { x: 40, y: 0 });
337
-
338
- // when
339
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
340
-
341
- dragging.move(canvasEvent({ x: 455 + 50, y: 500 }));
342
-
343
- dragging.end();
344
-
345
- // then
346
- expect(Math.round(connection.label.x)).to.be.within(517, 519);
347
- expect(Math.round(connection.label.y)).to.be.equal(507);
348
-
349
- }
350
- ));
351
-
352
-
353
- it('remove bendpoint when label on segment', inject(
354
- function(elementRegistry, bendpointMove, dragging) {
355
-
356
- // given
357
- var connection = elementRegistry.get('SequenceFlow_B');
358
-
359
- // when
360
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
361
-
362
- dragging.move(canvasEvent({ x: 455, y: 120 + 160 }));
363
-
364
- dragging.end();
365
-
366
- // then
367
- expect(Math.round(connection.label.x)).to.be.within(418, 421);
368
- expect(Math.round(connection.label.y)).to.be.equal(191);
369
-
370
- }
371
- ));
372
-
373
-
374
- it('add bendpoint, label on right segment', inject(
375
- function(elementRegistry, bendpointMove, dragging, canvas) {
376
-
377
- // given
378
- var connection = elementRegistry.get('SequenceFlow_A');
379
-
380
- // when
381
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1, true);
382
-
383
- dragging.hover({
384
- element: connection,
385
- gfx: canvas.getGraphics(connection)
386
- });
387
-
388
- dragging.move(canvasEvent({ x: 220, y: 200 }));
389
-
390
- dragging.end();
391
-
392
- // then
393
- expect(Math.round(connection.label.x)).to.be.within(248, 251);
394
- expect(Math.round(connection.label.y)).to.be.equal(152);
395
-
396
- }
397
- ));
398
-
399
-
400
- it('add bendpoint, label on left segment', inject(
401
- function(elementRegistry, bendpointMove, dragging, canvas) {
402
-
403
- // given
404
- var connection = elementRegistry.get('SequenceFlow_A');
405
-
406
- // when
407
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1, true);
408
-
409
- dragging.hover({
410
- element: connection,
411
- gfx: canvas.getGraphics(connection)
412
- });
413
-
414
- dragging.move(canvasEvent({ x: 260, y: 200 }));
415
-
416
- dragging.end();
417
-
418
- // then
419
- expect(Math.round(connection.label.x)).to.be.within(240, 242);
420
- expect(Math.round(connection.label.y)).to.be.equal(148);
421
-
422
- }
423
- ));
424
-
425
-
426
- it('remove bendpoint when label on bendpoint', inject(
427
- function(elementRegistry, bendpointMove, dragging, modeling) {
428
-
429
- // given
430
- var connection = elementRegistry.get('SequenceFlow_C');
431
-
432
- // label out of segments, on a bendpoint
433
- modeling.moveShape(connection.label, { x: 40, y: 0 });
434
-
435
- // when
436
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
437
-
438
- dragging.move(canvasEvent({ x: 455, y: 320 }));
439
-
440
- dragging.end();
441
-
442
- // then
443
- expect(Math.round(connection.label.x)).to.be.within(462, 465);
444
- expect(Math.round(connection.label.y)).to.be.within(290, 293);
445
-
446
- }
447
- ));
448
-
449
-
450
- it('add benpoint, label on segment, should not move', inject(
451
- function(elementRegistry, bendpointMove, canvas, dragging, modeling) {
452
-
453
- // given
454
- var connection = elementRegistry.get('SequenceFlow_C');
455
-
456
- // label out of segments, on a bendpoint
457
- modeling.moveShape(connection.label, { x: 40, y: -60 });
458
- var position = getLabelPosition(connection);
459
-
460
- // when
461
- bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2, true);
462
-
463
- dragging.hover({
464
- element: connection,
465
- gfx: canvas.getGraphics(connection)
466
- });
467
-
468
- dragging.move(canvasEvent({ x: 400, y: 350 }));
469
-
470
- dragging.end();
471
-
472
- // then
473
- expectLabelMoved(connection, position, { x: 0, y: 0 });
474
-
475
- }
476
- ));
477
-
478
- });
479
-
480
-
481
- describe('special cases', function() {
482
-
483
- it('should behave properly, right after importing', inject(
484
- function(elementRegistry, connectionSegmentMove, dragging, modeling) {
485
-
486
- // given
487
- var connection = elementRegistry.get('SequenceFlow_C'),
488
- labelPosition = getLabelPosition(connection),
489
- label = connection.label;
490
-
491
- // when
492
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
493
-
494
- dragging.move(canvasEvent({ x: 0, y: 70 }));
495
-
496
- dragging.end();
497
-
498
- // move label
499
- modeling.moveShape(label, { x: 40, y: -30 });
500
-
501
- // drag again
502
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
503
-
504
- dragging.move(canvasEvent({ x: -20, y: 0 }));
505
-
506
- dragging.end();
507
-
508
- // then
509
- expectLabelMoved(connection, labelPosition, { x: 20, y: 40 });
510
-
511
- }
512
- ));
513
-
514
-
515
- it('should reposition on right segment', inject(
516
- function(elementRegistry, connectionSegmentMove, dragging) {
517
-
518
- // given
519
- var connection = elementRegistry.get('SequenceFlow_E'),
520
- labelPosition = getLabelPosition(connection);
521
-
522
- // when
523
- connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
524
-
525
- dragging.move(canvasEvent({ x: -100, y: 0 }));
526
-
527
- dragging.end();
528
-
529
- // then
530
- expect(connection.label.y - labelPosition.y).to.be.within(-76, -70);
531
- expect(connection.label.x - labelPosition.x).to.be.within(-54, -51);
532
-
533
- }
534
- ));
535
-
536
- });
537
-
538
- });
539
-
540
-
541
- describe('integration', function() {
542
-
543
- describe('space tool', function() {
544
-
545
- var diagramXML = require('./LabelLayouting.special.bpmn');
546
-
547
- beforeEach(bootstrapModeler(diagramXML, {
548
- modules: testModules
549
- }));
550
-
551
- beforeEach(inject(function(dragging) {
552
- dragging.setOptions({ manual: true });
553
- }));
554
-
555
-
556
- it('should move with a skewed line', inject(function(elementRegistry, spaceTool, dragging) {
557
-
558
- // given
559
- var connection = elementRegistry.get('SequenceFlow_1'),
560
- labelPosition = getLabelPosition(connection);
561
-
562
- // when
563
- spaceTool.activateMakeSpace(canvasEvent({ x: 500, y: 225 }));
564
-
565
- dragging.move(canvasEvent({ x: 550, y: 225 }));
566
- dragging.end();
567
-
568
- // then
569
- expectLabelMoved(connection, labelPosition, { x: 25, y: 0 });
570
- }));
571
-
572
- });
573
-
574
- });
575
-
576
- });
577
-
578
-
579
-
580
- function getLabelPosition(connection) {
581
-
582
- var label = connection.label;
583
-
584
- var mid = {
585
- x: label.x + (label.width / 2),
586
- y: label.y + (label.height / 2)
587
- };
588
-
589
- return mid;
590
- }
591
-
592
-
593
- function expectLabelMoved(connection, oldPosition, expectedDelta) {
594
-
595
- var newPosition = getLabelPosition(connection);
596
-
597
- var delta = {
598
- x: Math.round(newPosition.x - oldPosition.x),
599
- y: Math.round(newPosition.y - oldPosition.y)
600
- };
601
-
602
- expect(delta).to.eql(expectedDelta);
603
- }
1
+ 'use strict';
2
+
3
+ require('../../../TestHelper');
4
+
5
+ /* global bootstrapModeler, inject */
6
+
7
+
8
+ var coreModule = require('lib/core'),
9
+ bendpointsModule = require('diagram-js/lib/features/bendpoints'),
10
+ modelingModule = require('lib/features/modeling'),
11
+ labelEditingModule = require('lib/features/label-editing'),
12
+ spaceTool = require('diagram-js/lib/features/space-tool');
13
+
14
+ var canvasEvent = require('../../../util/MockEvents').createCanvasEvent;
15
+
16
+ var testModules = [
17
+ coreModule,
18
+ modelingModule,
19
+ labelEditingModule,
20
+ bendpointsModule,
21
+ spaceTool
22
+ ];
23
+
24
+
25
+ describe('modeling - label layouting', function() {
26
+
27
+ describe('should position created label', function() {
28
+
29
+ var diagramXML = require('./LabelLayouting.initial.bpmn');
30
+
31
+ beforeEach(bootstrapModeler(diagramXML, {
32
+ modules: testModules
33
+ }));
34
+
35
+
36
+ it('horizontal', inject(function(modeling, elementRegistry) {
37
+
38
+ // given
39
+ var element1 = elementRegistry.get('StartEvent_1'),
40
+ element2 = elementRegistry.get('ExclusiveGateway_2');
41
+
42
+ // when
43
+ var connection = modeling.connect(element1, element2);
44
+
45
+ // then
46
+ expect(connection.label.x).to.be.equal(472);
47
+ expect(connection.label.y).to.be.within(335, 336);
48
+ }));
49
+
50
+
51
+ it('vertical', inject(function(modeling, elementRegistry) {
52
+
53
+ // given
54
+ var element1 = elementRegistry.get('StartEvent_1'),
55
+ element2 = elementRegistry.get('ExclusiveGateway_1');
56
+
57
+ // when
58
+ var connection = modeling.connect(element1, element2);
59
+
60
+ // then
61
+ expect(connection.label.x).to.be.equal(337);
62
+ expect(connection.label.y).to.be.within(222, 224);
63
+ }));
64
+
65
+ });
66
+
67
+
68
+ describe('should move label', function() {
69
+
70
+ var diagramXML = require('./LabelLayouting.move.bpmn');
71
+
72
+ beforeEach(bootstrapModeler(diagramXML, {
73
+ modules: testModules
74
+ }));
75
+
76
+ describe('on segment move', function() {
77
+
78
+ it('label name not set -> move label to waypoints mid', inject(
79
+ function(modeling, elementRegistry, connectionSegmentMove, dragging) {
80
+
81
+ // given
82
+ var connection = elementRegistry.get('SequenceFlow_C'),
83
+ labelPosition = getLabelPosition(connection);
84
+
85
+ connection.label.businessObject.name = false;
86
+ connection.label.hidden = true;
87
+
88
+ // when
89
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
90
+
91
+ dragging.move(canvasEvent({ x: 0, y: 50 }));
92
+
93
+ dragging.end();
94
+
95
+ // then
96
+ expect(connection.label.y - labelPosition.y).to.be.within(13, 16);
97
+ expect(connection.label.x - labelPosition.x).to.be.within(-87, -85);
98
+ }
99
+ ));
100
+
101
+
102
+ it('left - no relayout', inject(function(elementRegistry, connectionSegmentMove, dragging) {
103
+
104
+ // given
105
+ var connection = elementRegistry.get('SequenceFlow_B'),
106
+ labelPosition = getLabelPosition(connection);
107
+
108
+ // when
109
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
110
+
111
+ dragging.move(canvasEvent({ x: -30, y: 0 }));
112
+
113
+ dragging.end();
114
+
115
+ // then
116
+ expectLabelMoved(connection, labelPosition, { x: -30, y: 0 });
117
+ }));
118
+
119
+
120
+ it('left - remove bendpoint', inject(
121
+ function(elementRegistry, connectionSegmentMove, dragging) {
122
+
123
+ // given
124
+ var connection = elementRegistry.get('SequenceFlow_B'),
125
+ labelPosition = getLabelPosition(connection);
126
+
127
+ // when
128
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
129
+
130
+ dragging.move(canvasEvent({ x: -70, y: 0 }));
131
+
132
+ dragging.end();
133
+
134
+ // then
135
+ expectLabelMoved(connection, labelPosition, { x: -70, y: 24 });
136
+ }
137
+ ));
138
+
139
+
140
+ it('right - no relayout', inject(
141
+ function(elementRegistry, connectionSegmentMove, dragging) {
142
+
143
+ // given
144
+ var connection = elementRegistry.get('SequenceFlow_B'),
145
+ labelPosition = getLabelPosition(connection);
146
+
147
+ // when
148
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
149
+
150
+ dragging.move(canvasEvent({ x: 30, y: 0 }));
151
+
152
+ dragging.end();
153
+
154
+ // then
155
+ expectLabelMoved(connection, labelPosition, { x: 30, y: 0 });
156
+ }
157
+ ));
158
+
159
+
160
+ it('right - remove bendpoint', inject(
161
+ function(elementRegistry, connectionSegmentMove, dragging) {
162
+
163
+ // given
164
+ var connection = elementRegistry.get('SequenceFlow_B'),
165
+ labelPosition = getLabelPosition(connection);
166
+
167
+ // when
168
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
169
+
170
+ dragging.move(canvasEvent({ x: 70, y: 0 }));
171
+
172
+ dragging.end();
173
+
174
+ // then
175
+ expectLabelMoved(connection, labelPosition, { x: 70, y: -16 });
176
+ }
177
+ ));
178
+
179
+
180
+ it('down', inject(function(elementRegistry, connectionSegmentMove, dragging) {
181
+
182
+ // given
183
+ var connection = elementRegistry.get('SequenceFlow_C'),
184
+ labelPosition = getLabelPosition(connection);
185
+
186
+ // when
187
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
188
+
189
+ dragging.move(canvasEvent({ x: 0, y: 70 }));
190
+
191
+ dragging.end();
192
+
193
+ // then
194
+ expectLabelMoved(connection, labelPosition, { x: 0, y: 70 });
195
+
196
+ }));
197
+
198
+
199
+ it('up - remove two bendpoints', inject(
200
+ function(elementRegistry, connectionSegmentMove, dragging) {
201
+
202
+ // given
203
+ var connection = elementRegistry.get('SequenceFlow_C'),
204
+ labelPosition = getLabelPosition(connection);
205
+
206
+ // when
207
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
208
+
209
+ dragging.move(canvasEvent({ x: 0, y: -90 }));
210
+
211
+ dragging.end();
212
+
213
+ // then
214
+ expectLabelMoved(connection, labelPosition, { x: -39, y: -85 });
215
+
216
+ }
217
+ ));
218
+
219
+
220
+ // TODO(@janstuemmel): solve by connectionSegmentMove refactoring
221
+ it('up - remove two bendpoints - redundant waypoints', inject(
222
+ function(elementRegistry, connectionSegmentMove, dragging, bendpointMove) {
223
+
224
+ // given
225
+ var connection = elementRegistry.get('SequenceFlow_C');
226
+
227
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
228
+ dragging.move(canvasEvent({ x: 620, y: 435 }));
229
+ dragging.end();
230
+
231
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
232
+ dragging.move(canvasEvent({ x: 300, y: 435 }));
233
+ dragging.end();
234
+
235
+ var labelPosition = getLabelPosition(connection);
236
+
237
+ // when
238
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
239
+ dragging.move(canvasEvent({ x: 0, y: -160 }));
240
+ dragging.end();
241
+
242
+ // then
243
+ expect(getLabelPosition(connection)).to.not.eql(labelPosition);
244
+
245
+ }
246
+ ));
247
+
248
+ });
249
+
250
+
251
+ describe('on reconnect', function() {
252
+
253
+ it('start', inject(function(elementRegistry, modeling) {
254
+
255
+ // given
256
+ var connection = elementRegistry.get('SequenceFlow_D'),
257
+ shape = elementRegistry.get('Task_1');
258
+
259
+ // when
260
+ modeling.reconnectStart(connection, shape, { x: 0, y: 0 });
261
+
262
+ // then
263
+ expect(Math.round(connection.label.x)).to.be.within(570, 575);
264
+ expect(Math.round(connection.label.y)).to.be.within(138, 139);
265
+
266
+ }));
267
+
268
+
269
+ it('end', inject(function(elementRegistry, modeling) {
270
+
271
+ // given
272
+ var connection = elementRegistry.get('SequenceFlow_A'),
273
+ shape = elementRegistry.get('Task_2');
274
+
275
+ // when
276
+ modeling.reconnectEnd(connection, shape, { x: 294, y: 270 });
277
+
278
+ // then
279
+ expect(Math.round(connection.label.x)).to.be.within(257, 260);
280
+ expect(Math.round(connection.label.y)).to.be.within(185, 186);
281
+
282
+ }));
283
+
284
+ });
285
+
286
+
287
+ describe('on shape move', function() {
288
+
289
+ it('down', inject(function(elementRegistry, modeling) {
290
+
291
+ // given
292
+ var connection = elementRegistry.get('SequenceFlow_E'),
293
+ shape = elementRegistry.get('Task_4'),
294
+ labelPosition = getLabelPosition(connection);
295
+
296
+ // when
297
+ modeling.moveShape(shape, { x: 0, y: 100 });
298
+
299
+ // then
300
+ expectLabelMoved(connection, labelPosition, { x: 0, y: 100 });
301
+
302
+ }));
303
+
304
+ });
305
+
306
+
307
+ describe('on bendpoint add/delete/moving', function() {
308
+
309
+
310
+ it('move, label on segment', inject(function(elementRegistry, bendpointMove, dragging) {
311
+
312
+ // given
313
+ var connection = elementRegistry.get('SequenceFlow_B');
314
+
315
+ // when
316
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
317
+
318
+ dragging.move(canvasEvent({ x: 455 + 50, y: 120 }));
319
+
320
+ dragging.end();
321
+
322
+ // then
323
+ expect(Math.round(connection.label.x)).to.be.within(466, 468);
324
+ expect(Math.round(connection.label.y)).to.be.within(170, 171);
325
+
326
+ }));
327
+
328
+
329
+ it('move, label on bendpoint', inject(
330
+ function(elementRegistry, bendpointMove, dragging, modeling) {
331
+
332
+ // given
333
+ var connection = elementRegistry.get('SequenceFlow_C');
334
+
335
+ // label out of segments, on a bendpoint (idx=1)
336
+ modeling.moveShape(connection.label, { x: 40, y: 0 });
337
+
338
+ // when
339
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
340
+
341
+ dragging.move(canvasEvent({ x: 455 + 50, y: 500 }));
342
+
343
+ dragging.end();
344
+
345
+ // then
346
+ expect(Math.round(connection.label.x)).to.be.within(517, 519);
347
+ expect(Math.round(connection.label.y)).to.be.equal(507);
348
+
349
+ }
350
+ ));
351
+
352
+
353
+ it('remove bendpoint when label on segment', inject(
354
+ function(elementRegistry, bendpointMove, dragging) {
355
+
356
+ // given
357
+ var connection = elementRegistry.get('SequenceFlow_B');
358
+
359
+ // when
360
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
361
+
362
+ dragging.move(canvasEvent({ x: 455, y: 120 + 160 }));
363
+
364
+ dragging.end();
365
+
366
+ // then
367
+ expect(Math.round(connection.label.x)).to.be.within(418, 421);
368
+ expect(Math.round(connection.label.y)).to.be.equal(191);
369
+
370
+ }
371
+ ));
372
+
373
+
374
+ it('add bendpoint, label on right segment', inject(
375
+ function(elementRegistry, bendpointMove, dragging, canvas) {
376
+
377
+ // given
378
+ var connection = elementRegistry.get('SequenceFlow_A');
379
+
380
+ // when
381
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1, true);
382
+
383
+ dragging.hover({
384
+ element: connection,
385
+ gfx: canvas.getGraphics(connection)
386
+ });
387
+
388
+ dragging.move(canvasEvent({ x: 220, y: 200 }));
389
+
390
+ dragging.end();
391
+
392
+ // then
393
+ expect(Math.round(connection.label.x)).to.be.within(248, 251);
394
+ expect(Math.round(connection.label.y)).to.be.equal(152);
395
+
396
+ }
397
+ ));
398
+
399
+
400
+ it('add bendpoint, label on left segment', inject(
401
+ function(elementRegistry, bendpointMove, dragging, canvas) {
402
+
403
+ // given
404
+ var connection = elementRegistry.get('SequenceFlow_A');
405
+
406
+ // when
407
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1, true);
408
+
409
+ dragging.hover({
410
+ element: connection,
411
+ gfx: canvas.getGraphics(connection)
412
+ });
413
+
414
+ dragging.move(canvasEvent({ x: 260, y: 200 }));
415
+
416
+ dragging.end();
417
+
418
+ // then
419
+ expect(Math.round(connection.label.x)).to.be.within(240, 242);
420
+ expect(Math.round(connection.label.y)).to.be.equal(148);
421
+
422
+ }
423
+ ));
424
+
425
+
426
+ it('remove bendpoint when label on bendpoint', inject(
427
+ function(elementRegistry, bendpointMove, dragging, modeling) {
428
+
429
+ // given
430
+ var connection = elementRegistry.get('SequenceFlow_C');
431
+
432
+ // label out of segments, on a bendpoint
433
+ modeling.moveShape(connection.label, { x: 40, y: 0 });
434
+
435
+ // when
436
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
437
+
438
+ dragging.move(canvasEvent({ x: 455, y: 320 }));
439
+
440
+ dragging.end();
441
+
442
+ // then
443
+ expect(Math.round(connection.label.x)).to.be.within(462, 465);
444
+ expect(Math.round(connection.label.y)).to.be.within(290, 293);
445
+
446
+ }
447
+ ));
448
+
449
+
450
+ it('add benpoint, label on segment, should not move', inject(
451
+ function(elementRegistry, bendpointMove, canvas, dragging, modeling) {
452
+
453
+ // given
454
+ var connection = elementRegistry.get('SequenceFlow_C');
455
+
456
+ // label out of segments, on a bendpoint
457
+ modeling.moveShape(connection.label, { x: 40, y: -60 });
458
+ var position = getLabelPosition(connection);
459
+
460
+ // when
461
+ bendpointMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2, true);
462
+
463
+ dragging.hover({
464
+ element: connection,
465
+ gfx: canvas.getGraphics(connection)
466
+ });
467
+
468
+ dragging.move(canvasEvent({ x: 400, y: 350 }));
469
+
470
+ dragging.end();
471
+
472
+ // then
473
+ expectLabelMoved(connection, position, { x: 0, y: 0 });
474
+
475
+ }
476
+ ));
477
+
478
+ });
479
+
480
+
481
+ describe('special cases', function() {
482
+
483
+ it('should behave properly, right after importing', inject(
484
+ function(elementRegistry, connectionSegmentMove, dragging, modeling) {
485
+
486
+ // given
487
+ var connection = elementRegistry.get('SequenceFlow_C'),
488
+ labelPosition = getLabelPosition(connection),
489
+ label = connection.label;
490
+
491
+ // when
492
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
493
+
494
+ dragging.move(canvasEvent({ x: 0, y: 70 }));
495
+
496
+ dragging.end();
497
+
498
+ // move label
499
+ modeling.moveShape(label, { x: 40, y: -30 });
500
+
501
+ // drag again
502
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 1);
503
+
504
+ dragging.move(canvasEvent({ x: -20, y: 0 }));
505
+
506
+ dragging.end();
507
+
508
+ // then
509
+ expectLabelMoved(connection, labelPosition, { x: 20, y: 40 });
510
+
511
+ }
512
+ ));
513
+
514
+
515
+ it('should reposition on right segment', inject(
516
+ function(elementRegistry, connectionSegmentMove, dragging) {
517
+
518
+ // given
519
+ var connection = elementRegistry.get('SequenceFlow_E'),
520
+ labelPosition = getLabelPosition(connection);
521
+
522
+ // when
523
+ connectionSegmentMove.start(canvasEvent({ x: 0, y: 0 }), connection, 2);
524
+
525
+ dragging.move(canvasEvent({ x: -100, y: 0 }));
526
+
527
+ dragging.end();
528
+
529
+ // then
530
+ expect(connection.label.y - labelPosition.y).to.be.within(-76, -70);
531
+ expect(connection.label.x - labelPosition.x).to.be.within(-54, -51);
532
+
533
+ }
534
+ ));
535
+
536
+ });
537
+
538
+ });
539
+
540
+
541
+ describe('integration', function() {
542
+
543
+ describe('space tool', function() {
544
+
545
+ var diagramXML = require('./LabelLayouting.special.bpmn');
546
+
547
+ beforeEach(bootstrapModeler(diagramXML, {
548
+ modules: testModules
549
+ }));
550
+
551
+ beforeEach(inject(function(dragging) {
552
+ dragging.setOptions({ manual: true });
553
+ }));
554
+
555
+
556
+ it('should move with a skewed line', inject(function(elementRegistry, spaceTool, dragging) {
557
+
558
+ // given
559
+ var connection = elementRegistry.get('SequenceFlow_1'),
560
+ labelPosition = getLabelPosition(connection);
561
+
562
+ // when
563
+ spaceTool.activateMakeSpace(canvasEvent({ x: 500, y: 225 }));
564
+
565
+ dragging.move(canvasEvent({ x: 550, y: 225 }));
566
+ dragging.end();
567
+
568
+ // then
569
+ expectLabelMoved(connection, labelPosition, { x: 25, y: 0 });
570
+ }));
571
+
572
+ });
573
+
574
+ });
575
+
576
+ });
577
+
578
+
579
+
580
+ function getLabelPosition(connection) {
581
+
582
+ var label = connection.label;
583
+
584
+ var mid = {
585
+ x: label.x + (label.width / 2),
586
+ y: label.y + (label.height / 2)
587
+ };
588
+
589
+ return mid;
590
+ }
591
+
592
+
593
+ function expectLabelMoved(connection, oldPosition, expectedDelta) {
594
+
595
+ var newPosition = getLabelPosition(connection);
596
+
597
+ var delta = {
598
+ x: Math.round(newPosition.x - oldPosition.x),
599
+ y: Math.round(newPosition.y - oldPosition.y)
600
+ };
601
+
602
+ expect(delta).to.eql(expectedDelta);
603
+ }