Move "Browse Map Data" to layers control
authorJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 29 Nov 2012 15:30:38 +0000 (07:30 -0800)
committerTom Hughes <tom@compton.nu>
Thu, 29 Nov 2012 18:23:41 +0000 (18:23 +0000)
Fixes https://trac.openstreetmap.org/ticket/4680

app/assets/javascripts/index.js
app/assets/javascripts/index/browse.js
app/assets/javascripts/map.js.erb
app/assets/javascripts/osm.js.erb
app/assets/javascripts/sidebar.js
app/views/site/index.html.erb

index 8afd3269d61d2aabf6ba3b4822f480ef4bab4fbe..c908f1e3490353d72d53d067e2ad614ff8560aa7 100644 (file)
@@ -1,3 +1,4 @@
+//= require_self
 //= require index/browse
 //= require index/export
 //= require index/key
index 6371f559b1b9807843622232e2a3823da28267de..e7788be1817476b406dd0ea91a309d4201a95ec4 100644 (file)
@@ -3,11 +3,45 @@
 //= require templates/browse/feature_history
 
 $(document).ready(function () {
-  $("#show_data").click(function (e) {
-    $.ajax({ url: $(this).attr('href'), success: function (sidebarHtml) {
-      startBrowse(sidebarHtml);
-    }});
-    e.preventDefault();
+  var areasHidden = false;
+
+  var dataLayer = new L.OSM.DataLayer(null, {
+    styles: {
+      way: {
+        weight: 3,
+        color: "#000000",
+        opacity: 0.4
+      },
+      area: {
+        weight: 3,
+        color: "#ff0000"
+      },
+      node: {
+        color: "#00ff00"
+      }
+    }
+  });
+
+  dataLayer.isWayArea = function () {
+    return !areasHidden && L.OSM.DataLayer.prototype.isWayArea.apply(this, arguments);
+  };
+
+  if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
+    map.layersControl.addOverlay(dataLayer, I18n.t("browse.start_rjs.data_layer_name"));
+  }
+
+  map.on('layeradd', function (e) {
+    if (e.layer === dataLayer) {
+      $.ajax({ url: "/browse/start", success: function (sidebarHtml) {
+        startBrowse(sidebarHtml);
+      }});
+    }
+  });
+
+  map.on('layerremove', function (e) {
+    if (e.layer === dataLayer) {
+      closeSidebar();
+    }
   });
 
   function startBrowse(sidebarHtml) {
@@ -15,30 +49,6 @@ $(document).ready(function () {
     var layersById;
     var selectedLayer;
     var browseObjectList;
-    var areasHidden = false;
-
-    var dataLayer = new L.OSM.DataLayer(null, {
-      styles: {
-        way: {
-          weight: 3,
-          color: "#000000",
-          opacity: 0.4
-        },
-        area: {
-          weight: 3,
-          color: "#ff0000"
-        },
-        node: {
-          color: "#00ff00"
-        }
-      }
-    });
-
-    dataLayer.addTo(map);
-
-    dataLayer.isWayArea = function () {
-      return !areasHidden && L.OSM.DataLayer.prototype.isWayArea.apply(this, arguments);
-    };
 
     var locationFilter = new L.LocationFilter({
       enableButton: false,
index 9df9ca2d99cc7b435ad586699ec10b9e6f826435..291633f53c1c04079311a7afd4437526ea9a2d48 100644 (file)
@@ -95,6 +95,7 @@ function createMap(divName, options) {
 
   if (options.layerControl) {
     layersControl.addTo(map);
+    map.layersControl = layersControl;
   }
 
   for (var i = 0; i < layers.length; i++) {
index 39d995c46243398fff9b4bf5b901f48f9b88b3ca..f3c1c3607a834ddb8b5e6879e677ee63f3d46880 100644 (file)
@@ -7,6 +7,7 @@ OSM = {
   MAX_REQUEST_AREA: <%= MAX_REQUEST_AREA.to_json %>,
   SERVER_URL:       <%= SERVER_URL.to_json %>,
   API_VERSION:      <%= API_VERSION.to_json %>,
+  STATUS:           <%= STATUS.to_json %>,
 
   apiUrl: function (object) {
     var url = "/api/" + OSM.API_VERSION + "/" + object.type + "/" + object.id;
index a5d90698010c20e3c81402993ad9eba4df55c2ba..00ec299a1f74f859f1da33d8fd2705387e08463a 100644 (file)
@@ -13,12 +13,15 @@ function openSidebar(options) {
   $("#sidebar").trigger("opened");
 };
 
-$(document).ready(function () {
-  $(".sidebar_close").click(function (e) {
-    $("#sidebar").css("display", "none");
+function closeSidebar() {
+  $("#sidebar").css("display", "none");
 
-    $("#sidebar").trigger("closed");
+  $("#sidebar").trigger("closed");
+}
 
+$(document).ready(function () {
+  $(".sidebar_close").click(function (e) {
+    closeSidebar();
     e.preventDefault();
   });
 });
index 43485b27f2434ab1f9a59496bdd46fef616d1156..88bf4907320a8b98247ed5d5ecd5867ad2fc2fa7 100644 (file)
@@ -2,12 +2,6 @@
   <%= javascript_include_tag "index" %>
 <% end %>
 
-<% unless STATUS == :api_offline or STATUS == :database_offline -%>
-  <% content_for :editmenu do -%>
-    <li><%= link_to t("browse.start_rjs.data_layer_name"), { :controller => :browse, :action => :start }, :id => "show_data" %></li>
-  <% end -%>
-<% end -%>
-
 <% content_for :left_menu do %>
   <li><h4><%= link_to t("site.key.map_key"), {:action => :key}, :id => "open_map_key", :title => t("site.key.map_key_tooltip") %></h4></li>
 <% end %>