X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/1dc2ff7d576ebfb5a2889a4e49ede620f4d2faec..dc2c84f194f1ae564676964e528d5ec58657fdf0:/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 53697e65b..59fbeeb1d 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -1,10 +1,12 @@ -OSM.NewNote = function(map) { +//= require qs/dist/qs + +OSM.NewNote = function (map) { var noteLayer = map.noteLayer, - content = $('#sidebar_content'), - page = {}, - addNoteButton = $(".control-note .control-button"), - newNote, - halo; + content = $("#sidebar_content"), + page = {}, + addNoteButton = $(".control-note .control-button"), + newNote, + halo; var noteIcons = { "new": L.icon({ @@ -28,9 +30,9 @@ OSM.NewNote = function(map) { e.preventDefault(); e.stopPropagation(); - if ($(this).hasClass('disabled')) return; + if ($(this).hasClass("disabled")) return; - OSM.router.route('/note/new'); + OSM.router.route("/note/new"); }); function createNote(marker, form, url) { @@ -61,7 +63,7 @@ OSM.NewNote = function(map) { newNote = null; noteLayer.removeLayer(marker); addNoteButton.removeClass("active"); - OSM.router.route('/note/' + feature.properties.id); + OSM.router.route("/note/" + feature.properties.id); } } @@ -69,7 +71,7 @@ OSM.NewNote = function(map) { var marker = L.marker(feature.geometry.coordinates.reverse(), { icon: noteIcons[feature.properties.status], opacity: 0.9, - clickable: true + interactive: true }); marker.id = feature.properties.id; marker.addTo(noteLayer); @@ -83,10 +85,12 @@ OSM.NewNote = function(map) { }; function newHalo(loc, a) { - if (a === 'dragstart' && map.hasLayer(halo)) { + var hasHalo = halo && map.hasLayer(halo); + + if (a === "dragstart" && hasHalo) { map.removeLayer(halo); } else { - if (map.hasLayer(halo)) map.removeLayer(halo); + if (hasHalo) map.removeLayer(halo); halo = L.circleMarker(loc, { weight: 2.5, @@ -107,40 +111,26 @@ OSM.NewNote = function(map) { map.addLayer(noteLayer); - var params = querystring.parse(path.substring(path.indexOf('?') + 1)); + var params = Qs.parse(path.substring(path.indexOf("?") + 1)); var markerLatlng; if (params.lat && params.lon) { markerLatlng = L.latLng(params.lat, params.lon); - - var markerPosition = map.latLngToContainerPoint(markerLatlng), - mapSize = map.getSize(), - panBy = L.point(0, 0); - - if (markerPosition.x < 50) { - panBy.x = markerPosition.x - 50; - } else if (markerPosition.x > mapSize.x - 50) { - panBy.x = 50 - mapSize.x + markerPosition.x; - } - - if (markerPosition.y < 50) { - panBy.y = markerPosition.y - 50; - } else if (markerPosition.y > mapSize.y - 50) { - panBy.y = 50 - mapSize.y + markerPosition.y; - } - - map.panBy(panBy); } else { markerLatlng = map.getCenter(); } + map.panInside(markerLatlng, { + padding: [50, 50] + }); + newNote = L.marker(markerLatlng, { - icon: noteIcons["new"], + icon: noteIcons.new, opacity: 0.9, draggable: true }); - newNote.on("dragstart dragend", function(a) { + newNote.on("dragstart dragend", function (a) { newHalo(newNote.getLatLng(), a.type); }); @@ -149,7 +139,7 @@ OSM.NewNote = function(map) { newNote.on("remove", function () { addNoteButton.removeClass("active"); - }).on("dragstart",function () { + }).on("dragstart", function () { $(newNote).stopTime("removenote"); }).on("dragend", function () { content.find("textarea").focus(); @@ -163,17 +153,17 @@ OSM.NewNote = function(map) { $(e.target.form.add).prop("disabled", $(e.target).val() === ""); } - content.find('input[type=submit]').on('click', function (e) { + content.find("input[type=submit]").on("click", function (e) { e.preventDefault(); - createNote(newNote, e.target.form, '/api/0.6/notes.json'); + createNote(newNote, e.target.form, "/api/0.6/notes.json"); }); return map.getState(); }; page.unload = function () { - noteLayer.removeLayer(newNote); - map.removeLayer(halo); + if (newNote) noteLayer.removeLayer(newNote); + if (halo) map.removeLayer(halo); addNoteButton.removeClass("active"); };