Add data_visualization/js/api.js

This commit is contained in:
Mika 2026-05-10 02:07:40 +00:00
parent 95a49db187
commit ceee02fc48

View file

@ -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<Array<{timestamp:string,vbat:number,ir_gain:number,drift:number,event_flag:boolean}>>>} 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;
}
}