mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add remove node api
This commit is contained in:
@@ -54,6 +54,9 @@ function init(_settings,storage) {
|
||||
|
||||
function removeNode(info) {
|
||||
var nodeInfo = registry.getNodeInfo(info);
|
||||
if (!nodeInfo) {
|
||||
throw new Error("Unrecognised type/id: "+info);
|
||||
}
|
||||
var inUse = {};
|
||||
flows.each(function(n) {
|
||||
inUse[n.type] = (inUse[n.type]||0)+1;
|
||||
@@ -66,7 +69,7 @@ function removeNode(info) {
|
||||
});
|
||||
if (nodesInUse.length > 0) {
|
||||
var msg = nodesInUse.join(", ");
|
||||
throw Error("Type in use: "+msg);
|
||||
throw new Error("Type in use: "+msg);
|
||||
}
|
||||
return registry.removeNode(nodeInfo.id);
|
||||
}
|
||||
|
@@ -61,18 +61,19 @@ var registry = (function() {
|
||||
},
|
||||
removeNode: function(id) {
|
||||
var config = nodeConfigs[id];
|
||||
if (config) {
|
||||
delete nodeConfigs[id];
|
||||
var i = nodeList.indexOf(id);
|
||||
if (i > -1) {
|
||||
nodeList.splice(i,1);
|
||||
}
|
||||
config.types.forEach(function(t) {
|
||||
delete nodeConstructors[t];
|
||||
delete nodeTypeToId[t];
|
||||
});
|
||||
nodeConfigCache = null;
|
||||
if (!config) {
|
||||
throw new Error("Unrecognised id: "+id);
|
||||
}
|
||||
delete nodeConfigs[id];
|
||||
var i = nodeList.indexOf(id);
|
||||
if (i > -1) {
|
||||
nodeList.splice(i,1);
|
||||
}
|
||||
config.types.forEach(function(t) {
|
||||
delete nodeConstructors[t];
|
||||
delete nodeTypeToId[t];
|
||||
});
|
||||
nodeConfigCache = null;
|
||||
return filterNodeInfo(config);
|
||||
},
|
||||
getNodeInfo: function(typeOrId) {
|
||||
|
@@ -70,6 +70,10 @@ function createServer(_server,_settings) {
|
||||
}
|
||||
redNodes.addNode(node).then(function(info) {
|
||||
comms.publish("node/added",info,false);
|
||||
util.log("[red] Added node types:");
|
||||
for (var i=0;i<info.types.length;i++) {
|
||||
util.log("[red] - "+info.types[i]);
|
||||
}
|
||||
res.json(info);
|
||||
}).otherwise(function(err) {
|
||||
res.send(400,err.toString());
|
||||
@@ -80,8 +84,28 @@ function createServer(_server,_settings) {
|
||||
}
|
||||
);
|
||||
|
||||
app.delete("/nodes/:id",
|
||||
function(req,res) {
|
||||
var id = req.params.id;
|
||||
try {
|
||||
var info = redNodes.removeNode(id);
|
||||
comms.publish("node/removed",info,false);
|
||||
util.log("[red] Removed node types:");
|
||||
for (var i=0;i<info.types.length;i++) {
|
||||
util.log("[red] - "+info.types[i]);
|
||||
}
|
||||
res.json(info);
|
||||
} catch(err) {
|
||||
res.send(400,err.toString());
|
||||
};
|
||||
},
|
||||
function(err,req,res,next) {
|
||||
res.send(400,err);
|
||||
}
|
||||
);
|
||||
|
||||
app.get("/nodes/:id", function(req,res) {
|
||||
var type = req.params.id;
|
||||
var id = req.params.id;
|
||||
var config = redNodes.getNodeConfig(id);
|
||||
if (config) {
|
||||
res.send(config);
|
||||
|
Reference in New Issue
Block a user