(function(){ 'use strict'; if(window.fiTabulationReturnBound)return;window.fiTabulationReturnBound=true; function paint(button){ var performed=button.dataset.performed==='0'; button.setAttribute('role','switch');button.setAttribute('aria-checked',String(performed)); button.classList.toggle('tabulation-not-performed',!performed); var track=document.createElement('span');track.className='tabulation-attendance-track';track.setAttribute('aria-hidden','true'); var caption=document.createElement('span');caption.className='tabulation-attendance-caption'; caption.textContent=performed?button.dataset.labelPerformed:button.dataset.labelNotPerformed; button.replaceChildren(track,caption); } document.addEventListener('click',function(event){ var button=event.target.closest('.tabulation-return-button');if(!button)return; event.preventDefault();event.stopPropagation(); var actions=button.closest('.tabulation-attendance-actions');if(!actions || actions.dataset.busy==='1')return; var row=button.closest('tr'),status=actions.querySelector('.tabulation-return-status'); if(button.dataset.champ==='1'){var champTable=row.closest('table');if(champTable.dataset.recallPending==='1'||champTable.dataset.attendancePending==='1')return;champTable.dataset.attendancePending='1';} actions.dataset.busy='1';button.disabled=true;button.setAttribute('aria-busy','true'); status.textContent=button.dataset.pending; fetch('/organizer/return_tabulation_dancer.php',{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:new URLSearchParams({comp:button.dataset.comp,user:button.dataset.user,token:button.dataset.token,performed:button.dataset.performed}).toString()}) .then(function(response){return response.json().then(function(data){if(!response.ok||!data.ok)throw new Error(data.error||button.dataset.error);return data;});}) .then(function(data){ var performed=data.performed===true; row.classList.toggle('row-disabled',!performed); row.querySelectorAll('.tabulation-input').forEach(function(node){node.classList.toggle('row-disabled',!performed);}); row.querySelectorAll('.score-cell input,.comment-cell input,.comment-cell textarea').forEach(function(input){input.disabled=!performed;}); button.dataset.performed=performed?'0':'1';paint(button);status.textContent=''; if(button.dataset.champ==='1'){row.dataset.performed=performed?'1':'0';var recall=row.querySelector('.fi-champ-recall');if(!performed)recall.checked=false;window.fiChampRecallApply(row.closest('table'));} }).catch(function(error){status.textContent=error.message||button.dataset.error;}) .finally(function(){if(button.dataset.champ==='1')delete row.closest('table').dataset.attendancePending;actions.dataset.busy='0';button.disabled=false;button.removeAttribute('aria-busy');}); }); })();