X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/59ac72b2137cbe8bf7333948b641e6e339de3bb1..d095dfe3d4c1ec90cebdfb3307564022cbeaf878:/app/assets/javascripts/index/history.js diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index d137b8456..c36ae5f18 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -1,7 +1,7 @@ //= require jquery-simulate/jquery.simulate OSM.History = function (map) { - var page = {}; + const page = {}; $("#sidebar_content") .on("click", ".changeset_more a", loadMore) @@ -12,7 +12,7 @@ OSM.History = function (map) { unHighlightChangeset($(this).data("changeset").id); }); - var group = L.featureGroup() + const group = L.featureGroup() .on("mouseover", function (e) { highlightChangeset(e.layer.id); }) @@ -20,7 +20,7 @@ OSM.History = function (map) { unHighlightChangeset(e.layer.id); }) .on("click", function (e) { - clickChangeset(e.layer.id, e); + clickChangeset(e.layer.id, e.originalEvent); }); group.getLayerId = function (layer) { @@ -28,13 +28,13 @@ OSM.History = function (map) { }; function highlightChangeset(id) { - var layer = group.getLayer(id); + const layer = group.getLayer(id); if (layer) layer.setStyle({ fillOpacity: 0.3, color: "#FF6600", weight: 3 }); $("#changeset_" + id).addClass("selected"); } function unHighlightChangeset(id) { - var layer = group.getLayer(id); + const layer = group.getLayer(id); if (layer) layer.setStyle({ fillOpacity: 0, color: "#FF9500", weight: 2 }); $("#changeset_" + id).removeClass("selected"); } @@ -43,53 +43,64 @@ OSM.History = function (map) { $("#changeset_" + id).find("a.changeset_id").simulate("click", e); } + function displayFirstChangesets(html) { + $("#sidebar_content .changesets").html(html); + } + + function displayMoreChangesets(html) { + $("#sidebar_content .changeset_more").replaceWith(html); + const oldList = $("#sidebar_content .changesets ol").first(); + const newList = oldList.next("ol"); + newList.children().appendTo(oldList); + newList.remove(); + } + function update() { - var data = { list: "1" }; + const data = new URLSearchParams(); if (window.location.pathname === "/history") { - data.bbox = map.getBounds().wrap().toBBoxString(); - var feedLink = $("link[type=\"application/atom+xml\"]"), - feedHref = feedLink.attr("href").split("?")[0]; - feedLink.attr("href", feedHref + "?bbox=" + data.bbox); + data.set("bbox", map.getBounds().wrap().toBBoxString()); + const feedLink = $("link[type=\"application/atom+xml\"]"), + feedHref = feedLink.attr("href").split("?")[0]; + feedLink.attr("href", feedHref + "?" + data); } - $.ajax({ - url: window.location.pathname, - method: "GET", - data: data, - success: function (html) { - $("#sidebar_content .changesets").html(html); + data.set("list", "1"); + + fetch(window.location.pathname + "?" + data) + .then(response => response.text()) + .then(function (html) { + displayFirstChangesets(html); updateMap(); - } - }); + }); } function loadMore(e) { e.preventDefault(); e.stopPropagation(); - var div = $(this).parents(".changeset_more"); + const div = $(this).parents(".changeset_more"); $(this).hide(); div.find(".loader").show(); - $.get($(this).attr("href"), function (data) { - div.replaceWith(data); + $.get($(this).attr("href"), function (html) { + displayMoreChangesets(html); updateMap(); }); } - var changesets = []; + let changesets = []; function updateBounds() { group.clearLayers(); - 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 + for (const changeset of changesets) { + const 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); @@ -103,16 +114,15 @@ OSM.History = function (map) { changeset.bounds = L.latLngBounds(map.unproject(bottomLeft), map.unproject(topRight)); - }); + } 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: "#FF9500", opacity: 1, fillColor: "#FFFFAF", fillOpacity: 0 }); + for (const changeset of changesets) { + const rect = L.rectangle(changeset.bounds, + { weight: 2, color: "#FF9500", opacity: 1, fillColor: "#FFFFAF", fillOpacity: 0 }); rect.id = changeset.id; rect.addTo(group); } @@ -128,13 +138,12 @@ OSM.History = function (map) { updateBounds(); if (window.location.pathname !== "/history") { - var bounds = group.getBounds(); + const bounds = group.getBounds(); if (bounds.isValid()) map.fitBounds(bounds); } } page.pushstate = page.popstate = function (path) { - $("#history_tab").addClass("current"); OSM.loadSidebarContent(path, page.load); }; @@ -153,8 +162,7 @@ OSM.History = function (map) { page.unload = function () { map.removeLayer(group); map.off("moveend", update); - - $("#history_tab").removeClass("current"); + map.off("zoomend", updateBounds); }; return page;