diff --git a/data_visualization/js/api.js b/data_visualization/js/api.js new file mode 100644 index 0000000..9cf1d1f --- /dev/null +++ b/data_visualization/js/api.js @@ -0,0 +1,47 @@ +/** + * Modul: API-Kommunikation für das Langzeitbelichtungs-Nachtfotografie-Projekt + * Verantwortlich für den Abruf und das Parsen der Temperatur- und Bilddaten vom Server. + * + * @module api + */ + +/** + * Führt einen GET-Request an den /data-Endpunkt aus und liefert strukturierte Daten zurück. + * + * @async + * @function fetchData + * @returns {Promise<{ temperatures: Array<{ timestamp: string, value: number }>, images: Array<{ filename: string, timestamp: string, metadata: object }> }>} Parsed JSON-Antwort + */ +export async function fetchData() { + try { + const response = await fetch('/data', { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`Fehler beim Abrufen der Daten: ${response.status} ${response.statusText}`); + } + + const data = await response.json(); + + if (!data || typeof data !== 'object') { + throw new Error('Ungültige Datenstruktur vom Server erhalten.'); + } + + const temperatures = Array.isArray(data.temperatures) + ? data.temperatures.filter(item => item.timestamp && typeof item.value === 'number') + : []; + + const images = Array.isArray(data.images) + ? data.images.filter(item => item.filename && item.timestamp) + : []; + + return { temperatures, images }; + } catch (error) { + console.error('API-Fehler in fetchData:', error); + return { temperatures: [], images: [] }; + } +}