Lehrer-Menue: Live an 2. Stelle; Live-Default-Ansicht = Tag

- Live-Tab direkt nach Uebersicht (tabs-Array + DOM synchron)
- Live-Modus-Default 'uebersicht' (Tag), Toggle-Reihenfolge Tag zuerst

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 20:16:53 +02:00
parent 532956fd7d
commit 25faca0819
+4 -4
View File
@@ -211,9 +211,9 @@
<!-- Tabs -->
<div class="tabs" id="tab-bar">
<div class="tab on" onclick="switchTab('overview')">Übersicht</div>
<div class="tab" id="tab-btn-live" onclick="switchTab('live')"><span class="live-dot"></span> Live<span class="live-count" id="live-count"></span></div>
<div class="tab" onclick="switchTab('modules')">Modulfreigabe</div>
<div class="tab" onclick="switchTab('students')">Klasse</div>
<div class="tab" id="tab-btn-live" onclick="switchTab('live')"><span class="live-dot"></span> Live<span class="live-count" id="live-count"></span></div>
<div class="tab" onclick="switchTab('results')">Ergebnisse</div>
<div class="tab" onclick="switchTab('licenses')">Lizenzen</div>
<div class="tab" onclick="switchTab('classes')">Klassen</div>
@@ -451,7 +451,7 @@ api('auth', {action:'status'}).then(function(r) {
// === TABS ===
function switchTab(tab) {
currentTab = tab;
var tabs = ['overview','modules','students','live','results','licenses','classes'];
var tabs = ['overview','live','modules','students','results','licenses','classes'];
document.querySelectorAll('#tab-bar .tab').forEach(function(t, i) { t.classList.toggle('on', tabs[i] === tab); });
tabs.forEach(function(t) { document.getElementById('tab-' + t).classList.toggle('hidden', t !== tab); });
// Live-Tab darf seinen Polling-Timer beim Verlassen aufräumen
@@ -473,7 +473,7 @@ function loadTab(tab) {
// === LIVE-VIEW ===
var _liveTimer = null;
var _liveMode = 'cockpit'; // 'cockpit' | 'aktuell' | 'uebersicht' | 'vergleich'
var _liveMode = 'uebersicht'; // Default „Tag" · 'uebersicht' | 'cockpit' | 'aktuell' | 'vergleich'
// Cockpit-Zeitraum für Klassen-Fleißsäulen (auch in Ergebnisse-Fleiß-Sektion).
// Wird in localStorage persistent gespeichert.
var _cockpitRange = (function(){
@@ -532,10 +532,10 @@ function _liveToggleHtml() {
var isToday = (_liveDate === today);
return '<div style="display:flex;gap:.4rem;align-items:center;padding:.4rem 0 .8rem;flex-wrap:wrap">'
+ '<div style="display:inline-flex;border:1.5px solid rgba(0,0,0,.08);border-radius:6px;overflow:hidden">'
+ ' <button class="btn-sm" onclick="setLiveMode(\'uebersicht\')" style="padding:.35rem .8rem;border:0;background:'+(_liveMode==='uebersicht'?'#4a7c8a':'transparent')+';color:'+(_liveMode==='uebersicht'?'#fff':'#3d5165')+';font-weight:700;font-size:.74rem">📅 Tag</button>'
+ ' <button class="btn-sm" onclick="setLiveMode(\'cockpit\')" style="padding:.35rem .8rem;border:0;background:'+(_liveMode==='cockpit'?'#4a7c8a':'transparent')+';color:'+(_liveMode==='cockpit'?'#fff':'#3d5165')+';font-weight:700;font-size:.74rem">🎯 Cockpit</button>'
+ ' <button class="btn-sm" onclick="setLiveMode(\'aktuell\')" style="padding:.35rem .8rem;border:0;background:'+(_liveMode==='aktuell'?'#4a7c8a':'transparent')+';color:'+(_liveMode==='aktuell'?'#fff':'#3d5165')+';font-weight:700;font-size:.74rem">🔴 Aktuell</button>'
+ ' <button class="btn-sm" onclick="setLiveMode(\'vergleich\')" style="padding:.35rem .8rem;border:0;background:'+(_liveMode==='vergleich'?'#4a7c8a':'transparent')+';color:'+(_liveMode==='vergleich'?'#fff':'#3d5165')+';font-weight:700;font-size:.74rem">📊 Vergleich</button>'
+ ' <button class="btn-sm" onclick="setLiveMode(\'uebersicht\')" style="padding:.35rem .8rem;border:0;background:'+(_liveMode==='uebersicht'?'#4a7c8a':'transparent')+';color:'+(_liveMode==='uebersicht'?'#fff':'#3d5165')+';font-weight:700;font-size:.74rem">📅 Tag</button>'
+ '</div>'
+ (_liveMode==='uebersicht' ?
'<div style="display:inline-flex;gap:.3rem;align-items:center;margin-left:.6rem">'