diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index edf7f67043894e82c60b7651e67e01508ef21235..c90be97065f8d85a83c0b35b7eb711948c2faa76 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -49,36 +49,6 @@ ServerConnector.lastActualization = 0; ServerConnector._customMap = null; -/** - * Set x coordinate for {@link CustomMap} on the server side. - */ -ServerConnector.setCenterCoordinateX = function(value) { - document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateX').value = "" + value; -}; - -/** - * Get x coordinate of the {@link CustomMap} at which it was last browsed. - */ -ServerConnector.getCenterCoordinateX = function() { - var result = parseFloat(document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateX').value); - return result; -}; - -/** - * Set y coordinate for {@link CustomMap} on the server side. - */ -ServerConnector.setCenterCoordinateY = function(value) { - document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateY').value = "" + value; -}; - -/** - * Get y coordinate of the {@link CustomMap} at which it was last browsed. - */ -ServerConnector.getCenterCoordinateY = function() { - var result = parseFloat(document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateY').value); - return result; -}; - /** * Set layout that is currently browsed for {@link CustomMap} on the server * side. diff --git a/frontend-js/src/main/js/SessionData.js b/frontend-js/src/main/js/SessionData.js index fcf6eb61b140789107e39635c928209557a50fb0..9ae6c5e160f6d38508c9abb7d546c54feba657fc 100644 --- a/frontend-js/src/main/js/SessionData.js +++ b/frontend-js/src/main/js/SessionData.js @@ -21,14 +21,11 @@ SessionData.prototype.getProjectId = function(project) { SessionData.prototype.getShowComments = function() { var key = this.getKey(SessionObjectType.SHOW_COMMENT); - - console.log("GET:",key,Cookies.get(key)); return Cookies.get(key) === "true"; }; SessionData.prototype.setShowComments = function(value) { var key = this.getKey(SessionObjectType.SHOW_COMMENT); - console.log(key,value); Cookies.set(key, value + ""); }; @@ -46,6 +43,21 @@ SessionData.prototype.getZoomLevel = function(model) { return value; }; +SessionData.prototype.setCenter = function(model, value) { + var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]); + Cookies.set(key, value.x + "," + value.y); +}; + +SessionData.prototype.getCenter = function(model) { + var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]); + var value = Cookies.get(key); + if (value !== undefined) { + var tmp = value.split(","); + value = new google.maps.Point(tmp[0], tmp[1]); + } + return value; +}; + SessionData.prototype.getKey = function(type, args) { if (type === undefined) { throw new Error("Undefined type"); diff --git a/frontend-js/src/main/js/SessionObjectType.js b/frontend-js/src/main/js/SessionObjectType.js index f861e193744e7fa8f5c6da3bace17c7fd895bc77..0dd6d984a363ff0faf97b52b91baebf73d6c9c10 100644 --- a/frontend-js/src/main/js/SessionObjectType.js +++ b/frontend-js/src/main/js/SessionObjectType.js @@ -1,6 +1,7 @@ "use strict"; var SessionObjectType = { + CENTER : "CENTER", SHOW_COMMENT : "SHOW_COMMENT", 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 1f6a13be86eca5658c24d22fc75e5a97d6c81dc9..4a32d180ad4ba4bf5f086c8ef13ac73d9449ea95 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -692,10 +692,10 @@ CustomMap.prototype.setZoom = function(mapIdentifier, zoom) { */ CustomMap.prototype.createMapChangedCallbacks = function() { var customMapSelf = this; + var sessionData = ServerConnector.getSessionData(customMapSelf.getProject()); // listener for changing zoom level google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function() { - ServerConnector.getSessionData(customMapSelf.getProject()).setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom()); - ServerConnector.actualizeSessionData(); + sessionData.setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom()); }); // if we have zoom level data stored in session then restore it @@ -704,23 +704,19 @@ CustomMap.prototype.createMapChangedCallbacks = function() { level = parseInt(level); this.getGoogleMap().setZoom(level); } else { - ServerConnector.getSessionData(customMapSelf.getProject()).setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom()); + sessionData.setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom()); } // listener for changing location of the map (moving left/reght/top/bottom google.maps.event.addListener(this.getGoogleMap(), 'center_changed', function() { var coord = customMapSelf.getGoogleMap().getCenter(); var point = customMapSelf.fromLatLngToPoint(coord); - ServerConnector.setCenterCoordinateX(point.x); - ServerConnector.setCenterCoordinateY(point.y); - ServerConnector.actualizeSessionData(); + sessionData.setCenter(customMapSelf.getModel(),point); }); // if we have coordinate data stored in session then restore it - var x = ServerConnector.getCenterCoordinateX(); - var y = ServerConnector.getCenterCoordinateY(); - if (!isNaN(x) && !isNaN(y)) { - var point = new google.maps.Point(x, y); + var point = sessionData.getCenter(customMapSelf.getModel()); + if (point!== undefined) { var coord = customMapSelf.fromPointToLatLng(point); customMapSelf.getGoogleMap().setCenter(coord); } diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index 82a44660460a918f6c901c3ccb879ae789ddbb79..3aab0b86efffbae518862b00c3312a280527d198 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -12,19 +12,20 @@ var OriginalServerConnector = require('./ServerConnector'); var logger = require('./logger'); function processUrlGetParams(params) { - var project = params.project; if (project===undefined) { project = params.getProject(); } + var sessionData = ServerConnector.getSessionData(project); + if (GuiConnector.getParams["submap"] === undefined || project.getModel().getId() === parseInt(GuiConnector.getParams["submap"])) { if (GuiConnector.getParams["x"] !== undefined && GuiConnector.getParams["y"] !== undefined) { - ServerConnector.setCenterCoordinateX(GuiConnector.getParams["x"]); - ServerConnector.setCenterCoordinateY(GuiConnector.getParams["y"]); + var point = new google.maps.Point(GuiConnector.getParams["x"],GuiConnector.getParams["y"]); + sessionData.setCenter(project.getModel(), point); } if (GuiConnector.getParams["zoom"] !== undefined) { - ServerConnector.getSessionData(project).setZoomLevel(project.getModel(),GuiConnector.getParams["zoom"]); + sessionData.setZoomLevel(project.getModel(),GuiConnector.getParams["zoom"]); } } } diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js index de017405417bc0e4e3de922ed9dc32aabdcfc6fb..0452aac3f25485659a14658337ba3cc44b00a688 100644 --- a/frontend-js/src/test/js/ServerConnector-mock.js +++ b/frontend-js/src/test/js/ServerConnector-mock.js @@ -83,22 +83,6 @@ ServerConnectorMock.callListeners = function(type, param) { } }; -ServerConnectorMock.setCenterCoordinateX = function(value) { - this.centerCoordinateX = value; -}; - -ServerConnectorMock.getCenterCoordinateX = function() { - return this.centerCoordinateX; -}; - -ServerConnectorMock.setCenterCoordinateY = function(value) { - this.centerCoordinateY = value; -}; - -ServerConnectorMock.getCenterCoordinateY = function() { - return this.centerCoordinateY; -}; - ServerConnectorMock.setSelectedLayout = function(value) { this.selectedLayout = value; }; diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js index bb4df82b77427b84094cd46ab8db2f2f2e091856..7a61d23de1d314fa68a6bdaf05938297d63c9dfb 100644 --- a/frontend-js/src/test/js/helper.js +++ b/frontend-js/src/test/js/helper.js @@ -84,6 +84,7 @@ Helper.prototype.createDbOverlay = function(map) { Helper.prototype.createProject = function() { var result = new Project(); + result.setProjectId("testId"); result.setId(this.idCounter++); result.setModel(this.createModel()); return result; diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js index b175a023396331ff904f367f8d0e066ee63dee26..dfffd450989d8e6865e14aae9273b2ca71699c43 100644 --- a/frontend-js/src/test/js/map/CustomMap-test.js +++ b/frontend-js/src/test/js/map/CustomMap-test.js @@ -542,6 +542,18 @@ describe('CustomMap', function() { assert.ok(ServerConnector.getSessionData(map.getProject()).getShowComments()); }); + it("changed coords in map", function() { + var map = helper.createCustomMap(); + var oldCenter = map.getGoogleMap().getCenter(); + var newCenter = new google.maps.LatLng(3, 87); + map.getGoogleMap().setCenter(newCenter); + google.maps.event.trigger(map.getGoogleMap(), "center_changed"); + + var center = ServerConnector.getSessionData(map.getProject()).getCenter(map.getModel()); + assert.ok(center !== oldCenter); + assert.ok(center instanceof google.maps.Point); + }); + it("refreshComments", function() { var map = helper.createCustomMap(); map.getModel().setId(15781); diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index 049dcbe46bbaea2a13427225d8cd7b146e9720fd..b362a76450b8d24a8c066f4e68828ac9f620ee47 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -34,6 +34,18 @@ describe('minerva global', function() { }); }); + it("contructor with GET coord param", function() { + var options = helper.createCustomMapOptions(); + GuiConnector.getParams["x"] = "5"; + GuiConnector.getParams["y"] = "6"; + return minerva.create(options).then(function(result) { + var center = ServerConnector.getSessionData(options.getProject()).getCenter(options.getProject().getModel()); + assert.ok(center instanceof google.maps.Point); + assert.equal(center.x, 5); + assert.equal(center.y, 6); + }); + }); + it('create with layout', function() { 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 1d3cf8354148d2a880beb87c69a731f69e65672e..4efd454de1969814386f782bcda2df67f8f29343 100644 --- a/web/src/main/webapp/WEB-INF/components/map/map.xhtml +++ b/web/src/main/webapp/WEB-INF/components/map/map.xhtml @@ -38,9 +38,6 @@ <h:inputHidden id="selectedDrugPolygon" value="#{drugMB.polygon}"/> <p:remoteCommand name="_actualizeParams" actionListener="#{mapMB.actualizeParams}"/> - <h:inputHidden id="centerCoordinateX" value="#{mapMB.topModelMapData.centerCoordinateX}"/> - <h:inputHidden id="centerCoordinateY" value="#{mapMB.topModelMapData.centerCoordinateY}"/> - <h:inputHidden id="zoomLevel" value="#{mapMB.topModelMapData.zoomLevel}"/> <h:inputHidden id="selectedLayout" value="#{mapMB.topModelMapData.selectedLayout}"/> <h:panelGroup layout="block" id="submodelDialogGroup">