diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index ad46d788b6f1bf6b4dba07a6f550f13891a71e22..43e9589646f57908839144ee8ae1468eb5ee9616 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1083,7 +1083,7 @@ ServerConnector.getProject = function (projectId) { } project = self._projectsById[projectId]; - return Promise.all(promises).then(function() { + return Promise.all(promises).then(function () { return self.getModels(projectId); }).then(function (models) { project.setModels(models); @@ -1141,7 +1141,9 @@ ServerConnector.updateProject = function (project) { }).then(function () { return project; }).catch(function (error) { - return self._processUpdateError(error); + return self.getProject(project.getProjectId()).then(function (project) { + return self._processUpdateError(error); + }); }); }; diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index d54381e89097fa2328c6fea3318bd06388eae50d..27d96692e29e24c359b9c27ecc938d3425d0fa99 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -551,6 +551,9 @@ EditProjectDialog.prototype.createUserPrivilegeColumns = function () { */ EditProjectDialog.prototype.init = function () { var self = this; + self.getProject().addListener("onreload", function(){ + self.projectDataUpdated(self.getProject()); + }); return self.initUsersTab().then(function () { return self.refresh() }).then(function () { @@ -560,12 +563,11 @@ EditProjectDialog.prototype.init = function () { /** * - * @returns {Promise} + * @param {Project} project */ -EditProjectDialog.prototype.refresh = function () { - var self = this; - var element = self.getElement(); - var project = self.getProject(); + +EditProjectDialog.prototype.projectDataUpdated = function (project) { + var element = this.getElement(); $("[name='projectName']", element).val(xss(project.getName())); $("[name='projectId']", element).html(xss(project.getProjectId())); $("[name='projectVersion']", element).val(xss(project.getVersion())); @@ -586,6 +588,17 @@ EditProjectDialog.prototype.refresh = function () { email = xss(project.getNotifyEmail()); } $("[name='projectNotifyEmail']", element).val(email); +}; + +/** + * + * @returns {Promise} + */ +EditProjectDialog.prototype.refresh = function () { + var self = this; + var project = self.getProject(); + + self.projectDataUpdated(project); return self.refreshUsers().then(function () { diff --git a/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js b/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js index edd4449c6a558952ee06d51cc525bf5642e0c6ae..6af8d9c5573ff648effa84b342e62d1d403b9d2b 100644 --- a/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js +++ b/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js @@ -60,6 +60,26 @@ describe('EditProjectDialog', function () { dialog.destroy(); }); }); + + it('update project rejected', function () { + helper.loginAsAdmin(); + var dialog, input; + return createDialog().then(function (result) { + dialog = result; + return dialog.init(); + }).then(function () { + input = $("[name='projectDisease']"); + input.val("XYZ"); + return input[0].parentNode.onchange(); + }).then(function () { + assert.notOk("Error expected"); + }).catch(function (e) { + assert.notEqual(input.val(), "XYZ", "After reject the data should be restored"); + }).then(function () { + return dialog.destroy(); + }); + }); + it('saveOverlay', function () { helper.loginAsAdmin(); var dialog;