diff --git a/editor/js/ui/editor.js b/editor/js/ui/editor.js index bb58caba9..27d02e8ae 100644 --- a/editor/js/ui/editor.js +++ b/editor/js/ui/editor.js @@ -1981,7 +1981,19 @@ RED.editor = (function() { editStack.push({type:type}); RED.view.state(RED.state.EDITING); var expressionEditor; + var changeTimer; + var checkValid = function() { + var v = expressionEditor.getValue(); + try { + JSON.parse(v); + $("#node-dialog-ok").removeClass('disabled'); + return true; + } catch(err) { + $("#node-dialog-ok").addClass('disabled'); + return false; + } + } var trayOptions = { title: options.title || getEditStackTitle(), buttons: [ @@ -1997,6 +2009,9 @@ RED.editor = (function() { text: RED._("common.label.done"), class: "primary", click: function() { + if (options.requireValid && !checkValid()) { + return; + } onComplete(expressionEditor.getValue()); RED.tray.close(); } @@ -2024,6 +2039,13 @@ RED.editor = (function() { mode:"ace/mode/json" }); expressionEditor.getSession().setValue(value||"",-1); + if (options.requireValid) { + expressionEditor.getSession().on('change', function() { + clearTimeout(changeTimer); + changeTimer = setTimeout(checkValid,200); + }); + checkValid(); + } $("#node-input-json-reformat").click(function(evt) { evt.preventDefault(); var v = expressionEditor.getValue()||""; diff --git a/editor/js/ui/projectSettings.js b/editor/js/ui/projectSettings.js index ba2ff6fa2..02daca871 100644 --- a/editor/js/ui/projectSettings.js +++ b/editor/js/ui/projectSettings.js @@ -44,7 +44,7 @@ RED.projects.settings = (function() { var tabContainer; var trayOptions = { - title: "NLS: Project Information",// RED._("menu.label.userSettings"), + title: "Project Information",// RED._("menu.label.userSettings"),, // TODO: nls buttons: [ { id: "node-dialog-ok", @@ -211,11 +211,11 @@ RED.projects.settings = (function() { if (summary) { container.text(summary).removeClass('node-info-node'); } else { - container.text("NLS: No summary available").addClass('node-info-none'); + container.text("No summary available").addClass('node-info-none');// TODO: nls } } - function createViewPane(activeProject) { + function createMainPane(activeProject) { var pane = $('
'); $('