From 9b6e09111e7fbeec4ee359c84b54d86efcd9ce94 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 11 Aug 2017 16:27:15 +0200
Subject: [PATCH] tab creation extracted to guiUtils

---
 frontend-js/src/main/js/Admin.js              | 49 ++++++++-----------
 .../src/main/js/gui/AbstractGuiElement.js     |  1 +
 .../src/main/js/gui/leftPanel/GuiUtils.js     | 44 +++++++++++++++++
 3 files changed, 65 insertions(+), 29 deletions(-)

diff --git a/frontend-js/src/main/js/Admin.js b/frontend-js/src/main/js/Admin.js
index 2a6bd0e150..184b29648f 100644
--- a/frontend-js/src/main/js/Admin.js
+++ b/frontend-js/src/main/js/Admin.js
@@ -6,6 +6,7 @@ var Promise = require("bluebird");
 
 var CustomMapOptions = require('./map/CustomMapOptions');
 var Header = require('./gui/Header');
+var GuiUtils = require('./gui/leftPanel/GuiUtils');
 var ObjectWithListeners = require('./ObjectWithListeners');
 
 var CommentsAdminPanel = require('./gui/admin/CommentsAdminPanel');
@@ -35,6 +36,7 @@ function Admin(options) {
   self.setElement(options.getElement());
 
   self.setConfiguration(options.getConfiguration());
+  self.setGuiUtils(new GuiUtils());
   self._createGui();
 }
 
@@ -99,39 +101,20 @@ Admin.prototype._createGui = function() {
 Admin.prototype.addTab = function(params, navElement, contentElement) {
   var self = this;
 
-  var name = params.name;
-
-  var tabId = "export_panel_tab_" + this._tabIdCount;
+  var tabId = "admin_panel_tab_" + this._tabIdCount;
   self._tabIdCount++;
 
-  var navClass = '';
-  var contentClass = 'tab-pane';
-  if (navElement.children.length === 0) {
-    navClass = "active";
-    contentClass = "tab-pane active";
-  }
-
-  var navLi = document.createElement("li");
-  navLi.className = navClass;
-
-  var navLink = document.createElement("a");
-  navLink.href = "#" + tabId;
-  if (name !== undefined) {
-    navLink.innerHTML = name;
-  }
-  navLink.onclick = function() {
-    $(this).tab('show');
-  };
-  navLi.appendChild(navLink);
-  if (name !== undefined) {
-    navLink.innerHTML = name;
-  }
+  var navLi = self.getGuiUtils().createTabMenuObject({
+    id : tabId,
+    name : params.name,
+    navigationBar : navElement
+  });
   navElement.appendChild(navLi);
 
-  var contentDiv = document.createElement("div");
-  contentDiv.style.height = "100%";
-  contentDiv.className = contentClass;
-  contentDiv.id = tabId;
+  var contentDiv = self.getGuiUtils().createTabContentObject({
+    id : tabId,
+    navigationObject :navLi,
+  });
 
   contentElement.appendChild(contentDiv);
 
@@ -182,4 +165,12 @@ Admin.prototype.getHeader = function() {
   return this._header;
 };
 
+Admin.prototype.setGuiUtils = function(guiUtils) {
+  this._guiUtils = guiUtils;
+};
+
+Admin.prototype.getGuiUtils = function() {
+  return this._guiUtils;
+};
+
 module.exports = Admin;
diff --git a/frontend-js/src/main/js/gui/AbstractGuiElement.js b/frontend-js/src/main/js/gui/AbstractGuiElement.js
index f9a0d78f31..6f52b63cd0 100644
--- a/frontend-js/src/main/js/gui/AbstractGuiElement.js
+++ b/frontend-js/src/main/js/gui/AbstractGuiElement.js
@@ -88,4 +88,5 @@ AbstractGuiElement.prototype.getLastDownloadUrl = function() {
   return this._downloadFile;
 };
 
+
 module.exports = AbstractGuiElement;
diff --git a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
index c5c25e7d03..ecaa7d025f 100644
--- a/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
+++ b/frontend-js/src/main/js/gui/leftPanel/GuiUtils.js
@@ -413,4 +413,48 @@ GuiUtils.prototype.createModifiersLine = function(label, value) {
   return result;
 };
 
+GuiUtils.prototype.createTabMenuObject = function(params) {
+  var name = params.name;
+  var id = params.id;
+  var navigationBar = params.navigationBar;
+
+  var navClass = '';
+  if (navigationBar.children.length === 0) {
+    navClass = "active";
+  }
+
+  var navLi = document.createElement("li");
+  navLi.className = navClass;
+
+  var navLink = document.createElement("a");
+  navLink.href = "#" + id;
+  if (name !== undefined) {
+    navLink.innerHTML = name;
+  }
+  navLink.onclick = function() {
+    $(this).tab('show');
+  };
+  navLi.appendChild(navLink);
+  if (name !== undefined) {
+    navLink.innerHTML = name;
+  }
+  return navLi;
+};
+
+GuiUtils.prototype.createTabContentObject = function(params) {
+  var navigationObject = params.navigationObject;
+  var tabId = params.id;
+  var result = document.createElement("div");
+  result.style.height = "100%";
+
+  var contentClass = 'tab-pane';
+  if (navigationObject.className === "active") {
+    contentClass = "tab-pane active";
+  }
+
+  result.className = contentClass;
+  result.id = tabId;
+  return result;
+};
+
 module.exports = GuiUtils;
-- 
GitLab