diff --git a/App/teacher.html b/App/teacher.html index 62395e8..2c2cd4e 100644 --- a/App/teacher.html +++ b/App/teacher.html @@ -3758,11 +3758,13 @@ async function loadResults() { host.innerHTML = '
Lade Ergebnisse…
'; // Drei parallele API-Calls: Fleiß (NEU oben) + Matrix + Activity (alt) - var [fleiss, matrix, activity] = await Promise.all([ + var [fleiss, matrix, activity, live] = await Promise.all([ api('results?class_id=' + currentClassId + '&view=fleiss&range=' + _resultsState.fleissRange + '&module_id=' + encodeURIComponent(_resultsState.fleissModule)), api('results?class_id=' + currentClassId + '&view=matrix'), api('results?class_id=' + currentClassId + '&view=activity&range=' + _resultsState.range + '&groupBy=' + (_resultsState.groupBy || 'module')), + api('live?class_id=' + currentClassId), ]); + _resultsState.live = Array.isArray(live) ? live : []; if (matrix.error) { host.innerHTML = ''+esc(matrix.error)+'
'; return; } if (activity.error) { host.innerHTML = ''+esc(activity.error)+'
'; return; } @@ -3777,16 +3779,41 @@ async function loadResults() { function renderResults() { var host = document.getElementById(_resultsHost) || document.getElementById('tab-results'); host.innerHTML = '' + + '' + '' + '' + '' + ''; + renderResultsLive(); renderFleiss(); renderMatrix(); renderActivity(); renderModuleCards(); } +// „Jetzt live"-Streifen ganz oben in Gesamt: laufende Spiele (aus live_sessions), +// als langsam blinkende Blöcke — sonst fehlen sie hier (Fleiß baut nur auf fertigen Läufen). +function renderResultsLive() { + var host = document.getElementById('res-live'); if (!host) return; + var live = (_resultsState.live || []).filter(function(ls){ return ls.last_seen_ms && (Date.now() - ls.last_seen_ms) < 90000; }); + if (!live.length) { host.innerHTML = ''; return; } + var html = '