1 OSM.Changeset = function (map) {
3 content = $("#sidebar_content");
5 page.pushstate = page.popstate = function (path) {
6 OSM.loadSidebarContent(path, function () {
11 page.load = function () {
12 const changesetData = content.find("[data-changeset]").data("changeset");
13 changesetData.type = "changeset";
15 var hashParams = OSM.parseHash(window.location.hash);
17 map.addObject(changesetData, function (bounds) {
18 if (!hashParams.center && bounds.isValid()) {
19 OSM.router.withoutMoveListener(function () {
20 map.fitBounds(bounds);
26 function updateChangeset(method, url, include_data) {
29 content.find("#comment-error").prop("hidden", true);
30 content.find("button[data-method][data-url]").prop("disabled", true);
33 data = { text: content.find("textarea").val() };
43 success: function () {
44 OSM.loadSidebarContent(window.location.pathname, page.load);
46 error: function (xhr) {
47 content.find("button[data-method][data-url]").prop("disabled", false);
48 content.find("#comment-error")
49 .text(xhr.responseText)
50 .prop("hidden", false)
51 .get(0).scrollIntoView({ block: "nearest" });
56 function initialize() {
57 content.find("button[data-method][data-url]").on("click", function (e) {
59 var data = $(e.target).data();
60 var include_data = e.target.name === "comment";
61 updateChangeset(data.method, data.url, include_data);
64 content.find("textarea").on("input", function (e) {
65 const form = e.target.form,
66 disabled = $(e.target).val() === "";
67 form.comment.disabled = disabled;
70 content.find("textarea").val("").trigger("input");
73 page.unload = function () {