Timer toggle: manual ON/OFF control, buttons auto-link when ON, never auto-uncheck
This commit is contained in:
@@ -94,7 +94,7 @@ function handle(msg){
|
||||
break;
|
||||
case 'round_closed':
|
||||
room=msg.room;
|
||||
if(role==='mod'){renderMod();renderRoundButtons();document.getElementById('timer-tog').checked=false;toast('ROUND CLOSED','warn');}
|
||||
if(role==='mod'){renderMod();renderRoundButtons();toast('ROUND CLOSED','warn');}
|
||||
else{renderPlayerBuzzer();stopPlayerTimer();}
|
||||
break;
|
||||
case 'buzzer_reset':
|
||||
@@ -330,11 +330,13 @@ function modTimerToggle(){
|
||||
if(modTimerRunning){
|
||||
clearInterval(modTimerInterval);modTimerRunning=false;
|
||||
document.getElementById('btn-timer-ss').textContent='START';
|
||||
// Don't auto-uncheck - user controls toggle
|
||||
broadcastTimerToPlayers(modTimerRemaining,false);
|
||||
} else {
|
||||
if(modTimerRemaining<=0)modTimerLoad();
|
||||
modTimerRunning=true;
|
||||
document.getElementById('btn-timer-ss').textContent='PAUSE';
|
||||
// Don't auto-check - user controls toggle
|
||||
broadcastTimerToPlayers(modTimerRemaining,true);
|
||||
modTimerInterval=setInterval(()=>{
|
||||
modTimerRemaining--;
|
||||
@@ -351,7 +353,7 @@ function modTimerToggle(){
|
||||
}
|
||||
},1000);
|
||||
}
|
||||
// Update toggle state to match running state
|
||||
// Sync toggle with running state
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
}
|
||||
@@ -365,6 +367,9 @@ function renderModTimerDisplay(){
|
||||
const s=modTimerRemaining;
|
||||
el.textContent=fmtTime(s);
|
||||
el.className='timer-digits'+(s<=5?' danger':s<=10?' warn':'');
|
||||
// Sync toggle with running state (user controls ON/OFF)
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
}
|
||||
|
||||
function modTimerLoad(){
|
||||
@@ -373,6 +378,9 @@ function modTimerLoad(){
|
||||
modTimerRunning=false;
|
||||
clearInterval(modTimerInterval);
|
||||
document.getElementById('btn-timer-ss').textContent='START';
|
||||
// Sync toggle with running state (user controls ON/OFF)
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
renderModTimerDisplay();
|
||||
}
|
||||
|
||||
@@ -380,6 +388,9 @@ function modTimerReset(){
|
||||
clearInterval(modTimerInterval);
|
||||
modTimerRunning=false;
|
||||
modTimerRemaining=Math.max(5,parseInt(document.getElementById('mod-timer-set').value)||30);
|
||||
// Sync toggle with running state (user controls ON/OFF)
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
renderModTimerDisplay();
|
||||
broadcastTimerToPlayers(modTimerRemaining,false);
|
||||
}
|
||||
@@ -392,21 +403,31 @@ function broadcastTimerToPlayers(sec,running){
|
||||
}catch{}
|
||||
}
|
||||
|
||||
// Timer toggle: user clicks ONCE at start to enable/disable linking
|
||||
document.getElementById('timer-tog').addEventListener('change',function(e){
|
||||
const tog=e.target;
|
||||
if(tog.checked){
|
||||
// Enable linking - timer auto-syncs with round buttons
|
||||
} else {
|
||||
// Disable linking - timer buttons work independently
|
||||
}
|
||||
});
|
||||
|
||||
// ══════════════════════════════════════════════════════
|
||||
// MOD ROUND CONTROL
|
||||
// ══════════════════════════════════════════════════════
|
||||
function toggleRound(){
|
||||
if(room.buzzerState.roundOpen){
|
||||
ws_send({type:'close_round'});
|
||||
// If timer toggle is ON and timer running, pause it
|
||||
if(document.getElementById('timer-tog')?.checked && modTimerRunning){
|
||||
// If linked, pause timer
|
||||
if(document.getElementById('timer-tog').checked && modTimerRunning){
|
||||
clearInterval(modTimerInterval);modTimerRunning=false;
|
||||
document.getElementById('btn-timer-ss').textContent='START';
|
||||
}
|
||||
} else {
|
||||
ws_send({type:'open_round'});
|
||||
// If timer toggle is ON and timer not running, start it
|
||||
if(document.getElementById('timer-tog')?.checked && !modTimerRunning && modTimerRemaining===0){
|
||||
// If linked and timer was stopped, start it
|
||||
if(document.getElementById('timer-tog').checked && !modTimerRunning && modTimerRemaining===0){
|
||||
modTimerLoad();
|
||||
modTimerRunning=true;
|
||||
document.getElementById('btn-timer-ss').textContent='PAUSE';
|
||||
@@ -427,8 +448,8 @@ function toggleRound(){
|
||||
|
||||
function resumeRound(){
|
||||
ws_send({type:'resume_round'});
|
||||
// If timer toggle is ON and timer not running, resume it
|
||||
if(document.getElementById('timer-tog')?.checked && !modTimerRunning){
|
||||
// If linked and timer was stopped, resume it
|
||||
if(document.getElementById('timer-tog').checked && !modTimerRunning){
|
||||
modTimerLoad();
|
||||
modTimerRunning=true;
|
||||
document.getElementById('btn-timer-ss').textContent='PAUSE';
|
||||
@@ -446,14 +467,6 @@ function resumeRound(){
|
||||
}
|
||||
}
|
||||
|
||||
// Timer toggle handler
|
||||
document.getElementById('timer-tog').addEventListener('change',function(e){
|
||||
if(e.target.checked && modTimerRemaining===0){
|
||||
// If timer is enabled but not started, load it from set value
|
||||
modTimerLoad();
|
||||
}
|
||||
});
|
||||
|
||||
function renderRoundButtons(){
|
||||
const btn=document.getElementById('mod-round-btn');
|
||||
const resumeBtn=document.getElementById('mod-resume-btn');
|
||||
@@ -467,6 +480,10 @@ function renderRoundButtons(){
|
||||
btn.className='btn btn-g btn-full';
|
||||
resumeBtn.style.display='block';
|
||||
}
|
||||
|
||||
// Sync timer toggle with running state (user controls ON/OFF)
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════════════
|
||||
@@ -491,8 +508,9 @@ function renderMod(){
|
||||
renderModPlayerList();
|
||||
renderModTeams();
|
||||
renderRoundButtons();
|
||||
// Sync timer toggle with running state
|
||||
document.getElementById('timer-tog').checked=modTimerRunning;
|
||||
// Sync timer toggle with running state (user controls ON/OFF, toggle reflects state)
|
||||
const tog=document.getElementById('timer-tog');
|
||||
if(tog)tog.checked=modTimerRunning;
|
||||
}
|
||||
|
||||
function renderModBuzz(evt){
|
||||
@@ -597,7 +615,6 @@ function renderModSettings(){
|
||||
renderLiveTeamNames();
|
||||
renderRoundButtons();
|
||||
renderModTimerDisplay();
|
||||
document.getElementById('timer-tog').checked=modTimerRunning;
|
||||
}
|
||||
|
||||
function segActivate(groupId,val){
|
||||
|
||||
Reference in New Issue
Block a user