mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Fix the user list of nested config node
This commit is contained in:
parent
7a3741165b
commit
7785ce0dc0
@ -707,12 +707,15 @@ RED.nodes = (function() {
|
|||||||
}
|
}
|
||||||
n["_"] = RED._;
|
n["_"] = RED._;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Both node and config node can use a config node
|
||||||
|
updateConfigNodeUsers(newNode, { action: "add" });
|
||||||
|
|
||||||
if (n._def.category == "config") {
|
if (n._def.category == "config") {
|
||||||
configNodes[n.id] = newNode;
|
configNodes[n.id] = newNode;
|
||||||
} else {
|
} else {
|
||||||
if (n.wires && (n.wires.length > n.outputs)) { n.outputs = n.wires.length; }
|
if (n.wires && (n.wires.length > n.outputs)) { n.outputs = n.wires.length; }
|
||||||
n.dirty = true;
|
n.dirty = true;
|
||||||
updateConfigNodeUsers(newNode, { action: "add" });
|
|
||||||
if (n._def.category == "subflows" && typeof n.i === "undefined") {
|
if (n._def.category == "subflows" && typeof n.i === "undefined") {
|
||||||
var nextId = 0;
|
var nextId = 0;
|
||||||
RED.nodes.eachNode(function(node) {
|
RED.nodes.eachNode(function(node) {
|
||||||
@ -774,9 +777,11 @@ RED.nodes = (function() {
|
|||||||
var removedLinks = [];
|
var removedLinks = [];
|
||||||
var removedNodes = [];
|
var removedNodes = [];
|
||||||
var node;
|
var node;
|
||||||
|
|
||||||
if (id in configNodes) {
|
if (id in configNodes) {
|
||||||
node = configNodes[id];
|
node = configNodes[id];
|
||||||
delete configNodes[id];
|
delete configNodes[id];
|
||||||
|
updateConfigNodeUsers(node, { action: "remove" });
|
||||||
RED.events.emit('nodes:remove',node);
|
RED.events.emit('nodes:remove',node);
|
||||||
RED.workspaces.refresh();
|
RED.workspaces.refresh();
|
||||||
} else if (allNodes.hasNode(id)) {
|
} else if (allNodes.hasNode(id)) {
|
||||||
@ -786,6 +791,8 @@ RED.nodes = (function() {
|
|||||||
removedLinks = links.filter(function(l) { return (l.source === node) || (l.target === node); });
|
removedLinks = links.filter(function(l) { return (l.source === node) || (l.target === node); });
|
||||||
removedLinks.forEach(removeLink);
|
removedLinks.forEach(removeLink);
|
||||||
updateConfigNodeUsers(node, { action: "remove" });
|
updateConfigNodeUsers(node, { action: "remove" });
|
||||||
|
|
||||||
|
// TODO: Legacy code for exclusive config node
|
||||||
var updatedConfigNode = false;
|
var updatedConfigNode = false;
|
||||||
for (var d in node._def.defaults) {
|
for (var d in node._def.defaults) {
|
||||||
if (node._def.defaults.hasOwnProperty(d)) {
|
if (node._def.defaults.hasOwnProperty(d)) {
|
||||||
@ -2187,6 +2194,21 @@ RED.nodes = (function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Config node can use another config node, must ensure that this other
|
||||||
|
// config node is added before to exists when updating the user list
|
||||||
|
const configNodeFilter = function (node) {
|
||||||
|
let count = 0;
|
||||||
|
if (node._def?.defaults) {
|
||||||
|
for (const def of Object.values(node._def.defaults)) {
|
||||||
|
if (def.type) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
};
|
||||||
|
new_nodes.sort((a, b) => configNodeFilter(a) - configNodeFilter(b));
|
||||||
|
|
||||||
// Find regular flow nodes and subflow instances
|
// Find regular flow nodes and subflow instances
|
||||||
for (i=0;i<newNodes.length;i++) {
|
for (i=0;i<newNodes.length;i++) {
|
||||||
n = newNodes[i];
|
n = newNodes[i];
|
||||||
@ -2724,6 +2746,7 @@ RED.nodes = (function() {
|
|||||||
var property = node._def.defaults[d];
|
var property = node._def.defaults[d];
|
||||||
if (property.type) {
|
if (property.type) {
|
||||||
var type = registry.getNodeType(property.type);
|
var type = registry.getNodeType(property.type);
|
||||||
|
// Need to ensure the type is a config node to not treat links nodes
|
||||||
if (type && type.category == "config") {
|
if (type && type.category == "config") {
|
||||||
var configNode = configNodes[node[d]];
|
var configNode = configNodes[node[d]];
|
||||||
if (configNode) {
|
if (configNode) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user