Add heatmap_visualization/js/api.js

This commit is contained in:
Mika 2026-03-18 13:17:47 +00:00
parent a7b467bf3a
commit 7adc947593

View file

@ -0,0 +1,55 @@
/**
* @module api
* Kommunikation mit der /heatmap API.
* Enthält Funktionen zum Laden von Heatmap-Daten.
*/
/**
* Sendet eine GET-Anfrage an die API-Ressource /heatmap.
* Verarbeitet die Antwort zu einem JSON-Objekt.
*
* @async
* @function loadHeatmapData
* @param {Object} [filters={}] - Optionales Objekt mit Filterparametern (cohort_id, time_window)
* @returns {Promise<Object>} Parsed Heatmap-Datenobjekt
*/
export async function loadHeatmapData(filters = {}) {
try {
const params = new URLSearchParams();
if (filters.cohort_id) params.append('cohort_id', filters.cohort_id);
if (filters.time_window) params.append('time_window', filters.time_window);
const url = `/heatmap${params.toString() ? '?' + params.toString() : ''}`;
const response = await fetch(url, {
method: 'GET',
headers: {
'Accept': 'application/json'
}
});
if (!response.ok) {
console.error(`API Error: ${response.status} ${response.statusText}`);
throw new Error('Fehler beim Laden der Heatmap-Daten.');
}
const data = await response.json();
if (!data || typeof data !== 'object') {
throw new Error('Ungueltiges Datenformat von der Heatmap-API.');
}
return data;
} catch (error) {
console.error('loadHeatmapData Error:', error);
return {
matrix: [],
metadata: {
band_center: null,
band_width: null,
cluster_score: null
},
error: true,
message: error.message
};
}
}