From c0e8eae9ec3e113535bf1c217e1bc107f417bf5c Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 27 Jun 2017 17:48:39 +0200 Subject: [PATCH] export consist of three tabs: elements, network, graphics --- frontend-js/src/main/js/Export.js | 87 +++++++++++++++++++ .../src/main/js/gui/{leftPanel => }/Panel.js | 10 +-- .../main/js/gui/export/ElementExportPanel.js | 23 +++++ .../main/js/gui/export/GraphicsExportPanel.js | 23 +++++ .../main/js/gui/export/NetworkExportPanel.js | 23 +++++ .../main/js/gui/leftPanel/AbstractDbPanel.js | 2 +- .../src/main/js/gui/leftPanel/OverlayPanel.js | 2 +- .../main/js/gui/leftPanel/ProjectInfoPanel.js | 2 +- .../src/main/js/gui/leftPanel/SubmapPanel.js | 2 +- .../test/js/gui/{leftPanel => }/Panel-test.js | 8 +- 10 files changed, 169 insertions(+), 13 deletions(-) rename frontend-js/src/main/js/gui/{leftPanel => }/Panel.js (94%) create mode 100644 frontend-js/src/main/js/gui/export/ElementExportPanel.js create mode 100644 frontend-js/src/main/js/gui/export/GraphicsExportPanel.js create mode 100644 frontend-js/src/main/js/gui/export/NetworkExportPanel.js rename frontend-js/src/test/js/gui/{leftPanel => }/Panel-test.js (73%) diff --git a/frontend-js/src/main/js/Export.js b/frontend-js/src/main/js/Export.js index 311d4d1067..56646be12d 100644 --- a/frontend-js/src/main/js/Export.js +++ b/frontend-js/src/main/js/Export.js @@ -3,6 +3,9 @@ var Promise = require("bluebird"); var CustomMapOptions = require('./map/CustomMapOptions'); +var ElementExportPanel = require('./gui/export/ElementExportPanel'); +var GraphicsExportPanel = require('./gui/export/GraphicsExportPanel'); +var NetworkExportPanel = require('./gui/export/NetworkExportPanel'); var Header = require('./gui/Header'); var ObjectWithListeners = require('./ObjectWithListeners'); @@ -18,6 +21,7 @@ var Functions = require('./Functions'); */ function Export(options) { var self = this; + self._panels = []; if (!(options instanceof CustomMapOptions)) { options = new CustomMapOptions(options); } @@ -42,8 +46,91 @@ Export.prototype._createGui = function() { project : self.getProject(), }); self.getElement().appendChild(headerDiv); + + var panels = [ { + name : "ELEMENTS", + panelClass : ElementExportPanel, + }, { + name : "NETWORK", + panelClass : NetworkExportPanel, + }, { + name : "GRAPHICS", + panelClass : GraphicsExportPanel, + } ]; + + var tabDiv = Functions.createElement({ + type : "div", + name : "tabView", + className : "tabbable boxed parentTabs" + }); + self.getElement().appendChild(tabDiv); + + var tabMenuDiv = Functions.createElement({ + type : "ul", + className : "nav nav-tabs" + }); + tabDiv.appendChild(tabMenuDiv); + + var tabContentDiv = Functions.createElement({ + type : "div", + className : "tab-content" + }); + tabDiv.appendChild(tabContentDiv); + + for (var i = 0; i < panels.length; i++) { + self.addTab(panels[i], tabMenuDiv, tabContentDiv); + } + } +Export.prototype.addTab = function(params, navElement, contentElement) { + var self = this; + + var name = params.name; + + var tabId = "left_panel_ab_" + this._tabIdCount; + self._tabIdCount++; + + var navClass = ''; + var contentClass = 'tab-pane'; + if (navElement.children.length === 0) { + navClass = "active"; + contentClass = "tab-pane active"; + } + + var navLi = document.createElement("li"); + navLi.className = navClass; + + var navLink = document.createElement("a"); + navLink.href = "#" + tabId; + if (name !== undefined) { + if (name.length > 12) { + name = name.substring(0, 10) + "..."; + } + navLink.innerHTML = name; + } + navLink.onclick = function() { + $(this).tab('show'); + }; + navLi.appendChild(navLink); + if (name !== undefined) { + navLink.innerHTML = name; + } + navElement.appendChild(navLi); + + var contentDiv = document.createElement("div"); + contentDiv.style.height = "100%"; + contentDiv.className = contentClass; + contentDiv.id = tabId; + + contentElement.appendChild(contentDiv); + + this._panels.push(new params.panelClass({ + element : contentDiv, + project : self.getProject(), + })); +}; + Export.prototype.setProject = function(project) { this._project = project; }; diff --git a/frontend-js/src/main/js/gui/leftPanel/Panel.js b/frontend-js/src/main/js/gui/Panel.js similarity index 94% rename from frontend-js/src/main/js/gui/leftPanel/Panel.js rename to frontend-js/src/main/js/gui/Panel.js index 24fe869450..cadd37854b 100644 --- a/frontend-js/src/main/js/gui/leftPanel/Panel.js +++ b/frontend-js/src/main/js/gui/Panel.js @@ -2,12 +2,12 @@ /* exported logger */ -var GuiConnector = require('../../GuiConnector'); -var AbstractGuiElement = require('../AbstractGuiElement'); -var PanelControlElementType = require('../PanelControlElementType'); -var Functions = require('../../Functions'); +var GuiConnector = require('../GuiConnector'); +var AbstractGuiElement = require('./AbstractGuiElement'); +var PanelControlElementType = require('./PanelControlElementType'); +var Functions = require('../Functions'); -var logger = require('../../logger'); +var logger = require('../logger'); function Panel(params) { AbstractGuiElement.call(this, params); diff --git a/frontend-js/src/main/js/gui/export/ElementExportPanel.js b/frontend-js/src/main/js/gui/export/ElementExportPanel.js new file mode 100644 index 0000000000..7b82bf8d7a --- /dev/null +++ b/frontend-js/src/main/js/gui/export/ElementExportPanel.js @@ -0,0 +1,23 @@ +"use strict"; + +/* exported logger */ + +var Panel = require('../Panel'); + +var GuiConnector = require('../../GuiConnector'); +var logger = require('../../logger'); +var Functions = require('../../Functions'); + +function ElementExportPanel(params) { + params.panelName = "elementExport"; + params.scrollable = true; + Panel.call(this, params); + + var self = this; + +} + +ElementExportPanel.prototype = Object.create(Panel.prototype); +ElementExportPanel.prototype.constructor = ElementExportPanel; + +module.exports = ElementExportPanel; diff --git a/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js b/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js new file mode 100644 index 0000000000..0fe3658f26 --- /dev/null +++ b/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js @@ -0,0 +1,23 @@ +"use strict"; + +/* exported logger */ + +var Panel = require('../Panel'); + +var GuiConnector = require('../../GuiConnector'); +var logger = require('../../logger'); +var Functions = require('../../Functions'); + +function GraphicsExportPanel(params) { + params.panelName = "elementExport"; + params.scrollable = true; + Panel.call(this, params); + + var self = this; + +} + +GraphicsExportPanel.prototype = Object.create(Panel.prototype); +GraphicsExportPanel.prototype.constructor = GraphicsExportPanel; + +module.exports = GraphicsExportPanel; diff --git a/frontend-js/src/main/js/gui/export/NetworkExportPanel.js b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js new file mode 100644 index 0000000000..5e3949392b --- /dev/null +++ b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js @@ -0,0 +1,23 @@ +"use strict"; + +/* exported logger */ + +var Panel = require('../Panel'); + +var GuiConnector = require('../../GuiConnector'); +var logger = require('../../logger'); +var Functions = require('../../Functions'); + +function NetworkExportPanel(params) { + params.panelName = "elementExport"; + params.scrollable = true; + Panel.call(this, params); + + var self = this; + +} + +NetworkExportPanel.prototype = Object.create(Panel.prototype); +NetworkExportPanel.prototype.constructor = NetworkExportPanel; + +module.exports = NetworkExportPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js index 19d3fa9b1a..b726c20a02 100644 --- a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js @@ -4,7 +4,7 @@ var Promise = require("bluebird"); -var Panel = require('./Panel'); +var Panel = require('../Panel'); var PanelControlElementType = require('../PanelControlElementType'); var logger = require('../../logger'); diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index 99e5be32a5..a06f4c93fd 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -2,7 +2,7 @@ /* exported logger */ -var Panel = require('./Panel'); +var Panel = require('../Panel'); var PanelControlElementType = require('../PanelControlElementType'); var GuiConnector = require('../../GuiConnector'); diff --git a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js index 9daf37590e..863f19e643 100644 --- a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js @@ -3,7 +3,7 @@ /* exported logger */ var ConfigurationType = require('../../ConfigurationType'); -var Panel = require('./Panel'); +var Panel = require('../Panel'); var PanelControlElementType = require('../PanelControlElementType'); var PublicationListDialog = require('./PublicationListDialog'); diff --git a/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js b/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js index 4bf412882c..cec06d686b 100644 --- a/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js @@ -4,7 +4,7 @@ var Promise = require("bluebird"); /* exported logger */ -var Panel = require('./Panel'); +var Panel = require('../Panel'); var PanelControlElementType = require('../PanelControlElementType'); var logger = require('../../logger'); diff --git a/frontend-js/src/test/js/gui/leftPanel/Panel-test.js b/frontend-js/src/test/js/gui/Panel-test.js similarity index 73% rename from frontend-js/src/test/js/gui/leftPanel/Panel-test.js rename to frontend-js/src/test/js/gui/Panel-test.js index 88d3dd98fd..f1d8211feb 100644 --- a/frontend-js/src/test/js/gui/leftPanel/Panel-test.js +++ b/frontend-js/src/test/js/gui/Panel-test.js @@ -2,15 +2,15 @@ /* exported logger */ -var Helper = require('../../helper'); +var Helper = require('../helper'); -require('../../mocha-config.js'); +require('../mocha-config.js'); -var Panel = require('../../../../main/js/gui/leftPanel/Panel'); +var Panel = require('../../../main/js/gui/Panel'); var chai = require('chai'); var assert = chai.assert; -var logger = require('../../logger'); +var logger = require('../logger'); describe('Panel', function() { -- GitLab