From 7ebdb996457e5e7c988496260c6551b782f4c65b Mon Sep 17 00:00:00 2001 From: Mika Date: Mon, 23 Feb 2026 14:48:35 +0000 Subject: [PATCH] Add drift_matrix_visualization/js/app.js --- drift_matrix_visualization/js/app.js | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 drift_matrix_visualization/js/app.js diff --git a/drift_matrix_visualization/js/app.js b/drift_matrix_visualization/js/app.js new file mode 100644 index 0000000..44e4ec2 --- /dev/null +++ b/drift_matrix_visualization/js/app.js @@ -0,0 +1,52 @@ +import { fetchDriftMatrix } from './api.js'; +import { renderMatrix } from './matrixRenderer.js'; + +/** + * Initialisiert die Anwendung, lädt initiale Matrix-Daten, bindet Events. + * Wird aufgerufen, wenn das Fenster geladen ist. + */ +export async function initApp() { + const runSelector = document.getElementById('run-selector'); + const matrixContainer = document.getElementById('matrix-container'); + + if (!runSelector || !matrixContainer) { + console.error('App initialisierung fehlgeschlagen: DOM-Elemente fehlen.'); + return; + } + + runSelector.addEventListener('change', handleRunChange); + + const initialRunId = runSelector.value ?? ''; + await loadAndRenderMatrix(initialRunId); +} + +/** + * Lädt neue Matrix-Daten und rendert sie. + * @param {string} runId + */ +async function loadAndRenderMatrix(runId) { + const matrixContainer = document.getElementById('matrix-container'); + matrixContainer.setAttribute('aria-busy', 'true'); + + try { + const matrixData = await fetchDriftMatrix(runId); + renderMatrix(matrixData); + } catch (error) { + console.error('Fehler beim Laden der Drift-Matrix:', error); + matrixContainer.innerHTML = '

Fehler beim Laden der Matrix-Daten.

'; + } finally { + matrixContainer.setAttribute('aria-busy', 'false'); + } +} + +/** + * Reagiert auf Änderung der Run-Auswahl und lädt neue Matrix-Daten. + * @param {Event} event + */ +export async function handleRunChange(event) { + const runId = event.target.value; + await loadAndRenderMatrix(runId); +} + +// Initialisierung beim Laden +window.addEventListener('load', initApp); \ No newline at end of file