From aed55c20e248a4925852b3a997f8b5dfdb5f29a2 Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Sat, 14 Mar 2015 18:56:13 +0100 Subject: [PATCH] Phi: stop update after unload --- webgui/topics/Map.js | 23 +++++++++++++---------- webgui/topics/Map/AILayer.js | 4 ++++ webgui/topics/Map/NavdbLayer.js | 4 ++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/webgui/topics/Map.js b/webgui/topics/Map.js index 17a10a8b0..fc11e7042 100644 --- a/webgui/topics/Map.js +++ b/webgui/topics/Map.js @@ -126,9 +126,13 @@ define([ return L.GeoJSON.prototype.onRemove.call(this, map); } + var NavDBLayerName = "Navigation Data", + TrackLayerName = "Flight History", + AILayerName = "Other Traffic"; + + self.overlays = { "Flight History" : trackLayer, - "Navigation Data": L.navdbLayer(), "Other Traffic": L.aiLayer(), @@ -229,27 +233,26 @@ define([ } self.mapResize = function(a,b) { - self.overlays["Navigation Data"].invalidate(); + self.overlays[NavDBLayerName].invalidate(); } self.mapZoomend = function() { - self.overlays["Navigation Data"].invalidate(); + self.overlays[NavDBLayerName].invalidate(); } self.mapMoveend = function() { - self.overlays["Navigation Data"].invalidate(); - } - - self.mapLoad = function(a,b) { -console.log("load",a,b); + self.overlays[NavDBLayerName].invalidate(); } self.mapUnload = function(evt) { - var map = evt.target - var settings = self.storedSettings.settings; + var map = evt.target, + settings = self.storedSettings.settings; settings.selectedOverlays.length = 0; for( var layerName in self.overlays ) { var layer = self.overlays[layerName]; + if( layer.stop && typeof(layer.stop === 'function' )) { + layer.stop(); + } if( map.hasLayer(layer) ) { settings.selectedOverlays.push(layerName); } diff --git a/webgui/topics/Map/AILayer.js b/webgui/topics/Map/AILayer.js index 297e7afc3..884a65f07 100644 --- a/webgui/topics/Map/AILayer.js +++ b/webgui/topics/Map/AILayer.js @@ -51,6 +51,10 @@ leaflet.GeoJSON.prototype.onRemove.call(this, map); }, + stop : function() { + this.updateId++; + }, + updateId : 0, update : function(id) { var self = this; diff --git a/webgui/topics/Map/NavdbLayer.js b/webgui/topics/Map/NavdbLayer.js index d1cb51ec0..8013c286b 100644 --- a/webgui/topics/Map/NavdbLayer.js +++ b/webgui/topics/Map/NavdbLayer.js @@ -112,6 +112,10 @@ leaflet.GeoJSON.prototype.onRemove.call(this, map); }, + stop : function() { + this.updateId++; + }, + invalidate : function() { this.dirty = true; },