X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/501d13e1c0936cc3ba3d9639620517bae34e5784..a7da2a5b3962a28e2cafbd6ae606290a29639a78:/app/assets/javascripts/index/changeset.js diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index 57d98dc24..caf40f6b6 100644 --- a/app/assets/javascripts/index/changeset.js +++ b/app/assets/javascripts/index/changeset.js @@ -1,36 +1,35 @@ OSM.Changeset = function (map) { var page = {}, - content = $('#sidebar_content'), - currentChangesetId; + content = $("#sidebar_content"); - page.pushstate = page.popstate = function(path, id) { - OSM.loadSidebarContent(path, function() { - page.load(path, id); + page.pushstate = page.popstate = function (path) { + OSM.loadSidebarContent(path, function () { + 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) { - var bounds = map.addObject({type: 'changeset', id: parseInt(id)}, 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; + + content.find("#comment-error").prop("hidden", true); + content.find("button[data-method][data-url]").prop("disabled", true); - function updateChangeset(form, method, url, include_data) { - $(form).find("input[type=submit]").prop("disabled", true); - if(include_data) { - data = {text: $(form.text).val()}; + if (include_data) { + data = { text: content.find("textarea").val() }; } else { data = {}; } @@ -42,39 +41,41 @@ OSM.Changeset = function (map) { data: data, success: function () { OSM.loadSidebarContent(window.location.pathname, page.load); + }, + error: function (xhr) { + content.find("button[data-method][data-url]").prop("disabled", false); + content.find("#comment-error") + .text(xhr.responseText) + .prop("hidden", false) + .get(0).scrollIntoView({ block: "nearest" }); } }); } function initialize() { - content.find("input[name=comment]").on("click", function (e) { + content.find("button[data-method][data-url]").on("click", function (e) { e.preventDefault(); var data = $(e.target).data(); - updateChangeset(e.target.form, data.method, data.url, true); - }); - - content.find(".action-button").on("click", function (e) { - e.preventDefault(); - var data = $(e.target).data(); - updateChangeset(e.target.form, data.method, data.url); + var include_data = e.target.name === "comment"; + updateChangeset(data.method, data.url, include_data); }); content.find("textarea").on("input", function (e) { var form = e.target.form; - if ($(e.target).val() == "") { + if ($(e.target).val() === "") { $(form.comment).prop("disabled", true); } else { $(form.comment).prop("disabled", false); } }); - content.find("textarea").val('').trigger("input"); - }; + content.find("textarea").val("").trigger("input"); + } - page.unload = function() { + page.unload = function () { map.removeObject(); }; return page; -}; \ No newline at end of file +};