From aed34e42e51d38d99ef587dff5ac37350d73a0d0 Mon Sep 17 00:00:00 2001
From: Anton Sarukhanov <code@ant.sr>
Date: Wed, 4 May 2016 15:19:16 -0400
Subject: [PATCH] Clean up modal-closing logic

---
 static/js/map.js | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/static/js/map.js b/static/js/map.js
index 39d8f37..b780ebb 100644
--- a/static/js/map.js
+++ b/static/js/map.js
@@ -51,6 +51,8 @@ BusMap.Map = function(opts) {
             that.leaflet.on('moveend', setUrlFromView);
         }
 
+        // Hide any opened modals when map is clicked.
+        $(that.map).on('click', hideModal);
 
         // Show/hide markers based on zoom.
         that.leaflet.on('zoomend', zoomShowHide);
@@ -388,14 +390,7 @@ BusMap.Map = function(opts) {
         $('div.modal').remove();
         var modal = $('<div class="modal" id="modal-'+name+'"></div>');
         var closeBtn = $('<div class="close">&times;</div>').appendTo(modal);
-        closeBtn.click(function() {
-            $(this).parent().remove();
-            setUrlFromView();
-        });
-        $(that.map).click(function() {
-            modal.remove();
-            setUrlFromView;
-        });
+        closeBtn.on('click', hideModal);
         $(that.opts.mapElement).after(modal);
         modal.show();
         var params = {
@@ -417,6 +412,13 @@ BusMap.Map = function(opts) {
         }
     }
 
+    // Hide modal popup if open
+    function hideModal() {
+        if ($('div.modal').length == 0) return;
+        $('div.modal').remove();
+        setUrlFromView();
+    }
+
     // Scaling: update what is displayed based on zoom level
     function zoomShowHide() {
         var zoom = that.leaflet.getZoom();
-- 
GitLab