-//= require qs/dist/qs
-
OSM.NewNote = function (map) {
- var noteLayer = map.noteLayer,
- content = $("#sidebar_content"),
- page = {},
- addNoteButton = $(".control-note .control-button"),
- newNoteMarker,
+ const noteLayer = map.noteLayer,
+ content = $("#sidebar_content"),
+ page = {},
+ addNoteButton = $(".control-note .control-button");
+ let newNoteMarker,
halo;
- var noteIcons = {
+ const noteIcons = {
"new": L.icon({
iconUrl: OSM.NEW_NOTE_MARKER,
iconSize: [25, 40],
});
function createNote(location, text, callback) {
- $.ajax({
- url: "/api/0.6/notes.json",
- type: "POST",
- oauth: true,
- data: {
+ fetch("/api/0.6/notes.json", {
+ method: "POST",
+ headers: { ...OSM.oauth },
+ body: new URLSearchParams({
lat: location.lat,
lon: location.lng,
text
- },
- success: callback
- });
+ })
+ })
+ .then(response => response.json())
+ .then(callback);
}
function addCreatedNoteMarker(feature) {
- var marker = L.marker(feature.geometry.coordinates.reverse(), {
+ const marker = L.marker(feature.geometry.coordinates.reverse(), {
icon: noteIcons[feature.properties.status],
opacity: 0.9,
interactive: true
map.addLayer(noteLayer);
- var params = Qs.parse(path.substring(path.indexOf("?") + 1));
- var markerLatlng;
+ const params = new URLSearchParams(path.substring(path.indexOf("?")));
+ let markerLatlng;
- if (params.lat && params.lon) {
- markerLatlng = L.latLng(params.lat, params.lon);
+ if (params.has("lat") && params.has("lon")) {
+ markerLatlng = L.latLng(params.get("lat"), params.get("lon"));
} else {
markerLatlng = map.getCenter();
}
newNoteMarker.dragging.disable();
createNote(location, text, (feature) => {
+ if (typeof OSM.user === "undefined") {
+ const 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);
OSM.router.route("/note/" + feature.properties.id);