mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Get group order right in history events to ensure proper handling
This commit is contained in:
parent
73448a6039
commit
ef7c9b5c2a
@ -85,7 +85,7 @@ RED.history = (function() {
|
|||||||
}
|
}
|
||||||
if (ev.groups) {
|
if (ev.groups) {
|
||||||
inverseEv.groups = [];
|
inverseEv.groups = [];
|
||||||
for (i=0;i<ev.groups.length;i++) {
|
for (i = ev.groups.length - 1;i>=0;i--) {
|
||||||
group = ev.groups[i];
|
group = ev.groups[i];
|
||||||
modifiedTabs[group.z] = true;
|
modifiedTabs[group.z] = true;
|
||||||
// The order of groups is important
|
// The order of groups is important
|
||||||
@ -214,7 +214,7 @@ RED.history = (function() {
|
|||||||
inverseEv.groups = [];
|
inverseEv.groups = [];
|
||||||
var groupsToAdd = {};
|
var groupsToAdd = {};
|
||||||
ev.groups.forEach(function(g) { groupsToAdd[g.id] = g; });
|
ev.groups.forEach(function(g) { groupsToAdd[g.id] = g; });
|
||||||
for (i=0;i<ev.groups.length;i++) {
|
for (i = ev.groups.length - 1;i>=0;i--) {
|
||||||
RED.nodes.addGroup(ev.groups[i])
|
RED.nodes.addGroup(ev.groups[i])
|
||||||
modifiedTabs[ev.groups[i].z] = true;
|
modifiedTabs[ev.groups[i].z] = true;
|
||||||
// The order of groups is important
|
// The order of groups is important
|
||||||
|
@ -1427,6 +1427,9 @@ RED.nodes = (function() {
|
|||||||
delete n.status.wires;
|
delete n.status.wires;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Order the groups to ensure they are outer-most to inner-most
|
||||||
|
var groupDepthMap = {};
|
||||||
|
console.log(new_groups);
|
||||||
for (i=0;i<new_groups.length;i++) {
|
for (i=0;i<new_groups.length;i++) {
|
||||||
n = new_groups[i];
|
n = new_groups[i];
|
||||||
if (n.g && node_map[n.g]) {
|
if (n.g && node_map[n.g]) {
|
||||||
@ -1437,8 +1440,33 @@ RED.nodes = (function() {
|
|||||||
n.nodes = n.nodes.map(function(id) {
|
n.nodes = n.nodes.map(function(id) {
|
||||||
return node_map[id];
|
return node_map[id];
|
||||||
})
|
})
|
||||||
|
n.nodes = n.nodes.filter(function(v) { return !!v});
|
||||||
|
if (!n.g) {
|
||||||
|
groupDepthMap[n.id] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var changedDepth;
|
||||||
|
do {
|
||||||
|
changedDepth = false;
|
||||||
|
for (i=0;i<new_groups.length;i++) {
|
||||||
|
n = new_groups[i];
|
||||||
|
if (n.g) {
|
||||||
|
if (groupDepthMap[n.id] !== groupDepthMap[n.g] + 1) {
|
||||||
|
groupDepthMap[n.id] = groupDepthMap[n.g] + 1;
|
||||||
|
changedDepth = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while(changedDepth);
|
||||||
|
|
||||||
|
new_groups.sort(function(A,B) {
|
||||||
|
return groupDepthMap[A.id] - groupDepthMap[B.id];
|
||||||
|
});
|
||||||
|
for (i=0;i<new_groups.length;i++) {
|
||||||
|
n = new_groups[i];
|
||||||
addGroup(n);
|
addGroup(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now the nodes have been fully updated, add them.
|
// Now the nodes have been fully updated, add them.
|
||||||
for (i=0;i<new_nodes.length;i++) {
|
for (i=0;i<new_nodes.length;i++) {
|
||||||
var node = new_nodes[i];
|
var node = new_nodes[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user