From 2083b1459e28178241eb910a566d5c36ef828d23 Mon Sep 17 00:00:00 2001
From: David Hoksza <david.hoksza@uni.lu>
Date: Thu, 25 Jan 2018 14:37:10 +0100
Subject: [PATCH] Fixes to the annotations categorization in the frontend

---
 .../resources/applicationContext-annotation.xml  |  1 +
 frontend-js/src/main/css/global.css              | 12 +++++++++++-
 .../src/main/js/gui/leftPanel/GuiUtils.js        | 16 ++++++++++------
 frontend-js/src/main/js/map/data/Annotation.js   | 10 ++++++++++
 4 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/annotation/src/main/resources/applicationContext-annotation.xml b/annotation/src/main/resources/applicationContext-annotation.xml
index 15b0210a0f..985de31648 100644
--- a/annotation/src/main/resources/applicationContext-annotation.xml
+++ b/annotation/src/main/resources/applicationContext-annotation.xml
@@ -21,6 +21,7 @@
 	<bean id="EntrezAnnotator" class="lcsb.mapviewer.annotation.services.annotators.EntrezAnnotator"/>
 	<bean id="GoAnnotator" class="lcsb.mapviewer.annotation.services.annotators.GoAnnotator"/>
 	<bean id="HgncAnnotator" class="lcsb.mapviewer.annotation.services.annotators.HgncAnnotator"/>
+	<bean id="KeggAnnotator" class="lcsb.mapviewer.annotation.services.annotators.KeggAnnotator"/>
 	<bean id="ReconAnnotator" class="lcsb.mapviewer.annotation.services.annotators.ReconAnnotator"/>
 	<bean id="PdbAnnotator" class="lcsb.mapviewer.annotation.services.annotators.PdbAnnotator"/>
 	<bean id="StitchAnnotator" class="lcsb.mapviewer.annotation.services.annotators.StitchAnnotator"/>
diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css
index dab4b9ec0f..179c9cfe56 100644
--- a/frontend-js/src/main/css/global.css
+++ b/frontend-js/src/main/css/global.css
@@ -524,4 +524,14 @@ h1 {
 
 .minerva-datatable-toolbar {
     float: left;
-}
\ No newline at end of file
+}
+
+.minerva-annotation-group {
+    padding-bottom: 10px;
+}
+
+.minerva-annotation-group .minerva-annotation-group-header {
+    font-weight: bold
+
+}
+
diff --git a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
index 27878f3253..99dae01f55 100644
--- a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
+++ b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
@@ -184,19 +184,23 @@ GuiUtils.prototype.createAnnotationList = function (annotations, options) {
 
   var grouppedAnnotations = {};
   for (var i = 0; i < annotations.length; i++) {
-    var desc = annotations[i].description;
+    var desc = annotations[i].getDescription();
+    if (desc == "") desc = "Annotated by curator"
     if (!(desc in grouppedAnnotations)) grouppedAnnotations[desc] = [];
     grouppedAnnotations[desc].push(annotations[i])
   }
 
   var cntAnnotations = 0;
-  for (var i = 0; i < grouppedAnnotations.keys().length; i++) {
+  // for (var i = 0; i < grouppedAnnotations.keys().length; i++) {
+  Object.keys(grouppedAnnotations).sort().forEach(function(desc){
 
-    var desc = grouppedAnnotations.keys()[i];
+    // var desc = grouppedAnnotations.keys()[i];
     var groupContainer = (inline ? document.createElement("span") : document.createElement("div"));
     var descContainer = (inline ? document.createElement("span") : document.createElement("div"));
+    
     descContainer.innerHTML = (inline ? desc + ': ' : desc);
-    if (inline) groupContainer.className = "minerva-annotation-group";
+    descContainer.className = "minerva-annotation-group-header";
+    if (!inline) groupContainer.className = "minerva-annotation-group";
     groupContainer.appendChild(descContainer);
 
     if (inline){
@@ -222,7 +226,7 @@ GuiUtils.prototype.createAnnotationList = function (annotations, options) {
 
         var row = document.createElement("div");
         row.style.height = "26px";
-        if (i % 2 === 0) {
+        if (j % 2 === 0) {
             row.className = "minerva-annotation-row-odd";
         } else {
             row.className = "minerva-annotation-row-even";
@@ -249,7 +253,7 @@ GuiUtils.prototype.createAnnotationList = function (annotations, options) {
     }
 
     result.appendChild(groupContainer);
-  }
+  });
 
   // for (var i = 0; i < annotations.length; i++) {
   //   var element = annotations[i];
diff --git a/frontend-js/src/main/js/map/data/Annotation.js b/frontend-js/src/main/js/map/data/Annotation.js
index 3398556e91..1496051649 100644
--- a/frontend-js/src/main/js/map/data/Annotation.js
+++ b/frontend-js/src/main/js/map/data/Annotation.js
@@ -15,6 +15,7 @@ function Annotation(javaObject) {
     }
     this.setType(javaObject.getType());
     this.setResource(javaObject.getResource());
+    this.setDescription(javaObject.getDescription());
   } else {
     this.setLink(javaObject.link);
     this.setId(javaObject.id);
@@ -23,6 +24,7 @@ function Annotation(javaObject) {
     }
     this.setType(javaObject.type);
     this.setResource(javaObject.resource);
+    this.setDescription(javaObject.description);
   }
 }
 
@@ -72,4 +74,12 @@ Annotation.prototype.getArticle = function() {
   return this._article;
 };
 
+Annotation.prototype.setDescription = function(description) {
+  this._description = description;
+};
+
+Annotation.prototype.getDescription = function() {
+  return this._description;
+};
+
 module.exports = Annotation;
-- 
GitLab