From 088be9ac185ef96f581e812a031bbac54824f1be Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 21 Sep 2018 16:23:20 +0200
Subject: [PATCH] createSubMapLink signature change to allow className property

---
 .../src/main/js/gui/leftPanel/GuiUtils.js     | 38 +++++++++++--------
 .../test/js/gui/leftPanel/GuiUtils-test.js    | 20 +++++++++-
 2 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
index a8aa035763..451da25cd6 100644
--- a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
+++ b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
@@ -548,22 +548,24 @@ GuiUtils.prototype.createArrayParamLine = function (label, value) {
 
 /**
  *
- * @param {string} label
- * @param {number} [modelId]
+ * @param {Object} params
+ * @param {string} params.label
+ * @param {number} [params.mapId]
+ * @param {string} [params.className]
  * @returns {HTMLDivElement}
  */
-GuiUtils.prototype.createSubMapLink = function (label, modelId) {
+GuiUtils.prototype.createSubMapLink = function (params) {
   var self = this;
-  var result = document.createElement("div");
-  if (modelId !== undefined) {
+  var result = Functions.createElement({type: "div", className: params.className});
+  if (params.mapId !== undefined) {
     var button = document.createElement("button");
-    var model = self.getMap().getSubmapById(modelId).getModel();
+    var model = self.getMap().getSubmapById(params.mapId).getModel();
 
     button.innerHTML = model.getName();
     button.onclick = function () {
-      return self.getMap().openSubmap(modelId);
+      return self.getMap().openSubmap(params.mapId);
     };
-    result.appendChild(this.createLabel(label));
+    result.appendChild(this.createLabel(params.label));
     result.appendChild(button);
   }
   return result;
@@ -617,14 +619,16 @@ GuiUtils.prototype.createReactionElement = function (params) {
     });
     titleDiv.appendChild(self.createLabel("Reaction: " + reaction.getReactionId()));
     if (reaction.getModelId() !== self.getMap().getId()) {
-      titleDiv.appendChild(self.createSubMapLink("In submap: ", reaction.getModelId()));
+      titleDiv.appendChild(self.createSubMapLink({label: "In submap: ", mapId: reaction.getModelId()}));
     }
     div.appendChild(titleDiv);
   }
 
-  if (self.getConfiguration().getBooleanValue(ConfigurationType.SHOW_REACTION_LINKED_SUBMAP)) {
-    div.appendChild(self.createSubMapLink("Associated submap: ", reaction.getLinkedSubmodelId()));
-  }
+  div.appendChild(self.createSubMapLink({
+    label: "Associated submap: ",
+    mapId: reaction.getLinkedSubmodelId(),
+    className: self._configurationOptionToClassName(ConfigurationType.SHOW_REACTION_LINKED_SUBMAP)
+  }));
   if (showTitle) {
     div.appendChild(self.createNewLine());
   }
@@ -751,12 +755,14 @@ GuiUtils.prototype.createAliasElement = function (params) {
 
     div.appendChild(this.createParamLine({label: alias.getType() + ": ", value: alias.getName()}));
     if (alias.getModelId() !== self.getMap().getId()) {
-      div.appendChild(self.createSubMapLink("In submap: ", alias.getModelId()));
+      div.appendChild(self.createSubMapLink({label: "In submap: ", mapId: alias.getModelId()}));
     }
   }
-  if ((self.getConfiguration().getBooleanValue(ConfigurationType.SHOW_ELEMENT_LINKED_SUBMAP))) {
-    div.appendChild(self.createSubMapLink("Associated submap: ", alias.getLinkedSubmodelId()));
-  }
+  div.appendChild(self.createSubMapLink({
+    label: "Associated submap: ",
+    mapId: alias.getLinkedSubmodelId(),
+    className: self._configurationOptionToClassName(ConfigurationType.SHOW_ELEMENT_LINKED_SUBMAP)
+  }));
   if ((self.getConfiguration().getBooleanValue(ConfigurationType.SHOW_ELEMENT_GROUP_SIZE))) {
     if (alias instanceof SearchBioEntityGroup && alias.getBioEntities().length > 1) {
       div.appendChild(self.createLabelText("Group of " + alias.getBioEntities().length + " elements."));
diff --git a/frontend-js/src/test/js/gui/leftPanel/GuiUtils-test.js b/frontend-js/src/test/js/gui/leftPanel/GuiUtils-test.js
index a51191a65c..a4d5d1fced 100644
--- a/frontend-js/src/test/js/gui/leftPanel/GuiUtils-test.js
+++ b/frontend-js/src/test/js/gui/leftPanel/GuiUtils-test.js
@@ -85,7 +85,7 @@ describe('GuiUtils', function () {
 
     var guiUtils = createGuiUtils(map);
 
-    var res = guiUtils.createSubMapLink("TEST", map.getId());
+    var res = guiUtils.createSubMapLink({label: "TEST", mapId: map.getId()});
     assert.ok(res.innerHTML);
   });
 
@@ -124,6 +124,24 @@ describe('GuiUtils', function () {
       var reactionId = "XX ID";
       reaction.setReactionId(reactionId);
 
+      return guiUtils.createReactionElement({reaction: reaction}).then(function (div) {
+        assert.ok(div.innerHTML.indexOf(reactionId) >= 0);
+      })
+    });
+    it('in submap', function () {
+      var project = helper.createProject();
+      project.addModel(helper.createModel());
+      var map = helper.createCustomMap(project);
+      helper.createSearchDbOverlay(map);
+
+      var guiUtils = createGuiUtils(map);
+
+      var reaction = helper.createReaction(map);
+      var reactionId = "XX ID";
+
+      reaction.setReactionId(reactionId);
+      reaction.setModelId(project.getModels()[1].getId());
+
       return guiUtils.createReactionElement({reaction: reaction}).then(function (div) {
         assert.ok(div.innerHTML.indexOf(reactionId) >= 0);
       })
-- 
GitLab