Pipeline connections: redesign of plugins connection ports and connection
Description
Release Notes
Revamps pipeline connections, to allow dropping a connection anywhere on the node, and allow selecting and deleting multiple connections using the Delete key.
Attachments
5
is duplicated by
Activity
Show:

Tony Bach July 27, 2017 at 1:23 AM
Fixed
Pinned fields
Click on the next to a field label to start pinning.
Created July 7, 2017 at 8:30 PM
Updated August 25, 2017 at 6:23 AM
Resolved August 14, 2017 at 5:04 PM
As a user, I want to be able to make multiple connections.
A node can be connected to multiple nodes both as output node (the connections originate from that node) and as an input node (the connections end on that node). There is no limit on how many connections can exist between any two nodes.
On my output node, I want to see:
A single output port (from which all connections will come)
An indication that the output port can be clicked and dragged
On my output node, I want to be able to:
Click and drag the output port to start a new connection
Create an unlimited number of output connections
On my input node, I want to have:
Multiple ports for connections
New ports added sequentially when new connections are added
On my input node, I want to be able to:
Create a connection by click and dragging from an output node
Create multiple connections and have the arrangement across all five ports automatically managed for me
See an indication that I can drop a connection on a node when I drag my cursor over the node
Once a node has five input connections, then any additional input connections (represented by the "arrow" on the end of a connection) will be appended to the same location ("ports") as one of the first five connections. This is because there is a cap on the number of ports (five) – but the possible number of connections does not have a bound.
On my connection, I want to see:
Clear visual separation from other connections at the input port
An indicator of which connection end is the input
As a user, I want to be able to select and delete my connections.
On my output node, I should not be able to select or delete the connection. This is because dragging from the output of a node is used to create new pipeline.
On my input node, I want to see:
A clear way to select the end of the connection
On my input node, I want to be able to:
Drag away the end of the a connection onto the studio canvas, deleting the connection
Select the end of a connection and drag it to a new node. If there are multiple connections to a single port, I want the most recently created connection selected.
On my connection, I want to see:
The connection highlighted when the connection is hovered
The connection bolded when the connection is selected
On my connection, I want to be able to:
Click and drag both the input node end of a connection to another node
Delete the connection when it is selected by pressing "delete" key
Right click and choose "Delete," Copy," and "Paste" from a pop-up menu
An exception is if that if I select the connection and drag from the middle, nothing should happen.
As a user, I want to know that I am creating valid connections.
On my output and input node, I want invalid connections I have tried to make vanish.
On my connection, I want to know there are:
Guardrails to ensure that my connections are made correctly. I will be disallowed from making a connection if it is invalid:
||Type||Allows input from||Allows output to||
|Source|Only Action|All except Source|
|Transform|All except Sink|All except Source|
|Analytics|All except Sink|All except Source|
|Sink|All except Sink|All except Source|
|Action|All|All|
|Error Handlers|All|All except Source|
I want to know that my connection will:
Ensure that the nodes after Action(s) are still valid outputs. For example, the following arrangement is invalid: Source into Action into Source.
Not allow me to connect a node's output to its own input; any input into any input; or any output into any output
Acceptance Criteria
Ability to make multiple connections
Connection selection and deletion
Validation of connections