diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index 89d61d1db500186fd22e2641e9ef374b632be41c..d1df569116b54143e25523d0452e8ba9b0b2b9aa 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -18,6 +18,7 @@ var xss = require('xss'); function EditProjectDialog(params) { AbstractGuiElement.call(this, params); var self = this; + self.registerListenerType("onSave"); $(self.getElement()).addClass("minerva-edit-project-dialog"); $(self.getElement()).css({overflow: "hidden"}); @@ -237,8 +238,10 @@ EditProjectDialog.prototype.createGeneralTabContent = function () { content: '<span class="ui-icon ui-icon-disk"></span> SAVE', onclick: function () { return self.onSaveClicked().then(function () { + return self.callListeners("onSave"); + }).then(function () { return self.close(); - }, GuiConnector.alert); + }).catch(GuiConnector.alert); }, xss: false }); diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js index e3973891d856049d3c82d70030681ffdecdef954..9fbf7d455876b39e5360de2b5deda109e8195aab 100644 --- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js @@ -261,11 +261,16 @@ MapsAdminPanel.prototype.destroy = function () { if ($.fn.DataTable.isDataTable(table)) { promises.push($(table).DataTable().destroy()); } - if (self._logDialogs !== undefined) { - for (var key in self._logDialogs) { - if (self._logDialogs.hasOwnProperty(key)) { - promises.push(self._logDialogs[key].destroy()); - } + + var key; + for (key in self._logDialogs) { + if (self._logDialogs.hasOwnProperty(key)) { + promises.push(self._logDialogs[key].destroy()); + } + } + for (key in self._dialogs) { + if (self._dialogs.hasOwnProperty(key)) { + promises.push(self._dialogs[key].destroy()); } } return Promise.all(promises); @@ -297,6 +302,10 @@ MapsAdminPanel.prototype.getDialog = function (project) { }); self._dialogs[project.getProjectId()] = dialog; return dialog.init().then(function () { + return dialog.addListener("onSave", function () { + return self.onRefreshClicked() + }); + }).then(function () { return dialog; }); } else { diff --git a/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js b/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js index d5fdf4574bd1ceb68547ce2d37a3e0d5c1083b01..d365b2e30cf63ae83cd5d96daa712e68dc4b9854 100644 --- a/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js +++ b/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js @@ -51,6 +51,28 @@ describe('MapsAdminPanel', function () { }); }); + it('getDialog', function () { + helper.loginAsAdmin(); + var mapTab; + var project; + return ServerConnector.getProject().then(function (result) { + project = result; + return ServerConnector.getConfiguration(); + }).then(function (configuration) { + mapTab = new MapsAdminPanel({ + element: testDiv, + project: project, + configuration: configuration + }); + return mapTab.init(); + }).then(function () { + return mapTab.getDialog(project); + }).then(function (dialog) { + assert.ok(dialog.getListeners("onSave").length > 0); + return mapTab.destroy(); + }); + }); + describe('onAddClicked', function () { it('default', function () {