Add data_visualization/js/api.js

This commit is contained in:
Mika 2026-03-16 13:59:09 +00:00
parent c83f9a4430
commit 083b4caa74

View file

@ -0,0 +1,62 @@
const API_BASE_URL = '';
/**
* Führt einen GET-Request zur /results-API aus und gibt strukturierte Ergebnisse zurück.
* @param {Object} [filters] - optionale Filterparameter (run_id, parameter_filter)
* @returns {Promise<Array>} strukturierte Analyseergebnisse
*/
export async function fetchResults(filters = {}) {
const url = new URL('/results', window.location.origin);
if (filters.run_id) {
url.searchParams.append('run_id', filters.run_id);
}
if (filters.parameter_filter) {
url.searchParams.append('parameter_filter', filters.parameter_filter);
}
try {
const response = await fetch(url.toString(), {
method: 'GET',
headers: {
'Accept': 'application/json'
}
});
if (!response.ok) {
console.error('API request failed with status', response.status);
return [];
}
const data = await response.json();
return parseResults(data);
} catch (error) {
console.error('Error fetching results:', error);
return [];
}
}
/**
* Wandelt Rohdaten aus der API in eine konsistente Struktur für Diagramme um.
* @param {Array} rawData - Nicht transformierte API-Daten
* @returns {Array<Object>} strukturierte Objekte für Visualisierung
*/
export function parseResults(rawData = []) {
if (!Array.isArray(rawData)) {
console.warn('Unexpected data format from API');
return [];
}
return rawData.map(item => ({
runId: item.run_id ?? null,
bandCenter: Number(item.band_center) || 0,
bandWidth: Array.isArray(item.band_width_p10_p90) ? item.band_width_p10_p90 : [0, 0],
maxOutlier: Number(item.max_outlier) || 0,
overheadMs: Number(item.overhead_ms) || 0
}));
}
export default {
fetchResults,
parseResults
};