From a77d8faeb54cdc25fb2febf44b0308355486db95 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 22 Jun 2017 11:36:22 +0200
Subject: [PATCH] scrollbar panel functionality improved, info panel is
 scrollabel

---
 .../main/js/gui/leftPanel/AbstractDbPanel.js   |  8 --------
 .../src/main/js/gui/leftPanel/OverlayPanel.js  | 10 +---------
 frontend-js/src/main/js/gui/leftPanel/Panel.js | 18 ++++++++++++++++++
 .../main/js/gui/leftPanel/ProjectInfoPanel.js  |  1 +
 4 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
index 863d766c62..ba9ae3d1ac 100644
--- a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
@@ -57,14 +57,6 @@ AbstractPanel.prototype._createEventHandlers = function() {
     return self.refreshSearchResults();
   });
 
-  GuiConnector.addWindowResizeEvent(function() {
-    self.onresize();
-  });
-
-  $("a[href='#" + self.getElement().id + "']").on('shown.bs.tab', function() {
-    self.onresize();
-  });
-
 };
 
 AbstractPanel.prototype._initializeGui = function() {
diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index fddd3d5066..4938fcc5f4 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -11,11 +11,11 @@ var Functions = require('../../Functions');
 
 function OverlayPanel(params) {
   params.panelName = "overlays";
+  params.scrollable = true;
   Panel.call(this, params);
 
   var self = this;
 
-  $(self.getElement()).addClass("pre-scrollable");
   self._createOverlayPanelGui();
 
   var addButton = this.getControlElement(PanelControlElementType.OVERLAY_ADD_OVERLAY_BUTTON);
@@ -27,13 +27,6 @@ function OverlayPanel(params) {
   var titleElement = this.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TITLE);
   self.setCustomOverlaysMessage(titleElement.innerHTML);
 
-  GuiConnector.addWindowResizeEvent(function() {
-    self.onresize();
-  });
-
-  $("a[href='#" + self.getElement().id + "']").on('shown.bs.tab', function() {
-    self.onresize();
-  });
 }
 
 OverlayPanel.prototype = Object.create(Panel.prototype);
@@ -333,7 +326,6 @@ OverlayPanel.prototype.refresh = function() {
     }
 
     self.onresize();
-    return null;
   });
 };
 
diff --git a/frontend-js/src/main/js/gui/leftPanel/Panel.js b/frontend-js/src/main/js/gui/leftPanel/Panel.js
index b5ae75c1fa..0c1d683e28 100644
--- a/frontend-js/src/main/js/gui/leftPanel/Panel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/Panel.js
@@ -18,6 +18,17 @@ function Panel(params) {
 
   this.setParent(params.parent);
 
+  if (params.scrollable) {
+    $(self.getElement()).addClass("pre-scrollable");
+  }
+
+  GuiConnector.addWindowResizeEvent(function() {
+    self.onresize();
+  });
+
+  $("a[href='#" + self.getElement().id + "']").on('shown.bs.tab', function() {
+    self.onresize();
+  });
 }
 
 Panel.prototype = Object.create(AbstractGuiElement.prototype);
@@ -419,11 +430,18 @@ Panel.prototype.onresize = function() {
       size = Math.min(size, footerPosition - $(element).offset().top);
     }
   });
+  if ($(self.getElement()).hasClass("pre-scrollable") && $(self.getElement()).is(":visible")) {
+    size = Math.min(size, footerPosition - $(self.getElement()).offset().top);
+  }
   if (size !== 100000) {
     $(".pre-scrollable", self.getElement()).each(function(index, element) {
       $(element).css('max-height', size);
     });
   }
+  if ($(self.getElement()).hasClass("pre-scrollable") && $(self.getElement()).is(":visible")) {
+    $(self.getElement()).css('max-height', size);
+  }
+
 };
 
 module.exports = Panel;
diff --git a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
index 5337f31a60..401965c26c 100644
--- a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
@@ -12,6 +12,7 @@ var Functions = require('../../Functions');
 
 function ProjectInfoPanel(params) {
   params.panelName = "info";
+  params.scrollable = true;
   Panel.call(this, params);
   var self = this;
   self._createInfoPanelGui();
-- 
GitLab