From ceee02fc48b1f6777792d0b2393f491eee61392f Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 10 May 2026 02:07:40 +0000 Subject: [PATCH] Add data_visualization/js/api.js --- data_visualization/js/api.js | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 data_visualization/js/api.js diff --git a/data_visualization/js/api.js b/data_visualization/js/api.js new file mode 100644 index 0000000..c6b8452 --- /dev/null +++ b/data_visualization/js/api.js @@ -0,0 +1,52 @@ +/** + * Kommunikationsmodul zur API für Telemetriedatenabruf + * Fetch von Telemetriedaten über /data + * @module api + */ + +/** + * Führt GET-Request auf /data aus und gibt JSON mit Telemetrie zurück. + * + * @async + * @function fetchTelemetryData + * @param {Object} params - Filterparameter für den Datenabruf + * @param {string} [params.time_range] - Zeitfenster (z. B. '2026-03-10T00:00:00Z,2026-03-10T06:00:00Z') + * @param {string|number} [params.ir_gain] - IR-Gain Einstellung + * @param {string} [params.material_type] - Materialtyp + * @returns {Promise>>} JSON-Array mit Telemetriedaten + * @throws {Error} Bei Netzwerk- oder Parsing-Fehlern + */ +export async function fetchTelemetryData(params = {}) { + const query = new URLSearchParams(); + + if (params.time_range) query.append('time_range', params.time_range); + if (params.ir_gain) query.append('ir_gain', params.ir_gain); + if (params.material_type) query.append('material_type', params.material_type); + + const queryString = query.toString(); + const url = queryString ? `/data?${queryString}` : '/data'; + + try { + const response = await fetch(url, { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`Server returned ${response.status} (${response.statusText})`); + } + + const data = await response.json(); + + if (!Array.isArray(data)) { + throw new Error('Invalid response format: Expected an array'); + } + + return data; + } catch (error) { + console.error('Fehler beim Abrufen der Telemetriedaten:', error); + throw error; + } +}