]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/2009'
authorTom Hughes <tom@compton.nu>
Sun, 4 Nov 2018 14:50:14 +0000 (14:50 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 4 Nov 2018 14:50:14 +0000 (14:50 +0000)
1  2 
app/assets/javascripts/index/history.js

index 6274c135feb9b5c5f19455901cfc78148d8a420c,0b98237d85535f39b970d83bb2f8dc2b0eee90ce..38d0b249ac23cecfd89363207785035f7dd30043
@@@ -38,12 -38,12 +38,12 @@@ OSM.History = function(map) 
    };
  
    function highlightChangeset(id) {
-     group.getLayer(id).setStyle({fillOpacity: 0.3});
+     group.getLayer(id).setStyle({fillOpacity: 0.3, color: "#FF6600", weight: 3});
      $("#changeset_" + id).addClass("selected");
    }
  
    function unHighlightChangeset(id) {
-     group.getLayer(id).setStyle({fillOpacity: 0});
+     group.getLayer(id).setStyle({fillOpacity: 0, color: "#FF9500", weight: 2});
      $("#changeset_" + id).removeClass("selected");
    }
  
      });
    }
  
 -  function updateMap() {
 +  var changesets = [];
 +
 +  function updateBounds() {
      group.clearLayers();
  
 -    var changesets = [];
 +    changesets.forEach(function(changeset) {
 +      var bottomLeft = map.project(L.latLng(changeset.bbox.minlat, changeset.bbox.minlon)),
 +          topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)),
 +          width = topRight.x - bottomLeft.x,
 +          height = bottomLeft.y - topRight.y,
 +          minSize = 20;  // Min width/height of changeset in pixels
 +
 +      if (width < minSize) {
 +        bottomLeft.x -= ((minSize - width) / 2);
 +        topRight.x += ((minSize - width) / 2);
 +      }
  
 -    $("[data-changeset]").each(function () {
 -      var changeset = $(this).data('changeset');
 -      if (changeset.bbox) {
 -        changeset.bounds = L.latLngBounds(
 -          [changeset.bbox.minlat, changeset.bbox.minlon],
 -          [changeset.bbox.maxlat, changeset.bbox.maxlon]);
 -        changesets.push(changeset);
 +      if (height < minSize) {
 +        bottomLeft.y += ((minSize - height) / 2);
 +        topRight.y -= ((minSize - height) / 2);
        }
 +
 +      changeset.bounds = L.latLngBounds(map.unproject(bottomLeft),
 +                                        map.unproject(topRight));
      });
  
      changesets.sort(function (a, b) {
      for (var i = 0; i < changesets.length; ++i) {
        var changeset = changesets[i],
          rect = L.rectangle(changeset.bounds,
-           {weight: 2, color: "#FF9500", opacity: 1, fillColor: "#FFFFBF", fillOpacity: 0});
+           {weight: 2, color: "#FF9500", opacity: 1, fillColor: "#FFFFAF", fillOpacity: 0});
        rect.id = changeset.id;
        rect.addTo(group);
      }
 +  }
 +
 +  function updateMap() {
 +    changesets = $("[data-changeset]").map(function (index,element) {
 +      return $(element).data('changeset');
 +    }).get().filter(function (changeset) {
 +      return changeset.bbox;
 +    });
 +
 +    updateBounds();
  
      if (window.location.pathname !== '/history') {
        var bounds = group.getBounds();
        map.on("moveend", update);
      }
  
 +    map.on("zoomend", updateBounds);
 +
      update();
    };