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

View file

@ -267,7 +267,7 @@ L.OSM.Map = L.Map.extend({
this.removeObject();
if (object.type === "note") {
if (object.type === "note" || object.type === "changeset") {
this._objectLoader = {
abort: function () {}
};
@ -275,18 +275,27 @@ L.OSM.Map = L.Map.extend({
this._object = object;
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) {
L.marker(object.latLng, {
icon: object.icon,
opacity: 1,
interactive: true
}).addTo(this._objectLayer);
if (object.icon) {
L.marker(object.latLng, {
icon: object.icon,
opacity: 1,
interactive: true
}).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());
} else { // element or changeset handled by L.OSM.DataLayer
} else { // element handled by L.OSM.DataLayer
var map = this;
this._objectLoader = $.ajax({
url: OSM.apiUrl(object),

View file

@ -41,4 +41,20 @@ module ChangesetsHelper
t "changesets.index.title"
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

View file

@ -1,16 +1,4 @@
<% 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 %>
<%= tag.li :id => "changeset_#{changeset.id}", :data => { :changeset => changeset_data }, :class => "list-group-item list-group-item-action" do %>
<%= tag.li :id => "changeset_#{changeset.id}", :data => { :changeset => changeset_data(changeset) }, :class => "list-group-item list-group-item-action" do %>
<p class="fs-6 text-truncate text-wrap">
<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>

View file

@ -6,7 +6,9 @@
<p class="fs-6 overflow-x-auto">
<%= linkify(@changeset.tags["comment"].to_s.presence || t("browse.no_comment")) %>
</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") %>