Add timer toggle switch beneath timer block — links to START/STOP buttons

This commit is contained in:
2026-04-08 19:17:44 -05:00
parent b9d3b6115a
commit b5031c4f71
2 changed files with 39 additions and 0 deletions

View File

@@ -177,6 +177,12 @@
onclick="this.select()" /> onclick="this.select()" />
<span class="side-hint">SEC</span> <span class="side-hint">SEC</span>
</div> </div>
<div class="tog-row">
<div class="lbl">TIMER</div>
<label class="tog">
<input type="checkbox" id="timer-tog" onchange="toggleTimerFromSwitch()" /><span class="tog-track"></span>
</label>
</div>
</div> </div>
</div> </div>

View File

@@ -303,11 +303,13 @@ function modTimerToggle(){
if(modTimerRunning){ if(modTimerRunning){
clearInterval(modTimerInterval);modTimerRunning=false; clearInterval(modTimerInterval);modTimerRunning=false;
document.getElementById('btn-timer-ss').textContent='START'; document.getElementById('btn-timer-ss').textContent='START';
document.getElementById('timer-tog').checked=false;
broadcastTimerToPlayers(modTimerRemaining,false); broadcastTimerToPlayers(modTimerRemaining,false);
} else { } else {
if(modTimerRemaining<=0)modTimerLoad(); if(modTimerRemaining<=0)modTimerLoad();
modTimerRunning=true; modTimerRunning=true;
document.getElementById('btn-timer-ss').textContent='PAUSE'; document.getElementById('btn-timer-ss').textContent='PAUSE';
document.getElementById('timer-tog').checked=true;
broadcastTimerToPlayers(modTimerRemaining,true); broadcastTimerToPlayers(modTimerRemaining,true);
modTimerInterval=setInterval(()=>{ modTimerInterval=setInterval(()=>{
modTimerRemaining--; modTimerRemaining--;
@@ -316,6 +318,7 @@ function modTimerToggle(){
if(modTimerRemaining<=0){ if(modTimerRemaining<=0){
clearInterval(modTimerInterval);modTimerRunning=false; clearInterval(modTimerInterval);modTimerRunning=false;
document.getElementById('btn-timer-ss').textContent='START'; document.getElementById('btn-timer-ss').textContent='START';
document.getElementById('timer-tog').checked=false;
ws_send({type:'close_round'}); ws_send({type:'close_round'});
toast('TIME UP — round closed','warn'); toast('TIME UP — round closed','warn');
if(typeof gsap!=='undefined'){ if(typeof gsap!=='undefined'){
@@ -326,11 +329,35 @@ function modTimerToggle(){
} }
} }
function toggleTimerFromSwitch(){
modTimerToggle();
}
function renderModTimerDisplay(){ function renderModTimerDisplay(){
const el=document.getElementById('mod-timer-disp'); const el=document.getElementById('mod-timer-disp');
const s=modTimerRemaining; const s=modTimerRemaining;
el.textContent=fmtTime(s); el.textContent=fmtTime(s);
el.className='timer-digits'+(s<=5?' danger':s<=10?' warn':''); el.className='timer-digits'+(s<=5?' danger':s<=10?' warn':'');
const tog=document.getElementById('timer-tog');
if(tog)tog.checked=modTimerRunning;
}
function modTimerLoad(){
modTimerRemaining=Math.max(5,parseInt(document.getElementById('mod-timer-set').value)||30);
modTimerRunning=false;
clearInterval(modTimerInterval);
document.getElementById('btn-timer-ss').textContent='START';
document.getElementById('timer-tog').checked=false;
renderModTimerDisplay();
}
function modTimerReset(){
clearInterval(modTimerInterval);
modTimerRunning=false;
document.getElementById('timer-tog').checked=false;
modTimerRemaining=Math.max(5,parseInt(document.getElementById('mod-timer-set').value)||30);
renderModTimerDisplay();
broadcastTimerToPlayers(modTimerRemaining,false);
} }
function broadcastTimerToPlayers(sec,running){ function broadcastTimerToPlayers(sec,running){
@@ -396,6 +423,11 @@ function renderMod(){
renderModTeams(); renderModTeams();
renderRoundButtons(); renderRoundButtons();
} }
renderModBuzz(null);
renderModPlayerList();
renderModTeams();
renderRoundButtons();
}
function renderModBuzz(evt){ function renderModBuzz(evt){
const order=room?.buzzerState?.buzzOrder??[]; const order=room?.buzzerState?.buzzOrder??[];
@@ -498,6 +530,7 @@ function renderModSettings(){
segActivate('ls-seg-mode',s.mode); segActivate('ls-seg-mode',s.mode);
renderLiveTeamNames(); renderLiveTeamNames();
renderRoundButtons(); renderRoundButtons();
renderModTimerDisplay();
} }
function segActivate(groupId,val){ function segActivate(groupId,val){