Commit Graph

847 Commits

Author SHA1 Message Date
Gustavo E. Jimenez Folta 424a05a18a feat(modeling): correctly handle event based gateway connections
Handles two new scenarios:

1. A user wants to connect an event-based gateway to an event-based
gateway target with existing incoming sequence flows. The existing
sequence flows are removed before connecting the new one.

2. A user wants to replace a gateway, that is already connected to
event-based gateway targets, with an event-based gateway. The existing
incoming sequence flows of the targets, which do not belong to the
newly replaced event-based gateway, are removed before the replacement
operation finishes.

This is because target elements in an event gateway configuration
must not have any additional incoming sequence flows other than
that from the event gateway.
2019-05-06 12:41:11 +02:00
Gustavo E. Jimenez Folta b6e9c2186a fix(BpmnRules): update canConnectSequenceFlow()
This prevents multiple incoming sequence flows to target events of an
event-based gateway when the connection source is not an event-based
gateway.
2019-05-06 12:41:11 +02:00
Philipp Fromme 867b41c04f feat(grid-snapping): integrate grid snapping with auto place feature
Closes #1003
2019-04-30 09:32:42 +00:00
Philipp Fromme 4388359fb1 chore(autp-place): move helper function to util 2019-04-30 09:32:42 +00:00
Nico Rehwaldt 5affe25705 feat(modeling): adjust default collapsed participant height to 60px
This better aligns our collapse behavior with other tools.
2019-04-29 12:04:01 +00:00
Nico Rehwaldt 86506468ba feat(Modeler): re-integrate grid snapping 2019-04-26 18:31:36 +00:00
Philipp Fromme fa2e472361 feat(grid-snapping): integrate auto resize
Related to camunda/camunda-modeler#1344
Related to camunda/camunda-modeler#1349
2019-04-26 18:31:36 +00:00
Philipp Fromme 3b756e0725 feat(grid-snapping): snap resizable elements top-left
Related to camunda/camunda-modeler#1344
2019-04-26 18:31:36 +00:00
Maciej Barelkowski b72426834d chore(Modeler): disable grid snapping 2019-04-25 10:21:05 +02:00
Maciej Barelkowski 06ffc9d407 fix(modeling/BpmnLayouter): properly lay out boundary event connections
Closes #891
2019-04-24 11:56:01 +00:00
Maciej Barelkowski 5438f1a0c2 chore(modeling/BpmnLayouter): refactor boundary event layout 2019-04-24 11:56:01 +00:00
Gustavo E. Jimenez Folta 0f7b8f483c feat(replace): auto-resize height when toggling pool collapse/expand 2019-04-23 15:56:50 +02:00
Maciej Barelkowski 55ca4c8f3d chore(modeling/label): adjust label position to laid out connection
Closes #718
2019-04-18 16:06:44 +00:00
Maciej Barelkowski 411da58d43 chore(modeling): remove reconnect listeners
Listeners are triggered via layout event.
2019-04-18 16:06:44 +00:00
Nico Rehwaldt 13e3752f94 fix(draw): render hex and rgb encoded color markers
Until now we did not properly sanitize the IDs we create for colored
markers. This would make the marker retrival fail with fill and
stroke colors encoded in hex and rgb(a, b, c) form.

This commit improves the situation by removing forbidden chars from
the marker ID.

Closes #981
Related to camunda/camunda-modeler#1342
2019-04-18 14:42:01 +00:00
Nico Rehwaldt daee95743d chore(Viewer): type BPMNDiagram arg where possible 2019-04-16 15:20:12 +02:00
Valerio Spadaro 3f0583ad5f feat(Viewer): add #open method
This adds a method to switch displayed diagram without reimporting
xml via

```
var viewer = new Viewer({ container: container });
viewer.importXML(xml, diagramId, done);

var diagrams = viewer.getDefinitions().diagrams;
viewer.open(diagrams[1], done);
```
2019-04-16 15:20:12 +02:00
Valerio Spadaro 1c0585aaaf feat(Viewer): allow to select diagram to view
This introduces a new parameter to `Viewer#importXML`
which enables to choose the diagram to display.

