[groups] Include groups when converting selection to subflow

This commit is contained in:
Nick O'Leary 2020-03-14 00:17:16 +00:00
parent c9194c3635
commit 1bf3b3077e
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
3 changed files with 41 additions and 9 deletions

View File

@ -395,7 +395,9 @@ RED.history = (function() {
if (ev.nodes) {
inverseEv.movedNodes = [];
var z = ev.activeWorkspace;
RED.nodes.filterNodes({z:ev.subflow.subflow.id}).forEach(function(n) {
var fullNodeList = RED.nodes.filterNodes({z:ev.subflow.subflow.id});
fullNodeList = fullNodeList.concat(RED.nodes.groups(ev.subflow.subflow.id))
fullNodeList.forEach(function(n) {
n.x += ev.subflow.offsetX;
n.y += ev.subflow.offsetY;
n.dirty = true;
@ -447,6 +449,9 @@ RED.history = (function() {
if (ev.movedNodes) {
ev.movedNodes.forEach(function(nid) {
nn = RED.nodes.node(nid);
if (!nn) {
nn = RED.nodes.group(nid);
}
nn.x -= ev.subflow.offsetX;
nn.y -= ev.subflow.offsetY;
nn.dirty = true;
@ -554,6 +559,9 @@ RED.history = (function() {
list: function() {
return undoHistory;
},
listRedo: function() {
return redoHistory;
},
depth: function() {
return undoHistory.length;
},

View File

@ -305,6 +305,10 @@ RED.nodes = (function() {
}
function moveNodeToTab(node, z) {
if (node.type === "group") {
moveGroupToTab(node,z);
return;
}
if (nodeTabMap[node.z]) {
delete nodeTabMap[node.z][node.id];
}
@ -314,6 +318,13 @@ RED.nodes = (function() {
nodeTabMap[z][node.id] = node;
node.z = z;
}
function moveGroupToTab(group, z) {
var index = groupsByZ[group.z].indexOf(group);
groupsByZ[group.z].splice(index,1);
groupsByZ[z] = groupsByZ[z] || [];
groupsByZ[z].push(group);
group.z = z;
}
function removeLink(l) {
var index = links.indexOf(l);

View File

@ -567,6 +567,19 @@ RED.subflow = (function() {
return;
}
var i,n;
var nodeList = new Set();
var tmplist = selection.nodes.slice();
while(tmplist.length > 0) {
n = tmplist.shift();
if (n.type === "group") {
tmplist = tmplist.concat(n.nodes);
}
nodeList.add(n);
}
nodeList = Array.from(nodeList);
var nodes = {};
var new_links = [];
var removedLinks = [];
@ -575,13 +588,13 @@ RED.subflow = (function() {
var candidateOutputs = [];
var candidateInputNodes = {};
var boundingBox = [selection.nodes[0].x,
selection.nodes[0].y,
selection.nodes[0].x,
selection.nodes[0].y];
var boundingBox = [nodeList[0].x,
nodeList[0].y,
nodeList[0].x,
nodeList[0].y];
for (i=0;i<selection.nodes.length;i++) {
n = selection.nodes[i];
for (i=0;i<nodeList.length;i++) {
n = nodeList[i];
nodes[n.id] = {n:n,outputs:{}};
boundingBox = [
Math.min(boundingBox[0],n.x),
@ -723,8 +736,8 @@ RED.subflow = (function() {
RED.nodes.removeLink(removedLinks[i]);
}
for (i=0;i<selection.nodes.length;i++) {
n = selection.nodes[i];
for (i=0;i<nodeList.length;i++) {
n = nodeList[i];
if (/^link /.test(n.type)) {
n.links = n.links.filter(function(id) {
var isLocalLink = nodes.hasOwnProperty(id);