diff --git a/packages/node_modules/@node-red/editor-client/src/js/history.js b/packages/node_modules/@node-red/editor-client/src/js/history.js index a86e9b9c7..ce7f0e293 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/history.js +++ b/packages/node_modules/@node-red/editor-client/src/js/history.js @@ -278,6 +278,13 @@ RED.history = (function() { RED.nodes.addLink(ev.removedLinks[i]); } } + if (ev.addToGroup) { + RED.group.removeFromGroup(ev.addToGroup,ev.nodes.map(function(n) { return n.n })); + inverseEv.removeFromGroup = ev.addToGroup; + } else if (ev.removeFromGroup) { + RED.group.addToGroup(ev.removeFromGroup,ev.nodes.map(function(n) { return n.n })); + inverseEv.addToGroup = ev.removeFromGroup; + } } else if (ev.t == "edit") { inverseEv = { t: "edit", @@ -469,7 +476,52 @@ RED.history = (function() { RED.workspaces.order(ev.order); } } else if (ev.t == "createGroup") { - + inverseEv = { + t: "ungroup", + dirty: RED.nodes.dirty(), + groups: [] + } + if (ev.groups) { + for (i=0;i 0) { + historyEvent.events.push(ungroupHistoryEvent); + } // Finally, create the new group var group = createGroup(nodes); if (group) { RED.view.select({nodes:[group]}) } - + historyEvent.events.push({ + t:"createGroup", + groups: [ group ], + dirty: RED.nodes.dirty() + }); + RED.history.push(historyEvent); + RED.nodes.dirty(true); } } @@ -153,37 +193,24 @@ RED.group = (function() { if (selection.nodes) { var nodes = []; var n; - var parentGroup; - // First pass, check they are all in the same parent - // TODO: DRY mergeSelection,removeSelection,... - for (var i=0; i 0) { + var addedToGroup = null; if (activeHoverGroup) { for (var j=0;j 0 || removedSubflowOutputs.length > 0 || removedSubflowInputs.length > 0 || removedSubflowStatus) { + if (removedNodes.length > 0 || removedSubflowOutputs.length > 0 || removedSubflowInputs.length > 0 || removedSubflowStatus || removedGroups.length > 0) { RED.nodes.dirty(true); } } @@ -1964,6 +1983,7 @@ if (DEBUG_EVENTS) { console.warn("clearSelection", mouse_mode); } t:"delete", nodes:removedNodes, links:removedLinks, + groups: removedGroups, subflowOutputs:removedSubflowOutputs, subflowInputs:removedSubflowInputs, subflow: { @@ -2005,7 +2025,9 @@ if (DEBUG_EVENTS) { console.warn("clearSelection", mouse_mode); } } var groups = activeGroups.filter(function(g) { return g.selected && !g.active }); while (groups.length > 0) { + console.log("GROUPS",groups.slice()) var group = groups.shift(); + console.log("GROUP",group); nodes.push(group); groups = groups.concat(group.nodes.filter(function(n) { return n.type === "group" })) } @@ -2033,7 +2055,7 @@ if (DEBUG_EVENTS) { console.warn("clearSelection", mouse_mode); } } } clipboard = JSON.stringify(nns); - console.log(nns); +console.warn(nns); RED.notify(RED._("clipboard.nodeCopied",{count:nns.length}),{id:"clipboard"}); } } @@ -4486,6 +4508,7 @@ if (DEBUG_EVENTS) { console.warn("nodeMouseDown", mouse_mode,d); } } return result; }, + getGroupAtPoint: getGroupAt, reveal: function(id) { if (RED.nodes.workspace(id) || RED.nodes.subflow(id)) { RED.workspaces.show(id);