From b5925b3501deae597ef12dee27937aa7569cd5cf Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 7 Apr 2017 16:07:45 +0200
Subject: [PATCH] overlay panel isgenerated via javascript

---
 frontend-js/src/main/js/gui/OverlayPanel.js   | 99 +++++++++----------
 .../main/js/gui/PanelControlElementType.js    |  8 ++
 .../src/test/js/gui/OverlayPanel-test.js      |  2 +-
 3 files changed, 58 insertions(+), 51 deletions(-)

diff --git a/frontend-js/src/main/js/gui/OverlayPanel.js b/frontend-js/src/main/js/gui/OverlayPanel.js
index 483a9f38af..8a6c337356 100644
--- a/frontend-js/src/main/js/gui/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/OverlayPanel.js
@@ -3,9 +3,11 @@
 /* exported logger */
 
 var Panel = require('./Panel');
+var PanelControlElementType = require('./PanelControlElementType');
 
 var GuiConnector = require('../GuiConnector');
 var logger = require('../logger');
+var Functions = require('../Functions');
 
 function OverlayPanel(params) {
   params.panelName = "overlays";
@@ -13,32 +15,16 @@ function OverlayPanel(params) {
 
   var self = this;
 
-  if (self.getGeneralOverlaysElement() === undefined) {
-    throw new Error("Couldn't find element: generalOverlays");
-  }
-  if (self.getGeneralOverlaysTabElement() === undefined) {
-    throw new Error("Couldn't find element: generalOverlaysTab");
-  }
-  if (self.getCustomOverlaysElement() === undefined) {
-    throw new Error("Couldn't find element: customOverlays");
-  }
-  if (self.getCustomOverlaysTitleElement() === undefined) {
-    throw new Error("Couldn't find element: customOverlaysTitle");
-  }
-
-  if (self.getCustomOverlaysTabElement() === undefined) {
-    throw new Error("Couldn't find element: customOverlaysTab");
-  }
+  self._createOverlayPanelGui();
 
-  if (self.getAddButtonElement() === undefined) {
-    throw new Error("Couldn't find element: getAddButtonElement");
-  } else {
-    self.getAddButtonElement().onclick = function(){
-      self.openAddOverlayDialog();
-    };
-  }
+  var addButton =  this.getControlElement(PanelControlElementType.OVERLAY_ADD_OVERLAY_BUTTON);
+ 
+  addButton.onclick = function(){
+    self.openAddOverlayDialog();
+  };
 
-  self.setCustomOverlaysMessage(self.getCustomOverlaysTitleElement().innerHTML);
+  var titleElement = this.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TITLE);
+  self.setCustomOverlaysMessage(titleElement.innerHTML);
 
   self.refresh();
 }
@@ -46,13 +32,46 @@ function OverlayPanel(params) {
 OverlayPanel.prototype = Object.create(Panel.prototype);
 OverlayPanel.prototype.constructor = OverlayPanel;
 
+OverlayPanel.prototype._createOverlayPanelGui = function() {
+  var generalOverlaysDiv = Functions.createElement({type:"div", name:"generalOverlays", className:"searchPanel" });
+  this.getElement().appendChild(generalOverlaysDiv);
+  this.setControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_DIV, generalOverlaysDiv);
+
+  var generalOverlaysTitle = Functions.createElement({type:"h5", content:"GENERAL OVERLAYS:"} );
+  generalOverlaysDiv.appendChild(generalOverlaysTitle);
+
+  var generalOverlaysTableDiv = Functions.createElement({type:"table",name:"generalOverlaysTab",className:"table table-bordered", style: "width:100%"});
+  generalOverlaysDiv.appendChild(generalOverlaysTableDiv);
+  this.setControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_TABLE, generalOverlaysTableDiv);
+  
+  
+  var customOverlaysDiv = Functions.createElement({type:"div", name:"customOverlays", className:"searchPanel" });
+  this.getElement().appendChild(customOverlaysDiv);
+  this.setControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_DIV, customOverlaysDiv);
+
+  var generalOverlaysTitle = Functions.createElement({type:"h5", name:"customOverlaysTitle", content:"USER-PROVIDED OVERLAYS:"} );
+  customOverlaysDiv.appendChild(generalOverlaysTitle);
+  this.setControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TITLE, generalOverlaysTitle);
+
+  var customOverlaysTableDiv = Functions.createElement({type:"table",name:"customOverlaysTab",className:"table table-bordered", style: "width:100%"});
+  customOverlaysDiv.appendChild(customOverlaysTableDiv);
+  this.setControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TABLE, customOverlaysTableDiv);
+  
+  var centerTag = Functions.createElement({type:"center"} );
+  customOverlaysDiv.appendChild(centerTag);
+
+  var addOverlayButton = Functions.createElement({type:"button", name:"addOverlay"} );
+  centerTag.appendChild(addOverlayButton);
+  this.setControlElement(PanelControlElementType.OVERLAY_ADD_OVERLAY_BUTTON, addOverlayButton);
+};
+
 OverlayPanel.prototype.clear = function() {
-  var table = this.getGeneralOverlaysTabElement();
+  var table = this.getControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_TABLE);
   while (table.firstChild) {
     table.removeChild(table.firstChild);
   }
 
