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);
- };
+ page.load = function () {
+ const changesetData = content.find("[data-changeset]").data("changeset");
+ changesetData.type = "changeset";
- function addChangeset(id) {
- map.addObject({ type: "changeset", id: parseInt(id, 10) }, function (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;
this.removeObject();
- if (object.type === "note") {
+ if (object.type === "note" || object.type === "changeset") {
this._objectLoader = {
abort: function () {}
};
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),