Commit Graph

630 Commits

Author SHA1 Message Date
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 56a644177d chore(project): build using ES6 ready deps
* diagram-js@1
* updated utils
2018-04-03 16:30:05 +02:00
Nico Rehwaldt 7a3b92c094 chore(project): migrate to diagram-js@0.31 2018-04-02 11:14:06 +02:00
Nico Rehwaldt 0f04b76ad2 test(Modeler): minor test style improvements 2018-04-02 09:24:21 +02:00
Nico Rehwaldt 44a08ae6a3 test(Modeler): bind keyboard 2018-04-02 09:12:44 +02:00
Nico Rehwaldt e4dbc422bf chore(project): migrate to tiny-svg@1.x 2018-03-28 10:49:55 +02: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 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 8c92800bd2 test(Viewer): bump SVG export timeout 2018-02-14 22:22:30 +01:00
Nico Rehwaldt de63fd49a3 style(tests): reformat DropOnFlowBehaviorSpec 2018-02-14 22:20:11 +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
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
Nico Rehwaldt 79e2b8e6b9 chore(project): use shared linter config 2018-02-14 16:42:52 +01:00
Nico Rehwaldt da2a8be7e5 chore(project): es5ify scripts
...until we decide to switch to ES2015+
2018-02-02 11:24:00 +01:00
Nico Rehwaldt 5b2b053230 chore(distro): add integration test
Add a test that ensures the distribution works.

Related to #725
2018-02-02 11:24:00 +01:00
Nico Rehwaldt da4f321284 chore(project): use external bpmn-font
This is a breaking change for users that may rely on `assets/bpmn-font`
being present in the library.

BREAKING CHANGE:

* use `bpmn-font` package, specifically `bpmn-font/dist` if you need the
font previously contained in the assets directory.
2018-02-02 11:24:00 +01:00
Nico Rehwaldt e3bf356461 chore(project): drop grunt + bundle assets to dist directory
* replace grunt with npm scripts
* copy static assets to dist directory
* build and copy library variants to dist directory

