Flag a node as removed when it is disabled

This commit is contained in:
Nick O'Leary 2020-06-08 20:59:00 +01:00
parent d28b8b5e8d
commit fe4ef354ac
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 27 additions and 1 deletions

View File

@ -263,7 +263,7 @@ module.exports = {
}
}
}
// This node has been removed
// This node has been removed or its flow disabled
if (removed[node.z] || !newConfig.allNodes.hasOwnProperty(id)) {
removed[id] = node;
// Mark the container as changed
@ -278,6 +278,11 @@ module.exports = {
if (added[node.z]) {
added[id] = node;
} else {
var currentState = node.d;
var newState = newConfig.allNodes[id].d;
if (!currentState && newState) {
removed[id] = node;
}
// This node has a material configuration change
if (diffNodes(node,newConfig.allNodes[id]) || newConfig.allNodes[id].credentials) {
changed[id] = newConfig.allNodes[id];

View File

@ -777,5 +777,26 @@ describe('flows/util', function() {
diffResult.removed.sort().should.eql(["1","2"]);
diffResult.rewired.should.have.length(0);
});
it('marks a node as removed when its state changes enabled to disabled', function() {
var config = [{id:"1",type:"tab",disabled:false,label:"fred"},{id:"2",type:"test",bar:"b",wires:[["1"]],z:"1"},{id:"3",type:"test"}];
var newConfig = clone(config);
newConfig[1].d = true;
var originalConfig = flowUtil.parseConfig(config);
var changedConfig = flowUtil.parseConfig(newConfig);
originalConfig.missingTypes.should.have.length(0);
var diffResult = flowUtil.diffConfigs(originalConfig,changedConfig);
diffResult.added.should.have.length(0);
diffResult.changed.should.have.length(2);
diffResult.changed.sort().should.eql(["1","2"]);
diffResult.removed.should.have.length(1);
diffResult.removed.sort().should.eql(["2"]);
diffResult.rewired.should.have.length(0);
});
});
});