```
var viewer = new Viewer({ container: container });
viewer.importXML(xml, diagramId, done);
```

Closes #87
2019-04-16 15:20:12 +02:00
Maciej Barelkowski 0c71ad30a0 feat(Viewer): remove businessObject#di binding on #clear
Closes #978
2019-04-16 15:10:43 +02:00
Maciej Barelkowski 00b7d9ecc2 fix(import/BpmnTreeWalker): pass context to unhandled process handler 2019-04-16 09:15:14 +00:00
Philipp Fromme b596c6dd06 feat(snapping): add grid snapping
Related to #973
2019-04-12 17:42:08 +02:00
Maciej Barelkowski 6f7925080c chore(modeling/BpmnUpdater): remove now unnecessary crop on reconnect
As of diagram-js@3.2.0 layouting will be triggered
on reconnectStart / reconnectEnd.

Related to #940
2019-04-10 19:08:49 +00:00
Nico Rehwaldt 8ca4c1d7b0 feat(modeling): allow basic movement of DataInput / DataOutput
Allow moving DataInput / DataOutput as
long as they do not leave their original
container.

Related to #951
2019-03-29 13:21:34 +00:00
Nico Rehwaldt fe9d4ff06d feat(modeling): ensure wrapping DataInput/Output in participant works 2019-03-29 13:21:34 +00:00
Nico Rehwaldt 8c49cb679b fix(modeling): properly handle DataInput / DataOutput move
Closes #961
2019-03-29 13:21:34 +00:00
Nico Rehwaldt 2fff30a284 feat(label-editing): support data input/output
Related to #951
2019-03-26 11:55:36 +01:00
Nico Rehwaldt 89719de3be feat(import): render DataInput and DataOutput labels
Related to #951
Related to camunda/camunda-modeler#1324
2019-03-26 11:55:36 +01:00
Nico Rehwaldt 45486f2afe fix(import): gracefully handle missing waypoints
This ensures we do not blow up if a diagram
is missing waypoints for connections.

Related to camunda/camunda-modeler#1294
2019-03-12 08:56:03 +00:00
Maciej Barelkowski 39d4f1c57e feat(modeling): set isHorizontal=true for partipant/lane DIs
Closes #934
2019-01-31 10:46:16 +00:00
Nico Rehwaldt 31271059d4 fix(ordering): render labels always on top 2018-12-04 13:48:12 +00:00
Nico Rehwaldt 7aad42d178 fix(modeling): limit flow join behavior to bpmn:SequenceFlows
Closes #917
2018-11-30 09:32:05 +00:00
Nico Rehwaldt 9240971ce7 style(rules): remove unneeded unwrapping 2018-11-21 09:37:38 +01:00
Niklas Kiefer 921eeb4843 fix(Modeler): use correct copy-paste-module 2018-11-06 13:56:53 +00:00
Nico Rehwaldt a94406e423 feat(modeler): (re-)integrate selection moving via keyboard
Closes #376
2018-10-29 14:52:41 +00:00
Nico Rehwaldt c3f967b39f chore(keyboard): handle { keyEvent } listener result
* event got renamed to keyEvent in context passed to
  keyboard listeners
2018-10-29 14:52:41 +00:00
Nico Rehwaldt a525c633a2 chore(keyboard): register keys backed by editor actions only
* only register keyboard bindings that are backed by actual
  editor actions
* rename BpmnKeyBindings -> BpmnKeyboardBindings for parity with
  diagram-js@latest
* sub-class and override _keyboardBindings_ service provided
  by diagram-js
* extend spec to verify default actions
2018-10-29 14:52:41 +00:00
Nico Rehwaldt 645265ad7e chore(editor-actions): make dependencies optional
* Treat features as optional dependencies and register action
  only if feature exists
