From 5549b520bba7a665efdbd7f7e517e23ca702dc7a Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 5 Apr 2026 02:07:38 +0000 Subject: [PATCH] Add data_visualization_web_ui/js/app.js --- data_visualization_web_ui/js/app.js | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 data_visualization_web_ui/js/app.js diff --git a/data_visualization_web_ui/js/app.js b/data_visualization_web_ui/js/app.js new file mode 100644 index 0000000..c663b16 --- /dev/null +++ b/data_visualization_web_ui/js/app.js @@ -0,0 +1,67 @@ +import { fetchData, fetchAnalysis } from './api.js'; +import { renderCharts, updateCharts } from './charts.js'; +import { renderStats } from './stats.js'; + +/** + * @function initApp + * @description Initialisiert Eventlistener, ruft Datenladen und Rendering auf. + */ +export async function initApp() { + try { + const [data, analysis] = await Promise.all([ + fetchData({}), + fetchAnalysis() + ]); + + renderCharts(data); + renderStats(analysis); + setupEventListeners(); + } catch (error) { + console.error('Fehler bei der Initialisierung:', error); + } +} + +/** + * @function setupEventListeners + * @description Verknüpft UI-Filterelemente mit der Filterlogik. + */ +function setupEventListeners() { + const filterForm = document.getElementById('filter-form'); + if (filterForm) { + filterForm.addEventListener('change', handleFilterChange); + } +} + +/** + * @function handleFilterChange + * @description Erfasst Nutzerinteraktionen mit Filterpanel und aktualisiert Diagramme. + * @param {Event} e - Change-Event vom Filterformular + */ +export async function handleFilterChange(e) { + e.preventDefault(); + const form = e.target.closest('form'); + if (!form) return; + + const formData = new FormData(form); + const params = { + time_range: formData.get('time_range') || '24h', + sensor_id: formData.get('sensor_id') || 'all' + }; + + try { + const [newData, newAnalysis] = await Promise.all([ + fetchData(params), + fetchAnalysis() + ]); + + updateCharts(newData); + renderStats(newAnalysis); + } catch (error) { + console.error('Fehler beim Aktualisieren der Filterdaten:', error); + } +} + +// Initialisierung bei Seitenladeereignis +document.addEventListener('DOMContentLoaded', () => { + initApp(); +}); \ No newline at end of file