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() {