diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 124f2761f7d3db93665360aad8a2b21ca62ba95c..14aaaacc0323f4fa8a3383ab7d23316034c48ad0 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -41,46 +41,8 @@ ServerConnector._overlayMethods = []; */ ServerConnector.formIdentifier = "_gmapForm"; -/** - * Variable describing when was last transmition of data (location of the map, - * zoom level, etc.) to the server session. - */ -ServerConnector.lastActualization = 0; - ServerConnector._customMap = null; -/** - * Sets list of layouts visualized by javascript. - */ -ServerConnector.setVisibleLayouts = function(value) { - document.getElementById(ServerConnector.formIdentifier + ':visibleLayouts').value = value; -}; - -/** - * Sends data about coordinates/zoom level etc. to the server. Method checks if - * the transmition is not done to often (at most once per second) - */ -ServerConnector.actualizeSessionData = function() { - var timestamp = new Date().getTime(); - // we send the data with at least 1 second time distance - if (timestamp > ServerConnector.lastActualization) { - ServerConnector.lastActualization = timestamp + 1000; - setTimeout(function() { - ServerConnector.actualizeParams(); - }, 1000); - } -}; - -/** - * Sends data about coordinates/zoom level etc. to the server. Sending is - * performed immediatelly. - * - * @see ServerConnector.actualizeSessionData - */ -ServerConnector.actualizeParams = function() { - _actualizeParams(); -}; - /** * Sets search query that will be handled by server. */ diff --git a/frontend-js/src/main/js/SessionData.js b/frontend-js/src/main/js/SessionData.js index 31f2038315a6679b18568fcaba18e308f50c6989..0e3e0a223896394cdf8797a6f9a28d7e1372b86d 100644 --- a/frontend-js/src/main/js/SessionData.js +++ b/frontend-js/src/main/js/SessionData.js @@ -39,7 +39,21 @@ SessionData.prototype.setSelectedBackgroundOverlay = function(value) { Cookies.set(key, value + ""); }; +SessionData.prototype.getVisibleOverlays = function() { + var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS); + var value = Cookies.get(key); + if (value === undefined || value === "") { + value = []; + } else { + value = value.split(","); + } + return value; +}; +SessionData.prototype.setVisibleOverlays = function(value) { + var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS); + Cookies.set(key, value + ""); +}; SessionData.prototype.setZoomLevel = function(model, value) { var key = this.getKey(SessionObjectType.ZOOM_LEVEL, [ model.getId() ]); diff --git a/frontend-js/src/main/js/SessionObjectType.js b/frontend-js/src/main/js/SessionObjectType.js index a4aeba45dec0f7974a0e972df4f30f7db09b7197..8514f367942c6dc41b713266c26d33bdd34db1b5 100644 --- a/frontend-js/src/main/js/SessionObjectType.js +++ b/frontend-js/src/main/js/SessionObjectType.js @@ -3,6 +3,7 @@ var SessionObjectType = { SHOW_COMMENT : "SHOW_COMMENT", SELECTED_BACKGROUND_OVERLAY : "SELECTED_BACKGROUND_OVERLAY", + VISIBLE_OVERLAYS : "VISIBLE_OVERLAYS", CENTER : "CENTER", ZOOM_LEVEL : "ZOOM_LEVEL", diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index f11091caa10a1f28684af3ae884cd6c1c1e7f367..9e3d6a61b51b5e490b0b93a07d2eddd53ded512b 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -87,9 +87,6 @@ function CustomMap(options) { var commentDialog = new CommentDialog(document.getElementById("feedbackContent"), this); this.setCommentDialog(commentDialog); - - - ServerConnector.actualizeSessionData(); } CustomMap.prototype = Object.create(AbstractCustomMap.prototype); @@ -1077,10 +1074,9 @@ CustomMap.prototype.addSelectedLayout = function(identifier) { resolve(); } else { self.selectedLayouts[identifier] = true; + ServerConnector.getSessionData(self.getProject()).setVisibleOverlays(self.getSelectedLayouts()); return self.getModel().initLayoutDataByLayoutId(identifier).then(function() { return self.refreshSelectedLayouts(); - }).then(function() { - return ServerConnector.setVisibleLayouts(JSON.stringify(self.getSelectedLayouts())); }).then(function() { resolve(); }).catch(function(exception){ @@ -1123,7 +1119,7 @@ CustomMap.prototype.removeSelectedLayout = function(identifier) { } else { this.selectedLayouts[identifier] = false; this.refreshSelectedLayouts(); - ServerConnector.setVisibleLayouts(JSON.stringify(this.getSelectedLayouts())); + ServerConnector.getSessionData(this.getProject()).setVisibleOverlays(this.getSelectedLayouts()); } }; diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js index 67cba6236bbe7296435e985d55c4599e67510804..0f84b28d5a8fdfcea239e85d9e7df600318201ee 100644 --- a/frontend-js/src/test/js/ServerConnector-mock.js +++ b/frontend-js/src/test/js/ServerConnector-mock.js @@ -100,22 +100,6 @@ ServerConnectorMock.getExportModelId = function() { return this.exportModelId; }; -ServerConnectorMock.actualizeSessionData = function() { - ServerConnectorMock.callListeners("onActualizeSessionData"); -}; - -ServerConnectorMock.actualizeParams = function() { - ServerConnectorMock.callListeners("onActualizeParams"); -}; - -ServerConnectorMock.setVisibleLayouts = function(value) { - this.visibleLayouts = value; -}; - -ServerConnectorMock.getVisibleLayouts = function() { - return this.visibleLayouts; -}; - ServerConnectorMock.sendClearRequest = function(overlayName) { ServerConnectorMock.callListeners("onSendClearRequest", overlayName); }; diff --git a/frontend-js/src/test/js/SessionData-test.js b/frontend-js/src/test/js/SessionData-test.js index 0f722e79c3e96946416bf0f8cf1818c3997790c1..d9745cfb9f354002d10eb83ac89ff69c70bd8503 100644 --- a/frontend-js/src/test/js/SessionData-test.js +++ b/frontend-js/src/test/js/SessionData-test.js @@ -26,4 +26,22 @@ describe('SessionData', function() { assert.notOk(session.getShowComments()); assert.equal(logger.getWarnings().length, 0); }); + + it('setVisibleOverlays', function() { + var project = helper.createProject(); + var session = new SessionData(project); + + var overlays = session.getVisibleOverlays(); + + assert.ok(overlays); + assert.equal(overlays.length, 0); + + session.setVisibleOverlays([1,3]); + overlays = session.getVisibleOverlays(); + + assert.ok(overlays); + assert.equal(overlays.length, 2); + assert.equal(overlays[0],1); + assert.equal(overlays[1],3); + }); }); diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js index dfffd450989d8e6865e14aae9273b2ca71699c43..c7d46c095a309485a0ac6f41dd74e0fb89d416b6 100644 --- a/frontend-js/src/test/js/map/CustomMap-test.js +++ b/frontend-js/src/test/js/map/CustomMap-test.js @@ -89,12 +89,25 @@ describe('CustomMap', function() { map.getModel().addLayout(layout); return map.addSelectedLayout(layout.getId()).then(function() { - var vLayouts = JSON.parse(ServerConnector.getVisibleLayouts()); + var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays(); assert.equal(1, vLayouts.length); assert.equal(layout.getId(), vLayouts[0]); }); }); + it("removeSelectedLayout", function() { + var map = helper.createCustomMap(); + var layout = helper.createLayout(); + layout.setInitialized(true); + map.getModel().addLayout(layout); + + return map.addSelectedLayout(layout.getId()).then(function() { + map.removeSelectedLayout(layout.getId()); + var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays(); + assert.equal(0, vLayouts.length); + }); + }); + it("addSelectedLayout with data download", function() { var map = helper.createCustomMap(); var layout = helper.createLayout(); @@ -102,7 +115,7 @@ describe('CustomMap', function() { map.getModel().addLayout(layout); return map.addSelectedLayout(layout.getId()).then(function() { - var vLayouts = JSON.parse(ServerConnector.getVisibleLayouts()); + var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays(); assert.equal(1, vLayouts.length); assert.equal(layout.getId(), vLayouts[0]); diff --git a/web/src/main/webapp/WEB-INF/components/map/map.xhtml b/web/src/main/webapp/WEB-INF/components/map/map.xhtml index ab6c1aae43295fd0f95d5d96e913d81a13eba8fe..5e386d8e3db0fb6432ab462fb28c38f15b1f131b 100644 --- a/web/src/main/webapp/WEB-INF/components/map/map.xhtml +++ b/web/src/main/webapp/WEB-INF/components/map/map.xhtml @@ -33,7 +33,6 @@ <p:contextMenu id="selectionContextMenu" model="#{exportMB.imageExportMenu}" for="gmapElement"/> <h:inputHidden id="selectedPolygon" value="#{exportMB.selectedPolygon}"/> - <h:inputHidden id="visibleLayouts" value="#{exportMB.visibleLayouts}"/> <h:inputHidden id="exportModelId" value="#{exportMB.selectedModelId}"/> <h:inputHidden id="selectedDrugPolygon" value="#{drugMB.polygon}"/>