Commit Graph

761 Commits

Author SHA1 Message Date
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