40204-vm/static/js/pinboard.js
Flatlogic Bot 09fd8f477a 1.0
2026-06-04 16:38:15 +00:00

57 lines
1.9 KiB
JavaScript

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");
}
});