From 5f6835cfcc648bf95a3ea9bbb4d18f4adb4f7099 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 3 May 2026 02:07:36 +0000 Subject: [PATCH] Add data_visualization/js/app.js --- data_visualization/js/app.js | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 data_visualization/js/app.js diff --git a/data_visualization/js/app.js b/data_visualization/js/app.js new file mode 100644 index 0000000..65cff09 --- /dev/null +++ b/data_visualization/js/app.js @@ -0,0 +1,47 @@ +import { fetchData } from './modules/fetch_data.js'; +import { renderChart } from './modules/render_chart.js'; + +/** + * Initialisiert die Anwendung: Daten laden, Diagramme rendern, Events binden. + * @returns {Promise} + */ +export async function initApp() { + try { + const sensorData = await fetchData(); + + if (!sensorData || typeof sensorData !== 'object') { + console.error('Keine gültigen Sensordaten gefunden.'); + return; + } + + renderChart(sensorData); + bindFilterEvents(); + } catch (error) { + console.error('Fehler bei der Initialisierung der App:', error); + } +} + +/** + * Verknüpft Filterelemente mit Datenaktualisierungen. + */ +export function bindFilterEvents() { + const filterForm = document.querySelector('#data-filters'); + if (!filterForm) return; + + filterForm.addEventListener('change', async (event) => { + event.preventDefault(); + + const formData = new FormData(filterForm); + const filters = Object.fromEntries(formData.entries()); + + try { + const filteredData = await fetchData(filters); + renderChart(filteredData); + } catch (error) { + console.error('Fehler beim Aktualisieren der Diagrammdaten:', error); + } + }); +} + +// Startpunkt, wenn Seite geladen ist +window.addEventListener('load', initApp); \ No newline at end of file