Add timer toggle switch beneath timer block — links to START/STOP buttons
This commit is contained in:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
Reference in New Issue
Block a user