mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Copy/clone config nodes properly on import/export
This commit is contained in:
@@ -518,7 +518,8 @@ RED.editor = (function() {
|
||||
for (var d in definition.defaults) {
|
||||
if (definition.defaults.hasOwnProperty(d)) {
|
||||
if (definition.defaults[d].type) {
|
||||
if (definition.defaults[d].exclusive) {
|
||||
var configTypeDef = RED.nodes.getType(definition.defaults[d].type);
|
||||
if (configTypeDef.exclusive) {
|
||||
prepareConfigNodeButton(node,d,definition.defaults[d].type);
|
||||
} else {
|
||||
prepareConfigNodeSelect(node,d,definition.defaults[d].type);
|
||||
|
@@ -153,10 +153,14 @@ RED.subflow = (function() {
|
||||
}
|
||||
});
|
||||
|
||||
var removedConfigNodes = [];
|
||||
for (var i=0;i<removedNodes.length;i++) {
|
||||
var rmlinks = RED.nodes.remove(removedNodes[i].id);
|
||||
removedLinks = removedLinks.concat(rmlinks);
|
||||
var removedEntities = RED.nodes.remove(removedNodes[i].id);
|
||||
removedLinks = removedLinks.concat(removedEntities.links);
|
||||
removedConfigNodes = removedConfigNodes.concat(removedEntities.nodes);
|
||||
}
|
||||
// TODO: this whole delete logic should be in RED.nodes.removeSubflow..
|
||||
removedNodes = removedNodes.concat(removedConfigNodes);
|
||||
|
||||
var activeSubflow = getSubflow();
|
||||
|
||||
|
@@ -756,9 +756,10 @@ RED.view = (function() {
|
||||
if (node.x < 0) {
|
||||
node.x = 25
|
||||
}
|
||||
var rmlinks = RED.nodes.remove(node.id);
|
||||
var removedEntities = RED.nodes.remove(node.id);
|
||||
removedNodes.push(node);
|
||||
removedLinks = removedLinks.concat(rmlinks);
|
||||
removedNodes = removedNodes.concat(removedEntities.nodes);
|
||||
removedLinks = removedLinks.concat(removedEntities.links);
|
||||
} else {
|
||||
if (node.direction === "out") {
|
||||
removedSubflowOutputs.push(node);
|
||||
@@ -851,8 +852,21 @@ RED.view = (function() {
|
||||
var nns = [];
|
||||
for (var n=0;n<moving_set.length;n++) {
|
||||
var node = moving_set[n].n;
|
||||
// The only time a node.type == subflow can be selected is the
|
||||
// input/output 'proxy' nodes. They cannot be copied.
|
||||
if (node.type != "subflow") {
|
||||
for (var d in node._def.defaults) {
|
||||
if (node._def.defaults.hasOwnProperty(d)) {
|
||||
if (node._def.defaults[d].type) {
|
||||
var configNode = RED.nodes.node(node[d]);
|
||||
if (configNode && configNode._def.exclusive) {
|
||||
nns.push(RED.nodes.convertNode(configNode));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
nns.push(RED.nodes.convertNode(node));
|
||||
//TODO: if the node has an exclusive config node, it should also be copied, to ensure it remains exclusive...
|
||||
}
|
||||
}
|
||||
clipboard = JSON.stringify(nns);
|
||||
|
@@ -29,9 +29,9 @@ RED.workspaces = (function() {
|
||||
do {
|
||||
workspaceIndex += 1;
|
||||
//TODO: nls of Sheet
|
||||
} while($("#workspace-tabs a[title='Sheet "+workspaceIndex+"']").size() !== 0);
|
||||
} while($("#workspace-tabs a[title='"+RED._('workspace.defaultName',{number:workspaceIndex})+"']").size() !== 0);
|
||||
|
||||
ws = {type:"tab",id:tabId,label:"Sheet "+workspaceIndex};
|
||||
ws = {type:"tab",id:tabId,label:RED._('workspace.defaultName',{number:workspaceIndex})};
|
||||
RED.nodes.addWorkspace(ws);
|
||||
workspace_tabs.addTab(ws);
|
||||
workspace_tabs.activateTab(tabId);
|
||||
|
Reference in New Issue
Block a user