function setText(id, text) { const el = document.getElementById(id); if (el) el.textContent = text; } function requestLocation(callback, statusId) { if (!navigator.geolocation) { setText(statusId, "Location is not supported by this browser."); return; } setText(statusId, "Requesting location…"); navigator.geolocation.getCurrentPosition( (pos) => { const lat = pos.coords.latitude.toFixed(6); const lng = pos.coords.longitude.toFixed(6); setText(statusId, `Captured ${lat}, ${lng}`); callback(lat, lng); }, () => setText(statusId, "Location permission was denied or unavailable."), { enableHighAccuracy: true, timeout: 10000 } ); } document.addEventListener("click", (event) => { const action = event.target?.dataset?.action; if (action === "request-location") { requestLocation(() => {}, "location-status"); } if (action === "request-notifications") { if (!window.Notification) { setText("notification-status", "Notifications are not supported here."); return; } Notification.requestPermission().then((permission) => { setText("notification-status", `Notification permission: ${permission}`); }); } if (action === "fill-current-location") { requestLocation((lat, lng) => { const latInput = document.getElementById("id_latitude"); const lngInput = document.getElementById("id_longitude"); if (latInput) latInput.value = lat; if (lngInput) lngInput.value = lng; }, "form-location-status"); } if (action === "use-location-for-list") { requestLocation((lat, lng) => { document.querySelector("[data-user-lat]").value = lat; document.querySelector("[data-user-lng]").value = lng; const sort = document.getElementById("sort"); if (sort) sort.value = "distance"; const form = document.querySelector("[data-distance-form]"); if (form) form.submit(); }, "list-location-status"); } });