document.addEventListener('DOMContentLoaded', function() { const startDateInput = document.getElementById('startDate'); const endDateInput = document.getElementById('endDate'); const startTimeInput = document.getElementById('startTime'); const endTimeInput = document.getElementById('endTime'); 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); // Farben für Balken: Rot für 0-Übertragungen, Blau für andere const backgroundColors = values.map(value => value === 0 ? 'rgba(255, 99, 132, 0.5)' : 'rgba(54, 162, 235, 0.5)'); const borderColors = values.map(value => value === 0 ? 'rgba(255, 99, 132, 1)' : 'rgba(54, 162, 235, 1)'); const ctx = document.getElementById('fuenfMinutenChart').getContext('2d'); if (window.fuenfMinutenChart) { window.fuenfMinutenChart.destroy(); } window.fuenfMinutenChart = new Chart(ctx, { type: 'bar', data: { labels: labels, datasets: [{ label: 'Übertragungen', data: values, backgroundColor: backgroundColors, borderColor: borderColors, 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}`); }); } // Event Listener für Datum- und Zeitauswahl startDateInput.addEventListener('change', fetchAndUpdateChart); endDateInput.addEventListener('change', fetchAndUpdateChart); startTimeInput.addEventListener('change', fetchAndUpdateChart); endTimeInput.addEventListener('change', fetchAndUpdateChart); // Initiales Laden des Diagramms fetchAndUpdateChart(); });