From c83f9a4430423014614cc89fcd84e0f863f2b396 Mon Sep 17 00:00:00 2001 From: Mika Date: Mon, 16 Mar 2026 13:59:09 +0000 Subject: [PATCH] Add data_visualization/js/app.js --- data_visualization/js/app.js | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 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..0286add --- /dev/null +++ b/data_visualization/js/app.js @@ -0,0 +1,49 @@ +import { fetchResults } from './api.js'; +import { renderCharts, updateCharts } from './charts.js'; +import { showLoading, hideLoading } from './ui.js'; + +/** + * Initialisiert die Anwendung, lädt initiale Ergebnisse und bindet Event-Listener. + * Wird beim Laden des Fensters aufgerufen. + */ +export async function initApp() { + showLoading(); + try { + const data = await fetchResults(); + renderCharts(data); + bindFilterEvents(); + } catch (error) { + console.error('Fehler beim Initialisieren der App:', error); + } finally { + hideLoading(); + } +} + +/** + * Verknüpft Filter-Interaktionen mit dem Neuladen und Rendern der Ergebnisse. + */ +export function bindFilterEvents() { + const runSelect = document.querySelector('#filter-run'); + const paramSelect = document.querySelector('#filter-param'); + + if (!runSelect || !paramSelect) return; + + const handleChange = async () => { + showLoading(); + const runId = runSelect.value || undefined; + const parameterFilter = paramSelect.value || undefined; + try { + const data = await fetchResults({ run_id: runId, parameter_filter: parameterFilter }); + updateCharts(data); + } catch (error) { + console.error('Fehler beim Aktualisieren der Diagramme:', error); + } finally { + hideLoading(); + } + }; + + runSelect.addEventListener('change', handleChange); + paramSelect.addEventListener('change', handleChange); +} + +window.addEventListener('load', initApp); \ No newline at end of file