/** * @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} 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 }; } }