-  table = this.getCustomOverlaysTabElement();
+  table = this.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TABLE);
   while (table.firstChild) {
     table.removeChild(table.firstChild);
   }
@@ -242,7 +261,8 @@ OverlayPanel.prototype.refresh = function() {
       }
     }
 
-    var table = self.getGeneralOverlaysTabElement();
+    
+    var table = self.getControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_TABLE);
     table.appendChild(self.createTableHeader());
 
     var body = document.createElement("tbody");
@@ -252,8 +272,8 @@ OverlayPanel.prototype.refresh = function() {
       body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()]));
     }
 
-    var title = self.getCustomOverlaysTitleElement();
-    var addButton = self.getAddButtonElement();
+    var title = self.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TABLE);
+    var addButton = self.getControlElement(PanelControlElementType.OVERLAY_ADD_OVERLAY_BUTTON);
     if (user.getLogin() === "anonymous") {
       title.innerHTML = "YOU ARE NOT LOGGED IN. PLEASE, LOG IN TO UPLOAD AND VIEW CUSTOM OVERLAYS";
       addButton.style.display="none";
@@ -276,27 +296,6 @@ OverlayPanel.prototype.refresh = function() {
   });
 };
 
-OverlayPanel.prototype.getGeneralOverlaysElement = function() {
-  return this.getElementByName(this.getElement(), "generalOverlays");
-};
-
-OverlayPanel.prototype.getGeneralOverlaysTabElement = function() {
-  return this.getElementByName(this.getElement(), "generalOverlaysTab");
-};
-
-OverlayPanel.prototype.getCustomOverlaysElement = function() {
-  return this.getElementByName(this.getElement(), "customOverlays");
-};
-OverlayPanel.prototype.getCustomOverlaysTitleElement = function() {
-  return this.getElementByName(this.getElement(), "customOverlaysTitle");
-};
-OverlayPanel.prototype.getAddButtonElement = function() {
-  return this.getElementByName(this.getElement(), "addOverlay");
-};
-OverlayPanel.prototype.getCustomOverlaysTabElement = function() {
-  return this.getElementByName(this.getElement(), "customOverlaysTab");
-};
-
 OverlayPanel.prototype.setCustomOverlaysMessage = function(customOverlaysMessage) {
   this._customOverlaysMessage = customOverlaysMessage;
 };
diff --git a/frontend-js/src/main/js/gui/PanelControlElementType.js b/frontend-js/src/main/js/gui/PanelControlElementType.js
index 7bfe18a224..4cac36518e 100644
--- a/frontend-js/src/main/js/gui/PanelControlElementType.js
+++ b/frontend-js/src/main/js/gui/PanelControlElementType.js
@@ -10,6 +10,14 @@ var PanelControlElementType = {
   SEARCH_RESULTS_CONTENT_TAB : "SEARCH_RESULTS_CONTENT_TAB",
 
   SEARCH_PERFECT_MATCH_CHECKBOX : "SEARCH_PERFECT_MATCH_CHECKBOX",
+
+  OVERLAY_GENERAL_OVERLAY_DIV : "OVERLAY_GENERAL_OVERLAY_DIV",
+  OVERLAY_GENERAL_OVERLAY_TABLE : "OVERLAY_GENERAL_OVERLAY_TABLE",  
+  OVERLAY_CUSTOM_OVERLAY_DIV : "OVERLAY_CUSTOM_OVERLAY_DIV",
+  OVERLAY_CUSTOM_OVERLAY_TABLE : "OVERLAY_CUSTOM_OVERLAY_TABLE",
+  OVERLAY_CUSTOM_OVERLAY_TITLE : "OVERLAY_CUSTOM_OVERLAY_TITLE",
+  OVERLAY_ADD_OVERLAY_BUTTON : "OVERLAY_ADD_OVERLAY_BUTTON",
+
 };
 
 module.exports = PanelControlElementType;
diff --git a/frontend-js/src/test/js/gui/OverlayPanel-test.js b/frontend-js/src/test/js/gui/OverlayPanel-test.js
index c86798bb18..8f9fd556af 100644
--- a/frontend-js/src/test/js/gui/OverlayPanel-test.js
+++ b/frontend-js/src/test/js/gui/OverlayPanel-test.js
@@ -18,7 +18,7 @@ describe('OverlayPanel', function() {
   });
 
   it('contructor', function() {
-    var div = helper.createOverlayTab();
+    var div = document.createElement("div");
 
     var map = helper.createCustomMap();
 
-- 
GitLab