X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/34e06204636f4390b8b99fdce71af87d9a00663b..3bdbc35bbd8f44bab813adb5c9afe505868e4a09:/app/assets/javascripts/index/note.js diff --git a/app/assets/javascripts/index/note.js b/app/assets/javascripts/index/note.js index 24d24f8ae..6a0487aaa 100644 --- a/app/assets/javascripts/index/note.js +++ b/app/assets/javascripts/index/note.js @@ -27,41 +27,47 @@ OSM.Note = function (map) { var data = $(".details").data(); if (!data) return; var latLng = L.latLng(data.coordinates.split(",")); - if (!map.getBounds().contains(latLng)) moveToNote(); + if (!map.getBounds().contains(latLng)) { + OSM.router.withoutMoveListener(function () { + map.setView(latLng, 15, { reset: true }); + }); + } }); }; page.load = function (path, id) { initialize(path, id); - moveToNote(); }; function initialize(path, id) { - content.find("button[type=submit]").on("click", function (e) { + content.find("button[name]").on("click", function (e) { e.preventDefault(); var data = $(e.target).data(); - var form = e.target.form; - - $(form).find("button[type=submit]").prop("disabled", true); - - $.ajax({ + var name = $(e.target).attr("name"); + var ajaxSettings = { url: data.url, type: data.method, oauth: true, - data: { text: $(form.text).val() }, - success: function () { - OSM.loadSidebarContent(path, function () { + success: () => { + OSM.loadSidebarContent(path, () => { initialize(path, id); - moveToNote(); }); }, - error: function (xhr) { - $(form).find("#comment-error") + error: (xhr) => { + content.find("#comment-error") .text(xhr.responseText) - .prop("hidden", false); - updateButtons(form); + .prop("hidden", false) + .get(0).scrollIntoView({ block: "nearest" }); + updateButtons(); } - }); + }; + + if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") { + ajaxSettings.data = { text: content.find("textarea").val() }; + } + + content.find("button[name]").prop("disabled", true); + $.ajax(ajaxSettings); }); content.find("textarea").on("input", function (e) { @@ -73,35 +79,33 @@ OSM.Note = function (map) { var data = $(".details").data(); if (data) { + var hashParams = OSM.parseHash(window.location.hash); map.addObject({ type: "note", id: parseInt(id, 10), latLng: L.latLng(data.coordinates.split(",")), icon: noteIcons[data.status] + }, function () { + if (!hashParams.center) { + var latLng = L.latLng(data.coordinates.split(",")); + OSM.router.withoutMoveListener(function () { + map.setView(latLng, 15, { reset: true }); + }); + } }); } } - function updateButtons(form) { - $(form).find("button[type=submit]").prop("disabled", false); - if ($(form.text).val() === "") { - $(form.close).text($(form.close).data("defaultActionText")); - $(form.comment).prop("disabled", true); - } else { - $(form.close).text($(form.close).data("commentActionText")); - $(form.comment).prop("disabled", false); - } - } + function updateButtons() { + var resolveButton = content.find("button[name='close']"); + var commentButton = content.find("button[name='comment']"); - function moveToNote() { - var data = $(".details").data(); - if (!data) return; - var latLng = L.latLng(data.coordinates.split(",")); - - if (!window.location.hash || window.location.hash.match(/^#?c[0-9]+$/)) { - OSM.router.withoutMoveListener(function () { - map.setView(latLng, 15, { reset: true }); - }); + content.find("button[name]").prop("disabled", false); + if (content.find("textarea").val() === "") { + resolveButton.text(resolveButton.data("defaultActionText")); + commentButton.prop("disabled", true); + } else { + resolveButton.text(resolveButton.data("commentActionText")); } }