]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/changeset.js
Refactor layer persistence
[rails.git] / app / assets / javascripts / changeset.js
index 6ad1fd7fac35ce5da0b01d5edfd7c65f1ce4c302..7f21ae7440d1386b78269299e22b023621adf307 100644 (file)
@@ -1,28 +1,50 @@
 $(document).ready(function () {
-  var rects = {};
-  var map = createMap("changeset_list_map");
+  var changesets = [], rects = {};
+
+  var map = L.map("changeset_list_map", {
+    attributionControl: false,
+    zoomControl: false
+  }).addLayer(new L.OSM.Mapnik());
+
+  L.control.zoom({position: 'topright'})
+    .addTo(map);
+
+  $("#changeset_list_map").on("resized", function () {
+    map.invalidateSize();
+  });
+
   var group = L.featureGroup().addTo(map);
 
   $("[data-changeset]").each(function () {
     var changeset = $(this).data('changeset');
     if (changeset.bbox) {
-      var rect = L.rectangle([[changeset.bbox.minlat, changeset.bbox.minlon],
-                              [changeset.bbox.maxlat, changeset.bbox.maxlon]],
-                             {weight: 2, color: "#ee9900", fillColor: "#ffff55", fillOpacity: 0});
-      rect.id = changeset.id;
-      rects[changeset.id] = rect;
-      rect.addTo(group);
+      changeset.bounds = L.latLngBounds([changeset.bbox.minlat, changeset.bbox.minlon],
+                                        [changeset.bbox.maxlat, changeset.bbox.maxlon]);
+      changesets.push(changeset);
     }
   });
 
+  changesets.sort(function (a, b) {
+    return b.bounds.getSize() - a.bounds.getSize();
+  });
+
+  for (var i = 0; i < changesets.length; ++i) {
+    var changeset = changesets[i],
+        rect = L.rectangle(changeset.bounds,
+                           {weight: 2, color: "#ee9900", fillColor: "#ffff55", fillOpacity: 0});
+    rect.id = changeset.id;
+    rects[changeset.id] = rect;
+    rect.addTo(group);
+  }
+
   function highlightChangeset(id) {
     rects[id].setStyle({fillOpacity: 0.5});
-    $("#tr-changeset-" + id).addClass("selected");
+    $("#changeset_" + id).addClass("selected");
   }
 
   function unHighlightChangeset(id) {
     rects[id].setStyle({fillOpacity: 0});
-    $("#tr-changeset-" + id).removeClass("selected");
+    $("#changeset_" + id).removeClass("selected");
   }
 
   group.on({
@@ -43,6 +65,14 @@ $(document).ready(function () {
     }
   });
 
+  $(window).scroll(function() {
+        if ($(window).scrollTop() > $('.content-heading').outerHeight() + $('#top-bar').outerHeight() ) {
+            $('#changeset_list_map_wrapper').addClass('scrolled');
+        } else {
+            $('#changeset_list_map_wrapper').removeClass('scrolled');
+        }
+  });
+
   var params = OSM.mapParams();
   if (params.bbox) {
     map.fitBounds([[params.minlat, params.minlon],