diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css index a4164f27c42f09b6099346093debd292b017941a..d47e637925546ea4e768f4339a62641ce0aa35bb 100644 --- a/frontend-js/src/main/css/global.css +++ b/frontend-js/src/main/css/global.css @@ -677,14 +677,14 @@ a.adminLink:hover { .minerva-login-form { height: 100%; - background-color:#FFFFFF; - box-shadow:0 3px 30px #B9B9B9; - width:320px; - padding:20px; - margin:20px auto; - color:#666666; - font-size:13px; - font-weight:900; + background-color: #FFFFFF; + box-shadow: 0 3px 30px #B9B9B9; + width: 320px; + padding: 20px; + margin: 20px auto; + color: #666666; + font-size: 13px; + font-weight: 900; } .minerva-login-form-title { @@ -705,21 +705,51 @@ a.adminLink:hover { font-weight: 900 } -.minerva-ol-bottom-left{ +.minerva-ol-bottom-left { bottom: .5em; left: .5em; } -.minerva-ol-bottom-right{ +.minerva-ol-bottom-right { bottom: .5em; right: .5em; } -.minerva-ol-top-right{ +.minerva-ol-top-right { top: .5em; right: .5em; } .popover { max-width: 600px; +} + +/* +https://www.w3schools.com/css/tryit.asp?filename=trycss_tooltip + */ +.minerva-tooltip { + position: relative; + display: inline-block; +} + +.minerva-tooltip .minerva-tooltip-text { + visibility: hidden; + width: 120px; + background-color: black; + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px 0; + + /* Position the tooltip */ + position: absolute; + z-index: 1; +} + +.minerva-tooltip:hover .minerva-tooltip-text { + visibility: visible; +} + +.minerva-overlay-panel { + overflow-x: hidden; } \ No newline at end of file diff --git a/frontend-js/src/main/js/gui/AbstractGuiElement.js b/frontend-js/src/main/js/gui/AbstractGuiElement.js index b44f29a2d774fa5a69ef2bb193b58f0cb60d7a71..3ba1e7fdc6fd227ac9871e8fd87e19a625c9c160 100644 --- a/frontend-js/src/main/js/gui/AbstractGuiElement.js +++ b/frontend-js/src/main/js/gui/AbstractGuiElement.js @@ -179,4 +179,5 @@ AbstractGuiElement.prototype.askConfirmRemoval = function (params) { }) }; + module.exports = AbstractGuiElement; diff --git a/frontend-js/src/main/js/gui/AddOverlayDialog.js b/frontend-js/src/main/js/gui/AddOverlayDialog.js index 2e4cd33aa17e91782800ecb7cb82aacb18b12ac6..8d730471ae36be7564ed0b13bdb6f4778a0c8c91 100644 --- a/frontend-js/src/main/js/gui/AddOverlayDialog.js +++ b/frontend-js/src/main/js/gui/AddOverlayDialog.js @@ -179,8 +179,13 @@ AddOverlayDialog.prototype.addOverlay = function () { }); }; +/** + * + * @returns {PromiseLike} + */ AddOverlayDialog.prototype.destroy = function () { $(this.getElement()).dialog("destroy"); + return Promise.resolve(); }; AddOverlayDialog.prototype.open = function () { diff --git a/frontend-js/src/main/js/gui/Panel.js b/frontend-js/src/main/js/gui/Panel.js index 5d9f683e9556dc4d1c155959367597057e383ac8..9c234d065372159976581817d35a9dcf62de9bfb 100644 --- a/frontend-js/src/main/js/gui/Panel.js +++ b/frontend-js/src/main/js/gui/Panel.js @@ -77,7 +77,7 @@ Panel.prototype.disablePanel = function (message) { var self = this; $(self.getElement()).children().css("visibility", "hidden"); - $("[class='minerva-help-button']",self.getElement()).children().css("visibility", "visible"); + $("[class='minerva-help-button']", self.getElement()).children().css("visibility", "visible"); var hideReasonDiv = document.createElement("div"); hideReasonDiv.className = "searchPanel"; @@ -99,14 +99,6 @@ Panel.prototype.setMap = function (map) { this._map = map; }; -/** - * - * @returns {CustomMap} - */ -Panel.prototype.getMap = function () { - return this._map; -}; - Panel.prototype.setPanelName = function (panelName) { this._panelName = panelName; }; @@ -304,4 +296,13 @@ Panel.prototype.destroy = function () { } }; +/** + * + * @returns {ServerConnector} + */ +Panel.prototype.getServerConnector = function () { + return this.getMap().getServerConnector(); +}; + + module.exports = Panel; diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index c538683bfd90e4d0d46cc0ac57b47951fc427bd8..0a0034794fb980e5ab5bc8061c5836333f2e7d61 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -13,14 +13,29 @@ var Functions = require('../../Functions'); var Promise = require('bluebird'); +/** + * + * @param {Object} params + * @param {Configuration} [params.configuration] + * @param {HTMLElement} params.element + * @param {Project} params.project + * @param {CustomMap} params.customMap + * @param params.parent + * @constructor + * @extends Panel + */ function OverlayPanel(params) { - params.panelName = "overlays"; - params.scrollable = true; - params.helpTip = "
Overlays tab allows to display or generate custom coloring of elements and interactions in the map.
" + params["panelName"] = "overlays"; + params["scrollable"] = true; + params["helpTip"] = "Overlays tab allows to display or generate custom coloring of elements and interactions in the map.
" + "General overlays are overlays accessible for every user viewing the content.
" + "Custom overlays are user-provided overlays, this menu becomes available upon login (see below).
"; Panel.call(this, params); + //overflow is defined in minerva-overlay-panel, so remove the one that is already there + $(params.element).css("overflow", ""); + $(params.element).addClass("minerva-overlay-panel"); + var self = this; self._createOverlayPanelGui(); @@ -64,7 +79,7 @@ function OverlayPanel(params) { }); $(self.getElement()).on("click", "[name='download-overlay']", function () { var overlayId = $(this).attr("data"); - return ServerConnector.getOverlaySourceDownloadUrl({ + return self.getServerConnector().getOverlaySourceDownloadUrl({ overlayId: overlayId }).then(function (url) { return self.downloadFile(url); @@ -81,6 +96,10 @@ function OverlayPanel(params) { OverlayPanel.prototype = Object.create(Panel.prototype); OverlayPanel.prototype.constructor = OverlayPanel; +/** + * + * @private + */ OverlayPanel.prototype._createOverlayPanelGui = function () { var generalOverlaysDiv = Functions.createElement({ type: "div", @@ -156,7 +175,15 @@ OverlayPanel.prototype.clear = function () { table.clear().draw(); }; +/** + * + * @param {boolean} [edit=false] + * @returns {HTMLElement} + */ OverlayPanel.prototype.createTableHeader = function (edit) { + if (edit === undefined) { + edit = false; + } var result = document.createElement("thead"); var row = document.createElement("tr"); @@ -183,6 +210,12 @@ OverlayPanel.prototype.createTableHeader = function (edit) { return result; }; +/** + * + * @param {DataOverlay} overlay + * @param {boolean} checked + * @returns {HTMLElement} + */ OverlayPanel.prototype.createOverlayRow = function (overlay, checked) { var self = this; var guiUtils = self.getGuiUtils(); @@ -243,12 +276,13 @@ OverlayPanel.prototype.createOverlayRow = function (overlay, checked) { return result; }; +/** + * + * @param {DataOverlay} overlay + * @param {boolean} checked + * @returns {Array} + */ OverlayPanel.prototype.overlayToDataRow = function (overlay, checked) { - // if (checked && !overlay.getInputDataAvailable()) { - // result.className = "active"; - // } - // result.title = overlay.getDescription(); - var result = []; result[0] = overlay.getOrder(); result[1] = overlay.getName(); @@ -270,9 +304,21 @@ OverlayPanel.prototype.overlayToDataRow = function (overlay, checked) { } else { result[4] = ""; } + if (overlay.getDescription() !== "") { + for (var i = 0; i < result.length; i++) { + + result[i] = "