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