55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
/**
|
|
* @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
|
|
};
|
|
}
|
|
}
|