'use strict'; /** * fetchSpikes - Holt Spike-Daten vom API-Endpunkt /api/spikes ab. * * @param {Object} [filters={}] - Optionale Filterparameter (cpu_id, start_time, end_time) * @returns {Promise} - Promise, das ein Array klassifizierter Spike-Objekte zurückgibt. */ export async function fetchSpikes(filters = {}) { const params = new URLSearchParams(); if (filters.cpu_id !== undefined && filters.cpu_id !== null) { params.append('cpu_id', filters.cpu_id); } if (filters.start_time) { params.append('start_time', filters.start_time); } if (filters.end_time) { params.append('end_time', filters.end_time); } const queryString = params.toString() ? `?${params.toString()}` : ''; const url = `/api/spikes${queryString}`; try { const response = await fetch(url, { method: 'GET', headers: { 'Accept': 'application/json' } }); if (!response.ok) { console.error(`Fehler beim Laden der Spike-Daten: ${response.status}`); return []; } const data = await response.json(); if (!Array.isArray(data)) { console.warn('Unerwartetes Antwortformat der API. Erwartet: Array von Spike-Objekten.'); return []; } return data.filter(item => item && typeof item === 'object' && 'id' in item && 'timestamp' in item ); } catch (error) { console.error('Netzwerk- oder Parsing-Fehler beim Abrufen der Spike-Daten:', error); return []; } }