* Explicitly add features to the Modeler and NavigatedViewer types
2018-10-29 14:52:41 +00:00
Maciej Barelkowski f0610721c9 feat(keyboard): use key value for bindings
`KeyboardEvent.keyCode` is deprecated, so the BpmnKeyBindings will
use non-deprecated `KeyboardEvent.key` instead.
2018-10-29 14:52:41 +00:00
Maciej Barelkowski 75135b667a feat(keyboard): rewrite listeners to use event passed in context
With the new version of `diagram-js`, the keyboard listeners receive
a single parameter which is an object with `KeyboardEvent` event
as the only property. `BpmnKeyBindings` needed to change in order
to make use of new version of API.
2018-10-29 14:52:41 +00:00
Nico Rehwaldt 8967362df7 chore(project): detect unresolved lint rules
This ensures we don't accidently require files in the lib directory
via the global `lib` import. That stuff works during tests but does
not work in the final bundle.

Considerations: This plugin adds some runtime overhead to our linting
process.
2018-10-26 11:18:37 +00:00
Niklas Kiefer acd2fe520b feat(draw): render group names
Closes #844
2018-10-25 14:32:07 +02:00
Philipp Fromme 6d54ff34e3 chore(boundary-event-behavior): clean up tests 2018-10-17 14:31:40 +00:00
Niklas Kiefer 178e1cfccb fix(modeling/behaviors): add a behavior that deletes attached boundaries after replacing a gateway with an event based gateway 2018-10-17 13:12:31 +00:00
Niklas Kiefer b3e4b1dc1f fix(modeling/behaviors): add behavior for deleting boundaries on receive tasks after connecting to event based gateway 2018-10-16 10:53:57 +00:00
Niklas Kiefer ea681df2d3 fix(bpmn-rules): adjust canAttach rule for boundary events after event based gateways 2018-10-16 10:53:57 +00:00
Maciej Barelkowski ba42e9edde feat(global-connect): use rules for connection starting
* remove `BpmnGlobalConnect` provider
* use `connection.start` rule to determine whether
  an element can start a connection

Closes #565
Closes #870

BREAKING CHANGE:

* `BpmnGlobalConnect` got removed. Add `connection.start`
  rule to specify whether connection should be allowed.
2018-10-11 09:28:30 +00:00
Niklas Kiefer 350a5ab75e feat(contextPad): Adjustments for IntermediateCatchEvents
adjust tooltip titles
i18n support
2018-10-02 09:09:19 +02:00
Niklas Kiefer 6b0a73145d feat(contextPad): improve tooltip titles for IntermediateCatchEvents 2018-10-01 12:38:19 +00:00
Nico Rehwaldt 90faab981d fix(draw): correct embedded label padding 2018-09-20 21:57:23 +02:00
ruvor 31177b94e7 style(Viewer): fix a typo in the imported name 2018-09-03 09:24:10 +02:00
Nico Rehwaldt 374c7d7f18 fix(rules): correct bpmn:Lane insert rule
Closes #855
2018-08-29 00:38:03 +02:00
Nico Rehwaldt 6689af6f5b feat(snapping): snap message flows to bpmn:Event mid
This snaps source / target to the element mid, if
the element is a `bpmn:Event`.

There is usually no more than one snap point for
an event other than the center.

Closes #850
2018-08-22 14:43:16 +02:00
Nico Rehwaldt cdacc69a3d chore(modeling/BpmnLayouter): simplify manhattan layout logic 2018-08-22 14:43:16 +02:00
Nico Rehwaldt 905ee6f667 fix(rules): allow labels to be dropped everywhere
Closes #849
2018-08-22 14:41:59 +02:00
Nico Rehwaldt 898a0fa9c8 fix(modeling/DropOnFlowBehavior): filter redundant connections
This prevents duplicate flows from being created, accidentially.

Closes #774
2018-07-25 11:10:51 +02:00
Nico Rehwaldt 249ea6a3ea fix(modeling): disallow inserting on incoming/outgoing connection
Closes #836
2018-07-25 11:10:51 +02:00
Philipp Fromme e637a8e57b feat(modeling/BpmnLayouter): layout Element -> Element loops
Closes #824
2018-07-13 10:29:00 +02:00
Philipp Fromme 220c0a73f3 feat(modeling/BpmnLayouter): handle boundary events
This adds proper connection layouting for sequence
flows leaving from boundary events.

If needed, such connections will be layoute with
an U-turn.

Closes #467
2018-07-13 10:16:11 +02:00
Nico Rehwaldt 4806938600 feat(modeling): create label at appropriate position
This re-introduces adaptive label positioning
on label creation as a feature.

