diff --git a/App/teacher.html b/App/teacher.html index 80b8275..62aae63 100644 --- a/App/teacher.html +++ b/App/teacher.html @@ -1225,7 +1225,7 @@ async function _loadCockpitReflections() { var when = it.recordedAt ? new Date(it.recordedAt).toLocaleString('de-AT', {day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) : ''; html += '
' + '
' - + '' + esc(it.emoji + ' ' + (it.displayName||'—')) + '' + + '' + _avatarHtml(it.avatarSlug, it.emoji, 1.2) + ' ' + esc(it.displayName||'—') + '' + ' · ' + esc(it.simId) + '' + (it.level ? ' · Stufe ' + esc(it.level) : '') + '' + '' + esc(when) + '' @@ -1366,6 +1366,18 @@ function _liveIsActive(ls) { // Uhrzeit HH:MM aus ms-Epoch. function _hhmm(ms){ if(!ms) return '—'; var d=new Date(ms); return ('0'+d.getHours()).slice(-2)+':'+('0'+d.getMinutes()).slice(-2); } +// Avatar als Bild rendern — egal ob der Slug in avatar_slug ODER als +// „avatar:" im emoji_avatar-Feld steckt (Daten sind uneinheitlich). +// Sonst wird sonst der rohe String „avatar:kartografin" als Text angezeigt. +function _avatarHtml(slug, emoji, sizeEm){ + sizeEm = sizeEm || 1.4; + var st = 'width:'+sizeEm+'em;height:'+sizeEm+'em;border-radius:50%;object-fit:cover;vertical-align:middle'; + if (slug) return ''; + if (typeof emoji === 'string' && emoji.indexOf('avatar:') === 0) + return ''; + return ''+(emoji||'🧑‍🎓')+''; +} + // „Heute nicht mehr aktiv" — Schüler:innen, die HEUTE gespielt haben, gerade aber // offline sind: zuletzt aktiv (Uhrzeit) + letzte Aktivität + deren Leistung. // Wiederverwendet in „Aktuell" und „Fortschritt". activeSet = {studentId:true} @@ -2268,9 +2280,7 @@ async function openLiveSessionDetail(sessionKey) { document.getElementById('sessdet-title').textContent = (sess.simIcon||'📚') + ' ' + (sess.simTitle||sess.simId) + (sess.lessonLabel?' · '+sess.lessonLabel:''); var body = document.getElementById('sessdet-body'); - var avatarHtml = sess.studentAvatarSlug - ? '' - : ''+(sess.studentEmoji||'🧑‍🎓')+''; + var avatarHtml = _avatarHtml(sess.studentAvatarSlug, sess.studentEmoji, 2); var startTime = new Date(sess.startMs).toLocaleString('de-AT',{hour:'2-digit',minute:'2-digit',day:'2-digit',month:'2-digit'}); var endTime = new Date(sess.endMs).toLocaleString('de-AT',{hour:'2-digit',minute:'2-digit'}); var dur = _liveFmtMin(sess.durationSec||0);