diff --git a/data_visualization/js/api.js b/data_visualization/js/api.js new file mode 100644 index 0000000..4036440 --- /dev/null +++ b/data_visualization/js/api.js @@ -0,0 +1,43 @@ +/** + * @module api + * Daten-Schicht: Kommunikation mit Backend-Endpunkt /data + * Verantwortlich für das Laden und Bereitstellen der Loggerdaten für Visualisierung + */ + +/** + * Sendet GET-Request an /data und empfängt Loggerdaten als JSON. + * @async + * @param {string} [log_file_path] - Optionaler Pfad zu einer spezifischen Logdatei oder Zeitspanne. + * @returns {Promise>} - Array von Messobjekten mit Zeitstempel, Intensität, Wellenlänge, Sensor-ID. + */ +export async function fetchData(log_file_path) { + const baseUrl = '/data'; + const url = log_file_path ? `${baseUrl}?log_file_path=${encodeURIComponent(log_file_path)}` : baseUrl; + + try { + const response = await fetch(url, { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + console.error(`Serverantwort war nicht ok (Status: ${response.status})`); + return []; + } + + const data = await response.json(); + + // Defensive: Sicherstellen, dass Daten ein Array sind + if (!Array.isArray(data)) { + console.warn('Erwartetes Datenformat ist ein Array, erhalten:', typeof data); + return []; + } + + return data; + } catch (error) { + console.error('Fehler beim Abrufen der Daten:', error); + return []; + } +}