From 6091f258a3aef7f8c2801ce34ac2b1fbfcce4f7b Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 26 Jul 2019 16:27:57 +0200
Subject: [PATCH] creation date of project is available

---
 CHANGELOG                                     |  2 ++
 .../src/main/js/gui/admin/MapsAdminPanel.js   | 21 +++++++++++++------
 frontend-js/src/main/js/map/data/Project.js   | 21 +++++++++++++++++++
 .../api/projects/ProjectRestImpl.java         |  1 +
 4 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 6bfcc91cb3..92e8271c21 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -15,6 +15,8 @@ minerva (14.0.0~alpha.0) unstable; urgency=low
   * Small improvement: when removing overlay in admin panel there is a
     confirmation dialog (#696)
   * Small improvement: overlay name is obligatory (#698)
+  * Small improvement: list of projects in admin panel contains creation date 
+    (#447)
   * Small improvement: target gene in search panel contains also information
     about type of database that identifies the target (#66)
   * Small improvement: redundant 'references' field in gene variants data 
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index 3202b85d3d..2d10ac4619 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -125,6 +125,8 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
   $(projectsTable).DataTable({
     columns: [{
       title: 'ProjectId'
+    }, {
+      title: 'Created'
     }, {
       title: 'Name'
     }, {
@@ -237,10 +239,17 @@ MapsAdminPanel.prototype.projectToTableRow = function (project, row, user) {
   }
 
   row[0] = formattedProjectId;
-  row[1] = project.getName();
-  row[2] = disease;
-  row[3] = organism;
-  row[4] = status;
+  var date = project.getCreationDate();
+  if (date === undefined) {
+    date = "N/A";
+  } else {
+    date = date.split(" ")[0];
+  }
+  row[1] = date;
+  row[2] = project.getName();
+  row[3] = disease;
+  row[4] = organism;
+  row[5] = status;
 
   var disabled = " disabled ";
   if ((user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.IS_ADMIN)) ||
@@ -249,12 +258,12 @@ MapsAdminPanel.prototype.projectToTableRow = function (project, row, user) {
     disabled = "";
   }
 
-  row[5] = "<button name='showEditDialog' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-edit' style='font-size:17px'></i></button>";
+  row[6] = "<button name='showEditDialog' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-edit' style='font-size:17px'></i></button>";
 
   if (self.getConfiguration().getOption(ConfigurationType.DEFAULT_MAP).getValue() === projectId) {
     disabled = " disabled ";
   }
-  row[6] = "<button name='removeProject' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-trash-o' style='font-size:17px'></button>";
+  row[7] = "<button name='removeProject' data='" + project.getProjectId() + "'" + disabled + "><i class='fa fa-trash-o' style='font-size:17px'></button>";
 
   return row;
 };
diff --git a/frontend-js/src/main/js/map/data/Project.js b/frontend-js/src/main/js/map/data/Project.js
index 5fb5c27458..0d28c2672b 100644
--- a/frontend-js/src/main/js/map/data/Project.js
+++ b/frontend-js/src/main/js/map/data/Project.js
@@ -62,6 +62,7 @@ Project.prototype.loadFromData = function (data) {
   } else {
     self.setId(parseInt(data.idObject));
     self.setProjectId(data.projectId);
+    self.setCreationDate(data.creationDate);
     self.setDirectory(data.directory);
     self.setVersion(data.version);
     self.setName(data.name);
@@ -582,5 +583,25 @@ Project.prototype.getBioEntitiesByIdentifiedElements = function (elements, compl
   return Promise.all(promises);
 };
 
+/**
+ *
+ * @returns {string}
+ */
+Project.prototype.getCreationDate = function () {
+  return this._creationDate;
+};
+
+/**
+ *
+ * @param {string|null} creationDate
+ */
+Project.prototype.setCreationDate = function (creationDate) {
+  if (creationDate === null) {
+    creationDate = undefined;
+  }
+  this._creationDate = creationDate;
+};
+
+
 
 module.exports = Project;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
index 63814e80e0..7ef62d468f 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
@@ -106,6 +106,7 @@ public class ProjectRestImpl extends BaseRestImpl {
     result.put("errors", project.getErrors() != null && !project.getErrors().isEmpty());
     result.put("name", project.getName());
     result.put("projectId", project.getProjectId());
+    result.put("creationDate", super.prepareDate(project.getCreationDate()));
     result.put("mapCanvasType", project.getMapCanvasType());
 
     List<Map<String, Object>> images = new ArrayList<>();
-- 
GitLab