It worked before but broke during the introduction
of optional labels.

Closes #825
2018-07-11 13:26:43 +02:00
Nico Rehwaldt cec9d08d61 fix(draw): revert to Arial as default font
This partially reverts commit 891cf4ac0c
which set `sans-serif` as the default font.

Setting it back to Arial solves SVG export and rendering issues,
especially on platforms (Windows, Mac) where the default font
metrics differ highly from Arial.

NOTE: The font can still be easily overriden if integrators wish
to do so in order to give their users a more native look and feel.

Closes #819
2018-06-28 10:21:08 +02:00
Nico Rehwaldt 75c0880341 chore(replace): retain definitions where appropriate
* simplify implementation
* retain event definitions when switching from interrupting
  to non-interrupting and vice versa

Closes #799
2018-06-28 09:03:34 +02:00
Nico Rehwaldt 300e7010c4 fix(modeling): correct DataStoreBehavior updating multiple stores 2018-06-18 09:21:18 +02:00
Philipp Fromme 5cc28d5d55 fix(modeling): apply DataStoreBehavior in collaboration only
* updating parents of datastores in the root is only
  necessary when deleting a subprocess in a collaboration

Related to camunda/camunda-modeler#823
2018-06-13 13:48:39 +02:00
Nico Rehwaldt 834ac7db77 fix(draw): adjust center-middle aligned label padding 2018-06-13 11:09:09 +02:00
Nico Rehwaldt fb5fccb331 style(modeling): use constant instead of magic string 2018-06-13 11:08:46 +02:00
Philipp Fromme 100f3fb2ee fix(label-behavior): text annotation resizing after text property change
Depends on bpmn-io/diagram-js#259

Related to camunda/camunda-modeler#631
2018-06-13 11:02:55 +02:00
Nico Rehwaldt 3c87716895 feat(viewer): emit export events
This makes the viewer emit events during SVG and XML export.

These events allow others to hook in, i.e. to trigger additional _save_
actions.

Closes #811
2018-06-12 15:44:52 +02:00
Nico Rehwaldt 6c081d854f chore(label-editing): remove businessObject name on empty text
The following two actions will now unset the
business objects name property:

* deleting external label
* entering empty text via direct editing
2018-06-11 11:39:08 +02:00
Nico Rehwaldt a7a1743df0 fix(modeling): properly cascade label deletion
Ensure we execute the following nicely:

* unset name -> remove label shape
* remove label shape -> unset name
2018-06-11 11:39:08 +02:00
Nico Rehwaldt 4ade805f3d style(modeling): use constant instead of magic string 2018-06-06 14:31:31 +02:00
Philipp Fromme 4a0f6da814 fix(label-behavior): properly check for name property change
Related to camunda/camunda-modeler#824
2018-06-06 13:35:57 +02:00
Philipp Fromme 891cf4ac0c feat(draw+modeling): support lineHeight
* take numeric line height into account when
  rendering text labels
* take line height into account when directly
  editing labels
* use default line height of 1.2 for text rendering

Closes #803
2018-05-29 11:58:15 +02:00
Nico Rehwaldt b1a4e08ddd feat(modeling): assign ID when creating bpmn:LaneSet 2018-05-28 09:55:30 +02:00
Nico Rehwaldt 4bb270f192 chore(draw): unify text rendering into service
A newly introduced TextRenderer is responsible for text
rendering and text related bounds computation.

This removes a bunch of code duplication, too.
2018-05-24 16:26:01 +02:00
Philipp Fromme 7537757357 feat(labels): labels can be deleted
Related to camunda/camunda-modeler#243
2018-05-24 16:22:51 +02:00
Nico Rehwaldt 0b66b77483 chore(draw): retrieve default colors from bpmnRenderer config
Related to #713
2018-05-24 15:03:52 +02:00
Philipp Fromme dc1f18a497 feat(bpmn-renderer): accept default fill and stroke color
Related to #797
2018-05-24 07:39:30 +02:00
Philipp Fromme 690417b389 feat(modeling): allow data store anywhere in collaboration
ensure valid BPMN 2.0 parent when

* creating/moving data store
* removing participant
* turning process into collaboration
* turning collaboration into process

