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