X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/50f658142be71156945d5ab3a73ae3851365768b..954eafd424eaae962f09ff687c6abaaf71eb9cc0:/app/assets/javascripts/index/new_note.js diff --git a/app/assets/javascripts/index/new_note.js b/app/assets/javascripts/index/new_note.js index 59fbeeb1d..f50357158 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -5,7 +5,7 @@ OSM.NewNote = function (map) { content = $("#sidebar_content"), page = {}, addNoteButton = $(".control-note .control-button"), - newNote, + newNoteMarker, halo; var noteIcons = { @@ -35,36 +35,23 @@ OSM.NewNote = function (map) { OSM.router.route("/note/new"); }); - function createNote(marker, form, url) { + function createNote(marker, text, callback) { var location = marker.getLatLng().wrap(); marker.options.draggable = false; marker.dragging.disable(); - $(form).find("input[type=submit]").prop("disabled", true); - $.ajax({ - url: url, + url: "/api/0.6/notes.json", type: "POST", oauth: true, data: { lat: location.lat, lon: location.lng, - text: $(form.text).val() + text }, - success: function (feature) { - noteCreated(feature, marker); - } + success: callback }); - - function noteCreated(feature, marker) { - content.find("textarea").val(""); - updateMarker(feature); - newNote = null; - noteLayer.removeLayer(marker); - addNoteButton.removeClass("active"); - OSM.router.route("/note/" + feature.properties.id); - } } function updateMarker(feature) { @@ -124,23 +111,21 @@ OSM.NewNote = function (map) { padding: [50, 50] }); - newNote = L.marker(markerLatlng, { + newNoteMarker = L.marker(markerLatlng, { icon: noteIcons.new, opacity: 0.9, draggable: true }); - newNote.on("dragstart dragend", function (a) { - newHalo(newNote.getLatLng(), a.type); + newNoteMarker.on("dragstart dragend", function (a) { + newHalo(newNoteMarker.getLatLng(), a.type); }); - newNote.addTo(noteLayer); - newHalo(newNote.getLatLng()); + newNoteMarker.addTo(noteLayer); + newHalo(newNoteMarker.getLatLng()); - newNote.on("remove", function () { + newNoteMarker.on("remove", function () { addNoteButton.removeClass("active"); - }).on("dragstart", function () { - $(newNote).stopTime("removenote"); }).on("dragend", function () { content.find("textarea").focus(); }); @@ -154,15 +139,25 @@ OSM.NewNote = function (map) { } content.find("input[type=submit]").on("click", function (e) { + const text = content.find("textarea").val(); + e.preventDefault(); - createNote(newNote, e.target.form, "/api/0.6/notes.json"); + $(this).prop("disabled", true); + createNote(newNoteMarker, text, (feature) => { + content.find("textarea").val(""); + updateMarker(feature); + noteLayer.removeLayer(newNoteMarker); + newNoteMarker = null; + addNoteButton.removeClass("active"); + OSM.router.route("/note/" + feature.properties.id); + }); }); return map.getState(); }; page.unload = function () { - if (newNote) noteLayer.removeLayer(newNote); + if (newNoteMarker) noteLayer.removeLayer(newNoteMarker); if (halo) map.removeLayer(halo); addNoteButton.removeClass("active"); };