1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Replace Unknown nodes with their real versions when node loaded

This commit is contained in:
Nick O'Leary 2017-07-08 17:29:41 +01:00
parent f9769a73fe
commit ba6209ba54
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 45 additions and 2 deletions

View File

@ -253,13 +253,12 @@
RED.deploy.init(RED.settings.theme("deployButton",null)); RED.deploy.init(RED.settings.theme("deployButton",null));
RED.actions.add("core:show-about", showAbout); RED.actions.add("core:show-about", showAbout);
RED.nodes.init();
RED.comms.connect(); RED.comms.connect();
$("#main-container").show(); $("#main-container").show();
$(".header-toolbar").show(); $(".header-toolbar").show();
loadNodeList(); loadNodeList();
} }

View File

@ -1217,6 +1217,50 @@ RED.nodes = (function() {
} }
return { return {
init: function() {
RED.events.on("registry:node-type-added",function(type) {
var def = registry.getNodeType(type);
var replaced = false;
var replaceNodes = [];
RED.nodes.eachNode(function(n) {
if (n.type === "unknown" && n.name === type) {
replaceNodes.push(n);
}
});
RED.nodes.eachConfig(function(n) {
if (n.type === "unknown" && n.name === type) {
replaceNodes.push(n);
}
});
if (replaceNodes.length > 0) {
var reimportList = [];
replaceNodes.forEach(function(n) {
if (configNodes.hasOwnProperty(n.id)) {
delete configNodes[n.id];
} else {
nodes.splice(nodes.indexOf(n),1);
}
reimportList.push(convertNode(n));
});
RED.view.redraw(true);
var result = importNodes(reimportList,false);
var newNodeMap = {};
result[0].forEach(function(n) {
newNodeMap[n.id] = n;
});
RED.nodes.eachLink(function(l) {
if (newNodeMap.hasOwnProperty(l.source.id)) {
l.source = newNodeMap[l.source.id];
}
if (newNodeMap.hasOwnProperty(l.target.id)) {
l.target = newNodeMap[l.target.id];
}
});
RED.view.redraw(true);
}
});
},
registry:registry, registry:registry,
setNodeList: registry.setNodeList, setNodeList: registry.setNodeList,