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