diff --git a/editor/js/ui/editor.js b/editor/js/ui/editor.js index 8595d181b..7187ea341 100644 --- a/editor/js/ui/editor.js +++ b/editor/js/ui/editor.js @@ -15,6 +15,7 @@ **/ RED.editor = (function() { var editing_node = null; + var editing_config_node = null; var subflowEditor; function getCredentialsURL(nodeType, nodeID) { @@ -668,7 +669,7 @@ RED.editor = (function() { function showEditConfigNodeDialog(name,type,id) { var adding = (id == "_ADD_"); var node_def = RED.nodes.getType(type); - var configNode = RED.nodes.node(id); + editing_config_node = RED.nodes.node(id); var ns; if (node_def.set.module === "node-red") { @@ -682,8 +683,8 @@ RED.editor = (function() { activeWorkspace = RED.nodes.subflow(RED.workspaces.active()); } - if (configNode == null) { - configNode = { + if (editing_config_node == null) { + editing_config_node = { id: (1+Math.random()*4294967295).toString(16), _def: node_def, type: type, @@ -692,10 +693,10 @@ RED.editor = (function() { } for (var d in node_def.defaults) { if (node_def.defaults[d].value) { - configNode[d] = node_def.defaults[d].value; + editing_config_node[d] = node_def.defaults[d].value; } } - configNode["_"] = node_def._; + editing_config_node["_"] = node_def._; } $("#node-config-dialog-edit-form").html($("script[data-template-name='"+type+"']").html()); @@ -714,7 +715,7 @@ RED.editor = (function() { }); - prepareEditDialog(configNode,node_def,"node-config-input"); + prepareEditDialog(editing_config_node,node_def,"node-config-input"); var buttons = $( "#node-config-dialog" ).dialog("option","buttons"); if (adding) { @@ -732,24 +733,24 @@ RED.editor = (function() { var configProperty = $(this).dialog('option','node-property'); var configId = $(this).dialog('option','node-id'); var configType = $(this).dialog('option','node-type'); - var configNode = RED.nodes.node(configId); + var configTypeDef = RED.nodes.getType(configType); if (configTypeDef.ondelete) { - configTypeDef.ondelete.call(RED.nodes.node(configId)); + configTypeDef.ondelete.call(editing_config_node); } if (configTypeDef.oneditdelete) { - configTypeDef.oneditdelete.call(RED.nodes.node(configId)); + configTypeDef.oneditdelete.call(editing_config_node); } var historyEvent = { t:'delete', - nodes:[configNode], + nodes:[editing_config_node], changes: {}, dirty: RED.nodes.dirty() } RED.nodes.remove(configId); - for (var i=0;i'); + tabSelect.append(''); tabSelect.append(''); RED.nodes.eachWorkspace(function(ws) { var workspaceLabel = ws.label; if (nodeUserFlows[ws.id]) { workspaceLabel = "* "+workspaceLabel; } - tabSelect.append(''); + tabSelect.append(''); }); tabSelect.append(''); RED.nodes.eachSubflow(function(ws) { @@ -807,7 +808,7 @@ RED.editor = (function() { if (nodeUserFlows[ws.id]) { workspaceLabel = "* "+workspaceLabel; } - tabSelect.append(''); + tabSelect.append(''); }); if (flowCount > 0) { tabSelect.on('change',function() { @@ -834,7 +835,7 @@ RED.editor = (function() { $( "#node-config-dialog" ) .dialog("option","node-adding",adding) .dialog("option","node-property",name) - .dialog("option","node-id",configNode.id) + .dialog("option","node-id",editing_config_node.id) .dialog("option","node-type",type) .dialog("option","title",(adding?RED._("editor.addNewConfig", {type:type}):RED._("editor.editConfig", {type:type}))) .dialog( "open" ); @@ -910,70 +911,57 @@ RED.editor = (function() { var configType = $(this).dialog('option','node-type'); var configAdding = $(this).dialog('option','node-adding'); var configTypeDef = RED.nodes.getType(configType); - var configNode; var d; var input; var scope = $("#node-config-dialog-scope").val(); - if (configAdding) { - configNode = {type:configType,id:configId,users:[]}; - for (d in configTypeDef.defaults) { - if (configTypeDef.defaults.hasOwnProperty(d)) { - input = $("#node-config-input-"+d); - if (input.attr('type') === "checkbox") { - configNode[d] = input.prop('checked'); - } else { - configNode[d] = input.val(); - } + for (d in configTypeDef.defaults) { + if (configTypeDef.defaults.hasOwnProperty(d)) { + input = $("#node-config-input-"+d); + if (input.attr('type') === "checkbox") { + editing_config_node[d] = input.prop('checked'); + } else { + editing_config_node[d] = input.val(); } } - configNode.label = configTypeDef.label; - configNode._def = configTypeDef; - configNode.z = scope; - RED.nodes.add(configNode); - updateConfigNodeSelect(configProperty,configType,configNode.id); - } else { - configNode = RED.nodes.node(configId); - for (d in configTypeDef.defaults) { - if (configTypeDef.defaults.hasOwnProperty(d)) { - input = $("#node-config-input-"+d); - if (input.attr('type') === "checkbox") { - configNode[d] = input.prop('checked'); - } else { - configNode[d] = input.val(); - } - } - } - if (scope) { - configNode.users = configNode.users.filter(function(n) { - var keep = true; - for (var d in n._def.defaults) { - if (n._def.defaults.hasOwnProperty(d)) { - if (n._def.defaults[d].type === configNode.type && - n[d] === configNode.id && - n.z !== scope) { - keep = false; - n[d] = null; - n.dirty = true; - n.changed = true; - validateNode(n); - } + } + editing_config_node.label = configTypeDef.label; + editing_config_node.z = scope; + + if (scope) { + editing_config_node.users = editing_config_node.users.filter(function(n) { + var keep = true; + for (var d in n._def.defaults) { + if (n._def.defaults.hasOwnProperty(d)) { + if (n._def.defaults[d].type === editing_config_node.type && + n[d] === editing_config_node.id && + n.z !== scope) { + keep = false; + n[d] = null; + n.dirty = true; + n.changed = true; + validateNode(n); } } - return keep; - }); - } - configNode.z = scope; - updateConfigNodeSelect(configProperty,configType,configId); + } + return keep; + }); } + + if (configAdding) { + RED.nodes.add(editing_config_node); + } + + updateConfigNodeSelect(configProperty,configType,editing_config_node.id); + if (configTypeDef.credentials) { - updateNodeCredentials(configNode,configTypeDef.credentials,"node-config-input"); + updateNodeCredentials(editing_config_node,configTypeDef.credentials,"node-config-input"); } if (configTypeDef.oneditsave) { - configTypeDef.oneditsave.call(RED.nodes.node(configId)); + configTypeDef.oneditsave.call(editing_config_node); } - validateNode(configNode); - for (var i=0;i