]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/changeset.js
Avoid making the map scroll when adding a new note
[rails.git] / app / assets / javascripts / changeset.js
index 6ad1fd7fac35ce5da0b01d5edfd7c65f1ce4c302..9e393ad5a51ea698e9add6b832d208d62c3cae20 100644 (file)
@@ -1,28 +1,38 @@
 $(document).ready(function () {
-  var rects = {};
+  var changesets = [], rects = {};
   var map = createMap("changeset_list_map");
   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({