From b0cc8652edd616cc2342935500daf6e63ed733a4 Mon Sep 17 00:00:00 2001 From: Mika Date: Fri, 13 Mar 2026 16:22:57 +0000 Subject: [PATCH] Add visualization_ui/js/api.js --- visualization_ui/js/api.js | 59 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 visualization_ui/js/api.js diff --git a/visualization_ui/js/api.js b/visualization_ui/js/api.js new file mode 100644 index 0000000..9c81776 --- /dev/null +++ b/visualization_ui/js/api.js @@ -0,0 +1,59 @@ +/** + * API-Modul für den Zugriff auf die Backend-Endpunkte /alert-data und /outlier-report. + * Kapselt alle Fetch-Operationen und Fehlerbehandlungen. + * Dieses Modul stellt zwei Funktionen bereit: + * - fetchAlertData() + * - fetchOutlierReport() + * + * Beide Funktionen sind asynchron und geben JSON zurück. + */ + +/** + * Führt einen sicheren Fetch-Request aus und behandelt HTTP- und Netzwerkfehler. + * @param {string} url - Ziel-Endpoint. + * @returns {Promise} - JSON-Antwort oder Fehler. + */ +async function safeFetch(url) { + try { + const response = await fetch(url, { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + console.error(`API-Fehler: ${response.status} ${response.statusText}`); + throw new Error(`Fehler beim Abrufen von ${url}`); + } + + const data = await response.json(); + return data; + } catch (err) { + console.error(`Netzwerkfehler bei ${url}:`, err); + throw err; + } +} + +/** + * Holt die Max-only Alert-Daten vom Backend. + * Wird in app.initApp und app.handleRefresh verwendet. + * @returns {Promise} Array von Alert-Objekten. + */ +export async function fetchAlertData() { + return await safeFetch('/alert-data'); +} + +/** + * Holt den Outlier-Report. + * Wird in app.initApp und app.handleRefresh verwendet. + * @returns {Promise} JSON-Objekt mit Outlier-Daten. + */ +export async function fetchOutlierReport() { + return await safeFetch('/outlier-report'); +} + +export default { + fetchAlertData, + fetchOutlierReport +}; \ No newline at end of file