diff --git a/frontend-js/src/main/js/Admin.js b/frontend-js/src/main/js/Admin.js index 9e7a1dbd2ae0b51b285a243ebe83a924ff264256..2a6bd0e150fcc43ac274e4cf7c342307c04063e7 100644 --- a/frontend-js/src/main/js/Admin.js +++ b/frontend-js/src/main/js/Admin.js @@ -47,12 +47,12 @@ Admin.prototype._createGui = function() { var headerDiv = Functions.createElement({ type : "div" }); - new Header({ + self.setHeader(new Header({ element : headerDiv, customMap : null, project : self.getProject(), adminLink : false, - }); + })); self.getElement().appendChild(headerDiv); var panels = [ { @@ -162,6 +162,7 @@ Admin.prototype.init = function() { for (var i = 0; i < this._panels.length; i++) { promises.push(this._panels[i].init()); } + promises.push(this.getHeader().init()) return Promise.all(promises); }; @@ -173,4 +174,12 @@ Admin.prototype.getConfiguration = function() { return this._configuration; }; +Admin.prototype.setHeader = function(header) { + this._header = header; +}; + +Admin.prototype.getHeader = function() { + return this._header; +}; + module.exports = Admin; diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js new file mode 100644 index 0000000000000000000000000000000000000000..9fcac9d66362facfb6c313e9bf2b5c5fd4eef811 --- /dev/null +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -0,0 +1,34 @@ +"use strict"; + +/* exported logger */ + +var AbstractGuiElement = require('../AbstractGuiElement'); +var GuiConnector = require('../../GuiConnector'); + +var functions = require('../../functions'); +var logger = require('../../logger'); + +function EditProjectDialog(params) { + AbstractGuiElement.call(this, params); + var self = this; +} + +EditProjectDialog.prototype = Object.create(AbstractGuiElement.prototype); +EditProjectDialog.prototype.constructor = EditProjectDialog; + +EditProjectDialog.prototype.destroy = function() { + $(this.getElement()).dialog("destroy"); +}; + +EditProjectDialog.prototype.open = function() { + var self = this; + var div = self.getElement(); + if (!$(div).hasClass("ui-dialog-content")) { + $(div).dialog({ + title : self.getProject().getProjectId(), + }); + } + $(div).dialog("open"); +}; + +module.exports = EditProjectDialog; diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js index 3d453e5cd3f58ad7ebc44ebb05cd5f80c3fe41ca..2ec6c062ab04fec003deb257d5858c03d97ad838 100644 --- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js @@ -3,6 +3,7 @@ /* exported logger */ var AbstractAdminPanel = require('./AbstractAdminPanel'); +var EditProjectDialog = require('./EditProjectDialog'); var logger = require('../../logger'); @@ -116,7 +117,7 @@ MapsAdminPanel.prototype.init = function() { MapsAdminPanel.prototype.projectToTableRow = function(project) { var self = this; var disease = self.getHtmlStringLink(project.getDisease()); - var organism = self.getHtmlStringLink(project.getOrganism()); + var organism = self.getHtmlStringLink(project.getOrganism()); var row = [ project.getProjectId(), // project.getName(), // @@ -167,12 +168,28 @@ MapsAdminPanel.prototype.onAddClicked = function() { }; MapsAdminPanel.prototype.onRefreshClicked = function() { var self = this; - return ServerConnector.getProjects(true).then(function(projects){ + return ServerConnector.getProjects(true).then(function(projects) { return self.setProjects(projects); }); }; + MapsAdminPanel.prototype.showEditDialog = function(id) { - return Promise.reject(new Error("Not implemented")); + var self = this; + GuiConnector.showProcessing(); + return ServerConnector.getProject(id).then(function(project) { + var dialog = new EditProjectDialog({ + element : Functions.createElement({ + type : "div" + }), + project : project, + customMap : null, + }); + dialog.open(); + GuiConnector.hideProcessing(); + }).then(null, function(error) { + GuiConnector.hideProcessing(); + Promise.reject(error); + }); }; MapsAdminPanel.prototype.removeProject = function(id) { return Promise.reject(new Error("Not implemented")); diff --git a/frontend-js/src/test/js/gui/admin/EditProjectDialog.js b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js new file mode 100644 index 0000000000000000000000000000000000000000..a1859b994833f4f504ba43a5f831f8b17a1953c6 --- /dev/null +++ b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js @@ -0,0 +1,32 @@ +"use strict"; + +/* exported logger */ + +var EditProjectDialog = require('../../../../main/js/gui/admin/EditProjectDialog'); +var GuiMessageError = require('../../../../main/js/gui/GuiMessageError'); +var MiriamType = require('../../../../main/js/map/data/MiriamType'); +var logger = require('../../logger'); + +var assert = require('assert'); + +describe('EditProjectDialog', function() { + + it('open', function() { + var dialog; + var project; + return ServerConnector.getProject().then(function(result) { + project = result; + return ServerConnector.getConfiguration(); + }).then(function(configuration) { + dialog = new EditProjectDialog({ + element : testDiv, + project : project, + customMap : null, + }); + return dialog.open(); + }).then(function() { + dialog.destroy(); + }); + }); + +}); diff --git a/frontend-js/src/test/js/gui/admin/ElementExportPanel-test.js b/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js similarity index 100% rename from frontend-js/src/test/js/gui/admin/ElementExportPanel-test.js rename to frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js