From a1b63df12440fd04d593daaad8d4ed4badf4487c Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 11 Aug 2017 15:35:34 +0200 Subject: [PATCH] opening stub dialog for edit project button --- frontend-js/src/main/js/Admin.js | 13 +++++-- .../main/js/gui/admin/EditProjectDialog.js | 34 +++++++++++++++++++ .../src/main/js/gui/admin/MapsAdminPanel.js | 23 +++++++++++-- .../test/js/gui/admin/EditProjectDialog.js | 32 +++++++++++++++++ ...rtPanel-test.js => MapsAdminPanel-test.js} | 0 5 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 frontend-js/src/main/js/gui/admin/EditProjectDialog.js create mode 100644 frontend-js/src/test/js/gui/admin/EditProjectDialog.js rename frontend-js/src/test/js/gui/admin/{ElementExportPanel-test.js => MapsAdminPanel-test.js} (100%) diff --git a/frontend-js/src/main/js/Admin.js b/frontend-js/src/main/js/Admin.js index 9e7a1dbd2a..2a6bd0e150 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 0000000000..9fcac9d663 --- /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 3d453e5cd3..2ec6c062ab 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 0000000000..a1859b9948 --- /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 -- GitLab