document.addEventListener('DOMContentLoaded', function () { // --- ELEMENTS --- const createAlarmForm = document.getElementById('createAlarmForm'); const alarmList = document.getElementById('alarmList'); const noAlarmsMessage = document.getElementById('noAlarmsMessage'); const alarmModalEl = document.getElementById('alarmModal'); const alarmModal = new bootstrap.Modal(alarmModalEl); const dismissAlarmBtn = document.getElementById('dismissAlarmBtn'); const alarmSound = document.getElementById('alarmSound'); const alarmModalMessage = document.getElementById('alarmModalMessage'); // --- STATE --- let isAlarmModalShown = false; // --- FUNCTIONS --- /** * Handles the submission of the create alarm form. */ const handleCreateAlarm = async (e) => { e.preventDefault(); const timeInput = document.getElementById('alarmTime'); const labelInput = document.getElementById('alarmLabel'); const formData = new FormData(); formData.append('action', 'create'); formData.append('alarm_time', timeInput.value); formData.append('label', labelInput.value); try { const response = await fetch('api/alarms.php', { method: 'POST', body: formData }); const result = await response.json(); if (result.success) { addAlarmToList(result.id, timeInput.value, labelInput.value); timeInput.value = ''; labelInput.value = ''; if (noAlarmsMessage) { noAlarmsMessage.style.display = 'none'; } } else { alert('Error: ' + result.message); } } catch (error) { console.error('Failed to create alarm:', error); alert('An error occurred while creating the alarm.'); } }; /** * Handles the click on a delete alarm form. */ const handleDeleteAlarm = async (e) => { if (!e.target.closest('.delete-alarm-form')) return; e.preventDefault(); const form = e.target.closest('.delete-alarm-form'); const alarmId = form.querySelector('input[name="alarm_id"]').value; if (!confirm('Are you sure you want to delete this alarm?')) return; const formData = new FormData(form); try { const response = await fetch('api/alarms.php', { method: 'POST', body: formData }); const result = await response.json(); if (result.success) { const listItem = form.closest('li'); listItem.remove(); if (!alarmList.querySelector('li')) { if (noAlarmsMessage) { noAlarmsMessage.style.display = 'block'; } } } else { alert('Error: ' + result.message); } } catch (error) { console.error('Failed to delete alarm:', error); alert('An error occurred while deleting the alarm.'); } }; /** * Adds a new alarm item to the DOM. */ const addAlarmToList = (id, time, label, isActive = true) => { const date = new Date(`1970-01-01T${time}`); const formattedTime = date.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true }); const li = document.createElement('li'); li.className = 'list-group-item d-flex justify-content-between align-items-center'; li.dataset.id = id; li.innerHTML = `