diff --git a/static/js/qr_destination.js b/static/js/qr_destination.js
index 435fc54..358c772 100644
--- a/static/js/qr_destination.js
+++ b/static/js/qr_destination.js
@@ -59,6 +59,7 @@ document.addEventListener("DOMContentLoaded", function () {
// CRITICAL: Initialize systems in correct order
initializeLanguage();
+ initializeLocationServicesCheck();
initializeStaffIdPersistence();
initializeForm();
initializeLocation();
@@ -733,3 +734,152 @@ function startClock() {
updateClock();
setInterval(updateClock, 1000);
}
+
+function checkLocationServicesStatus() {
+ console.log("📱 Checking location services status...");
+
+ // Check if geolocation is supported
+ if (!navigator.geolocation) {
+ console.log("❌ Geolocation not supported by this browser");
+ showLocationServicesWarning("not_supported");
+ return;
+ }
+
+ // Test location access with a quick check
+ const timeoutId = setTimeout(() => {
+ console.log("⏰ Location permission check timed out");
+ showLocationServicesWarning("timeout");
+ }, 3000); // 3 second timeout
+
+ navigator.geolocation.getCurrentPosition(
+ (position) => {
+ // Success - location services are working
+ clearTimeout(timeoutId);
+ console.log("✅ Location services are available and enabled");
+ hideLocationServicesWarning();
+ },
+ (error) => {
+ // Error - location services may be disabled
+ clearTimeout(timeoutId);
+ console.log("❌ Location services error:", error.message);
+
+ switch (error.code) {
+ case error.PERMISSION_DENIED:
+ showLocationServicesWarning("permission_denied");
+ break;
+ case error.POSITION_UNAVAILABLE:
+ showLocationServicesWarning("position_unavailable");
+ break;
+ case error.TIMEOUT:
+ showLocationServicesWarning("timeout");
+ break;
+ default:
+ showLocationServicesWarning("unknown_error");
+ break;
+ }
+ },
+ {
+ enableHighAccuracy: false,
+ timeout: 2500,
+ maximumAge: 60000
+ }
+ );
+}
+
+/**
+ * Show location services warning banner
+ */
+function showLocationServicesWarning(errorType) {
+ // Remove existing warning if present
+ hideLocationServicesWarning();
+
+ const warningMessages = {
+ en: {
+ not_supported: "Location services are not supported by your browser.
Los servicios de ubicación no son compatibles con su navegador.",
+ permission_denied: "Location access has been denied. Please enable location services for accurate check-in.
Se ha denegado el acceso a la ubicación. Habilite los servicios de ubicación para un registro preciso.",
+ position_unavailable: "Location services appear to be disabled. Please turn on location services for accurate check-in.
Los servicios de ubicación parecen estar deshabilitados. Active los servicios de ubicación para un registro preciso.",
+ timeout: "Location services may be disabled. Please check your location settings for accurate check-in.
Los servicios de ubicación pueden estar deshabilitados. Verifique su configuración de ubicación para un registro preciso.",
+ unknown_error: "Unable to access location services. Please check your location settings.
No se puede acceder a los servicios de ubicación. Verifique su configuración de ubicación."
+ },
+ es: {
+ not_supported: "Los servicios de ubicación no son compatibles con su navegador.",
+ permission_denied: "Se ha denegado el acceso a la ubicación. Habilite los servicios de ubicación para un registro preciso.",
+ position_unavailable: "Los servicios de ubicación parecen estar deshabilitados. Active los servicios de ubicación para un registro preciso.",
+ timeout: "Los servicios de ubicación pueden estar deshabilitados. Verifique su configuración de ubicación para un registro preciso.",
+ unknown_error: "No se puede acceder a los servicios de ubicación. Verifique su configuración de ubicación."
+ }
+ };
+
+ const currentLang = currentLanguage || 'en';
+ const message = warningMessages[currentLang][errorType] || warningMessages['en'][errorType];
+
+ // Create warning banner
+ const warningBanner = document.createElement('div');
+ warningBanner.id = 'locationServicesWarning';
+ warningBanner.className = 'location-warning-banner';
+ warningBanner.innerHTML = `
+