Closes #483
2018-05-17 15:09:37 +02:00
Nico Rehwaldt b98dd6fe95 fix(modeling): correctly handle missing bpmndi:Label bounds
Closes #794
2018-05-17 14:57:54 +02:00
pedesen 17896df65c chore(contextPadProvider): adjust popupMenu method calls
Since breaking changes were introduced in diagram-js
popupMenu methos calls need to be adjusted

* call popupMenu#open with element, id and position as params
* call popupMenu#isEmpty with element and providerId as params
* remove popupMenu#create call
2018-05-14 15:13:29 +02:00
Nicolas Boissel-Dallier 9379abafcc fix(auto-place): fix infinite loop during auto-place
* NaN was returned when autoplacing an element after
  a boundary event, attached to its hosts corner.

Closes #788
2018-05-04 10:40:01 +02:00
Nico Rehwaldt 67b9711399 feat(import/BpmnTreeWalker): make businessObject#di prop configurable
This allows advanced use-cases such as lazy importing
elements into the diagram.
2018-04-25 21:31:43 +02:00
Philipp Fromme 12a38da9c7 feat(import): expose additional BpmnTreeWalker functionality
* expose API needed for lazy sub-process imports
* also changes #handleDeferred to NOT expect deferred
  as a parameter anymore

Related to bpmn-io/bpmn-js-signavio-compat#1
2018-04-25 21:31:02 +02:00
Nico Rehwaldt 16a7ab2879 fix(label-editing): complete on popup menu open
This improves the user flow.

Addresses camunda/camunda-modeler#770
2018-04-13 10:12:37 +02:00
Nico Rehwaldt 68f85a171d fix(rules): allow message flows between collapsed pools
Adresses camunda/camunda-modeler#782
2018-04-12 19:35:19 +02:00
pedesen fcd1e2f12c feat(snapping): add initial snapping for associations
Snap to target mid when creating associations.

Closes #782
2018-04-11 13:55:16 +02:00
Nico Rehwaldt e5a3973107 fix(replace-preview): escape element ids in CSS selectors 2018-04-10 09:34:49 +02:00
Nico Rehwaldt 365522a49c chore(context-pad): change gateway icon to GATEWAY_NONE
This is related to the recent palette change that dropped the marker
from the Gateway icon.

Related to 9edd462880
2018-04-09 14:42:51 +02:00
Nico Rehwaldt a77d44455f fix(draw): only apply fillOpacity on actual fill
This corrects some SVG to image issues.

Addresses camunda/camunda-modeler#764
2018-04-09 13:03:53 +02:00
Nico Rehwaldt e159b002cd fix(copy-paste): correctly set $parent on copied model elements
Related to camunda/camunda-modeler#625
2018-04-09 11:27:58 +02:00
Nico Rehwaldt 9be61259bd chore(project): drop 'use strict'
We use ES modules, so 'use strict' is not necessary anymore.
2018-04-03 18:09:53 +02:00
Nico Rehwaldt d3449ca87c chore(project): es6ify source code
* use ES6 import / export
* UTILS: export individual utilities
* TESTS: localize TestHelper includes

BREAKING CHANGE:

* all utilities export independent functions
* library sources got ported to ES6. You must now use
  a ES module bundler such as Browserify + babelify or
  Webpack to consume this library (or parts of it).
