From b2893c518c9bb057b993483fbc2ec39852d25714 Mon Sep 17 00:00:00 2001 From: Mika Date: Thu, 5 Mar 2026 15:47:59 +0000 Subject: [PATCH] Add visualization_tool/js/app.js --- visualization_tool/js/app.js | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 visualization_tool/js/app.js diff --git a/visualization_tool/js/app.js b/visualization_tool/js/app.js new file mode 100644 index 0000000..d801302 --- /dev/null +++ b/visualization_tool/js/app.js @@ -0,0 +1,49 @@ +import { fetchResults } from './api.js'; +import { renderTable, clearTable } from './ui.js'; +import { renderChart, clearChart } from './charts.js'; + +/** + * Aktualisiert die Darstellung basierend auf aktuellen Filterparametern. + * @param {Object} filters - Aktuelle Filtereinstellungen (run_type, time_range etc.) + */ +export async function refreshData(filters = {}) { + try { + clearTable(); + clearChart(); + + const results = await fetchResults(filters); + + if (!Array.isArray(results)) { + console.error('Unerwartetes Datenformat von /results'); + return; + } + + renderTable(results); + renderChart(results); + } catch (error) { + console.error('Fehler beim Laden der Analyseergebnisse:', error); + } +} + +/** + * Initialisiert die Anwendung: Filter, Eventlistener und initialen Datenabruf. + */ +export function initApp() { + const filterRunType = document.getElementById('filter-run-type'); + const filterTimeRange = document.getElementById('filter-time-range'); + + const handleFilterChange = async () => { + const filters = { + run_type: filterRunType?.value || '', + time_range: filterTimeRange?.value || '' + }; + await refreshData(filters); + }; + + filterRunType?.addEventListener('change', handleFilterChange); + filterTimeRange?.addEventListener('change', handleFilterChange); + + refreshData(); +} + +window.addEventListener('load', initApp); \ No newline at end of file