X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/0be576a272b817c50e91fafa47d15b6ce6a1bb3b..4b6b49801c63424b08c582d349511a6b1e05354f:/app/assets/javascripts/user.js diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index 3a739e83a..1d167d977 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -1,4 +1,10 @@ -//= require leaflet.locatecontrol/src/L.Control.Locate +//= require leaflet.locatecontrol/dist/L.Control.Locate.umd + +(function () { + $(document).on("change", "#user_all", function () { + $("#user_list input[type=checkbox]").prop("checked", $("#user_all").prop("checked")); + }); +}()); $(document).ready(function () { var defaultHomeZoom = 12; @@ -58,19 +64,17 @@ $(document).ready(function () { map.on("click", function (e) { if (!$("#updatehome").is(":checked")) return; - var zoom = map.getZoom(), - precision = OSM.zoomPrecision(zoom), - location = e.latlng.wrap(); + const [lat, lon] = OSM.cropLocation(e.latlng); - $("#home_lat").val(location.lat.toFixed(precision)); - $("#home_lon").val(location.lng.toFixed(precision)); + $("#home_lat").val(lat); + $("#home_lon").val(lon); deleted_lat = null; deleted_lon = null; respondToHomeUpdate(); }).on("moveend", function () { - var lat = $("#home_lat").val(), - lon = $("#home_lon").val(), + var lat = $("#home_lat").val().trim(), + lon = $("#home_lon").val().trim(), location; try { @@ -121,22 +125,26 @@ $(document).ready(function () { var user = $(this).data("user"); if (user.lon && user.lat) { L.marker([user.lat, user.lon], { icon: OSM.getUserIcon(user.icon) }).addTo(map) - .bindPopup(user.description); + .bindPopup(user.description, { minWidth: 200 }); } }); } } function respondToHomeUpdate() { - var lat = $("#home_lat").val(), - lon = $("#home_lon").val(), + var lat = $("#home_lat").val().trim(), + lon = $("#home_lon").val().trim(), location; try { if (lat && lon) { location = L.latLng(lat, lon); } - } catch (error) {} + $("#home_lat, #home_lon").removeClass("is-invalid"); + } catch (error) { + if (lat && isNaN(lat)) $("#home_lat").addClass("is-invalid"); + if (lon && isNaN(lon)) $("#home_lon").addClass("is-invalid"); + } $("#home_message").toggleClass("invisible", Boolean(location)); $("#home_show").prop("hidden", !location); @@ -196,10 +204,6 @@ $(document).ready(function () { enableAuth(); } - $("#user_all").change(function () { - $("#user_list input[type=checkbox]").prop("checked", $("#user_all").prop("checked")); - }); - $("#content.user_confirm").each(function () { $(this).hide(); $(this).find("#confirm").submit();