From 8e39887fc6bd898610b277c0b6f8237dc4d9b62c Mon Sep 17 00:00:00 2001 From: Mika Date: Thu, 5 Mar 2026 15:48:00 +0000 Subject: [PATCH] Add visualization_tool/js/api.js --- visualization_tool/js/api.js | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 visualization_tool/js/api.js diff --git a/visualization_tool/js/api.js b/visualization_tool/js/api.js new file mode 100644 index 0000000..be5b7ae --- /dev/null +++ b/visualization_tool/js/api.js @@ -0,0 +1,50 @@ +/** + * API-Modul: Schnittstelle zur Backend-API /results + * Rolle: Data Layer für Analyseergebnisse + * © 2026 Donau2Space.de + */ + +/** + * Führt einen GET-Request auf /results aus und gibt strukturierte Daten zurück. + * @param {Object} [filters] - optionale Filterparameter (z. B. { run_type: string, time_range: string }) + * @returns {Promise>} + */ +export async function loadResults(filters = {}) { + const params = new URLSearchParams(); + + if (filters.run_type) params.append('filter', filters.run_type); + if (filters.time_range) params.append('time_range', filters.time_range); + + const queryString = params.toString() ? `?${params.toString()}` : ''; + + try { + const response = await fetch(`/results${queryString}`, { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`Fehler beim Laden der Ergebnisse: ${response.status}`); + } + + const data = await response.json(); + + // Validierung der erwarteten Struktur + if (!Array.isArray(data)) { + throw new Error('Ungültiges Antwortformat. Erwartet: Array'); + } + + return data.map(item => ({ + run_id: String(item.run_id ?? ''), + category: String(item.category ?? ''), + delta_t: Number(item.delta_t ?? 0), + timestamp: String(item.timestamp ?? ''), + status: String(item.status ?? '') + })); + } catch (error) { + console.error('API-Fehler in loadResults:', error); + return []; + } +}