Get rid of the sidebar's onclose global state
authorTom Hughes <tom@compton.nu>
Thu, 30 Aug 2012 22:02:54 +0000 (23:02 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 30 Aug 2012 22:02:54 +0000 (23:02 +0100)
app/assets/javascripts/browse.js
app/assets/javascripts/export.js
app/assets/javascripts/sidebar.js
app/views/site/_key.html.erb

index b7e9c01d552dfd4215452f9dbdc1d1b2c1b3e025..769cc112e5f30b91e6a93b7a03beb7be9e78d6f8 100644 (file)
@@ -17,7 +17,7 @@ function startBrowse(sidebarHtml) {
   $("#sidebar_title").html(I18n.t('browse.start_rjs.data_frame_title'));
   $("#sidebar_content").html(sidebarHtml);
 
-  openSidebar({ onclose: stopBrowse });
+  openSidebar();
 
   var vectors = new OpenLayers.Layer.Vector();
     
@@ -53,7 +53,7 @@ function startBrowse(sidebarHtml) {
     }
   }
 
-  function stopBrowse() {
+  $("#sidebar").one("closed", function () {
     if (map.dataLayer.active) {
       map.dataLayer.active = false;
 
@@ -80,7 +80,7 @@ function startBrowse(sidebarHtml) {
       map.dataLayer.setVisibility(false);
       map.events.unregister("moveend", map, updateData);
     }
-  }
+  });
 
   function startDrag() {
     $("#browse_select_box").html(I18n.t('browse.start_rjs.drag_a_box'));
index a744d0a229c925eba72dd37773778a6677e69bb3..5debb1b075ce8c6c934c882ba471e910ddb44db7 100644 (file)
@@ -46,7 +46,7 @@ function startExport(sidebarHtml) {
 
   $("#mapnik_scale").change(mapnikSizeChanged);
 
-  openSidebar({ onclose: stopExport });
+  openSidebar();
 
   if (map.baseLayer.name == "Mapnik") {
     $("#format_mapnik").prop("checked", true);
@@ -58,7 +58,7 @@ function startExport(sidebarHtml) {
   $("#viewanchor").removeClass("active");
   $("#exportanchor").addClass("active");
 
-  function stopExport() {
+  $("#sidebar").one("closed", function () {
     $("#viewanchor").addClass("active");
     $("#exportanchor").removeClass("active");
 
@@ -67,7 +67,7 @@ function startExport(sidebarHtml) {
     map.events.unregister("moveend", map, mapMoved);
     map.events.unregister("changebaselayer", map, htmlUrlChanged);
     map.removeLayer(vectors);
-  }
+  });
 
   function getMercatorBounds() {
     var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(),
index 4ef379bf5cef51055d3e1b48ae65470da08bb464..a5d90698010c20e3c81402993ad9eba4df55c2ba 100644 (file)
@@ -1,40 +1,24 @@
-var openSidebar;
+function openSidebar(options) {
+  options = options || {};
 
-(function () {
-  var onclose;
+  $("#sidebar").trigger("closed");
 
-  openSidebar = function(options) {
-    options = options || {};
+  if (options.title) { $("#sidebar_title").html(options.title); }
 
-    if (onclose) {
-      onclose();
-      onclose = null;
-    }
+  if (options.width) { $("#sidebar").width(options.width); }
+  else { $("#sidebar").width("30%"); }
 
-    if (options.title) { $("#sidebar_title").html(options.title); }
+  $("#sidebar").css("display", "block");
 
-    if (options.width) { $("#sidebar").width(options.width); }
-    else { $("#sidebar").width("30%"); }
+  $("#sidebar").trigger("opened");
+};
 
-    $("#sidebar").css("display", "block");
+$(document).ready(function () {
+  $(".sidebar_close").click(function (e) {
+    $("#sidebar").css("display", "none");
 
-    $("#sidebar").trigger("opened");
+    $("#sidebar").trigger("closed");
 
-    onclose = options.onclose;
-  };
-
-  $(document).ready(function () {
-    $(".sidebar_close").click(function (e) {
-      $("#sidebar").css("display", "none");
-
-      $("#sidebar").trigger("closed");
-
-      if (onclose) {
-        onclose();
-        onclose = null;
-      }
-
-      e.preventDefault();
-    });
+    e.preventDefault();
   });
-})();
+});
index 15f64275c5e1960d220b6ff367d1a1ddcadbcf7a..b596692ee0408c7bd899d313600cf8947652a29a 100644 (file)
@@ -7,17 +7,14 @@ $(document).ready(function () {
     });
   }
 
-  var closeMapKey = function () {
-    map.events.unregister("zoomend", map, updateMapKey);
-    map.events.unregister("changelayer", map, updateMapKey);
-  }
-
   $("#open_map_key").click(function () {
     updateMapKey();
 
-    openSidebar({ 
-      title: "<%= t('site.key.map_key') %>",
-      onclose: closeMapKey
+    openSidebar({ title: "<%= t('site.key.map_key') %>" });
+
+    $("#sidebar").one("closed", function () {
+      map.events.unregister("zoomend", map, updateMapKey);
+      map.events.unregister("changelayer", map, updateMapKey);
     });
 
     map.events.register("zoomend", map, updateMapKey);