From 626dc8b3ce05db7ff8a55c7b7758007635a8f12d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 11 Aug 2017 11:07:40 +0200 Subject: [PATCH] simple visualization of project table --- .../src/main/js/gui/admin/MapsAdminPanel.js | 59 ++++++++++++++++++- frontend-js/src/main/js/map/data/Project.js | 18 ++++++ 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js index 5bd7d66ac7..53c75d585a 100644 --- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js @@ -5,13 +5,14 @@ var AbstractAdminPanel = require('./AbstractAdminPanel'); var Functions = require('../../Functions'); +var GuiConnector = require('../../GuiConnector'); var Promise = require("bluebird"); function MapsAdminPanel(params) { var self = this; AbstractAdminPanel.call(self, params); self._createGui(); - + $(self.getElement()).addClass("projects-tab"); } @@ -39,6 +40,7 @@ MapsAdminPanel.prototype._createGui = function() { }; MapsAdminPanel.prototype._createMenuRow = function() { + var self = this; var menuRow = Functions.createElement({ type : "div", style : "display:table-row; margin:10px", @@ -48,11 +50,17 @@ MapsAdminPanel.prototype._createMenuRow = function() { type : "button", name : "addProject", content : '<span class="ui-icon ui-icon-circle-plus"></span> ADD PROJECT', + onclick : function() { + return self.onAddClicked().then(null, GuiConnector.alert); + }, }); var refreshButton = Functions.createElement({ type : "button", name : "refreshProject", content : '<span class="ui-icon ui-icon-refresh"></span> REFRESH', + onclick : function() { + return self.onRefreshClicked().then(null, GuiConnector.alert); + }, }); menuRow.appendChild(addProjectButton); menuRow.appendChild(refreshButton); @@ -94,7 +102,54 @@ MapsAdminPanel.prototype._createProjectTableRow = function() { } MapsAdminPanel.prototype.init = function() { - + var self = this; + return ServerConnector.getProjects().then(function(projects) { + return self.setProjects(projects); + }).then(function() { + $(window).trigger('resize'); + }); }; +MapsAdminPanel.prototype.projectToTableRow = function(project) { + var self = this; + var disease = "N/A"; + if (project.getDisease() != undefined && project.getDisease() != null) { + disease = self.getGuiUtils().createAnnotationLink(project.getDisease(), true).innerHTML; + } + var organism = "N/A"; + if (project.getOrganism() != undefined && project.getOrganism() != null) { + organism = self.getGuiUtils().createAnnotationLink(project.getOrganism(), true).innerHTML; + } + + var row = [ project.getProjectId(), // + project.getName(), // + disease, // + organism, // + project.getStatus(), // + "<button name='showEditDialog' data='" + project.getProjectId() + "'>EDIT</button>", // + "<button name='removeProject' data='" + project.getProjectId() + "'>REMOVE</button>", // + ]; + return row; +} + +MapsAdminPanel.prototype.setProjects = function(projects) { + var self = this; + var dataTable = $($("[name='projectsTable']", self.getElement())[0]).DataTable(); + var data = []; + for (var i = 0; i < projects.length; i++) { + data.push(self.projectToTableRow(projects[i])); + } + dataTable.clear().rows.add(data).draw(); + + $("[name='projectsTable']", self.getElement()).on("click", "[name='removeProject']", function() { + var button = this; + return self.removeProject($(button).attr("data")).then(null, GuiConnector.alert); + }); + + $("[name='projectsTable']", self.getElement()).on("click", "[name='showEditDialog']", function() { + var button = this; + return self.showEditDialog($(button).attr("data")).then(null, GuiConnector.alert); + }); +} + module.exports = MapsAdminPanel; diff --git a/frontend-js/src/main/js/map/data/Project.js b/frontend-js/src/main/js/map/data/Project.js index 7bf2347ea6..386eea1be0 100644 --- a/frontend-js/src/main/js/map/data/Project.js +++ b/frontend-js/src/main/js/map/data/Project.js @@ -36,6 +36,8 @@ Project.prototype.loadFromData = function(data) { this.setTopOverviewImage(data.getTopOverviewImage()); this.setDisease(data.getDisease()); this.setOrganism(data.getOrganism()); + this.setStatus(data.getStatus()); + this.setStatus(data.getProgress()); this.setModel(new Model(data.getModel())); @@ -50,6 +52,8 @@ Project.prototype.loadFromData = function(data) { this.setTopOverviewImage(data.topOverviewImage); this.setDisease(data.disease); this.setOrganism(data.organism); + this.setStatus(data.status); + this.setProgress(data.progress); this.callListeners("onreload"); } @@ -128,4 +132,18 @@ Project.prototype.setOrganism = function(organism) { } }; +Project.prototype.getStatus = function() { + return this._status; +}; +Project.prototype.setStatus = function(status) { + this._status = status; +}; + +Project.prototype.getProgress = function() { + return this._progress; +}; +Project.prototype.setProgress = function(progress) { + this._progress = progress; +}; + module.exports = Project; -- GitLab