From 75d039447fcd1434a2c0de1a4b44ecd73da2f1bc Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 24 May 2017 16:15:28 +0200 Subject: [PATCH] google map on center change event fix for submaps --- frontend-js/src/main/js/map/AbstractCustomMap.js | 15 +++++++++++++++ frontend-js/src/main/js/map/CustomMap.js | 13 ++----------- frontend-js/src/main/js/map/Submap.js | 1 + frontend-js/src/test/js/map/CustomMap-test.js | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index 7f991b8f71..56f8556095 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -835,6 +835,21 @@ AbstractCustomMap.prototype._openInfoWindowForReaction = function(reactionId) { }); }; +AbstractCustomMap.prototype._createMapChangedCallbacks = function() { + var self = this; + var sessionData = ServerConnector.getSessionData(self.getTopMap().getProject()); + // listener for changing zoom level + google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function() { + sessionData.setZoomLevel(self.getModel(), self.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 = self.getGoogleMap().getCenter(); + var point = self.fromLatLngToPoint(coord); + sessionData.setCenter(self.getModel(), point); + }); +}; + /** * Returns {@link ReactionInfoWindow} for given reaction identifier * diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index 37f4ad33f9..90107f6e44 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -486,15 +486,12 @@ CustomMap.prototype.setZoom = function(mapIdentifier, zoom) { * user session. */ CustomMap.prototype.createMapChangedCallbacks = function() { + this._createMapChangedCallbacks(); var customMapSelf = this; var sessionData = ServerConnector.getSessionData(customMapSelf.getProject()); - // listener for changing zoom level - google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function() { - sessionData.setZoomLevel(customMapSelf.getModel(), customMapSelf.getGoogleMap().getZoom()); - }); // if we have zoom level data stored in session then restore it - var level = ServerConnector.getSessionData(customMapSelf.getProject()).getZoomLevel(this.getModel()); + var level = sessionData.getZoomLevel(this.getModel()); if (parseInt(level) > 0) { level = parseInt(level); this.getGoogleMap().setZoom(level); @@ -502,12 +499,6 @@ CustomMap.prototype.createMapChangedCallbacks = function() { 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); - sessionData.setCenter(customMapSelf.getModel(), point); - }); // listener for changing type of layout google.maps.event.addListener(this.getGoogleMap(), 'maptypeid_changed', function() { diff --git a/frontend-js/src/main/js/map/Submap.js b/frontend-js/src/main/js/map/Submap.js index 18448ff764..05b1dc955d 100644 --- a/frontend-js/src/main/js/map/Submap.js +++ b/frontend-js/src/main/js/map/Submap.js @@ -68,6 +68,7 @@ Submap.prototype.open = function(htmlTag) { $(this.htmlTag).dialog("option", "height", Math.floor(window.innerHeight * 2 / 3)); self.setGoogleMap(new google.maps.Map(mapDiv, mapOptions)); + self._createMapChangedCallbacks(); $(self.htmlTag).bind("resize", function() { google.maps.event.trigger(self.getGoogleMap(), 'resize'); diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js index 226afc67da..f0181916cb 100644 --- a/frontend-js/src/test/js/map/CustomMap-test.js +++ b/frontend-js/src/test/js/map/CustomMap-test.js @@ -731,7 +731,7 @@ describe('CustomMap', function() { var map = new CustomMap(options); map.openSubmap(submodel.getId()); map.setCenter(submodel.getId(), new google.maps.LatLng(10,20)); - assert.ok(ServerConnector.getSessionData().getCenter(map.getModel())); + assert.ok(ServerConnector.getSessionData().getCenter(submodel)); }); }); -- GitLab