X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/f839257e3e7fb54d738d278b965f12e9c01769f0..7848643990f11e079b73310936fc1d2a85cffe83:/app/assets/javascripts/user.js diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index 14da8f300..88999f45a 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -1,8 +1,10 @@ //= require leaflet.locatecontrol/src/L.Control.Locate $(document).ready(function () { + var map, marker, deleted_lat, deleted_lon; + if ($("#map").length) { - var map = L.map("map", { + map = L.map("map", { attributionControl: false, zoomControl: false }).addLayer(new L.OSM.Mapnik()); @@ -41,7 +43,7 @@ $(document).ready(function () { } if ($("#map").hasClass("set_location")) { - var marker = L.marker([0, 0], { icon: OSM.getUserIcon() }); + marker = L.marker([0, 0], { icon: OSM.getUserIcon() }); if (OSM.home) { marker.setLatLng([OSM.home.lat, OSM.home.lon]); @@ -54,14 +56,21 @@ $(document).ready(function () { precision = OSM.zoomPrecision(zoom), location = e.latlng.wrap(); - $("#homerow").removeClass(); $("#home_lat").val(location.lat.toFixed(precision)); $("#home_lon").val(location.lng.toFixed(precision)); - marker.setLatLng(e.latlng); - marker.addTo(map); + respondToHomeUpdate(); } }); + + $("#home_lat, #home_lon").on("input", respondToHomeUpdate); + + $("#home_show").click(function () { + var lat = $("#home_lat").val(), + lon = $("#home_lon").val(); + + map.panTo([lat, lon]); + }); } else { $("[data-user]").each(function () { var user = $(this).data("user"); @@ -73,6 +82,24 @@ $(document).ready(function () { } } + function respondToHomeUpdate() { + var lat = $("#home_lat").val(), + lon = $("#home_lon").val(), + has_home = !!(lat && lon); + + $("#home_message").toggleClass("invisible", has_home); + $("#home_show").prop("hidden", !has_home); + $("#home_delete").prop("hidden", !has_home); + $("#home_undelete").prop("hidden", !(!has_home && deleted_lat && deleted_lon)); + if (has_home) { + marker.setLatLng([lat, lon]); + marker.addTo(map); + map.panTo([lat, lon]); + } else { + marker.removeFrom(map); + } + } + function updateAuthUID() { var provider = $("select#user_auth_provider").val();