From 1ff23819b3a5f7d2052ad01d545afbc8619c6df8 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 1 Aug 2018 14:05:04 +0200
Subject: [PATCH] left panel uses gui utils for managing tabs

---
 .../src/main/js/gui/leftPanel/LeftPanel.js    | 75 +++++--------------
 1 file changed, 17 insertions(+), 58 deletions(-)

diff --git a/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js b/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js
index c9777db198..434d40fc09 100644
--- a/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js
@@ -36,12 +36,7 @@ var logger = require('../../logger');
 function LeftPanel(params) {
   AbstractGuiElement.call(this, params);
   var self = this;
-
-  this._tabIdCount = 0;
-  this._panels = [];
-
   self._createPanelGui();
-
 }
 
 LeftPanel.prototype = Object.create(AbstractGuiElement.prototype);
@@ -73,11 +68,7 @@ LeftPanel.prototype._createPanelGui = function () {
     customMap: self.getMap()
   }));
 
-  var guiUtils = self.getGuiUtils();
-  var tabData = guiUtils.createTabDiv({
-    element: self.getElement(),
-    id: "left_panel"
-  });
+  self.getGuiUtils().initTabContent(self);
 
   self.setHeader(header);
 
@@ -89,27 +80,27 @@ LeftPanel.prototype._createPanelGui = function () {
   });
 
   for (var i = 0; i < panels.length; i++) {
-    self.addTab(panels[i], tabData);
+    self.getGuiUtils().addTab(self, panels[i]);
   }
 };
 
 LeftPanel.prototype.getPanelsDefinition = function () {
   return [{
-    name: "SEARCH",
-    className: "fa-search",
-    panelClass: SearchPanel
+    name: "<div class='maintabdiv'><i class='fa fa-search maintab'></i><br>SEARCH</div>",
+    panelClass: SearchPanel,
+    options: {parent: this}
   }, {
-    name: "OVERLAYS",
-    className: "fa-th-list",
-    panelClass: OverlayPanel
+    name: "<div class='maintabdiv'><i class='fa fa-th-list maintab'></i><br>OVERLAYS</div>",
+    panelClass: OverlayPanel,
+    options: {parent: this}
   }, {
-    name: "SUBMAPS",
-    className: "fa-sitemap",
-    panelClass: SubmapPanel
+    name: "<div class='maintabdiv'><i class='fa fa-sitemap maintab'></i><br>SUBMAPS</div>",
+    panelClass: SubmapPanel,
+    options: {parent: this}
   }, {
-    name: "INFO",
-    className: "fa-info",
-    panelClass: ProjectInfoPanel
+    name: "<div class='maintabdiv'><i class='fa fa-info maintab'></i><br>INFO</div>",
+    panelClass: ProjectInfoPanel,
+    options: {parent: this}
   }];
 };
 
@@ -118,7 +109,7 @@ LeftPanel.prototype.hideTab = function (panel) {
   var panelDefinitions = self.getPanelsDefinition();
   for (var i = 0; i < panelDefinitions.length; i++) {
     if (panel instanceof panelDefinitions[i].panelClass) {
-      var liElement = $("li:has(a[data='left_tab_" + i + "'])", $(self.getElement()))[0];
+      var liElement = $("li:has(a[href='#" + panel.getElement().id + "'])", $(self.getElement()))[0];
       if (liElement !== undefined) {
         liElement.style.display = "none";
       } else {
@@ -189,9 +180,9 @@ LeftPanel.prototype.showElementDetails = function (element) {
     var model = self.getMap().getSubmapById(element.getModelId()).getModel();
     var bioEntity;
     return model.getByIdentifiedElement(element, true).then(function (result) {
-      bioEntity=result;
+      bioEntity = result;
       return self.prepareElementDetailsContent(bioEntity);
-    }).then(function(elementDetailsDiv){
+    }).then(function (elementDetailsDiv) {
       div.innerHTML = "";
       div.appendChild(elementDetailsDiv);
       $(div).dialog("open");
@@ -261,38 +252,6 @@ LeftPanel.prototype.getElementTitle = function (bioEntity) {
   }
 };
 
-LeftPanel.prototype.addTab = function (params, tabData) {
-  var self = this;
-
-  var name = params.name;
-  if (name !== undefined) {
-    if (name.length > 12) {
-      name = name.substring(0, 10) + "...";
-    }
-  } else {
-    name = "";
-  }
-
-
-  var guiUtils = self.getGuiUtils();
-  var data = guiUtils.createTab({
-    tabData: tabData,
-    title: '<div class="maintabdiv"><i class="fa ' + params.className + ' maintab"></i><br>' + name
-    + '</div>',
-    content: ""
-  });
-
-  $(data.title).attr("data", "left_tab_" + this._panels.length);
-
-  this._panels.push(new params.panelClass({
-    element: data.content,
-    customMap: self.getMap(),
-    configuration: self.getConfiguration(),
-    parent: self
-  }));
-
-};
-
 LeftPanel.prototype.hide = function () {
   this.getElement().style.display = "none";
 };
-- 
GitLab