diff --git a/editor/js/ui/editor.js b/editor/js/ui/editor.js index de1e691dd..8b772d8f6 100644 --- a/editor/js/ui/editor.js +++ b/editor/js/ui/editor.js @@ -430,7 +430,7 @@ RED.editor = (function() { * @param definition - the node definition * @param prefix - the prefix to use in the input element ids (node-input|node-config-input) */ - function prepareEditDialog(node,definition,prefix) { + function prepareEditDialog(node,definition,prefix,done) { for (var d in definition.defaults) { if (definition.defaults.hasOwnProperty(d)) { if (definition.defaults[d].type) { @@ -474,6 +474,9 @@ RED.editor = (function() { } } validateNodeEditor(node,prefix); + if (done) { + done(); + } } if (definition.credentials) { @@ -791,7 +794,7 @@ RED.editor = (function() { } } }, - open: function(tray) { + open: function(tray,done) { if (editing_node) { RED.sidebar.info.refresh(editing_node); } @@ -802,8 +805,11 @@ RED.editor = (function() { ns = node._def.set.id; } var dialogForm = buildEditForm(tray,"dialog-form",type,ns); - prepareEditDialog(node,node._def,"node-input"); - dialogForm.i18n(); + prepareEditDialog(node,node._def,"node-input", function() { + dialogForm.i18n(); + done(); + }); + }, close: function() { if (RED.view.state() != RED.state.IMPORT_DRAGGING) { @@ -888,11 +894,11 @@ RED.editor = (function() { try { editing_config_node._def.oneditresize.call(editing_config_node,{width:form.width(),height:form.height()}); } catch(err) { - console.log("oneditresize",editing_node.id,editing_node.type,err.toString()); + console.log("oneditresize",editing_config_node.id,editing_config_node.type,err.toString()); } } }, - open: function(tray) { + open: function(tray, done) { var trayHeader = tray.find(".editor-tray-header"); var trayFooter = tray.find(".editor-tray-footer"); @@ -903,58 +909,60 @@ RED.editor = (function() { var dialogForm = buildEditForm(tray,"node-config-dialog-edit-form",type,ns); - prepareEditDialog(editing_config_node,node_def,"node-config-input"); - if (editing_config_node._def.exclusive) { - $("#node-config-dialog-scope").hide(); - } else { - $("#node-config-dialog-scope").show(); - } - $("#node-config-dialog-scope-warning").hide(); + prepareEditDialog(editing_config_node,node_def,"node-config-input", function() { + if (editing_config_node._def.exclusive) { + $("#node-config-dialog-scope").hide(); + } else { + $("#node-config-dialog-scope").show(); + } + $("#node-config-dialog-scope-warning").hide(); - var nodeUserFlows = {}; - editing_config_node.users.forEach(function(n) { - nodeUserFlows[n.z] = true; - }); - var flowCount = Object.keys(nodeUserFlows).length; - var tabSelect = $("#node-config-dialog-scope").empty(); - tabSelect.off("change"); - tabSelect.append(''); - tabSelect.append(''); - RED.nodes.eachWorkspace(function(ws) { - var workspaceLabel = ws.label; - if (nodeUserFlows[ws.id]) { - workspaceLabel = "* "+workspaceLabel; - } - tabSelect.append(''); - }); - tabSelect.append(''); - RED.nodes.eachSubflow(function(ws) { - var workspaceLabel = ws.name; - if (nodeUserFlows[ws.id]) { - workspaceLabel = "* "+workspaceLabel; - } - tabSelect.append(''); - }); - if (flowCount > 0) { - tabSelect.on('change',function() { - var newScope = $(this).val(); - if (newScope === '') { - // global scope - everyone can use it - $("#node-config-dialog-scope-warning").hide(); - } else if (!nodeUserFlows[newScope] || flowCount > 1) { - // a user will loose access to it - $("#node-config-dialog-scope-warning").show(); - } else { - $("#node-config-dialog-scope-warning").hide(); - } + var nodeUserFlows = {}; + editing_config_node.users.forEach(function(n) { + nodeUserFlows[n.z] = true; }); - } - tabSelect.i18n(); + var flowCount = Object.keys(nodeUserFlows).length; + var tabSelect = $("#node-config-dialog-scope").empty(); + tabSelect.off("change"); + tabSelect.append(''); + tabSelect.append(''); + RED.nodes.eachWorkspace(function(ws) { + var workspaceLabel = ws.label; + if (nodeUserFlows[ws.id]) { + workspaceLabel = "* "+workspaceLabel; + } + tabSelect.append(''); + }); + tabSelect.append(''); + RED.nodes.eachSubflow(function(ws) { + var workspaceLabel = ws.name; + if (nodeUserFlows[ws.id]) { + workspaceLabel = "* "+workspaceLabel; + } + tabSelect.append(''); + }); + if (flowCount > 0) { + tabSelect.on('change',function() { + var newScope = $(this).val(); + if (newScope === '') { + // global scope - everyone can use it + $("#node-config-dialog-scope-warning").hide(); + } else if (!nodeUserFlows[newScope] || flowCount > 1) { + // a user will loose access to it + $("#node-config-dialog-scope-warning").show(); + } else { + $("#node-config-dialog-scope-warning").hide(); + } + }); + } + tabSelect.i18n(); - dialogForm.i18n(); - if (node_def.hasUsers !== false) { - $("#node-config-dialog-user-count").find("span").html(RED._("editor.nodesUse", {count:editing_config_node.users.length})).parent().show(); - } + dialogForm.i18n(); + if (node_def.hasUsers !== false) { + $("#node-config-dialog-user-count").find("span").html(RED._("editor.nodesUse", {count:editing_config_node.users.length})).parent().show(); + } + done(); + }); }, close: function() { RED.workspaces.refresh(); diff --git a/editor/js/ui/tray.js b/editor/js/ui/tray.js index 8ba3d4e97..397a0b154 100644 --- a/editor/js/ui/tray.js +++ b/editor/js/ui/tray.js @@ -104,85 +104,70 @@ RED.tray = (function() { } }); - if (options.open) { - options.open(el); - } + function finishBuild() { + $("#header-shade").show(); + $("#editor-shade").show(); + $("#palette-shade").show(); + $(".sidebar-shade").show(); - $("#header-shade").show(); - $("#editor-shade").show(); - $("#palette-shade").show(); - $(".sidebar-shade").show(); + tray.preferredWidth = Math.max(el.width(),500); + body.css({"minWidth":tray.preferredWidth-40}); - tray.preferredWidth = Math.max(el.width(),500); - body.css({"minWidth":tray.preferredWidth-40}); - - if (options.width) { - if (options.width > $("#editor-stack").position().left-8) { - options.width = $("#editor-stack").position().left-8; + if (options.width) { + if (options.width > $("#editor-stack").position().left-8) { + options.width = $("#editor-stack").position().left-8; + } + el.width(options.width); + } else { + el.width(tray.preferredWidth); } - el.width(options.width); - } else { - el.width(tray.preferredWidth); - } - tray.width = el.width(); - if (tray.width > $("#editor-stack").position().left-8) { - tray.width = Math.max(0/*tray.preferredWidth*/,$("#editor-stack").position().left-8); - el.width(tray.width); - } + tray.width = el.width(); + if (tray.width > $("#editor-stack").position().left-8) { + tray.width = Math.max(0/*tray.preferredWidth*/,$("#editor-stack").position().left-8); + el.width(tray.width); + } - // tray.body.parent().width(Math.min($("#editor-stack").position().left-8,tray.width)); + // tray.body.parent().width(Math.min($("#editor-stack").position().left-8,tray.width)); - el.css({ - right: -(el.width()+10)+"px", - transition: "right 0.25s ease" - }); - $("#workspace").scrollLeft(0); - handleWindowResize(); - openingTray = true; - setTimeout(function() { + el.css({ + right: -(el.width()+10)+"px", + transition: "right 0.25s ease" + }); + $("#workspace").scrollLeft(0); + handleWindowResize(); + openingTray = true; setTimeout(function() { - if (!options.width) { - el.width(Math.min(tray.preferredWidth,$("#editor-stack").position().left-8)); - } - if (options.resize) { - options.resize({width:el.width()}); - } - if (options.show) { - options.show(); - } setTimeout(function() { - // Delay resetting the flag, so we don't close prematurely - openingTray = false; - },200); - body.find(":focusable:first").focus(); - - },150); - el.css({right:0}); - },0); - - // growButton.click(function(e) { - // e.preventDefault(); - // tray.lastWidth = tray.width; - // tray.width = $("#editor-stack").position().left-8; - // el.width(tray.width); - // if (options.resize) { - // options.resize({width:tray.width}); - // } - // }); - // shrinkButton.click(function(e) { - // e.preventDefault(); - // if (tray.lastWidth && tray.width > tray.lastWidth) { - // tray.width = tray.lastWidth; - // } else if (tray.width > tray.preferredWidth) { - // tray.width = tray.preferredWidth; - // } - // el.width(tray.width); - // if (options.resize) { - // options.resize({width:tray.width}); - // } - // }); + if (!options.width) { + el.width(Math.min(tray.preferredWidth,$("#editor-stack").position().left-8)); + } + if (options.resize) { + options.resize({width:el.width()}); + } + if (options.show) { + options.show(); + } + setTimeout(function() { + // Delay resetting the flag, so we don't close prematurely + openingTray = false; + },200); + body.find(":focusable:first").focus(); + },150); + el.css({right:0}); + },0); + } + if (options.open) { + if (options.open.length === 1) { + options.open(el); + finishBuild(); + } else { + options.open(el,finishBuild); + } + } else { + finishBuild(); + } } function handleWindowResize() {