Skip to content

v13.43.0

Choose a tag to compare

@tomlyn tomlyn released this 03 Apr 23:26
1e1735c

Minor Release v13.43.0

Common Canvas

#3018 Add callback for connection drag start in ElyraCanvas

In this release, when the user begins to drag from an output port to create a new link the editActionHandler callback is called with a new action so the editType property of the data parameter is set to "beginNewLink".

  data.editType === "beginNewLink"

This gives the application the opportunity to prepare/style any target nodes prior to the link being dragged towards them. Obviously, unlike other calls to editActionHandler, this is a real time operation so the callback must do its thing very rapidly to maintain a good user experience.

#3020 arrangeHorizontally does not take port order into account

For now this is an experimental feature and it may change slightly based on feedback

Currently, Common Canvas provides a layout function:

canvasController.autoLayout(layoutDirection, pipelineId)

where layoutDirection can be "horizontal" or "vertical". This function leverages the Dagre layout library. This has some drawbacks:

  • Does not recognize port positions when considering node placement
  • Does not arrange comments appropriately for the flow

In this release, Elyra Canvas now additionally supports the Eclipse Layout Kernel (ELK) layout library. The application can switch to ELK using the new enableLayoutLibrary config property which has possible values of "Dagre" (the default) or "ELK". This will take port positions into account when performing the layout when the enableLinkMethod config property is set to "Ports". ELK is also able to position comments in an appropriate place outside of the flow of nodes.

ELK has a huge variety of layout algorithms and accompanying options. By default, Common Canvas uses the "layered" algorithm with the "INTERACTIVE" node placement strategy. See this code for more default settings.

If an application team wants to experiment, these options can be overridden by providing the following in the canvasLayout object in the config:

    const config = {
        enableCanvasLayout: {
            elkLayout: {
                root: {
                    "elk.layered.nodePlacement.strategy": "SIMPLE",
                },
                node: {}
            }
        }
   };
  • root properties will overlay, or add to, the main ELK properties specified by Common Canvas
  • node can also be specified to override, or add to, the ELK properties for nodes.

Finally, the ELK js bundle is quite big so Common Canvas will only load it (asynchronously) on the first call to canvasController.autoLayout() when enableLayoutLibrary is set to "ELK".

Issues Resolved

Full Changelog: v13.42.0...v13.43.0