/** * UI Renderer Module for Metric Visualization * Verantwortlich für DOM-Updates und Darstellung von Summary und Tabelle * © 2026 Donau2Space.de */ /** * Rendert die Zusammenfassungspanel-Informationen. * @param {Array} data - Analyse-Daten [{run_id, t_index_visible, t_gate_read, delta_t, warn_rate, unknown_rate}] */ export function renderSummarySection(data = []) { const container = document.getElementById('summary-section'); if (!container) return; const totalRuns = data.length; const deltaNegCount = data.filter(d => d.delta_t < 0).length; const avgWarnRate = totalRuns === 0 ? 0 : data.reduce((acc, d) => acc + (d.warn_rate ?? 0), 0) / totalRuns; const avgUnknownRate = totalRuns === 0 ? 0 : data.reduce((acc, d) => acc + (d.unknown_rate ?? 0), 0) / totalRuns; container.innerHTML = ''; const summaryHtml = `
Runs: ${totalRuns}
Δt < 0 Count: ${deltaNegCount}
Ø Warn Rate: ${(avgWarnRate * 100).toFixed(2)}%
Ø Unknown Rate: ${(avgUnknownRate * 100).toFixed(2)}%
`; container.insertAdjacentHTML('beforeend', summaryHtml); } /** * Befüllt Tabelle mit individuellen Run-Metriken. * @param {Array} data - Analyse-Daten [{run_id, t_index_visible, t_gate_read, delta_t, warn_rate, unknown_rate}] */ export function renderDataTable(data = []) { const table = document.getElementById('data-table'); if (!table) return; const tbody = table.querySelector('tbody'); if (!tbody) return; tbody.innerHTML = ''; const rows = data.map(d => { const isDeltaNeg = d.delta_t < 0; const rowClass = isDeltaNeg ? 'data-table__row--negative' : ''; return ` ${d.run_id} ${d.t_index_visible} ${d.t_gate_read} ${d.delta_t} ${(d.warn_rate * 100).toFixed(2)}% ${(d.unknown_rate * 100).toFixed(2)}% `; }).join(''); tbody.insertAdjacentHTML('beforeend', rows); }