Spaces:
Running
Running
| // Global functions and event listeners | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Initialize tooltips | |
| const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); | |
| tooltipTriggerList.map(function (tooltipTriggerEl) { | |
| return new bootstrap.Tooltip(tooltipTriggerEl); | |
| }); | |
| // Handle dark mode toggle if needed | |
| const darkModeToggle = document.getElementById('darkModeToggle'); | |
| if(darkModeToggle) { | |
| darkModeToggle.addEventListener('click', function() { | |
| document.documentElement.classList.toggle('dark'); | |
| }); | |
| } | |
| }); | |
| // API functions | |
| async function fetchAlarms() { | |
| try { | |
| const response = await fetch('/api/alarms'); | |
| return await response.json(); | |
| } catch (error) { | |
| console.error('Error fetching alarms:', error); | |
| return []; | |
| } | |
| } | |
| async function fetchCameras() { | |
| try { | |
| const response = await fetch('/api/cameras'); | |
| return await response.json(); | |
| } catch (error) { | |
| console.error('Error fetching cameras:', error); | |
| return []; | |
| } | |
| } | |
| // Utility functions | |
| function formatDateTime(dateString) { | |
| const options = { | |
| year: 'numeric', | |
| month: 'short', | |
| day: 'numeric', | |
| hour: '2-digit', | |
| minute: '2-digit' | |
| }; | |
| return new Date(dateString).toLocaleDateString('en-US', options); | |
| } | |
| function getPriorityColor(priority) { | |
| const colors = { | |
| 'critical': 'red', | |
| 'high': 'orange', | |
| 'medium': 'yellow', | |
| 'low': 'green' | |
| }; | |
| return colors[priority.toLowerCase()] || 'gray'; | |
| } |