diff --git a/src/public/index.html b/src/public/index.html index e9b4547..81d2d50 100644 --- a/src/public/index.html +++ b/src/public/index.html @@ -177,6 +177,12 @@ onclick="this.select()" /> SEC +
+
TIMER
+ +
diff --git a/src/public/script.js b/src/public/script.js index ffe5ae2..f8f266d 100644 --- a/src/public/script.js +++ b/src/public/script.js @@ -303,11 +303,13 @@ function modTimerToggle(){ if(modTimerRunning){ clearInterval(modTimerInterval);modTimerRunning=false; document.getElementById('btn-timer-ss').textContent='START'; + document.getElementById('timer-tog').checked=false; broadcastTimerToPlayers(modTimerRemaining,false); } else { if(modTimerRemaining<=0)modTimerLoad(); modTimerRunning=true; document.getElementById('btn-timer-ss').textContent='PAUSE'; + document.getElementById('timer-tog').checked=true; broadcastTimerToPlayers(modTimerRemaining,true); modTimerInterval=setInterval(()=>{ modTimerRemaining--; @@ -316,6 +318,7 @@ function modTimerToggle(){ if(modTimerRemaining<=0){ clearInterval(modTimerInterval);modTimerRunning=false; document.getElementById('btn-timer-ss').textContent='START'; + document.getElementById('timer-tog').checked=false; ws_send({type:'close_round'}); toast('TIME UP — round closed','warn'); if(typeof gsap!=='undefined'){ @@ -326,11 +329,35 @@ function modTimerToggle(){ } } +function toggleTimerFromSwitch(){ + modTimerToggle(); +} + function renderModTimerDisplay(){ const el=document.getElementById('mod-timer-disp'); const s=modTimerRemaining; el.textContent=fmtTime(s); 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){ @@ -396,6 +423,11 @@ function renderMod(){ renderModTeams(); renderRoundButtons(); } + renderModBuzz(null); + renderModPlayerList(); + renderModTeams(); + renderRoundButtons(); +} function renderModBuzz(evt){ const order=room?.buzzerState?.buzzOrder??[]; @@ -498,6 +530,7 @@ function renderModSettings(){ segActivate('ls-seg-mode',s.mode); renderLiveTeamNames(); renderRoundButtons(); + renderModTimerDisplay(); } function segActivate(groupId,val){