document.addEventListener('DOMContentLoaded', function() { const startDateInput = document.getElementById('startDate'); const endDateInput = document.getElementById('endDate'); const startTimeInput = document.getElementById('startTime'); const endTimeInput = document.getElementById('endTime'); // Initialisiere die globale Variable für den Chart window.fuenfMinutenChart = null; function fetchAndUpdateChart() { const startDate = startDateInput.value; const endDate = endDateInput.value; const startTime = startTimeInput.value || '00:00'; const endTime = endTimeInput.value || '23:59'; if (!startDate || !endDate) { alert('Bitte sowohl Start- als auch End-Datum auswählen!'); return; } fetch(`/fuenf_minuten?start_date=${startDate}&end_date=${endDate}&start_time=${startTime}&end_time=${endTime}`) .then(response => { if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return response.json(); }) .then(data => { if (!Array.isArray(data)) { throw new Error('Ungültige Daten vom Server.'); } const labels = data.map(item => item.time_slot); const values = data.map(item => item.transmission_count); const ctx = document.getElementById('fuenfMinutenChart').getContext('2d'); // Zerstöre den vorhandenen Chart, falls er existiert if (window.fuenfMinutenChart) { window.fuenfMinutenChart.destroy(); } // Erstelle einen neuen Chart window.fuenfMinutenChart = new Chart(ctx, { type: 'bar', data: { labels: labels, datasets: [{ label: 'Übertragungen', data: values, backgroundColor: 'rgba(54, 162, 235, 0.5)', borderColor: 'rgba(54, 162, 235, 1)', borderWidth: 1 }] }, options: { scales: { x: { title: { display: true, text: 'Zeit' } }, y: { title: { display: true, text: 'Anzahl' }, beginAtZero: true } } } }); }) .catch(err => { console.error('Fehler bei der 5-Minuten-Datenabfrage:', err.message); alert(`Fehler bei der 5-Minuten-Datenabfrage: ${err.message}`); }); } // Set default dates to pre-fill inputs const now = new Date(); const yesterday = new Date(); yesterday.setDate(now.getDate() - 1); startDateInput.value = yesterday.toISOString().split('T')[0]; endDateInput.value = now.toISOString().split('T')[0]; // Event Listener for changes in date and time inputs startDateInput.addEventListener('change', fetchAndUpdateChart); endDateInput.addEventListener('change', fetchAndUpdateChart); startTimeInput.addEventListener('change', fetchAndUpdateChart); endTimeInput.addEventListener('change', fetchAndUpdateChart); // Initial chart load fetchAndUpdateChart(); });