I've just merged the initial PR to add the ability to group nodes in the editor.
This is similar in concept to how you can group objects in applications like PowerPoint or Keynote. Once grouped, the nodes can be moved as one around the workspace. The group can also be given some basic styling options for its border and background as well as whether to display a label for the group.
The primary use case is to help visually organise your flows. We had some feedback that users wanted to be able to take screenshots of their flows and didn't want to have to spend time annotating them after-the-fact to label the different parts. The Comment node goes someway to adding annotations, but it lacks the ability to clearly show what nodes it is associated with. We hope the new grouping feature will address that.
At the moment, the groups have absolutely no affect on the runtime side of things. But we will be adding the ability to define additional meta-data against each group. That meta-data could be used in the runtime to influence how things are run - but the precise detail of that is for another day.
It has taken me quite a while to get this feature into a good working state At this point I've crossed off all of the major todo items and squashed all the bugs that needed to squashing before I could share it more widely.
This is now in the dev branch on GitHub if you're following along at home and want to have a play. It will eventually be released as part of 1.1.0 - although I don't have a timescale to share on that yet.
Quick Guide
Select some nodes. Hit Ctrl-Shift-G (Or select group->group selection menu item) to group them
Click on a group border or a node in the group to select it.
Double-click on a node in a group to go 'into' the group - its border changes to a dashed line. At this point you can then edit nodes in the group and move them around.
Ctrl-Shift-U ungroups (Or select group->ungroup selection menu option)
You can merge groups into one - group->merge selection menu option
You can remove an item from a group - group->remove from group menu option
Double-click on the group border to edit its properties.
You can quickly copy the style of a group (fill/stroke/label) by selecting it in the workspace and then hitting Ctrl-Shift-C. Then select the group(s) to apply the style to and hit Ctrl-Shift-V. (There's a bit more work to do around setting default styles and making them reusable)
You can drag a node straight into a group - the group border turns dashed whilst you are dragging over it. NB: you can only drag one node in at a time currently...a bit more work needed here.
This looks awesome (various ideas pop into mind), can I run NR on the same machine with a different port using the dev branch or would that conflict with the running version ? Trying to get a docker container running, but I guess i need to build an image for the dev version ?
I have it running.
I freaking love it. Really nice to drag and drop the groups around without having to select the nodes (and forgetting a few, sounds familiar?) Some idea/suggestions/explorations;
Double click anywhere in the within the group to get into the "node edit" mode
Stroke width: 1px (or custom by user?)
Border radius 5px/8px (or custom by user?)
Label: Font size same as node-status ? (10px, or custom by user/limited)
Label: perhaps a little padding for breathing ? (not sure)
The first item would be the most important for me, currently it is somewhat counter-intuitive. The node-connections can still be selected within the group, while the nodes cannot. The group should behave like a single object (?). This could make drag/drop also more direct/intuitive (as it is currently done via the border of the group)
I haven't had a chance to try it, so can I ask:
Can groups be copied (cut/paste) to make duplicates?
Must a group be entirely on a single tab?
Can comment nodes and multiple (unconnected) flows be included in a group?
How is the group represented in the flows.json file, and will the file be backward compatible with older versions of NR?
cut/paste - yes
single tab - yes they must be on a single tab - it's a drawing feature
odd nodes - yes any nodes can be inside the group
representation - it is represented as a new type of node - so old versions of Node-RED will just have a missing / unknown node type. But Nick has a cunning plan to help mitigate this. (under test)
There are no plans for that. This isn't a subflow alternative. A group doesn't have any restrictions on the number of links "entering" it and if collapse, would potentially require multiple inputs in its collapsed form.... which we dont do.
This is something I have been hoping for, for ever ! , I know you have said "It will eventually be released as part of 1.1.0 - although I don't have a timescale to share on that yet." and obviously I respect that, I don't want to mess with dev branches, so I am hoping you will release 1.1.0 or just this update soon whilst I am on corona furlough to give me something useful to do, pls.
There is more than just that (probably) going into 1.1 - so hopefully we will be out of lockdown before then. If not things will be worse than we thought.