2018-04-03 16:32:14 +02:00
Nico Rehwaldt e4dbc422bf chore(project): migrate to tiny-svg@1.x 2018-03-28 10:49:55 +02:00
Nico Rehwaldt 9edd462880 chore(palette): change gateway icon to GATEWAY_NONE 2018-03-23 15:05:43 +01:00
Philipp Fromme bec8d06e08 chore(project): fix typos introduced 2018-03-22 12:43:36 +01:00
Nico Rehwaldt 11f5a22471 chore(project): adjust min-dash usage (2) 2018-03-22 11:59:39 +01:00
TheSharpieOne Bot 245d1d6a96 chore(project): upgrade lodash to min-dash 2018-03-22 11:59:39 +01:00
Nico Rehwaldt e8e5e2ced9 chore(project): update to min-dom@2 2018-03-22 00:54:59 +01:00
Nico Rehwaldt 5d76181490 chore(palette): make tooltips more understandable
Closes #772
2018-03-20 11:11:04 +01:00
Nico Rehwaldt b03014fc2c chore(project): update to new lint style 2018-02-27 10:08:31 +01:00
Nico Rehwaldt 19e4e19bb5 chore(project): migrate to new SECTION comments 2018-02-27 09:57:22 +01:00
Nico Rehwaldt b35aa48d14 fix(label-editing): complete on autoPlace start
Closes #764
2018-02-20 11:33:28 +01:00
Nico Rehwaldt 25dc30df06 fix(modeling/rules): make compensation activity a message flow source
Related to camunda/camunda-modeler#661
2018-02-20 11:32:52 +01:00
Nico Rehwaldt b070be5855 fix(powered-by): correctly display logo in IE/Edge 2018-02-19 09:11:23 +01:00
Philipp Fromme f5afc732fe fix(drop-on-flow): don't insert on accidentally found intersection
Related to camunda/camunda-modeler#727
2018-02-14 22:15:33 +01:00
Nico Rehwaldt c96741df03 chore(replace): minor reformat 2018-02-14 22:08:04 +01:00
Philipp Fromme ef52dff84c fix(bpmn-replace): correctly replace sub process -> call activity
* when not morphing collapsed sub process with children
  into expanded sub process children must be removed

Related to camunda/camunda-modeler#739
2018-02-14 22:07:28 +01:00
Philipp Fromme f047fefd89 fix(update-properties-handler): fix typo 2018-01-31 18:21:16 +01:00
Nico Rehwaldt cbb2f9f600 fix(modeling): correct DI updating
Don't assign <di> property to businessObject; will
be serialized as di="[Object...]" otherwise.

Closes #756
2018-01-31 12:22:31 +01:00
Nico Rehwaldt 3124f9ba96 chore(modeling): minor SetColorHandler cleanup 2018-01-31 12:16:08 +01:00
Nico Rehwaldt f1daf4841f fix(modeling): support newBounds
This fixes a bug where Modeling#updateLabel would not work on
text annotations, because these need to have labels pre-configured.

* Modeling#updateLabel now takes the (optional) newBounds
* newBounds must now explicitly be passed to trigger resize
  for text annotations
* newBounds is _only_ passed for text annotations via
  LabelEditingProvider (it was discarded before anyway)
* lib/features/label-editing did not depend on lib/features/modeling
  for historical reasons. It now uses the offical #updateLabel
  API provided by Modeling
* Localize test diagrams

Closes #753
2018-01-29 17:20:41 +01:00
Nico Rehwaldt d32da90013 chore(lint): bump eslint
...and fix lint errors
2018-01-28 20:35:04 +01:00
Nico Rehwaldt 49cc8dc7ea chore(lint): disallow trailing spaces
+ format lint rules
+ fix lint error
2018-01-24 11:41:57 +01:00
Nico Rehwaldt 729ddce821 fix(copy-paste): don't override descriptor <type> property
This is redundant anyway, as we take the type + additional
information from the to-be-copied business object.

Closes #751
2018-01-18 11:22:09 +01:00
Nico Rehwaldt 1f5c69a58b fix(modeling): create ConditionalEventDefinition with condition
This ensures we always create valid BPMN 2.0 XML when
creating conditional start and intermediate events.

Closes #747
2018-01-03 14:19:01 +01:00
Nico Rehwaldt f15407d95b chore(Viewer): inline logo as SVG
Make logo retina friendly and save 30 bytes.

Closes #119
2018-01-02 13:46:15 +01:00
Nico Rehwaldt 562674e74b chore(project): bump diagram-js dependency
Fixes text sometimes being selected during dragging.

* makes a ContextPad hack obsolete, too.
2017-12-22 15:49:00 +01:00
Nico Rehwaldt 367399d509 feat(rules): support attach from context-menu
* take target attach and parent hints on `connection.create`
  rule into account to implement create from context-menu

Related to bpmn-io/diagram-js#242

Closes #742
2017-12-22 10:32:54 +01:00
Nico Rehwaldt 22d2b97bbe feat(auto-place): handle boundary events
Add basic auto-placement of boundary events:

