diff --git a/packages/node_modules/@node-red/editor-api/lib/editor/projects.js b/packages/node_modules/@node-red/editor-api/lib/editor/projects.js index 0849c8ff8..02dc58c58 100644 --- a/packages/node_modules/@node-red/editor-api/lib/editor/projects.js +++ b/packages/node_modules/@node-red/editor-api/lib/editor/projects.js @@ -137,6 +137,7 @@ module.exports = { req.body.hasOwnProperty('description') || req.body.hasOwnProperty('dependencies')|| req.body.hasOwnProperty('summary') || + req.body.hasOwnProperty('version') || req.body.hasOwnProperty('files') || req.body.hasOwnProperty('git')) { runtimeAPI.projects.updateProject(opts).then(function() { diff --git a/packages/node_modules/@node-red/editor-api/lib/util.js b/packages/node_modules/@node-red/editor-api/lib/util.js index 950e3d9cc..621fd9e33 100644 --- a/packages/node_modules/@node-red/editor-api/lib/util.js +++ b/packages/node_modules/@node-red/editor-api/lib/util.js @@ -43,6 +43,10 @@ module.exports = { rejectHandler: function(req,res,err) { //TODO: why this when errorHandler also?! log.audit({event: "api.error",error:err.code||"unexpected_error",message:err.message||err.toString()},req); + if (!err.code) { + // by definition, an unexpected_error to log + log.error(err); + } var response = { code: err.code||"unexpected_error", message: err.message||err.toString() diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js index 46dc41e33..4abe6fd1f 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectSettings.js @@ -166,34 +166,42 @@ RED.projects.settings = (function() { description.find(".red-ui-text-bidi-aware").contents().filter(function() { return this.nodeType === 3 && this.textContent.trim() !== "" }).wrap( "" ); } - function editSummary(activeProject, summary, container) { + function editSummary(activeProject, summary, container, version, versionContainer) { var editButton = container.prev(); editButton.hide(); container.empty(); + versionContainer.empty(); var bg = $('').appendTo(container); var input = $('').val(summary||"").appendTo(container); + var versionInput = $('').val(version||"").appendTo(versionContainer); + $('') .appendTo(bg) .on("click", function(evt) { evt.preventDefault(); updateProjectSummary(activeProject.summary, container); + updateProjectVersion(activeProject.version, versionContainer); editButton.show(); }); $('') .appendTo(bg) .on("click", function(evt) { evt.preventDefault(); - var v = input.val(); - updateProjectSummary(v, container); - var spinner = utils.addSpinnerOverlay(container); + var newSummary = input.val(); + var newVersion = versionInput.val(); + updateProjectSummary(newSummary, container); + updateProjectVersion(newVersion, versionContainer); + var spinner = utils.addSpinnerOverlay(container).addClass('red-ui-component-spinner-contain'); var done = function(err,res) { if (err) { spinner.remove(); - return editSummary(activeProject, summary, container); + return editSummary(activeProject, summary, container, version, versionContainer); } - activeProject.summary = v; + activeProject.summary = newSummary; + activeProject.version = newVersion; spinner.remove(); updateProjectSummary(activeProject.summary, container); + updateProjectVersion(activeProject.version, versionContainer); editButton.show(); } utils.sendRequest({ @@ -214,31 +222,39 @@ RED.projects.settings = (function() { } }, } - },{summary:v}); + },{summary:newSummary, version: newVersion}); }); } function updateProjectSummary(summary, container) { container.empty(); if (summary) { - container.text(summary).removeClass('node-info-node'); + container.text(summary).removeClass('red-ui-help-info-none'); } else { container.text(RED._("sidebar.project.noSummaryAvailable")).addClass('red-ui-help-info-none'); } } - + function updateProjectVersion(version, container) { + container.empty(); + if (version) { + container.text(version); + } + } function createMainPane(activeProject) { var pane = $('
'); $('

').text(activeProject.name).appendTo(pane); var summary = $('
').appendTo(pane); var summaryContent = $('
').appendTo(summary); + var versionContent = $('
').addClass('red-ui-help-info-none').appendTo(summary); updateProjectSummary(activeProject.summary, summaryContent); + updateProjectVersion(activeProject.version, versionContent); + if (RED.user.hasPermission("projects.write")) { $('') .prependTo(summary) .on("click", function(evt) { evt.preventDefault(); - editSummary(activeProject, activeProject.summary, summaryContent); + editSummary(activeProject, activeProject.summary, summaryContent, activeProject.version, versionContent); }); } $('
').appendTo(pane); diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js index 4ec191055..0fbf89de4 100644 --- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js +++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js @@ -349,6 +349,10 @@ Project.prototype.update = function (user, data) { savePackage = true; this.package.description = data.summary; } + if (data.hasOwnProperty('version')) { + savePackage = true; + this.package.version = data.version; + } if (data.hasOwnProperty('git')) { if (data.git.hasOwnProperty('user')) { @@ -829,6 +833,7 @@ Project.prototype.export = function () { return { name: this.name, summary: this.package.description, + version: this.package.version, description: this.description, dependencies: this.package.dependencies||{}, empty: this.empty,