From 2b4c8413a0b98c5a2be006fe408ad9a1f49cd6ee Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 11 Apr 2017 18:20:18 +0200 Subject: [PATCH] left panel tabs agregated in a single panel class --- frontend-js/src/main/js/GuiConnector.js | 2 +- .../main/js/gui/leftPanel/AbstractDbPanel.js | 2 +- .../main/js/gui/leftPanel/ChemicalPanel.js | 9 ++ .../src/main/js/gui/leftPanel/DrugPanel.js | 9 ++ .../src/main/js/gui/leftPanel/LeftPanel.js | 17 ++- .../src/main/js/gui/leftPanel/MiRnaPanel.js | 9 ++ .../src/main/js/gui/leftPanel/OverlayPanel.js | 3 + .../src/main/js/gui/leftPanel/Panel.js | 4 + .../main/js/gui/leftPanel/ProjectInfoPanel.js | 5 +- .../src/main/js/gui/leftPanel/SearchPanel.js | 10 +- .../src/main/js/gui/leftPanel/SubmapPanel.js | 37 +++-- .../src/main/js/gui/leftPanel/UserPanel.js | 19 ++- .../js/map/overlay/DbOverlayCollection.js | 71 +++++++++ frontend-js/src/main/js/minerva.js | 136 +----------------- frontend-js/src/test/js/gui/Header-test.js | 4 +- .../js/gui/leftPanel/ChemicalPanel-test.js | 22 +-- .../test/js/gui/leftPanel/DrugPanel-test.js | 22 +-- .../src/test/js/gui/leftPanel/Footer-test.js | 10 +- .../test/js/gui/leftPanel/MiRnaPanel-test.js | 22 +-- .../js/gui/leftPanel/OverlayPanel-test.js | 24 +--- .../src/test/js/gui/leftPanel/Panel-test.js | 4 +- .../test/js/gui/leftPanel/SearchPanel-test.js | 26 ++-- .../test/js/gui/leftPanel/UserPanel-test.js | 16 +-- frontend-js/src/test/js/helper.js | 66 +-------- .../map/overlay/DbOverlayCollection-test.js | 26 ++++ frontend-js/src/test/js/minerva-test.js | 21 ++- web/src/main/webapp/index.xhtml | 4 +- 27 files changed, 260 insertions(+), 340 deletions(-) create mode 100644 frontend-js/src/main/js/map/overlay/DbOverlayCollection.js create mode 100644 frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js diff --git a/frontend-js/src/main/js/GuiConnector.js b/frontend-js/src/main/js/GuiConnector.js index 2f8d2132fd..e7c261c874 100644 --- a/frontend-js/src/main/js/GuiConnector.js +++ b/frontend-js/src/main/js/GuiConnector.js @@ -69,7 +69,7 @@ GuiConnector.init = function() { }); }); - GuiConnector.leftPanelTabNavi = new TabNavi("tabView"); +// GuiConnector.leftPanelTabNavi = new TabNavi("tabView"); }; /** diff --git a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js index 4bbbe55526..795a2e5a1a 100644 --- a/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/AbstractDbPanel.js @@ -106,7 +106,7 @@ AbstractPanel.prototype._initializeGui = function(){ AbstractPanel.prototype.setOverlayDb = function(overlayDb){ if (overlayDb === undefined) { - throw new Error("Undefined overlayDb"); + throw new Error("Undefined overlayDb for panel: "+this.getPanelName()); } this._overlayDb = overlayDb; }; diff --git a/frontend-js/src/main/js/gui/leftPanel/ChemicalPanel.js b/frontend-js/src/main/js/gui/leftPanel/ChemicalPanel.js index d3212e860d..2361f53b5d 100644 --- a/frontend-js/src/main/js/gui/leftPanel/ChemicalPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/ChemicalPanel.js @@ -46,4 +46,13 @@ ChemicalPanel.prototype.searchByQuery = function() { return self.getOverlayDb().searchByQuery(query); }; +ChemicalPanel.prototype.init = function() { + var query = ServerConnector.getSessionData().getChemicalQuery(); + if (query!==undefined) { + return this.getOverlayDb().searchByEncodedQuery(query); + } else { + return Promise.resolve(); + } +} + module.exports = ChemicalPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/DrugPanel.js b/frontend-js/src/main/js/gui/leftPanel/DrugPanel.js index f644b70011..d296f61532 100644 --- a/frontend-js/src/main/js/gui/leftPanel/DrugPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/DrugPanel.js @@ -41,4 +41,13 @@ DrugPanel.prototype.searchByQuery = function() { return self.getOverlayDb().searchByQuery(query); }; +DrugPanel.prototype.init = function() { + var query = ServerConnector.getSessionData().getDrugQuery(); + if (query !== undefined) { + return this.getOverlayDb().searchByEncodedQuery(query); + } else { + return Promise.resolve(); + } +}; + module.exports = DrugPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js b/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js index 0a9147d776..83512c0c1a 100644 --- a/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/LeftPanel.js @@ -22,6 +22,7 @@ function LeftPanel(params) { var self = this; this._tabIdCount = 0; + this._panels = []; self._createPanelGui(); @@ -109,9 +110,17 @@ LeftPanel.prototype._createPanelGui = function(message) { } }; +LeftPanel.prototype.init = function() { + var promises = []; + for (var i = 0; i < this._panels.length; i++) { + promises.push(this._panels[i].init()); + } + return Promise.all(promises); +}; + LeftPanel.prototype.addTab = function(params, navElement, contentElement) { - var self =this; - + var self = this; + var name = params.name; var tabId = "left_panel_ab_" + this._tabIdCount; @@ -150,10 +159,10 @@ LeftPanel.prototype.addTab = function(params, navElement, contentElement) { contentElement.appendChild(contentDiv); - new params.panelClass({ + this._panels.push(new params.panelClass({ element : contentDiv, customMap : self.getMap(), - }); + })); }; module.exports = LeftPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/MiRnaPanel.js b/frontend-js/src/main/js/gui/leftPanel/MiRnaPanel.js index ae274ce003..cdf27813b5 100644 --- a/frontend-js/src/main/js/gui/leftPanel/MiRnaPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/MiRnaPanel.js @@ -41,4 +41,13 @@ MiRnaPanel.prototype.searchByQuery = function() { return self.getOverlayDb().searchByQuery(query); }; +MiRnaPanel.prototype.init = function() { + var query = ServerConnector.getSessionData().getMiRnaQuery(); + if (query!==undefined) { + return this.getOverlayDb().searchByEncodedQuery(query); + } else { + return Promise.resolve(); + } +} + module.exports = MiRnaPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index 7411e0a501..d59e4a93c0 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -417,4 +417,7 @@ OverlayPanel.prototype.openAddOverlayDialog = function() { }); }; +OverlayPanel.prototype.init = function() { + this.refresh(); +}; module.exports = OverlayPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/Panel.js b/frontend-js/src/main/js/gui/leftPanel/Panel.js index 58a1cde1dc..6e95863cf5 100644 --- a/frontend-js/src/main/js/gui/leftPanel/Panel.js +++ b/frontend-js/src/main/js/gui/leftPanel/Panel.js @@ -420,4 +420,8 @@ Panel.prototype.createTableRow = function(elements) { return row; } +Panel.prototype.init = function() { + throw new Error(this.getPanelName() + " Not implemented"); +}; + module.exports = Panel; diff --git a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js index 1766f6e66a..9ad72412d3 100644 --- a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js @@ -10,7 +10,7 @@ var logger = require('../../logger'); var Functions = require('../../Functions'); function ProjectInfoPanel(params) { - params.panelName = "user"; + params.panelName = "info"; Panel.call(this, params); var self = this; self._createInfoPanelGui(); @@ -169,4 +169,7 @@ ProjectInfoPanel.prototype.refresh = function() { }); }; +ProjectInfoPanel.prototype.init = function() { + return this.refresh(); +} module.exports = ProjectInfoPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/SearchPanel.js b/frontend-js/src/main/js/gui/leftPanel/SearchPanel.js index f405dabb1a..3d81cba9a6 100644 --- a/frontend-js/src/main/js/gui/leftPanel/SearchPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/SearchPanel.js @@ -158,7 +158,7 @@ SearchPanel.prototype.createAliasElement = function(alias, icon) { SearchPanel.prototype.searchByQuery = function() { var self = this; - var query = this.getControlElement(PanelControlElementType.SEARCH_INPUT).value; + var query = this.getControlElement(PanelControlElementType.SEARCH_INPUT).value; var perfect = this.getControlElement(PanelControlElementType.SEARCH_PERFECT_MATCH_CHECKBOX).checked; return self.getOverlayDb().searchByQuery(query, perfect); }; @@ -167,4 +167,12 @@ SearchPanel.prototype.getAutocomplete = function(query) { return this.getMap().getSearchAutocomplete(query); }; +SearchPanel.prototype.init = function() { + var query = ServerConnector.getSessionData().getSearchQuery(); + if (query !== undefined) { + return this.getOverlayDb().searchByEncodedQuery(query); + } else { + return Promise.resolve(); + } +} module.exports = SearchPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js b/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js index cdc56ebac8..c2c9b2e22f 100644 --- a/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/SubmapPanel.js @@ -9,12 +9,11 @@ var logger = require('../../logger'); var Functions = require('../../Functions'); function SubmapPanel(params) { - params.panelName = "user"; + params.panelName = "submap"; Panel.call(this, params); var self = this; self._createSubmapGui(); - self.refresh(); } SubmapPanel.prototype = Object.create(Panel.prototype); @@ -46,23 +45,6 @@ SubmapPanel.prototype._createSubmapGui = function() { }; - -SubmapPanel.prototype.refresh = function() { - var self = this; - var table = self.getControlElement(PanelControlElementType.SUBMAP_TABLE); - while (table.lastChild) { - table.removeChild(table.lastChild); - } - table.appendChild(self.createTableHeader()); - - table.appendChild(self.createRow(self.getMap().getModel())); - - var submodels = self.getMap().getModel().getSubmodels(); - for (var i = 0; i < submodels.length; i++) { - table.appendChild(self.createRow(submodels[i])); - } -}; - SubmapPanel.prototype.createRow = function(model) { var self = this; var result = document.createElement("tr"); @@ -105,4 +87,21 @@ SubmapPanel.prototype.createTableHeader = function() { return result; }; +SubmapPanel.prototype.init = function() { + var self = this; + var table = self.getControlElement(PanelControlElementType.SUBMAP_TABLE); + while (table.lastChild) { + table.removeChild(table.lastChild); + } + table.appendChild(self.createTableHeader()); + + table.appendChild(self.createRow(self.getMap().getModel())); + + var submodels = self.getMap().getModel().getSubmodels(); + for (var i = 0; i < submodels.length; i++) { + table.appendChild(self.createRow(submodels[i])); + } + return Promise.resolve(); +}; + module.exports = SubmapPanel; diff --git a/frontend-js/src/main/js/gui/leftPanel/UserPanel.js b/frontend-js/src/main/js/gui/leftPanel/UserPanel.js index 0f07d0be77..f19d228601 100644 --- a/frontend-js/src/main/js/gui/leftPanel/UserPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/UserPanel.js @@ -17,13 +17,6 @@ function UserPanel(params) { self._createLoginTab(); self._createUserDataTab(); - ServerConnector.getLoggedUser().then(function(user) { - if (user.getLogin() === "anonymous") { - self.showLoginPage(); - } else { - self.showUserProfilePage(user); - } - }); var loginButton = self.getControlElement(PanelControlElementType.USER_TAB_LOGIN_BUTTON); var logoutButton = self.getControlElement(PanelControlElementType.USER_TAB_LOGOUT_BUTTON); @@ -152,4 +145,16 @@ UserPanel.prototype.showUserProfilePage = function(user) { emailText.innerHTML = user.getEmail(); }; +UserPanel.prototype.init = function() { + var self = this; + return ServerConnector.getLoggedUser().then(function(user) { + if (user.getLogin() === "anonymous") { + self.showLoginPage(); + } else { + self.showUserProfilePage(user); + } + return Promise.resolve(); + }); +}; + module.exports = UserPanel; diff --git a/frontend-js/src/main/js/map/overlay/DbOverlayCollection.js b/frontend-js/src/main/js/map/overlay/DbOverlayCollection.js new file mode 100644 index 0000000000..784db11acc --- /dev/null +++ b/frontend-js/src/main/js/map/overlay/DbOverlayCollection.js @@ -0,0 +1,71 @@ +"use strict"; + +/* exported logger */ + +var logger = require('../../logger'); + +var ObjectWithListeners = require('../../ObjectWithListeners'); +var ChemicalDbOverlay = require('./ChemicalDbOverlay'); +var CommentDbOverlay = require('./CommentDbOverlay'); +var DrugDbOverlay = require('./DrugDbOverlay'); +var MiRnaDbOverlay = require('./MiRnaDbOverlay'); +var SearchDbOverlay = require('./SearchDbOverlay'); + +function DbOverlayCollection(params) { + // call super constructor + ObjectWithListeners.call(this); + + var hasDisease = params.map.getProject().getDisease() !== undefined; + + var dataCollections = [ { + name : "search" + }, { + name : "drug", + allowSearchById : true, + allowGeneralSearch : true + }, { + name : "chemical", + allowSearchById : hasDisease, + allowGeneralSearch : hasDisease + }, { + name : "mirna", + allowSearchById : true, + allowGeneralSearch : true + }, { + name : "comment", + allowSearchById : false, + allowGeneralSearch : true + }, ]; + + var map = params.map; + + for (var i = 0; i < dataCollections.length; i++) { + var collectionParams = dataCollections[i]; + collectionParams.map = map; + var collection = null; + if (collectionParams.name === "comment") { + collection = new CommentDbOverlay(collectionParams); + map.registerSource(collection); + } else if (collectionParams.name === "search") { + collection = new SearchDbOverlay(collectionParams); + map.registerSource(collection); + } else if (collectionParams.name === "drug") { + collection = new DrugDbOverlay(collectionParams); + map.registerSource(collection); + } else if (collectionParams.name === "mirna") { + collection = new MiRnaDbOverlay(collectionParams); + map.registerSource(collection); + } else if (collectionParams.name === "chemical") { + collection = new ChemicalDbOverlay(collectionParams); + map.registerSource(collection); + } else { + throw new Error("Unknown overlay db: " + collectionParams.name); + } + } + +} + +DbOverlayCollection.prototype = Object.create(ObjectWithListeners.prototype); +DbOverlayCollection.prototype.constructor = DbOverlayCollection; + +module.exports = DbOverlayCollection; diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index 0de305b581..4c9a2b8798 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -3,26 +3,14 @@ var functions = require('./Functions'); var AbstractDbOverlay = require('./map/overlay/AbstractDbOverlay'); -var ChemicalDbOverlay = require('./map/overlay/ChemicalDbOverlay'); -var CommentDbOverlay = require('./map/overlay/CommentDbOverlay'); +var DbOverlayCollection = require('./map/overlay/DbOverlayCollection'); var ConfigurationType = require('./ConfigurationType'); var ControlType = require('./map/ControlType'); var CustomMap = require('./map/CustomMap'); -var DrugDbOverlay = require('./map/overlay/DrugDbOverlay'); -var Header = require('./gui/Header'); -var MiRnaDbOverlay = require('./map/overlay/MiRnaDbOverlay'); var OverviewDialog = require('./gui/OverviewDialog'); var SearchDbOverlay = require('./map/overlay/SearchDbOverlay'); -var ChemicalPanel = require('./gui/leftPanel/ChemicalPanel'); -var DrugPanel = require('./gui/leftPanel/DrugPanel'); -var Footer = require('./gui/leftPanel/Footer'); -var MiRnaPanel = require('./gui/leftPanel/MiRnaPanel'); -var OverlayPanel = require('./gui/leftPanel/OverlayPanel'); -var ProjectInfoPanel = require('./gui/leftPanel/ProjectInfoPanel'); -var SearchPanel = require('./gui/leftPanel/SearchPanel'); -var SubmapPanel = require('./gui/leftPanel/SubmapPanel'); -var UserPanel = require('./gui/leftPanel/UserPanel'); +var LeftPanel = require('./gui/leftPanel/LeftPanel'); var OriginalGuiConnector = require('./GuiConnector'); var OriginalServerConnector = require('./ServerConnector'); @@ -57,41 +45,6 @@ function processUrlGetParams(params) { } -function restoreSearchQuery(customMap) { - var query = ServerConnector.getSessionData().getSearchQuery(); - if (query!==undefined) { - return customMap.getOverlayByName("search").searchByEncodedQuery(query); - } else { - return Promise.resolve(); - } -} - -function restoreDrugQuery(customMap) { - var query = ServerConnector.getSessionData().getDrugQuery(); - if (query!==undefined) { - return customMap.getOverlayByName("drug").searchByEncodedQuery(query); - } else { - return Promise.resolve(); - } -} - -function restoreChemicalQuery(customMap) { - var query = ServerConnector.getSessionData().getChemicalQuery(); - if (query!==undefined) { - return customMap.getOverlayByName("chemical").searchByEncodedQuery(query); - } else { - return Promise.resolve(); - } -} - -function restoreMiRnaQuery(customMap) { - var query = ServerConnector.getSessionData().getMiRnaQuery(); - if (query!==undefined) { - return customMap.getOverlayByName("mirna").searchByEncodedQuery(query); - } else { - return Promise.resolve(); - } -} function createLegendIndicator(file, index) { var result = document.createElement("li"); @@ -194,93 +147,18 @@ function create(params) { ServerConnector.setCustomMap(result); - if (params.dataCollections !== undefined) { - for (var i = 0; i < params.dataCollections.length; i++) { - var collectionParams = params.dataCollections[i]; - collectionParams.map = result; - var collection = null; - if (collectionParams.name === "comment") { - collection = new CommentDbOverlay(collectionParams); - result.registerSource(collection); - } else if (collectionParams.name === "search") { - collection = new SearchDbOverlay(collectionParams); - result.registerSource(collection); - new SearchPanel({ - element : document.getElementById("searchTab"), - customMap : result - }); - } else if (collectionParams.name === "drug") { - collection = new DrugDbOverlay(collectionParams); - result.registerSource(collection); - new DrugPanel({ - element : document.getElementById("drugTab"), - customMap : result - }); - } else if (collectionParams.name === "mirna") { - collection = new MiRnaDbOverlay(collectionParams); - result.registerSource(collection); - new MiRnaPanel({ - element : document.getElementById("mirnaTab"), - customMap : result - }); - } else if (collectionParams.name === "chemical") { - collection = new ChemicalDbOverlay(collectionParams); - result.registerSource(collection); - new ChemicalPanel({ - disease: project.getDisease(), - element : document.getElementById("chemicalTab"), - customMap : result - }); - } else { - throw new Error("Unknown overlay db: "+collectionParams.name); - } - } - } else { - logger.warn("No overlay collection defined"); - } - - new OverlayPanel({ - element : document.getElementById("overlayTab"), - customMap : result + new DbOverlayCollection({ + map: result }); - new UserPanel({ - element : document.getElementById("userTab"), + var leftPanel = new LeftPanel({ + element : document.getElementById("leftPanel"), customMap : result }); - new SubmapPanel({ - element : document.getElementById("submapTab"), - customMap : result - }); - - var infoPanel = new ProjectInfoPanel({ - element : document.getElementById("infoTab"), - customMap : result - }); - - var header = new Header({ - element : document.getElementById("headerPanel"), - customMap : result - }); - - var footer = new Footer({ - element : document.getElementById("footerPanel"), - customMap : result - }); - - return new Promise(function(resolve, reject) { insertGoogleAnalyticsCode(result).then(function(){ - return restoreSearchQuery(result); - }).then(function(){ - return infoPanel.refresh(); - }).then(function(){ - return restoreDrugQuery(result); - }).then(function(){ - return restoreChemicalQuery(result); - }).then(function(){ - return restoreMiRnaQuery(result); + return leftPanel.init(); }).then(function(){ return createLegend(document.getElementById("legend")); }).then(function(){ diff --git a/frontend-js/src/test/js/gui/Header-test.js b/frontend-js/src/test/js/gui/Header-test.js index 233361644f..ef18f980ff 100644 --- a/frontend-js/src/test/js/gui/Header-test.js +++ b/frontend-js/src/test/js/gui/Header-test.js @@ -20,12 +20,10 @@ describe('Header', function() { }); it('constructor', function() { - var div = helper.createSearchTab(); - var map = helper.createCustomMap(); new Header({ - element : div, + element : testDiv, customMap : map }); diff --git a/frontend-js/src/test/js/gui/leftPanel/ChemicalPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/ChemicalPanel-test.js index b28b794367..08cf971fe4 100644 --- a/frontend-js/src/test/js/gui/leftPanel/ChemicalPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/ChemicalPanel-test.js @@ -20,26 +20,22 @@ describe('ChemicalPanel', function() { }); it('contructor', function() { - var div = helper.createChemicalTab(); - var map = helper.createCustomMap(); helper.createChemicalDbOverlay(map); new ChemicalPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('createChemicaleader for empty', function() { - var div = helper.createChemicalTab(); - var map = helper.createCustomMap(); helper.createChemicalDbOverlay(map); var panel = new ChemicalPanel({ - element : div, + element : testDiv, customMap : map }); @@ -47,13 +43,11 @@ describe('ChemicalPanel', function() { }); it('createChemicaleader for empty', function() { - var div = helper.createChemicalTab(); - var map = helper.createCustomMap(); helper.createChemicalDbOverlay(map); var panel = new ChemicalPanel({ - element : div, + element : testDiv, customMap : map }); @@ -61,30 +55,28 @@ describe('ChemicalPanel', function() { }); it('on searchResults changed', function() { - var div = helper.createChemicalTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var chemicalDbOverlay = helper.createChemicalDbOverlay(map); new ChemicalPanel({ - element : div, + element : testDiv, customMap : map }); return chemicalDbOverlay.searchByQuery("rotenone").then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("marker/mechanism") >= 0); + assert.ok(testDiv.innerHTML.indexOf("marker/mechanism") >= 0); }); }); it('searchByQuery', function() { - var div = helper.createChemicalTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); helper.createChemicalDbOverlay(map); var panel = new ChemicalPanel({ - element : div, + element : testDiv, customMap : map }); @@ -92,7 +84,7 @@ describe('ChemicalPanel', function() { return panel.searchByQuery().then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("Rotenone ") >= 0); + assert.ok(testDiv.innerHTML.indexOf("Rotenone ") >= 0); }); }); diff --git a/frontend-js/src/test/js/gui/leftPanel/DrugPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/DrugPanel-test.js index cd970ffdd6..15814d3740 100644 --- a/frontend-js/src/test/js/gui/leftPanel/DrugPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/DrugPanel-test.js @@ -20,26 +20,22 @@ describe('DrugPanel', function() { }); it('contructor', function() { - var div = helper.createDrugTab(); - var map = helper.createCustomMap(); helper.createDrugDbOverlay(map); new DrugPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('createDrugeader for empty', function() { - var div = helper.createDrugTab(); - var map = helper.createCustomMap(); helper.createDrugDbOverlay(map); var panel = new DrugPanel({ - element : div, + element : testDiv, customMap : map }); @@ -47,13 +43,11 @@ describe('DrugPanel', function() { }); it('createDrugeader for empty', function() { - var div = helper.createDrugTab(); - var map = helper.createCustomMap(); helper.createDrugDbOverlay(map); var panel = new DrugPanel({ - element : div, + element : testDiv, customMap : map }); @@ -61,30 +55,28 @@ describe('DrugPanel', function() { }); it('on searchResults changed', function() { - var div = helper.createDrugTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var drugDbOverlay = helper.createDrugDbOverlay(map); new DrugPanel({ - element : div, + element : testDiv, customMap : map }); return drugDbOverlay.searchByQuery("aspirin").then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("Acetylsalicylic acid") >= 0); + assert.ok(testDiv.innerHTML.indexOf("Acetylsalicylic acid") >= 0); }); }); it('searchByQuery', function() { - var div = helper.createDrugTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); helper.createDrugDbOverlay(map); var panel = new DrugPanel({ - element : div, + element : testDiv, customMap : map }); @@ -92,7 +84,7 @@ describe('DrugPanel', function() { return panel.searchByQuery().then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("Acetylsalicylic acid") >= 0); + assert.ok(testDiv.innerHTML.indexOf("Acetylsalicylic acid") >= 0); }); }); diff --git a/frontend-js/src/test/js/gui/leftPanel/Footer-test.js b/frontend-js/src/test/js/gui/leftPanel/Footer-test.js index bd351a3db5..d1345f77a1 100644 --- a/frontend-js/src/test/js/gui/leftPanel/Footer-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/Footer-test.js @@ -20,12 +20,10 @@ describe('Footer', function() { }); it('constructor', function() { - var div = helper.createSearchTab(); - var map = helper.createCustomMap(); new Footer({ - element : div, + element : testDiv, customMap : map }); @@ -34,17 +32,15 @@ describe('Footer', function() { }); it('link clicks', function() { - var div = helper.createSearchTab(); - var map = helper.createCustomMap(); new Footer({ - element : div, + element : testDiv, customMap : map }); var promises = []; - $("a", div).each(function(index, element) { + $("a", testDiv).each(function(index, element) { promises.push(new Promise(function(resolve, reject) { var fun = element.onclick; if (fun) { diff --git a/frontend-js/src/test/js/gui/leftPanel/MiRnaPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/MiRnaPanel-test.js index 8e051db9c7..0a5793b7fe 100644 --- a/frontend-js/src/test/js/gui/leftPanel/MiRnaPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/MiRnaPanel-test.js @@ -20,26 +20,22 @@ describe('MiRnaPanel', function() { }); it('contructor', function() { - var div = helper.createMiRnaTab(); - var map = helper.createCustomMap(); helper.createMiRnaDbOverlay(map); new MiRnaPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('createMiRnaeader for empty', function() { - var div = helper.createMiRnaTab(); - var map = helper.createCustomMap(); helper.createMiRnaDbOverlay(map); var panel = new MiRnaPanel({ - element : div, + element : testDiv, customMap : map }); @@ -47,13 +43,11 @@ describe('MiRnaPanel', function() { }); it('createMiRnaeader for empty', function() { - var div = helper.createMiRnaTab(); - var map = helper.createCustomMap(); helper.createMiRnaDbOverlay(map); var panel = new MiRnaPanel({ - element : div, + element : testDiv, customMap : map }); @@ -61,30 +55,28 @@ describe('MiRnaPanel', function() { }); it('on searchResults changed', function() { - var div = helper.createMiRnaTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var miRnaDbOverlay = helper.createMiRnaDbOverlay(map); new MiRnaPanel({ - element : div, + element : testDiv, customMap : map }); return miRnaDbOverlay.searchByQuery("hsa-miR-125a-3p").then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("hsa-miR-125a-3p") >= 0); + assert.ok(testDiv.innerHTML.indexOf("hsa-miR-125a-3p") >= 0); }); }); it('searchByQuery', function() { - var div = helper.createMiRnaTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); helper.createMiRnaDbOverlay(map); var panel = new MiRnaPanel({ - element : div, + element : testDiv, customMap : map }); @@ -92,7 +84,7 @@ describe('MiRnaPanel', function() { return panel.searchByQuery().then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("http://www.mirbase.org/cgi-bin/mirna_entry.pl?acc") >= 0); + assert.ok(testDiv.innerHTML.indexOf("http://www.mirbase.org/cgi-bin/mirna_entry.pl?acc") >= 0); }); }); diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js index 46d5a2b962..ba8e4c9a08 100644 --- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js @@ -18,24 +18,20 @@ describe('OverlayPanel', function() { }); it('contructor', function() { - var div = document.createElement("div"); - var map = helper.createCustomMap(); new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('refresh', function() { - var div = helper.createOverlayTab(); - var map = helper.createCustomMap(); var panel = new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); @@ -46,8 +42,6 @@ describe('OverlayPanel', function() { }); it('createRow', function() { - var div = helper.createOverlayTab(); - var map = helper.createCustomMap(); var overlay = helper.createLayout(); @@ -56,7 +50,7 @@ describe('OverlayPanel', function() { map.getModel().addLayout(overlay); var panel = new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); @@ -75,8 +69,6 @@ describe('OverlayPanel', function() { openButton.onclick(); }); it('download', function() { - var div = helper.createOverlayTab(); - var map = helper.createCustomMap(); var overlay = helper.createLayout(); @@ -84,7 +76,7 @@ describe('OverlayPanel', function() { map.getModel().addLayout(overlay); var panel = new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); @@ -106,12 +98,10 @@ describe('OverlayPanel', function() { }); it('openAddOverlayDialog', function() { - var div = helper.createOverlayTab(); - var map = helper.createCustomMap(); var panel = new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); @@ -119,12 +109,10 @@ describe('OverlayPanel', function() { }); it('parse overlay file', function() { - var div = helper.createOverlayTab(); - var map = helper.createCustomMap(); var panel = new OverlayPanel({ - element : div, + element : testDiv, customMap : map }); diff --git a/frontend-js/src/test/js/gui/leftPanel/Panel-test.js b/frontend-js/src/test/js/gui/leftPanel/Panel-test.js index fb4eaf9d77..88d3dd98fd 100644 --- a/frontend-js/src/test/js/gui/leftPanel/Panel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/Panel-test.js @@ -20,12 +20,10 @@ describe('Panel', function() { }); it('openDialog', function() { - var div = helper.createSearchTab(); - var map = helper.createCustomMap(); var panel = new Panel({ - element : div, + element : testDiv, customMap : map }); diff --git a/frontend-js/src/test/js/gui/leftPanel/SearchPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/SearchPanel-test.js index ebce4c616e..60c94261c3 100644 --- a/frontend-js/src/test/js/gui/leftPanel/SearchPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/SearchPanel-test.js @@ -20,61 +20,56 @@ describe('SearchPanel', function() { }); it('contructor', function() { - var div = helper.createSearchTab(); - var map = helper.createCustomMap(); helper.createSearchDbOverlay(map); new SearchPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('on searchResults changed', function() { - var div = helper.createSearchTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var searchDbOverlay = helper.createSearchDbOverlay(map); new SearchPanel({ - element : div, + element : testDiv, customMap : map }); return searchDbOverlay.searchByCoordinates(map.getModel().getId(), new google.maps.Point(26547.33, 39419.29)).then( function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("Reaction") >= 0); + assert.ok(testDiv.innerHTML.indexOf("Reaction") >= 0); }); }); it('on searchResults changed 2', function() { - var div = helper.createSearchTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var searchDbOverlay = helper.createSearchDbOverlay(map); new SearchPanel({ - element : div, + element : testDiv, customMap : map }); return searchDbOverlay.searchByQuery("s1", false).then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("s1") >= 0); + assert.ok(testDiv.innerHTML.indexOf("s1") >= 0); }); }); it('search by query with no results', function() { - var div = helper.createSearchTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); var searchDbOverlay = helper.createSearchDbOverlay(map); var panel = new SearchPanel({ - element : div, + element : testDiv, customMap : map }); @@ -82,7 +77,7 @@ describe('SearchPanel', function() { return panel.searchByQuery().then(function() { assert.equal(logger.getWarnings().length, 0); - assert.ok(div.innerHTML.indexOf("s1") >= 0); + assert.ok(testDiv.innerHTML.indexOf("s1") >= 0); }); }); @@ -123,13 +118,12 @@ describe('SearchPanel', function() { }; var alias = new Alias(aliasObj); - var div = helper.createSearchTab(); var map = helper.createCustomMap(); map.getModel().setId(15781); helper.createSearchDbOverlay(map); var panel = new SearchPanel({ - element : div, + element : testDiv, customMap : map }); @@ -138,13 +132,11 @@ describe('SearchPanel', function() { }); it('createLabelText for indefined', function() { - - var div = helper.createSearchTab(); var map = helper.createCustomMap(); helper.createSearchDbOverlay(map); var panel = new SearchPanel({ - element : div, + element : testDiv, customMap : map }); diff --git a/frontend-js/src/test/js/gui/leftPanel/UserPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/UserPanel-test.js index bfbebf0fc8..6c04646f9d 100644 --- a/frontend-js/src/test/js/gui/leftPanel/UserPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/UserPanel-test.js @@ -19,24 +19,20 @@ describe('UserPanel', function() { }); it('contructor', function() { - var div = document.createElement("div"); - var map = helper.createCustomMap(); new UserPanel({ - element : div, + element : testDiv, customMap : map }); assert.equal(logger.getWarnings().length, 0); }); it('show profile', function() { - var div = helper.createUserTab(); - var map = helper.createCustomMap(); var panel = new UserPanel({ - element : div, + element : testDiv, customMap : map }); @@ -45,12 +41,10 @@ describe('UserPanel', function() { }); it('show login page', function() { - var div = helper.createUserTab(); - var map = helper.createCustomMap(); var panel = new UserPanel({ - element : div, + element : testDiv, customMap : map }); @@ -58,12 +52,10 @@ describe('UserPanel', function() { }); it('login', function() { - var div = helper.createUserTab(); - var map = helper.createCustomMap(); var panel = new UserPanel({ - element : div, + element : testDiv, customMap : map }); diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js index da029f50b4..06e8d145bf 100644 --- a/frontend-js/src/test/js/helper.js +++ b/frontend-js/src/test/js/helper.js @@ -87,68 +87,10 @@ Helper.prototype.createOverviewDialogDiv = function() { Helper.prototype.createLeftPanelTab = function() { var result = document.createElement("div"); - result.appendChild(this.createSearchTab()); - result.appendChild(this.createDrugTab()); - result.appendChild(this.createChemicalTab()); - result.appendChild(this.createMiRnaTab()); - result.appendChild(this.createOverlayTab()); - result.appendChild(this.createUserTab()); - result.appendChild(this.createSubmapTab()); - result.appendChild(this.createProjectInfoTab()); - result.appendChild(this.createLegendDiv()); - result.appendChild(this.createHeaderDiv()); - result.appendChild(this.createFooterDiv()); + result.id = "leftPanel"; return result; }; -Helper.prototype.createSearchTab = function() { - return this.createPanelTab("searchTab"); -}; -Helper.prototype.createHeaderDiv = function() { - return this.createPanelTab("headerPanel"); -}; -Helper.prototype.createFooterDiv = function() { - return this.createPanelTab("footerPanel"); -}; - -Helper.prototype.createDrugTab = function() { - return this.createPanelTab("drugTab"); -}; - -Helper.prototype.createChemicalTab = function() { - return this.createPanelTab("chemicalTab"); -}; - -Helper.prototype.createMiRnaTab = function() { - return this.createPanelTab("mirnaTab"); -}; - -Helper.prototype.createPanelTab = function(id) { - var result = document.createElement("div"); - result.id = id; - return result; -}; - -Helper.prototype.createUserTab = function() { - var result = document.createElement("div"); - result.id = "userTab"; - - return result; -}; - -Helper.prototype.createSubmapTab = function() { - var result = document.createElement("div"); - result.id = "submapTab"; - - return result; -}; - -Helper.prototype.createProjectInfoTab = function() { - var result = document.createElement("div"); - result.id = "infoTab"; - - return result; -}; Helper.prototype.createLegendDiv = function() { var result = document.createElement("div"); @@ -170,12 +112,6 @@ Helper.prototype.createLegendDiv = function() { return result; }; -Helper.prototype.createOverlayTab = function() { - var result = document.createElement("div"); - result.id = "overlayTab"; - return result; -}; - Helper.prototype.createCommentDbOverlay = function(map) { var result = new CommentDbOverlay({ map : map, diff --git a/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js b/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js new file mode 100644 index 0000000000..7018dafce6 --- /dev/null +++ b/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js @@ -0,0 +1,26 @@ +"use strict"; + +var Helper = require('../../Helper'); + +var logger = require('../../logger'); + +var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement'); +var DbOverlayCollection = require('../../../../main/js/map/overlay/DbOverlayCollection'); + +var assert = require('assert'); + +describe('DbOverlayCollection', function() { + var helper; + before(function() { + helper = new Helper(); + }); + + it("constructor", function() { + var map = helper.createCustomMap(); + new DbOverlayCollection({ + map : map, + }); + + assert.equal(logger.getWarnings.length, 0); + }); +}); diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index 2bcd259a46..13d096b9e8 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -24,15 +24,20 @@ describe('minerva global', function() { global.menuDiv = helper.createMenuDiv(); document.body.appendChild(global.menuDiv); - + global.dialogsDiv = helper.createDialogsDiv(); document.body.appendChild(global.dialogsDiv); global.scriptDiv = document.createElement("script"); document.body.appendChild(global.scriptDiv); -}); + + global.legendDiv = helper.createLegendDiv(); + document.body.appendChild(global.legendDiv); + + }); afterEach(function() { + document.body.removeChild(global.legendDiv); document.body.removeChild(global.leftPanelTab); document.body.removeChild(global.menuDiv); document.body.removeChild(global.dialogsDiv); @@ -63,9 +68,15 @@ describe('minerva global', function() { }); it("showComments", function() { - var options = helper.createCustomMapOptions(); - return minerva.create(options).then(function() { - document.getElementsByName("commentCheckbox")[0].click(); + var options = null; + return ServerConnector.getProject().then(function(project){ + options = helper.createCustomMapOptions(project); + return minerva.create(options); + }).then(function() { + var commentCheckbox = document.getElementsByName("commentCheckbox")[0]; + commentCheckbox.checked = true; + return commentCheckbox.onclick(); + }).then(function() { assert.ok(ServerConnector.getSessionData(options.getProject()).getShowComments()); }); }); diff --git a/web/src/main/webapp/index.xhtml b/web/src/main/webapp/index.xhtml index 2ce3b38352..6ce5bcefa5 100644 --- a/web/src/main/webapp/index.xhtml +++ b/web/src/main/webapp/index.xhtml @@ -76,7 +76,7 @@ function initMap(){ <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <div class = "containerClass"> <div id="leftPanel" class ="leftPanelClass"> - <div id="headerPanel"/> +<!-- <div id="headerPanel"/> <p:tabView id="tabView" widgetVar="_tabViewVar" activeIndex="0" > <p:tab id="searchTab" title="<div class='tngContainer'><div class='tng'></div></div><div class='maintabdiv'><i class='fa fa-search maintab'></i><br>SEARCH</div>" styleClass="leftTab"> @@ -106,7 +106,7 @@ function initMap(){ </p:tabView > - <div id="footerPanel" class="footerLinks"/> + <div id="footerPanel" class="footerLinks"/> --> </div> <div style="display: table-cell;height:100%;width:100%;"> <div style="height:100%;width:100%;position:relative"> -- GitLab