diff --git a/static/css/attendance.css b/static/css/attendance.css index eba85ac..d2f7c55 100644 --- a/static/css/attendance.css +++ b/static/css/attendance.css @@ -993,40 +993,16 @@ opacity: 0.8; } -/* Location accuracy level colors - based on distance */ -.location-accuracy-badge.accuracy-excellent { - background: var(--success-light); - color: var(--success-color); - border: 1px solid rgba(5, 150, 105, 0.3); -} - +/* Location accuracy level colors - 2-level system based on 0.5 mile threshold */ .location-accuracy-badge.accuracy-accurate { - background: var(--success-light); - color: var(--success-color); - border: 1px solid rgba(5, 150, 105, 0.3); -} - -.location-accuracy-badge.accuracy-good { - background: #ecfdf5; + background: #dcfce7; color: #059669; - border: 1px solid rgba(5, 150, 105, 0.2); -} - -.location-accuracy-badge.accuracy-fair { - background: var(--warning-light); - color: var(--warning-color); - border: 1px solid rgba(245, 158, 11, 0.3); -} - -.location-accuracy-badge.accuracy-poor { - background: var(--danger-light); - color: var(--danger-color); - border: 1px solid rgba(220, 38, 38, 0.3); + border: 1px solid rgba(5, 150, 105, 0.3); } .location-accuracy-badge.accuracy-inaccurate { - background: var(--danger-light); - color: var(--danger-color); + background: #fee2e2; + color: #dc2626; border: 1px solid rgba(220, 38, 38, 0.3); } diff --git a/static/js/attendance_report.js b/static/js/attendance_report.js index cb7df51..2c93ba7 100644 --- a/static/js/attendance_report.js +++ b/static/js/attendance_report.js @@ -657,16 +657,14 @@ function extractLocationAccuracy(cell) { } function extractLocationAccuracyLevel(cell) { - const text = cell.textContent.toLowerCase(); - if ( - text.includes("high") || - text.includes("excellent") || - text.includes("good") - ) - return "High"; - if (text.includes("medium") || text.includes("fair")) return "Medium"; - if (text.includes("low") || text.includes("poor")) return "Low"; - return "Unknown"; + // Get the numerical accuracy value from the cell + const accuracy = extractLocationAccuracy(cell); + + // Return 2-level accuracy based on 0.5-mile threshold + if (accuracy !== null && accuracy !== undefined) { + return accuracy <= 0.5 ? "accurate" : "inaccurate"; + } + return "unknown"; } function createTableRow(record, displayIndex) { @@ -690,17 +688,17 @@ function createTableRow(record, displayIndex) { }" title="Distance between QR location and check-in location: ${ record.location_accuracy - } miles"> + } miles - ${record.accuracy_level}"> ${record.location_accuracy.toFixed(3)} mi (${record.accuracy_level}) - ` + ` : ` Unknown - `; + `; - // FIXED: Address display logic based on location accuracy + // Address display logic based on location accuracy let addressDisplayHTML = ""; let addressToShow = record.checked_in_address; let addressIcon = "fas fa-location-arrow";