* handle top aligned events
* handle bottom aligned events
* take boundary events into account when placing
  host elements and vice versa

Related to #563
2017-12-22 10:32:54 +01:00
Nico Rehwaldt 718836f53e chore(auto-place): improve TextAnnotation and DataElement locations
Related to #563
2017-12-22 10:32:54 +01:00
Nico Rehwaldt a845560425 chore(auto-place): handle multiple source <-> target connections
Related to #563
2017-12-22 10:32:54 +01:00
Nico Rehwaldt 2e4cd7e0a9 chore(auto-place): factor out deconflict position into method 2017-12-22 10:32:54 +01:00
Nico Rehwaldt ae96f3714d feat(modeling): add auto placement from context menu
Elements will automatically be created at appropriate
positions when context menu create entries are being
clicked (rather than dragged).

This marks a major step forward for mobile modeling,
too as dragging, especially dragging out from very small
controls is very cumbersome to do.

Things we take into account:

* for bpmn:FlowNodes, we try to compute the current
  distance between elements on the flow based on
  connections going in and out of the flow nodes
  source element
* for bpmn:TextAnnotation we assume placement of the
  element top right of the source shape
* for bpmn:DataObject and friends we assume a
  placement bottom right of the source shape
* for all elements, we try not to place elements on
  top of each other; i.e. new elements will be pushed
  up or down accordingly, if an element at a chosen
  position does already exist

Integration into other services:

* context pad provider works with autoPlace, if
  available and defaults to drag start without
* auto placed elements are selected and direct editing
  may conditionally be activated based on element type
  (LabelEditingProvider knows the rules)

Users can out out of autoPlace by specifying the configuration
property `config.contextPad.autoPlace = false`.

Closes #563

BREAKING CHANGE:

* This breaks the default interaction from the context
  pad; if you rely on clicking to start the drag
  you can opt out of autoPlace:

  ```
  new BpmnJS({ contextPad: { autoPlace: false } });
  ```
2017-12-22 10:30:44 +01:00
Nico Rehwaldt 6b5277b936 chore(draw): render connections without source
This allows us to renders temporary connections,
i.e. during create / connect.
2017-12-22 10:30:44 +01:00
Nico Rehwaldt c220bfb612 fix(draw): no opacity for boundary events
Ensure boundary events have no opacity.

Fixed regression introduced with #727
2017-12-15 14:35:51 +01:00
Nico Rehwaldt 1e6186e3ce feat(draw): render sequence flows behind tasks
* ordering provider ensures sequence flows appear
  behind tasks
* importer makes sure we render elements in the order
  lanes > sequence flows > other flow elements
* consistent minimal opacity ensures elements in
  front of tasks don't look _connected_

Closes #727
2017-12-14 11:56:00 +01:00
Nico Rehwaldt 1333479815 fix(modeling/behavior): round label move adjustment
Ensure we don't return floating point numbers for conection label
adjustments calculated on connection changes.
2017-12-13 14:21:19 +01:00
Nico Rehwaldt 4a3c0378b9 fix(label-editing): fix isTouch not being processed
Actually use event.isTouch to check label editing activation on
create.end.

This makes 7e928ec709 work.
2017-12-13 13:30:51 +01:00
Nico Rehwaldt 058cfbb579 chore(label-editing): use isAny helper 2017-12-13 13:30:51 +01:00
Nico Rehwaldt 5761e01ffe feat(modeling): adjust label location based on free space
Reacts on connection create, layout, reconnect and waypoint
update to find a suitable place for the label and reposition it.

Closes #738
2017-12-11 15:40:40 +01:00
Nico Rehwaldt a830c1e1e0 chore(snapping): remove dead code
* we don't support moving of lanes;
  the removed code never made it into production.
2017-12-11 15:40:40 +01:00
Nico Rehwaldt ce361dabd7 fix(modeling/DropOnFlowBehavior): ensure label is created before executing 2017-12-11 15:40:40 +01:00
Nico Rehwaldt cd24b27768 fix(copy-paste): ignore data associations during cloning
* use bpmnFactory for cloning to ensure all relevant
  elements have actual IDs
