Add data_visualization/js/api.js
This commit is contained in:
parent
c83f9a4430
commit
083b4caa74
1 changed files with 62 additions and 0 deletions
62
data_visualization/js/api.js
Normal file
62
data_visualization/js/api.js
Normal 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
|
||||||
|
};
|
||||||
Loading…
Reference in a new issue