From b4f099f3a3047358f9981b78d8a969998226b92d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 21 Aug 2017 16:05:07 +0200 Subject: [PATCH] editing project in admin panel allows to add overlay --- frontend-js/src/main/css/global.css | 4 +++ frontend-js/src/main/js/ServerConnector.js | 15 ++++---- .../src/main/js/gui/AddOverlayDialog.js | 5 ++- .../main/js/gui/admin/EditProjectDialog.js | 35 ++++++++++++++++++- .../src/test/js/ServerConnector-test.js | 14 ++++---- .../test/js/gui/admin/EditProjectDialog.js | 12 +++++++ 6 files changed, 69 insertions(+), 16 deletions(-) diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css index ec96abdecc..9cbfaf7078 100644 --- a/frontend-js/src/main/css/global.css +++ b/frontend-js/src/main/css/global.css @@ -510,4 +510,8 @@ h1 { .minerva-edit-project-dialog div[style*="display: table-cell"] { padding: 2px; +} + +.minerva-datatable-toolbar { + float: left; } \ No newline at end of file diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 1e5461b55e..62c82df88e 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1301,19 +1301,18 @@ ServerConnector.addComment = function(params) { }; ServerConnector.addOverlay = function(params) { - if (!(params instanceof LayoutData)) { - throw new Error("Invalid overlay: " + params); + var overlay = params.overlay; + if (!(overlay instanceof LayoutData)) { + throw new Error("Invalid overlay: " + overlay); } var self = this; var queryParams = {}; var data = { - name : params.getName(), - description : params.getDescription(), - content : params.getContent(), - filename : params.getFilename(), + name : overlay.getName(), + description : overlay.getDescription(), + content : overlay.getContent(), + filename : overlay.getFilename(), }; - logger.info(data); - logger.info(params); return self.getProjectId(params.projectId).then(function(result) { queryParams.projectId = result; return self.sendPostRequest(self.addOverlayUrl(queryParams), data); diff --git a/frontend-js/src/main/js/gui/AddOverlayDialog.js b/frontend-js/src/main/js/gui/AddOverlayDialog.js index efc8a82135..4f4b868319 100644 --- a/frontend-js/src/main/js/gui/AddOverlayDialog.js +++ b/frontend-js/src/main/js/gui/AddOverlayDialog.js @@ -150,7 +150,10 @@ AddOverlayDialog.prototype.addOverlay = function() { filename : filename, }); GuiConnector.showProcessing(); - return ServerConnector.addOverlay(overlay).then(function(result) { + return ServerConnector.addOverlay({ + overlay : overlay, + projectId : self.getProject().getProjectId(), + }).then(function(result) { overlay = result; GuiConnector.hideProcessing(); return self.callListeners("onAddOverlay", overlay); diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index 4afbe99e61..ae2eb07d08 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -3,6 +3,7 @@ /* exported logger */ var AbstractGuiElement = require('../AbstractGuiElement'); +var AddOverlayDialog = require('../AddOverlayDialog'); var Annotation = require('../../map/data/Annotation'); var GuiConnector = require('../../GuiConnector'); @@ -259,12 +260,19 @@ EditProjectDialog.prototype.createOverlaysTabContent = function() { EditProjectDialog.prototype._createOverlayTable = function() { var self = this; + + var result = Functions.createElement({ + type : "div", + style : "margin-top:10px;", + }); + var overlaysTable = Functions.createElement({ type : "table", name : "overlaysTable", className : "display", style : "width:100%", }); + result.appendChild(overlaysTable); $(overlaysTable).DataTable({ fnRowCallback : function(nRow, aData, iDisplayIndex) { @@ -287,7 +295,13 @@ EditProjectDialog.prototype._createOverlayTable = function() { }, { title : 'Remove', }, ], + dom : '<"minerva-datatable-toolbar">frtip', + initComplete : function() { + $("div.minerva-datatable-toolbar", $(result)).html('<button name="addOverlay">Add overlay</button>'); + }, + }); + $(overlaysTable).on("click", "[name='removeOverlay']", function() { var button = this; return self.removeOverlay($(button).attr("data")).then(null, GuiConnector.alert); @@ -314,7 +328,11 @@ EditProjectDialog.prototype._createOverlayTable = function() { }).then(null, GuiConnector.alert); }); - return overlaysTable; + $(result).on("click", "[name='addOverlay']", function() { + return self.openAddOverlayDialog(); + }); + + return result; }; EditProjectDialog.prototype.createUsersTab = function(tabMenuDiv, tabContentDiv) { @@ -483,4 +501,19 @@ EditProjectDialog.prototype.removeOverlay = function(overlayId) { }); }; +EditProjectDialog.prototype.openAddOverlayDialog = function() { + var self = this; + var addOverlayDialog = new AddOverlayDialog({ + project : self.getProject(), + customMap : null, + element : document.createElement("div"), + }); + addOverlayDialog.addListener("onAddOverlay", function(e) { + return self.refreshOverlays(); + }) + return addOverlayDialog.init().then(function() { + return addOverlayDialog.open(); + }); +}; + module.exports = EditProjectDialog; diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index d9bc91e935..d2ebad39e1 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -170,12 +170,14 @@ describe('ServerConnector', function() { }); it('addOverlay', function() { - return ServerConnector.addOverlay(new LayoutData({ - name : "test nam", - description : "test desc", - content : "name color\nCAPN1 #00FF00\nPARK7 #AC0000", - filename : "test.txt" - })).then(function(overlay) { + return ServerConnector.addOverlay({ + overlay : new LayoutData({ + name : "test nam", + description : "test desc", + content : "name color\nCAPN1 #00FF00\nPARK7 #AC0000", + filename : "test.txt" + }), + }).then(function(overlay) { assert.ok(overlay); }); }); diff --git a/frontend-js/src/test/js/gui/admin/EditProjectDialog.js b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js index 085132d573..6c4aca292a 100644 --- a/frontend-js/src/test/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js @@ -72,5 +72,17 @@ describe('EditProjectDialog', function() { assert.ok(project === result); }); }); + + it('openAddOverlayDialog', function() { + return ServerConnector.getProject().then(function(result) { + var project = result; + var dialog = new EditProjectDialog({ + element : testDiv, + project : project, + customMap : null, + }); + return dialog.openAddOverlayDialog(); + }); + }); }); -- GitLab