mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Ensure groups are removed when deleting subflows
This commit is contained in:
@@ -454,8 +454,10 @@ RED.subflow = (function() {
|
||||
}
|
||||
|
||||
function removeSubflow(id) {
|
||||
// TODO: A lot of this logic is common with RED.nodes.removeWorkspace
|
||||
var removedNodes = [];
|
||||
var removedLinks = [];
|
||||
var removedGroups = [];
|
||||
|
||||
var activeSubflow = RED.nodes.subflow(id);
|
||||
|
||||
@@ -472,7 +474,9 @@ RED.subflow = (function() {
|
||||
removedNodes.push(n);
|
||||
}
|
||||
});
|
||||
|
||||
RED.nodes.groups(id).forEach(function(n) {
|
||||
removedGroups.push(n);
|
||||
})
|
||||
var removedConfigNodes = [];
|
||||
for (var i=0;i<removedNodes.length;i++) {
|
||||
var removedEntities = RED.nodes.remove(removedNodes[i].id);
|
||||
@@ -482,6 +486,18 @@ RED.subflow = (function() {
|
||||
// TODO: this whole delete logic should be in RED.nodes.removeSubflow..
|
||||
removedNodes = removedNodes.concat(removedConfigNodes);
|
||||
|
||||
removedGroups = RED.nodes.groups(id).filter(function(g) { return !g.g; });
|
||||
for (i=0;i<removedGroups.length;i++) {
|
||||
removedGroups[i].nodes.forEach(function(n) {
|
||||
if (n.type === "group") {
|
||||
removedGroups.push(n);
|
||||
}
|
||||
});
|
||||
}
|
||||
// Now remove them in the reverse order
|
||||
for (i=removedGroups.length-1; i>=0; i--) {
|
||||
RED.nodes.removeGroup(removedGroups[i]);
|
||||
}
|
||||
RED.nodes.removeSubflow(activeSubflow);
|
||||
RED.workspaces.remove(activeSubflow);
|
||||
RED.nodes.dirty(true);
|
||||
@@ -490,6 +506,7 @@ RED.subflow = (function() {
|
||||
return {
|
||||
nodes:removedNodes,
|
||||
links:removedLinks,
|
||||
groups: removedGroups,
|
||||
subflows: [activeSubflow]
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user