X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/5542858315f89d73cd13b1292acbbddb7de678cc..dae7a003fee3c9a413c959381a558e4d5636f3bd:/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 eab4b258a..4f38f8b55 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -96,9 +96,7 @@ OSM.NewNote = function (map) { newNoteMarker.addTo(map); addHalo(newNoteMarker.getLatLng()); - newNoteMarker.on("remove", function () { - addNoteButton.removeClass("active"); - }).on("dragend", function () { + newNoteMarker.on("dragend", function () { content.find("textarea").focus(); }); } @@ -109,6 +107,21 @@ OSM.NewNote = function (map) { newNoteMarker = null; } + function moveNewNotMarkerToClick(e) { + if (newNoteMarker) newNoteMarker.setLatLng(e.latlng); + if (halo) halo.setLatLng(e.latlng); + content.find("textarea").focus(); + } + + function updateControls() { + const zoomedOut = addNoteButton.hasClass("disabled"); + const withoutText = content.find("textarea").val() === ""; + + content.find("#new-note-zoom-warning").prop("hidden", !zoomedOut); + content.find("input[type=submit]").prop("disabled", zoomedOut || withoutText); + if (newNoteMarker) newNoteMarker.setOpacity(zoomedOut ? 0.5 : 0.9); + } + page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path, function () { page.load(path); @@ -116,9 +129,6 @@ OSM.NewNote = function (map) { }; page.load = function (path) { - if (addNoteButton.hasClass("disabled")) return; - if (addNoteButton.hasClass("active")) return; - addNoteButton.addClass("active"); map.addLayer(noteLayer); @@ -139,13 +149,9 @@ OSM.NewNote = function (map) { addNewNoteMarker(markerLatlng); content.find("textarea") - .on("input", disableWhenBlank) + .on("input", updateControls) .focus(); - function disableWhenBlank(e) { - $(e.target.form.add).prop("disabled", $(e.target).val() === ""); - } - content.find("input[type=submit]").on("click", function (e) { const location = newNoteMarker.getLatLng().wrap(); const text = content.find("textarea").val(); @@ -156,17 +162,26 @@ OSM.NewNote = function (map) { newNoteMarker.dragging.disable(); createNote(location, text, (feature) => { + if (typeof OSM.user === "undefined") { + var anonymousNotesCount = Number(Cookies.get("_osm_anonymous_notes_count")) || 0; + Cookies.set("_osm_anonymous_notes_count", anonymousNotesCount + 1, { secure: true, expires: 30, path: "/", samesite: "lax" }); + } content.find("textarea").val(""); addCreatedNoteMarker(feature); - addNoteButton.removeClass("active"); OSM.router.route("/note/" + feature.properties.id); }); }); + map.on("click", moveNewNotMarkerToClick); + addNoteButton.on("disabled enabled", updateControls); + updateControls(); + return map.getState(); }; page.unload = function () { + map.off("click", moveNewNotMarkerToClick); + addNoteButton.off("disabled enabled", updateControls); removeNewNoteMarker(); addNoteButton.removeClass("active"); };