diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css index 53d094025ecdb917f1c7b9e29a42ce71e2e0e5fd..9500a2d694b9fa26759f0673dd88022498c4ada8 100644 --- a/frontend-js/src/main/css/global.css +++ b/frontend-js/src/main/css/global.css @@ -71,7 +71,7 @@ left: 0 } -.menuBelt { +.minerva-top-menu { width: 100%; min-height: 36px; height: auto; @@ -186,7 +186,7 @@ -webkit-border-vertical-spacing: 2px; } -.mapClass { +.minerva-map { position: absolute; top: 36px; bottom: 0; @@ -378,8 +378,13 @@ table.minerva-window-drug-table td { border: 1px solid black; } +.minerva-root { + display: flex; + width: 100%; + height: 100%; +} + .minerva-left-panel { - display: table-cell; position: relative; float: left; border: none; @@ -400,6 +405,29 @@ table.minerva-window-drug-table td { line-height: 24px; } +.minerva-middle-panel { + height: 100%; + width: 100%; +} + +.minerva-middle-panel > div { + height: 100%; + width: 100%; + position: relative; +} + +.minerva-plugin-split-bar { + width: 5px; + height: 100%; + clear: both; + vertical-align: top; + border-left: 1px dotted gray; + cursor: col-resize; +} + +.minerva-plugin { +} + .minerva-annotation-row-odd { padding: 5px; background-color: #EAEAEA; diff --git a/frontend-js/src/main/js/Functions.js b/frontend-js/src/main/js/Functions.js index 98c49e6d3fad52e204f2c60387d471c59acd33e6..8463ed20aca1303186807c1b202ca9261d24b01d 100644 --- a/frontend-js/src/main/js/Functions.js +++ b/frontend-js/src/main/js/Functions.js @@ -260,6 +260,20 @@ Functions.getElementByName = function (element, name) { return undefined; }; + +/** + * + * @param {HTMLElement}element + * @param {string} name class name + * @returns {HTMLElement|undefined} + */ +Functions.getElementByClassName = function (element, name) { + if (name.indexOf(".") !== 0) { + name = "." + name; + } + return $(name, element)[0]; +}; + /** * * @param {Object} params diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index be76c9e0411cb4a2af9d89c52954cab40c5a2e94..700e558c6e7b70d37b78c7298c0234726a248a10 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -147,55 +147,46 @@ function insertGoogleAnalyticsCode() { function createDivStructure(element) { var tableDiv = functions.createElement({ type: "div", - style: "display: table; width:100%; height: 100%" + className: "minerva-root" }); element.appendChild(tableDiv); var leftPanelDiv = functions.createElement({ type: "div", - name: "leftPanelDiv", className: "minerva-left-panel" }); tableDiv.appendChild(leftPanelDiv); var middlePanelDiv = functions.createElement({ type: "div", - style: "display: table-cell;height:100%;width:100%;", - name: "minerva-middle-panel" + className: "minerva-middle-panel" }); tableDiv.appendChild(middlePanelDiv); - var middlePanelContainerDiv = functions.createElement({ - type: "div", - style: "height:100%;width:100%;position:relative" - }); + //this container is required because google maps API modifies DOM and it will crash + var middlePanelContainerDiv = functions.createElement({type: "div"}); middlePanelDiv.appendChild(middlePanelContainerDiv); var splitBar = functions.createElement({ type: "div", - name: "minerva-plugin-split-bar", - style: "width:5px;height:100%;clear: both;display: table-cell;vertical-align:top;border-left:1px dotted gray;cursor:col-resize", + className: "minerva-plugin-split-bar", content: " " }); - element.appendChild(splitBar); + tableDiv.appendChild(splitBar); var rightPanelDiv = functions.createElement({ type: "div", - className: "minerva-plugin", - style: "display: table-cell;", - name: "minerva-plugin-div" + className: "minerva-plugin" }); - element.appendChild(rightPanelDiv); + tableDiv.appendChild(rightPanelDiv); var menuDiv = functions.createElement({ type: "div", - name: "menuDiv", - className: "menuBelt" + className: "minerva-top-menu" }); middlePanelContainerDiv.appendChild(menuDiv); var mapDiv = functions.createElement({ type: "div", - name: "mapDiv", - className: "mapClass" + className: "minerva-map" }); middlePanelContainerDiv.appendChild(mapDiv); @@ -273,13 +264,13 @@ function modifyParamsForTouchTable(params) { } function assignSplitBarHandler(customMap, pluginManager) { - var splitBar = $('[name="minerva-plugin-split-bar"]'); - var rightPanelDiv = $('[name="minerva-plugin-div"]'); + var splitBar = $('.minerva-plugin-split-bar'); + var rightPanelDiv = $('.minerva-plugin'); var mouseDownHandler = function (e) { e.preventDefault(); //TODO should use global size (but element size) var x = $("body").width() - e.pageX; - $(rightPanelDiv).css("width", x); + $(rightPanelDiv).css("flex", "0 0 " + x + "px"); customMap.getMapCanvas().triggerListeners('resize'); return pluginManager.callListeners("onResize"); }; @@ -299,9 +290,8 @@ function create(params) { } params.setServerConnector(ServerConnector); initGlobals(params); - params.getElement().style.display = "table"; - params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>" - + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>"; + params.getElement().innerHTML = "<div style='position:relative; width:100%;height:100%'>" + + "<img src='resources/images/icons/ajax-loader.gif' style='position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;'/>" + "</div>"; // make sure that we are logged in return ServerConnector.createSession().then(function () { @@ -321,7 +311,7 @@ function create(params) { promise = functions.loadScript("https://maps.google.com/maps/api/js?libraries=drawing&key=" + params.getConfiguration().getOption(ConfigurationType.GOOGLE_MAPS_API_KEY).getValue()); } return promise; - }).then(function(){ + }).then(function () { var element = params.getElement(); verifyBrowser(); @@ -330,7 +320,7 @@ function create(params) { params.getElement().innerHTML = ""; createDivStructure(element); - params.setElement(functions.getElementByName(element, "mapDiv")); + params.setElement(functions.getElementByClassName(element, "minerva-map")); customMap = new CustomMap(params); @@ -340,12 +330,12 @@ function create(params) { }); leftPanel = new LeftPanel({ - element: functions.getElementByName(element, "leftPanelDiv"), + element: functions.getElementByClassName(element, "minerva-left-panel"), customMap: customMap }); var pluginManager = new PluginManager({ - element: functions.getElementByName(element, "minerva-plugin-div"), + element: functions.getElementByClassName(element, "minerva-plugin"), map: customMap, project: params.getProject(), configuration: params.getConfiguration() @@ -354,7 +344,7 @@ function create(params) { assignSplitBarHandler(customMap, pluginManager); topMenu = new TopMenu({ - element: functions.getElementByName(element, "menuDiv"), + element: functions.getElementByClassName(element, "minerva-top-menu"), customMap: customMap });