Related to #725
2018-02-02 11:24:00 +01:00
Nico Rehwaldt ce791b8e17 test(Modeler): verify color support
Related to #756
2018-01-31 12:22:31 +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 953574eefb style(tests): reformat UpdatePropertiesSpec
* line width = 80
2018-01-31 12:06:17 +01:00
Nico Rehwaldt 38bff969ac chore(tests): reformat color tests 2018-01-30 13:15:41 +01:00
Nico Rehwaldt f637d63da9 fix(tests): resolve lib/* locally in helper util
* ensures reusing test/helper does not break
2018-01-29 20:23:14 +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 37a06a378d chore(tests): use absolute lib requires 2018-01-24 11:41:21 +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 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 11354e951c chore(project): migrate to new attach related Modeling APIs
Related to bpmn-io/diagram-js#242

BREAKING CHANGE:

* as documented in bpmn-io/diagram-js#242 a few modeling APIs changed;
  users of these APIs must adapt accordingly.
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 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 0dd5c9cb6c chore(tests): rename suite 2017-12-22 10:30:44 +01:00
Nico Rehwaldt cff0c4ef91 chore(tests): remove unused utility 2017-12-20 10:37:38 +01:00
Nico Rehwaldt a64cf9b7a1 chore(tests): rename description 2017-12-20 10:37:27 +01:00
Nico Rehwaldt 2218b84af6 test(modeling): verify connection move behavior
Closes to #511
2017-12-14 23:42:02 +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 a708a1cd4e chore(tests): adapt bendpoint tests to new cropping
Related to #684
2017-12-13 14:20:40 +01:00
Nico Rehwaldt 869e484601 chore(tests): use have.waypoints helper 2017-12-13 13:25:51 +01:00
Nico Rehwaldt f24b21684d test(cropping): add stress test
Related to #684
2017-12-13 13:25:51 +01:00
Nico Rehwaldt 408dd5383a chore(tests): localize test file 2017-12-13 13:25:51 +01:00
Nico Rehwaldt 51ec9b8676 chore(test): correct test helper styles 2017-12-11 21:26:37 +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 48490197a5 chore(tests): improve test container styling 2017-12-11 15:25:10 +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
Nico Rehwaldt e7da5af0a1 chore(tests): depend on move module, where used
Tests would otherwise break in the future.

Related to bpmn-io/diagram-js#152
2017-12-10 23:04:11 +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 105f326dad chore(project): bump bpmn-moddle dependency
* unused namespace does not get serialized anymore

Closes #469
2017-12-09 22:30:56 +01:00
Nico Rehwaldt c14be5d258 chore(test/util): remove snap.svg remainders 2017-12-07 13:19:02 +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 9b2a07d958 style(test): re-format test case 2017-11-23 11:00:23 +01:00
Nico Rehwaldt a6b26b0b59 chore(test): add missing custom Chrome headless launcher 2017-11-23 10:46:29 +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
Nico Rehwaldt 9416eae126 chore(project): bump test dependency versions
* remove redundant karma-chai
2017-10-22 23:22:58 +02:00
Nico Rehwaldt 90ddaeef5e chore(tests): add Chrome headless as test browser
* include special non-sandbox launcher on Linux
* handle TEST_BROWSERS in karma config
2017-10-22 22:21:51 +02:00
Nico Rehwaldt 92aac008b8 chore(ci): use latest node for testing
This ensures we run against npm v5:

* bump wiredeps dependency version
* rebuild .wiredeps
* internalize test helpers from diagram-js
2017-10-11 15:19:36 +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
pedesen b1a544b84f fix(dropOnFlowBehavior): ignore drop point if bendpoint is inside shape
Closes #696
2017-07-27 13:41:50 +02:00
pedesen b234f17244 feat(snapping) snap on sequence flows
Closes #398
2017-07-27 13:41:45 +02:00
Philipp Fromme e797d9c142 feat(label-editing): improve text annotation editing
Related to camunda/camunda-modeler#564
2017-07-25 15:05:35 +02:00
Philipp Fromme 114da17403 fix(copy-paste): create new business object on paste
* fixes pasted elements having same business object
* removes temporary fix that prevents pasting twice

Closes #686
Closes camunda/camunda-modeler#561
2017-06-20 16:24:11 +02:00
Nico Rehwaldt 8015b21b15 fix(rules): allow TextAnnotation <-> Data(Store|Object) connection
Closes #687
2017-05-22 12:55:43 +02:00
Nico Rehwaldt 8e55edd80f chore(copy-paste): temporarily prevent consecutive paste
This prevents users from creating invalid
models due to IDs not properly being
generated on consecutive paste (#686).

Closes #688.
2017-05-19 13:01:57 +02:00
Nico Rehwaldt 83f55b1fb1 fix(modeling): handle label layouting edge case
Related to #669
2017-05-03 15:02:52 +02:00
Nico Rehwaldt 7d896855a9 fix(modeling): correct label line attachments not being recognized
* remove rounding where it does not matter
* work around some precision errors in logic
* adjust test cases (to higher precision)

Closes #669
2017-05-03 15:02:52 +02:00
Philipp Fromme 43a3b07ab2 fix(bpmn-rules): only connect flow nodes and artifacts through association
Closes camunda/camunda-modeler#554
2017-04-11 15:16:39 +02:00
Nico Rehwaldt 8d536f2cce style(modeling): reformat test case 2017-03-21 09:01:42 +01:00
Nico Rehwaldt 2fd46ac294 fix(modeling/layout): handle zero-length lines during adjustment
Closes #669
2017-03-21 09:01:21 +01:00
Philipp Fromme 12d700fd14 fix(drop-on-flow): disallow drop on flow label
Closes camunda/camunda-modeler#548
2017-03-10 12:47:23 +01:00
Philipp Fromme 79e8378db0 fix(label-support): fix positioning of label created on shape create
* make sure label shape is created with correct size
* make sure test varifies behaviour

Closes camunda/camunda-modeler#535
2017-03-07 15:22:43 +01:00
Nico Rehwaldt c5f48f5cd1 test(modeling): pass on Arch Linux 2017-03-02 11:53:42 +01:00
Nico Rehwaldt d1072471c4 fix(drop-on-sequence-flow): ensure correct behaviour
Closes #667
2017-03-02 11:45:34 +01:00
Philipp Fromme 81de98f786 feat(bpmn-renderer): use updated text util api
Related to bpmn-io/diagram-js#205
2017-03-02 10:55:40 +01:00
Ricardo Matias 1cb3a8eedc feat(util/model): avoid persisting empty property element containers
Closes #512
2017-02-14 15:43:58 +01:00
Ricardo Matias d8098c2feb feat(copy-paste): copy 'fill' and 'stroke' properties
Closes #640
2017-02-13 12:01:42 +01:00
Ricardo Matias 722c86beb2 feat(replace): persist colors when replacing an element
Related to #640
2017-02-13 12:01:42 +01:00
Ricardo Matias 2c51cfbe3d fix(util/model): able to clone Event Definitions extension elements
Related to camunda/camunda-modeler#516
Related to camunda/camunda-modeler#517
2017-02-10 09:47:59 +01:00
Ricardo Matias 1a4a8959fe fix(replace): make sure is respected for expanded sub processes
Closes camunda/camunda-modeler#511
2017-02-10 09:41:44 +01:00
Ricardo Matias b5c65f0b42 Revert "feat(util/model): avoid persisting empty property element containers"
This reverts commit 86c0a0aa75.
2017-02-08 15:44:29 +01:00
Ricardo Matias fdc756b442 test(util/model): able to clone 'inputOutput' property belonging to a subprocess
Closes camunda/camunda-modeler#513
2017-02-08 13:29:02 +01:00
Ricardo Matias 86c0a0aa75 feat(util/model): avoid persisting empty property element containers
Closes camunda/camunda-modeler#512
2017-02-08 09:50:12 +01:00
Ricardo Matias b37182b53b feat(util/model): make property cloning pluggable
This introduces a 'property.clone' event that allows
plugging into the cloning mechanism when cloning
nested extension elements.

Related to camunda/camunda-bpmn-moddle#35
2017-01-30 16:38:43 +01:00
Ricardo Matias 2ecb9aeae4 feat(copy-paste): clone properties when morphing to new element
Closes #648
2017-01-30 16:38:43 +01:00
Ricardo Matias 432d7f4b7c fix(replace): assign passed properties to businessObject before cloning 2017-01-30 16:23:57 +01:00