Refactoring 4 life
authorTom MacWright <tom@macwright.org>
Mon, 10 Jun 2013 23:00:36 +0000 (16:00 -0700)
committerJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 18 Jul 2013 17:40:24 +0000 (10:40 -0700)
app/assets/javascripts/application.js
app/assets/javascripts/browse.js
app/assets/javascripts/embed.js.erb
app/assets/javascripts/index.js
app/assets/javascripts/leaflet.extend.js.erb [new file with mode: 0644]
app/assets/javascripts/map.js.erb

index 808f30e925c626b205acf5c943e898402f0def97..c9eddfb9cc6c2021fa132946c3427c5f58da1da8 100644 (file)
@@ -5,6 +5,7 @@
 //= require augment
 //= require leaflet
 //= require leaflet.osm
+//= require leaflet.extend
 //= require leaflet.locationfilter
 //= require i18n/translations
 //= require oauth
@@ -78,9 +79,7 @@ function updatelinks(loc, zoom, layers, bounds, object) {
     var minzoom = $(link).data("minzoom");
     if (minzoom) {
         var name = link.id.replace(/anchor$/, "");
-
         $(link).off("click.minzoom");
-
         if (zoom >= minzoom) {
           $(link).attr("title", I18n.t("javascripts.site." + name + "_tooltip"))
               .removeClass("disabled");
index 4edee5952664d3fd1ab6adef034275e2c568a5c2..9caaa3714516a9c38e7be80ca1b985e7d3a43035 100644 (file)
@@ -8,23 +8,17 @@ $(document).ready(function () {
 
     $("#linkloader").load(function () { loaded = true; });
 
-    if (select) {
-      $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" +
-        querystring.stringify({
-            left: left,
-            top: top,
-            right: right,
-            bottom: bottom,
-            select: select
-        }));
-    } else {
-      $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" + querystring.stringify({
-            left: left,
-            top: top,
-            right: right,
-            bottom: bottom
-        }));
-    }
+    var query = {
+        left: left,
+        top: top,
+        right: right,
+        bottom: bottom,
+        select: select
+    };
+
+    if (select) query.select = select;
+    $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" +
+      querystring.stringify(query));
 
     setTimeout(function () {
       if (!loaded) alert(I18n.t('site.index.remote_failed'));
index 742061fa618a6d790fd06ba5830b61af97ae236f..57572ca48ff31dee1cd998d5312c6886443f37fb 100644 (file)
@@ -40,5 +40,5 @@ window.onload = function () {
                    L.latLng(args.bbox[3], args.bbox[2])])
   } else {
     map.fitWorld();
-  }  
+  }
 };
index 29e94338688472dff5d3c8c27e0b9920dd04ffb5..60f88380d912e8847050232997d8e6cf3f76ee22 100644 (file)
@@ -29,7 +29,7 @@ $(document).ready(function () {
     layerCode: "M",
     name: I18n.t("javascripts.map.base.standard")
   }, {
-    layer: new L.OSM.CycleMap( {
+    layer: new L.OSM.CycleMap({
       attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
     }),
     keyid: "cyclemap",
diff --git a/app/assets/javascripts/leaflet.extend.js.erb b/app/assets/javascripts/leaflet.extend.js.erb
new file mode 100644 (file)
index 0000000..3b50530
--- /dev/null
@@ -0,0 +1,31 @@
+L.extend(L.LatLngBounds.prototype, {
+  getSize: function () {
+    return (this._northEast.lat - this._southWest.lat) *
+           (this._northEast.lng - this._southWest.lng);
+  },
+
+  wrap: function () {
+    return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap());
+  }
+});
+
+L.extend(L.Map.prototype, {
+    getLayersCode: function() {
+        var layerConfig = '';
+        for (var i in this._layers) { // TODO: map.eachLayer
+            var layer = this._layers[i];
+            if (layer.options && layer.options.code) {
+                layerConfig += layer.options.code;
+            }
+        }
+        return layerConfig;
+    },
+    getMapBaseLayerId: function() {
+        for (var i in this._layers) { // TODO: map.eachLayer
+            var layer = this._layers[i];
+            if (layer.options && layer.options.keyid) return layer.options.keyid;
+        }
+    }
+});
+
+L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
index 70801306be7bc43f5f56e1710e74be9c75e93982..6d26763f8986ab851f5b1b547a0e6e451a772f56 100644 (file)
@@ -1,18 +1,3 @@
-// Leaflet extensions
-L.extend(L.LatLngBounds.prototype, {
-  getSize: function () {
-    return (this._northEast.lat - this._southWest.lat) *
-           (this._northEast.lng - this._southWest.lng);
-  },
-
-  wrap: function () {
-    return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap());
-  }
-});
-
-L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
-
-var objectLayer;
 var objectLoader;
 
 function getUserIcon(url) {
@@ -28,13 +13,13 @@ function getUserIcon(url) {
 
 function addObjectToMap(object, map, options) {
   if (objectLoader) objectLoader.abort();
-  if (objectLayer) map.removeLayer(objectLayer);
+  if (map.objectLayer) map.removeLayer(map.objectLayer);
 
   objectLoader = $.ajax({
     url: OSM.apiUrl(object),
     dataType: "xml",
     success: function (xml) {
-      objectLayer = new L.OSM.DataLayer(null, {
+      map.objectLayer = new L.OSM.DataLayer(null, {
         styles: {
           node: options.style,
           way: options.style,
@@ -42,7 +27,7 @@ function addObjectToMap(object, map, options) {
         }
       });
 
-      objectLayer.interestingNode = function (node, ways, relations) {
+      map.objectLayer.interestingNode = function (node, ways, relations) {
         if (object.type === "node") {
           return true;
         } else if (object.type === "relation") {
@@ -54,12 +39,12 @@ function addObjectToMap(object, map, options) {
         }
       };
 
-      objectLayer.addData(xml);
+      map.objectLayer.addData(xml);
 
-      if (options.zoom) map.fitBounds(objectLayer.getBounds());
-      if (options.callback) options.callback(objectLayer.getBounds());
+      if (options.zoom) map.fitBounds(map.objectLayer.getBounds());
+      if (options.callback) options.callback(map.objectLayer.getBounds());
 
-      objectLayer.addTo(map);
+      map.objectLayer.addTo(map);
     }
   });
 }