From cd2d2909805aeb2f10d7cb5af2f83202482b37af Mon Sep 17 00:00:00 2001 From: Anton Sarukhanov <code@ant.sr> Date: Fri, 15 Apr 2016 23:37:44 -0400 Subject: [PATCH] Fixed infinite loop on invalid modal request, and implemented modal contents caching --- static/js/map.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/static/js/map.js b/static/js/map.js index 8fb1205..0f682ad 100644 --- a/static/js/map.js +++ b/static/js/map.js @@ -15,6 +15,7 @@ BusMap.Map = function(opts) { this.opts = opts; var stops = {}; var routes = {}; + var modal_cache = {}; var that = this; window._busmap = this; @@ -399,10 +400,18 @@ BusMap.Map = function(opts) { query: "modal", modal_name: name, }; - $.get("ajax", params).done(function(contents) { - modal.append(contents); - }); - setUrlFromView(); + if (modal_cache[name]) { + modal.append(modal_cache[name]); + setUrlFromView(); + } else { + $.get("ajax", params).done(function(contents) { + modal_cache[name] = contents; + modal.append(contents); + setUrlFromView(); + }).fail(function() { + modal.append("Please refresh the page and try again."); + }); + } } // Scaling: update what is displayed based on zoom level @@ -428,7 +437,7 @@ BusMap.Map = function(opts) { return; } var hash = window.location.hash.substring(1); - if (hash == "") return false; + if (hash == "") return; var parts = hash.split(";"); // First part: view string (lat,lon,zoom; vehicle; or stop) applyViewString(parts[0]); -- GitLab