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