* don't copy dataAssociations, as they are visual elements
  that will be created during element re-connection

NOTE: This fixes data input association not properly being
wired during target replace, too.

Closes #694, #693
2017-12-11 15:14:31 +01:00
felixlinker 36a12396fd chore(renderer): extract BpmnRenderer utilities into util
Closes #731
2017-12-10 19:10:12 +01:00
Nico Rehwaldt e9eb9e374a fix(snapping): correct bendpoint snapping on shape move
Don't blindly snap first waypoint; instead, snap only bendpoints
that are manhattan layout aligned with other bendpoints (excluding
start and end).
2017-12-10 13:48:46 +01:00
Nico Rehwaldt f05ad02198 feat(layout): filter redundant connection waypoints 2017-12-10 12:29:54 +01:00
Nico Rehwaldt 7ffb865023 chore(project): consistent async error handling
Async utilities properly propagate _all_ errors to the
specified _done_ callback. Failing in _done_ does not
re-invoke it.

Adjustments made in

* Viewer#importXML
* Viewer#saveSVG
* Importer#importBpmnDiagram

Tests cleaned up to remove un-necessary `if (err) { ...` snippets.
2017-12-09 22:31:15 +01:00
Nico Rehwaldt 7e928ec709 fix(label-editing): use new isTouch detection for conditional activation
Chrome and other modern desktop browsers
ship with touch features out of the box.

Because of that, it is not possible to use
the check

```
'ontouchstart' in document.documentElement
```
2017-12-08 19:32:13 +01:00
Nico Rehwaldt 2b37cebeb6 chore(context-pad): remove unused argument 2017-12-08 11:40:55 +01:00
Nico Rehwaldt 50da47e1e1 fix(Viewer): trigger resized on attach
Ensure components get notified on `canvas.resized`, whenever
the Viewer instance gets attached.
2017-12-07 11:59:25 +01:00
Nico Rehwaldt 029c3d76aa chore(context-pad): minor connect / remove tweek
* remove does not activate on dragstart
* connect does not trigger default drag behavior
2017-12-06 23:30:43 +01:00
Nico Rehwaldt e0104e3589 chore(Viewer): handle import error outside try/catch 2017-11-28 13:24:36 +01:00
Nico Rehwaldt 2ef82970fd chore(Viewer): re-expose loaded definitions
The previous release kinda removed access to the currently
loaded definitions.

This restores access by exposing it by `Viewer#getDefinitions()`.
2017-11-23 09:49:54 +01:00
Nico Rehwaldt 642d7b88af chore(Viewer+Modeler): consistently name private instance variables
BREAKING CHANGE:

* definitions, container and moddle have been prefixed with
  an underscore (_) to denote they are private use.
2017-11-20 15:28:29 +01:00
Nico Rehwaldt ce45e9081b chore(project): bump bpmn-moddle dep
This improves the import and export of BPMN 2.0 XML documents

+ improves di prefix collision handling
+ proper deconflicting of prefixes during export
+ validate and detect non-BPMN root elements
+ replace underlying XML parser for higher speed and smaller
  bundle size
+ pass parse warnings with errors

NOTE:

* some error messages on broken XML may have changed
  due to changes in the underlying XML parser
2017-11-15 19:55:34 +01:00
felixlinker 0cb46183eb chore(draw/BpmnRenderer): exposed _drawPath helper
This allows extensions to reuse the internal drawPath utility.

Cf. #722 for context.
2017-11-13 09:56:02 +01:00
Philipp Fromme 28871bcdaf chore(draw/BpmnRenderer): make instance of ids global
Closes #716
2017-10-04 11:17:43 +02:00
Nico Rehwaldt 4c01a5dab1 fix(Viewer): correctly export <defs> node on IE
Closes #710
2017-09-29 11:42:34 +02:00
Philipp Fromme 9033094473 fix(renderer): prevent duplicate marker IDs
* when having more than one instance of bpmn-js on a page marker IDs got duplicated
2017-09-29 11:08:37 +02:00
pedesen 58207e7db2 feat(DropOnFlowBehavior): drop existing elements on flows
Closes #695
2017-07-27 15:15:08 +02:00