From 8b7b02c10e8c3f238d4a7da96e82c46f8fb94caa Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 25 Aug 2017 17:29:44 +0200
Subject: [PATCH] GuiConnector is not stored as global anymore

---
 frontend-js/.jshintrc                         |  1 -
 frontend-js/src/main/js/ServerConnector.js    |  1 -
 frontend-js/src/main/js/gui/ContextMenu.js    |  1 +
 .../src/main/js/gui/admin/MapsAdminPanel.js   |  2 +-
 .../main/js/gui/export/GraphicsExportPanel.js |  1 +
 .../main/js/gui/leftPanel/AbstractDbPanel.js  |  1 +
 .../main/js/gui/leftPanel/ProjectInfoPanel.js |  1 +
 .../js/gui/leftPanel/PublicationListDialog.js |  1 +
 .../src/main/js/gui/topMenu/TopMenu.js        |  1 +
 .../src/main/js/map/AbstractCustomMap.js      |  1 +
 frontend-js/src/main/js/map/CustomMap.js      |  1 +
 .../src/main/js/map/marker/AbstractMarker.js  | 63 ++++++++++---------
 .../main/js/map/window/AbstractInfoWindow.js  |  1 +
 frontend-js/src/main/js/minerva.js            |  9 ++-
 .../src/test/js/ServerConnector-test.js       |  2 +-
 frontend-js/src/test/js/map/CustomMap-test.js |  1 -
 frontend-js/src/test/js/map/Submap-test.js    |  1 -
 .../js/map/data/TargettingStructure-test.js   |  1 -
 .../test/js/map/marker/AliasMarker-test.js    |  1 -
 .../test/js/map/overlay/DrugDbOverlay-test.js |  1 -
 frontend-js/src/test/js/mocha-config.js       |  3 +-
 21 files changed, 50 insertions(+), 45 deletions(-)

diff --git a/frontend-js/.jshintrc b/frontend-js/.jshintrc
index a37287075c..7f86e754b7 100644
--- a/frontend-js/.jshintrc
+++ b/frontend-js/.jshintrc
@@ -42,7 +42,6 @@
     "afterEach"  : false,
 
     /* minerva globals */
-    "GuiConnector"  : false,
     "ServerConnector"  : false,
     "google"  : false,
 
diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index d96f861c4c..ebd00ccc7f 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -712,7 +712,6 @@ ServerConnector.removeProject = function (projectId) {
     if (self._projectsById[project.getProjectId()] !== undefined) {
       self._projectsById[project.getProjectId()].update(project);
     } else {
-      throw new Error();
       self._projectsById[project.getProjectId()] = project;
     }
     return self._projectsById[project.getProjectId()];
diff --git a/frontend-js/src/main/js/gui/ContextMenu.js b/frontend-js/src/main/js/gui/ContextMenu.js
index 420598dfe7..aa908487f6 100644
--- a/frontend-js/src/main/js/gui/ContextMenu.js
+++ b/frontend-js/src/main/js/gui/ContextMenu.js
@@ -3,6 +3,7 @@
 /* exported logger */
 
 var AbstractGuiElement = require('./AbstractGuiElement');
+var GuiConnector = require('../GuiConnector');
 var SubMenu = require('./SubMenu');
 
 var Functions = require('../Functions');
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index 7bc7d1d163..05cc7467e2 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -140,7 +140,7 @@ MapsAdminPanel.prototype.projectToTableRow = function (project, row) {
   if (project.getStatus().toLowerCase() === "ok") {
     formattedProjectId = "<a href='" + "index.xhtml?id=" + projectId + "' target='" + projectId + "'>" + projectId + "</a>";
   } else {
-    formattedProjectId = projectId
+    formattedProjectId = projectId;
   }
 
   row[0] = formattedProjectId;
diff --git a/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js b/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js
index 545d312a1a..21b5445168 100644
--- a/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js
+++ b/frontend-js/src/main/js/gui/export/GraphicsExportPanel.js
@@ -4,6 +4,7 @@
 
 var AbstractExportPanel = require('./AbstractExportPanel');
 var Functions = require('../../Functions');
+var GuiConnector = require('../../GuiConnector');
 
 var logger = require('../../logger');
 
diff --git a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
index 1e27b92747..2cb3751678 100644
--- a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js
@@ -4,6 +4,7 @@
 
 var Promise = require("bluebird");
 
+var GuiConnector = require('../../GuiConnector');
 var Panel = require('../Panel');
 var PanelControlElementType = require('../PanelControlElementType');
 
diff --git a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
index 0867db4f5c..02a6ba3c99 100644
--- a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
@@ -3,6 +3,7 @@
 /* exported logger */
 
 var ConfigurationType = require('../../ConfigurationType');
+var GuiConnector = require('../../GuiConnector');
 var Panel = require('../Panel');
 var PanelControlElementType = require('../PanelControlElementType');
 var PublicationListDialog = require('./PublicationListDialog');
diff --git a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js
index 0250e411b1..df3a82c994 100644
--- a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js
+++ b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js
@@ -6,6 +6,7 @@ var Promise = require("bluebird");
 
 var AbstractGuiElement = require('../AbstractGuiElement');
 var Alias = require('../../map/data/Alias');
+var GuiConnector = require('../../GuiConnector');
 var IdentifiedElement = require('../../map/data/IdentifiedElement');
 var Reaction = require('../../map/data/Reaction');
 
diff --git a/frontend-js/src/main/js/gui/topMenu/TopMenu.js b/frontend-js/src/main/js/gui/topMenu/TopMenu.js
index 062a1d4cae..724a7391d3 100644
--- a/frontend-js/src/main/js/gui/topMenu/TopMenu.js
+++ b/frontend-js/src/main/js/gui/topMenu/TopMenu.js
@@ -5,6 +5,7 @@ var Promise = require("bluebird");
 /* exported logger */
 
 var AbstractGuiElement = require('../AbstractGuiElement');
+var GuiConnector = require('../../GuiConnector');
 var OverviewDialog = require('../OverviewDialog');
 var PanelControlElementType = require('../PanelControlElementType');
 
diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js
index 4aa5ab3a45..cca342d9d8 100644
--- a/frontend-js/src/main/js/map/AbstractCustomMap.js
+++ b/frontend-js/src/main/js/map/AbstractCustomMap.js
@@ -7,6 +7,7 @@ var functions = require('../Functions');
 
 var AliasInfoWindow = require('./window/AliasInfoWindow');
 var AliasSurface = require('./surface/AliasSurface');
+var GuiConnector = require('../GuiConnector');
 var IdentifiedElement = require('./data/IdentifiedElement');
 var ObjectWithListeners = require('../ObjectWithListeners');
 var PointInfoWindow = require('./window/PointInfoWindow');
diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index e25f8985da..2225dc615c 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -14,6 +14,7 @@ var Alias = require('./data/Alias');
 var CommentDialog = require('../gui/CommentDialog');
 var ControlType = require('./ControlType');
 var CustomMapOptions = require('./CustomMapOptions');
+var GuiConnector = require('../GuiConnector');
 var IdentifiedElement = require('./data/IdentifiedElement');
 var LayoutData = require('./data/LayoutData');
 var PointData = require('./data/PointData');
diff --git a/frontend-js/src/main/js/map/marker/AbstractMarker.js b/frontend-js/src/main/js/map/marker/AbstractMarker.js
index 32ce5d05b2..87ffe92ab7 100644
--- a/frontend-js/src/main/js/map/marker/AbstractMarker.js
+++ b/frontend-js/src/main/js/map/marker/AbstractMarker.js
@@ -1,9 +1,12 @@
 "use strict";
 
+var GuiConnector = require('../../GuiConnector');
+
 var logger = require('../../logger');
 var Promise = require("bluebird");
 
 var ObjectWithListeners = require('../../ObjectWithListeners');
+
 /**
  * Class representing Marker (called sometimes bubble) that we visualize on the
  * map.
@@ -35,23 +38,23 @@ AbstractMarker.prototype.constructor = AbstractMarker;
 
 /**
  * Returns identifier of this object.
- * 
+ *
  * @returns identifier of this object
  */
-AbstractMarker.prototype.getId = function() {
+AbstractMarker.prototype.getId = function () {
   return this.getIdentifiedElement().getId();
 };
 
 /**
  * Returns icon of the marker.
- * 
+ *
  * @returns icon of the marker
  */
-AbstractMarker.prototype.getIcon = function() {
+AbstractMarker.prototype.getIcon = function () {
   return this._icon;
 };
 
-AbstractMarker.prototype.setIcon = function(icon) {
+AbstractMarker.prototype.setIcon = function (icon) {
   var self = this;
   self._icon = icon;
   var googleMarker = self.getGoogleMarker();
@@ -63,7 +66,7 @@ AbstractMarker.prototype.setIcon = function(icon) {
 /**
  * Shows marker on the map.
  */
-AbstractMarker.prototype.show = function() {
+AbstractMarker.prototype.show = function () {
   if (this.getGoogleMarker() === undefined) {
     logger.warn("Cannot show marker. Marker not initialized");
     return;
@@ -75,7 +78,7 @@ AbstractMarker.prototype.show = function() {
     return;
   }
 };
-AbstractMarker.prototype.hide = function() {
+AbstractMarker.prototype.hide = function () {
   if (this.getGoogleMarker() === undefined) {
     logger.warn("Cannot hide marker. Marker not initialized");
     return;
@@ -90,25 +93,25 @@ AbstractMarker.prototype.hide = function() {
 
 /**
  * Returns {@link AbstractCustomMap} where marker is located.
- * 
+ *
  * @returns {@link AbstractCustomMap} where marker is located
  */
-AbstractMarker.prototype.getCustomMap = function() {
+AbstractMarker.prototype.getCustomMap = function () {
   return this._map;
 };
 
-AbstractMarker.prototype.setCustomMap = function(map) {
+AbstractMarker.prototype.setCustomMap = function (map) {
   this._map = map;
 };
 
 /**
  * Returns {@link google.maps.Bounds bounds} of the marker (it's a single
  * point).
- * 
+ *
  * @returns {@link google.maps.Bounds bounds} of the marker (it's a single
  *          point)
  */
-AbstractMarker.prototype.getBounds = function() {
+AbstractMarker.prototype.getBounds = function () {
   var marker = this.getGoogleMarker();
   if (marker === undefined || marker === null) {
     logger.warn("Marker not initialized");
@@ -122,76 +125,76 @@ AbstractMarker.prototype.getBounds = function() {
 
 /**
  * Set map where the marker should be visualized.
- * 
+ *
  * @param map
  *          {@link google.maps.Map} where the marker should be visualized.
  */
-AbstractMarker.prototype.setMap = function(map) {
+AbstractMarker.prototype.setMap = function (map) {
   if (this.getGoogleMarker() !== undefined) {
     this.getGoogleMarker().setMap(map);
   } else {
     logger.warn("[" + this.constructor.name + "] Cannot setup map. Marker wasn't initialized. Marker id: "
-        + this.getId());
+      + this.getId());
   }
 };
 
 /**
  * Initializes google.maps.Marker object connected to this object.
  */
-AbstractMarker.prototype._init = function() {
+AbstractMarker.prototype._init = function () {
   var self = this;
   var point = this.getCoordinates();
   var latLng = this.getCustomMap().fromPointToLatLng(point);
 
   this._marker = new google.maps.Marker({
-    position : latLng,
-    icon : GuiConnector.getImgPrefix() + self.getIcon(),
-    optimized : self.getCustomMap().isMarkerOptimization(),
-    id : self.getId()
+    position: latLng,
+    icon: GuiConnector.getImgPrefix() + self.getIcon(),
+    optimized: self.getCustomMap().isMarkerOptimization(),
+    id: self.getId()
   });
 
-  var onclick = function() {
+  var onclick = function () {
     return self.onClickHandler().then(null, GuiConnector.alert);
   };
   google.maps.event.addListener(this.getGoogleMarker(), 'click', onclick);
   return Promise.resolve();
 };
 
-AbstractMarker.prototype.onClickHandler = function() {
+AbstractMarker.prototype.onClickHandler = function () {
   return this.callListeners("onClick");
 };
 
 /**
  * Returns {google.maps.Marker} connected to this object.
- * 
+ *
  * @returns {google.maps.Marker} connected to this object
  */
-AbstractMarker.prototype.getGoogleMarker = function() {
+AbstractMarker.prototype.getGoogleMarker = function () {
   return this._marker;
 };
 
 /**
  * Abstract function returning string marker type.
- * 
+ *
  * @returns string marker type
  */
-AbstractMarker.prototype.getType = function() {
+AbstractMarker.prototype.getType = function () {
   return this.getIdentifiedElement().getType();
 };
 
-AbstractMarker.prototype.getModelId = function() {
+AbstractMarker.prototype.getModelId = function () {
   return this.getIdentifiedElement().getModelId();
 };
 
-AbstractMarker.prototype.getIdentifiedElement = function() {
+AbstractMarker.prototype.getIdentifiedElement = function () {
   return this._identifiedElement;
 };
 
-AbstractMarker.prototype.updateIdentifiedElement = function(identifiedElement) {
+AbstractMarker.prototype.updateIdentifiedElement = function (identifiedElement) {
   this.setIcon(identifiedElement.getIcon());
 };
 
-AbstractMarker.prototype.setIdentifiedElement = function(identifiedElement) {
+AbstractMarker.prototype.setIdentifiedElement = function (identifiedElement) {
   this._identifiedElement = identifiedElement;
 };
 
diff --git a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
index e807019a6f..a9cb40dcbc 100644
--- a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
@@ -6,6 +6,7 @@ var logger = require('../../logger');
 var Functions = require('../../Functions');
 
 var Comment = require('../data/Comment');
+var GuiConnector = require('../../GuiConnector');
 var GuiUtils = require('../../gui/leftPanel/GuiUtils');
 var IdentifiedElement = require('../data/IdentifiedElement');
 var ObjectWithListeners = require('../../ObjectWithListeners');
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index aff5e13e93..914330c165 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -19,7 +19,7 @@ var Legend = require('./gui/Legend');
 var MapContextMenu = require('./gui/MapContextMenu');
 var SelectionContextMenu = require('./gui/SelectionContextMenu');
 
-var OriginalGuiConnector = require('./GuiConnector');
+var GuiConnector = require('./GuiConnector');
 var OriginalServerConnector = require('./ServerConnector');
 
 var Promise = require("bluebird");
@@ -432,8 +432,7 @@ function createResult(customMap) {
 }
 
 function initGlobals(params) {
-  if (global.GuiConnector === undefined) {
-    global.GuiConnector = OriginalGuiConnector;
+  if (global.ServerConnector === undefined) {
     global.ServerConnector = OriginalServerConnector;
     if (params.isDebug()) {
       logger.setLevel("debug");
@@ -445,7 +444,7 @@ function initGlobals(params) {
       logger.setLevel("debug");
     }
   } else {
-    logger.warn("global GuiConnector found");
+    logger.warn("global ServerConnector found");
   }
 
 }
@@ -653,7 +652,7 @@ var minerva = {
   createExport: createExport,
   createAdmin: createAdmin,
   ServerConnector: OriginalServerConnector,
-  GuiConnector: OriginalGuiConnector,
+  GuiConnector: GuiConnector,
   DualListbox: require('dual-listbox').DualListbox,
 };
 
diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js
index d5f88e3e4e..8adb10b29f 100644
--- a/frontend-js/src/test/js/ServerConnector-test.js
+++ b/frontend-js/src/test/js/ServerConnector-test.js
@@ -86,7 +86,7 @@ describe('ServerConnector', function() {
   });
 
   it('getProjectId from GET params', function() {
-    GuiConnector.getParams['id'] = "test";
+    helper.setUrl("http://test/?id=test");
     return ServerConnector.getProjectId().then(function(result) {
       assert.equal(result, "test");
     });
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index 0a8be442dd..fcba29e81a 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -155,7 +155,6 @@ describe('CustomMap', function () {
         it("with submaps", function () {
             var projectId = "complex_model_with_submaps";
             helper.setUrl("http://test/?id=" + projectId);
-            GuiConnector.getParams["id"] = projectId;
             var customMap;
             var emptySubmodelId = 16730;
             var filledSubmodelId = 16731;
diff --git a/frontend-js/src/test/js/map/Submap-test.js b/frontend-js/src/test/js/map/Submap-test.js
index e9d9929767..2adb8b24ec 100644
--- a/frontend-js/src/test/js/map/Submap-test.js
+++ b/frontend-js/src/test/js/map/Submap-test.js
@@ -55,7 +55,6 @@ describe('Submap', function() {
     var marker;
     var projectId = "complex_model_with_submaps";
     helper.setUrl("http://test/?id=" + projectId);
-    GuiConnector.getParams["id"] = projectId;
     return ServerConnector.getProject(projectId).then(function(project) {
       map = helper.createCustomMap(project);
       submap = map.getSubmapById(16729);
diff --git a/frontend-js/src/test/js/map/data/TargettingStructure-test.js b/frontend-js/src/test/js/map/data/TargettingStructure-test.js
index a0f0471036..66a2c48169 100644
--- a/frontend-js/src/test/js/map/data/TargettingStructure-test.js
+++ b/frontend-js/src/test/js/map/data/TargettingStructure-test.js
@@ -12,7 +12,6 @@ var assert = chai.assert;
 describe('TargettingStructure', function() {
   it("getTargetsForIdentifiedElement", function() {
     helper.setUrl("http://test/?id=drug_target_sample");
-    GuiConnector.init();
 
     var map, searchDb;
     return ServerConnector.getProject("drug_target_sample").then(function(project) {
diff --git a/frontend-js/src/test/js/map/marker/AliasMarker-test.js b/frontend-js/src/test/js/map/marker/AliasMarker-test.js
index f4c8968743..a9cad50e05 100644
--- a/frontend-js/src/test/js/map/marker/AliasMarker-test.js
+++ b/frontend-js/src/test/js/map/marker/AliasMarker-test.js
@@ -61,7 +61,6 @@ describe('AliasMarker', function() {
   it("click on marker when chemical is not available", function() {
     var projectId = "complex_model_with_submaps";
     helper.setUrl("http://test/?id=" + projectId);
-    GuiConnector.getParams["id"] = projectId;
     var map;
     var marker;
     return ServerConnector.getProject(projectId).then(function(project) {
diff --git a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
index f546259925..da99679c85 100644
--- a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
@@ -22,7 +22,6 @@ describe('DrugDbOverlay', function() {
 
   it("searchByQuery", function() {
     helper.setUrl("http://test/?id=drug_target_sample");
-    GuiConnector.init();
 
     var map, searchDb;
     return ServerConnector.getProject("drug_target_sample").then(function(project) {
diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js
index be219d23ce..846fc0db75 100644
--- a/frontend-js/src/test/js/mocha-config.js
+++ b/frontend-js/src/test/js/mocha-config.js
@@ -5,6 +5,8 @@ var Cookies = require('js-cookie');
 
 var Helper = require('./helper');
 
+var GuiConnector = require('./GuiConnector-mock');
+
 // -----------------------------
 
 var logger = require('./logger');
@@ -93,7 +95,6 @@ global.window.$ = $;
 
   global.google = require('./google-map-mock');
 
-  global.GuiConnector = require('./GuiConnector-mock');
   global.ServerConnector = require('./ServerConnector-mock');
 
   Promise.longStackTraces();
-- 
GitLab