/** * Daten-Layer-Modul zur Kommunikation mit der API /results * Verantwortlich für das Abrufen von Experimentergebnissen mit optionalen Filtern. * * @module api */ /** * Sendet GET-Anfrage an /results und gibt das JSON-Ergebnis zurück. * @async * @function fetchResults * @param {Object} [filters={}] - Optionale Filterparameter (run_id, parallelism, Zeitraum etc.) * @returns {Promise>} - Gibt ein Array von Testergebnisobjekten zurück * @throws {Error} Falls die Anfrage fehlschlägt oder ungültige Daten empfängt */ export async function fetchResults(filters = {}) { const url = new URL('/results', window.location.origin); Object.entries(filters).forEach(([key, value]) => { if (value !== undefined && value !== null && value !== '') { url.searchParams.append(key, value); } }); try { const response = await fetch(url.toString(), { method: 'GET', headers: { 'Accept': 'application/json' } }); if (!response.ok) { throw new Error(`API-Fehler: ${response.status} ${response.statusText}`); } const data = await response.json(); if (!Array.isArray(data)) { throw new Error('Unerwartetes API-Antwortformat: erwartet Array'); } return data; } catch (error) { console.error('Fehler beim Laden der Ergebnisse:', error); throw error; } }