Lehrer-Live: idle-pausierte gelten in Aktuell als pausiert (nicht aktiv) + Tag-App-Symbol immer sichtbar
- Aktuell: paused beruecksichtigt jetzt __idlePaused/__paused (heartbeatet trotz Pause weiter) -> kein Widerspruch mehr "navigiert UND pausiert" (Klara). - Tag: App-Symbol als immer sichtbares Overlay am Balkenstart, auch bei winzigem Balken (darf ueberstehen). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+14
-5
@@ -1569,9 +1569,12 @@ async function renderLive() {
|
||||
var simStr = sinceSimBase ? _fmtSince(sinceSim) : '—';
|
||||
var missionStr = sinceMissionBase ? _fmtSince(sinceMission) : '—';
|
||||
var lastSeen = ls.last_seen_ms ? Math.max(0, Math.round((Date.now() - ls.last_seen_ms)/1000)) : 0;
|
||||
var paused = !_liveIsActive(ls);
|
||||
var dotColor = lastSeen < 8 ? '#5a8a5e' : lastSeen < 20 ? '#e8833a' : '#c07a6b';
|
||||
var s = ls.state || {};
|
||||
// Pausiert = veralteter Heartbeat ODER die Sim/Plattform meldet Pause
|
||||
// (Idle-Overlay __idlePaused / Sim-Pause __paused). Sonst gilt ein idle-
|
||||
// pausierter, aber weiter heartbeatender Schüler fälschlich als „aktiv".
|
||||
var paused = !_liveIsActive(ls) || !!(s.__idlePaused || s.__paused);
|
||||
var dotColor = lastSeen < 8 ? '#5a8a5e' : lastSeen < 20 ? '#e8833a' : '#c07a6b';
|
||||
var help = !paused && _liveNeedsHelp(ls.module_id, s);
|
||||
var restBg = help ? '#fdf3ee' : (paused ? '#f6f5f2' : '');
|
||||
var hoverBg = help ? '#f9e7e0' : '#f0efe9';
|
||||
@@ -2275,9 +2278,9 @@ async function renderLiveSummary() {
|
||||
+ ' · ' + _fmtHM(sess.startMs) + '–' + _fmtHM(endMs)
|
||||
+ ' · ' + _liveFmtMin(realDurSec) + ' · ' + stateWord
|
||||
+ (score!=null?' · Erfolg '+score+' %':'');
|
||||
// Symbol immer sichtbar; ab etwas Breite zusätzlich der Sim-Name
|
||||
var inner = (pctW < 2) ? '' : (pctW < 9 ? '<span style="font-size:.82rem">'+icon+'</span>'
|
||||
: '<span style="font-size:.82rem">'+icon+'</span> <span style="font-weight:700">'+esc(simName)+'</span>');
|
||||
// Sim-Name nur bei breiterem Balken IM Balken (mit Platz für das Symbol links);
|
||||
// das App-Symbol selbst kommt separat als IMMER sichtbares Overlay (s.u.).
|
||||
var inner = (pctW < 9) ? '' : '<span style="font-weight:700;padding-left:1.15rem">'+esc(simName)+'</span>';
|
||||
var sessKey = s.studentId + ':' + sess.simId + ':' + (sess.lessonLabel||'_') + ':' + sess.startMs;
|
||||
html += '<div onclick="openLiveSessionDetail(\''+sessKey+'\')" '
|
||||
+ 'title="'+esc(tip)+'" '
|
||||
@@ -2287,6 +2290,12 @@ async function renderLiveSummary() {
|
||||
+ 'white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;'
|
||||
+ 'text-shadow:0 1px 1px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.12)">'
|
||||
+ inner + '</div>';
|
||||
// App-Symbol IMMER sichtbar am Balkenstart — auch bei winzigem Balken (steht dann
|
||||
// über den Rand hinaus, das ist gewollt). Schatten macht es auf Balken UND Hintergrund lesbar.
|
||||
html += '<span onclick="openLiveSessionDetail(\''+sessKey+'\')" title="'+esc(tip)+'" '
|
||||
+ 'style="position:absolute;left:calc('+pctL+'% + 2px);top:5px;height:'+barH+'px;line-height:'+barH+'px;'
|
||||
+ 'font-size:.82rem;z-index:4;cursor:pointer;white-space:nowrap;'
|
||||
+ 'text-shadow:0 0 3px rgba(0,0,0,.55),0 1px 2px rgba(0,0,0,.55)">'+icon+'</span>';
|
||||
// Pausen im Verlauf: jede geloggte Pausen-Spanne bleibt als halbhohes,
|
||||
// gedämpftes Segment im Balken stehen — auch nachdem die Schüler:in wieder
|
||||
// weiterarbeitet. So sieht man, WANN und WIE LANGE pausiert wurde.
|
||||
|
||||
Reference in New Issue
Block a user