Merge remote-tracking branch 'upstream/pull/5471'

This commit is contained in:
Tom Hughes 2025-01-05 16:23:49 +00:00
commit 6e444155d6
5 changed files with 48 additions and 37 deletions

View file

@ -1,30 +1,26 @@
OSM.Changeset = function (map) { OSM.Changeset = function (map) {
var page = {}, var page = {},
content = $("#sidebar_content"), content = $("#sidebar_content");
currentChangesetId;
page.pushstate = page.popstate = function (path, id) { page.pushstate = page.popstate = function (path) {
OSM.loadSidebarContent(path, function () { OSM.loadSidebarContent(path, function () {
page.load(path, id); page.load();
}); });
}; };
page.load = function (path, id) { page.load = function () {
if (id) currentChangesetId = id; const changesetData = content.find("[data-changeset]").data("changeset");
initialize(); changesetData.type = "changeset";
addChangeset(currentChangesetId, true);
};
function addChangeset(id, center) { initialize();
map.addObject({ type: "changeset", id: parseInt(id, 10) }, function (bounds) { map.addObject(changesetData, function (bounds) {
if (!window.location.hash && bounds.isValid() && if (!window.location.hash && bounds.isValid()) {
(center || !map.getBounds().contains(bounds))) {
OSM.router.withoutMoveListener(function () { OSM.router.withoutMoveListener(function () {
map.fitBounds(bounds); map.fitBounds(bounds);
}); });
} }
}); });
} };
function updateChangeset(method, url, include_data) { function updateChangeset(method, url, include_data) {
var data; var data;

View file

@ -267,7 +267,7 @@ L.OSM.Map = L.Map.extend({
this.removeObject(); this.removeObject();
if (object.type === "note") { if (object.type === "note" || object.type === "changeset") {
this._objectLoader = { this._objectLoader = {
abort: function () {} abort: function () {}
}; };
@ -275,18 +275,27 @@ L.OSM.Map = L.Map.extend({
this._object = object; this._object = object;
this._objectLayer = L.featureGroup().addTo(this); this._objectLayer = L.featureGroup().addTo(this);
L.circleMarker(object.latLng, haloStyle).addTo(this._objectLayer); if (object.type === "note") {
L.circleMarker(object.latLng, haloStyle).addTo(this._objectLayer);
if (object.icon) { if (object.icon) {
L.marker(object.latLng, { L.marker(object.latLng, {
icon: object.icon, icon: object.icon,
opacity: 1, opacity: 1,
interactive: true interactive: true
}).addTo(this._objectLayer); }).addTo(this._objectLayer);
}
} else if (object.type === "changeset") {
if (object.bbox) {
L.rectangle([
[object.bbox.minlat, object.bbox.minlon],
[object.bbox.maxlat, object.bbox.maxlon]
], changesetStyle).addTo(this._objectLayer);
}
} }
if (callback) callback(this._objectLayer.getBounds()); if (callback) callback(this._objectLayer.getBounds());
} else { // element or changeset handled by L.OSM.DataLayer } else { // element handled by L.OSM.DataLayer
var map = this; var map = this;
this._objectLoader = $.ajax({ this._objectLoader = $.ajax({
url: OSM.apiUrl(object), url: OSM.apiUrl(object),

View file

@ -41,4 +41,20 @@ module ChangesetsHelper
t "changesets.index.title" t "changesets.index.title"
end end
end end
def changeset_data(changeset)
changeset_data = { :id => changeset.id }
if changeset.bbox_valid?
bbox = changeset.bbox.to_unscaled
changeset_data[:bbox] = {
:minlon => bbox.min_lon,
:minlat => bbox.min_lat,
:maxlon => bbox.max_lon,
:maxlat => bbox.max_lat
}
end
changeset_data
end
end end

View file

@ -1,16 +1,4 @@
<% changeset_data = { :id => changeset.id } <%= tag.li :id => "changeset_#{changeset.id}", :data => { :changeset => changeset_data(changeset) }, :class => "list-group-item list-group-item-action" do %>
if changeset.bbox_valid?
bbox = changeset.bbox.to_unscaled
changeset_data[:bbox] = {
:minlon => bbox.min_lon,
:minlat => bbox.min_lat,
:maxlon => bbox.max_lon,
:maxlat => bbox.max_lat
}
end %>
<%= tag.li :id => "changeset_#{changeset.id}", :data => { :changeset => changeset_data }, :class => "list-group-item list-group-item-action" do %>
<p class="fs-6 text-truncate text-wrap"> <p class="fs-6 text-truncate text-wrap">
<a class="changeset_id link-body-emphasis stretched-link" href="<%= changeset_path(changeset) %>"> <a class="changeset_id link-body-emphasis stretched-link" href="<%= changeset_path(changeset) %>">
<span><%= changeset.tags["comment"].to_s.presence || t("browse.no_comment") %></span> <span><%= changeset.tags["comment"].to_s.presence || t("browse.no_comment") %></span>

View file

@ -6,7 +6,9 @@
<p class="fs-6 overflow-x-auto"> <p class="fs-6 overflow-x-auto">
<%= linkify(@changeset.tags["comment"].to_s.presence || t("browse.no_comment")) %> <%= linkify(@changeset.tags["comment"].to_s.presence || t("browse.no_comment")) %>
</p> </p>
<p class="details"><%= changeset_details(@changeset) %></p> <%= tag.p :class => "details", :data => { :changeset => changeset_data(@changeset) } do %>
<%= changeset_details(@changeset) %>
<% end %>
<%= render :partial => "browse/tag_details", :object => @changeset.tags.except("comment") %> <%= render :partial => "browse/tag_details", :object => @changeset.tags.except("comment") %>