diff --git a/modules/turnero/views/kiosko.php b/modules/turnero/views/kiosko.php index 143ae71..fbb9d7d 100644 --- a/modules/turnero/views/kiosko.php +++ b/modules/turnero/views/kiosko.php @@ -503,6 +503,30 @@ unset($p); }); } + // ── Scanner detector (un solo listener, fuera de seleccionarPrioridad) ── + let _timerAutoSubmit = null; + let _lastKeyAt = 0; + let _timerInactividad = null; + + document.getElementById('inp-cedula').addEventListener('input', () => { + clearTimeout(_timerAutoSubmit); + resetInactividad(); + const now = Date.now(); + const gap = now - _lastKeyAt; + _lastKeyAt = now; + const val = document.getElementById('inp-cedula').value.trim(); + if (/^\d{5,15}$/.test(val) && gap < 80) { + _timerAutoSubmit = setTimeout(() => confirmarTurno(), 300); + } + }); + + function resetInactividad() { + clearTimeout(_timerInactividad); + _timerInactividad = setTimeout(() => { + seleccionarOtraPrioridad(); + }, 90000); // 90 s sin actividad → vuelve al inicio + } + function seleccionarPrioridad(btn) { prioCodigo = btn.dataset.codigo; prioNombre = btn.dataset.nombre; @@ -516,24 +540,12 @@ unset($p); const inpCedula = document.getElementById('inp-cedula'); inpCedula.focus(); inpCedula.value = ''; - - // Detector de scanner: auto-submit solo si los dígitos llegan rápido (< 80ms entre cada uno) - let _timerAutoSubmit = null; - let _lastKeyAt = 0; - inpCedula.addEventListener('input', () => { - clearTimeout(_timerAutoSubmit); - const now = Date.now(); - const gap = now - _lastKeyAt; - _lastKeyAt = now; - const val = inpCedula.value.trim(); - // Scanner envía dígitos en ráfaga; teclado humano siempre > 80ms entre teclas - if (/^\d{5,15}$/.test(val) && gap < 80) { - _timerAutoSubmit = setTimeout(() => confirmarTurno(), 300); - } - }); + _lastKeyAt = 0; + clearTimeout(_timerAutoSubmit); + resetInactividad(); } - function volverPrioridades() { mostrar('screen-prio'); } + function volverPrioridades() { clearTimeout(_timerInactividad); mostrar('screen-prio'); } async function confirmarTurno() { const cedula = document.getElementById('inp-cedula').value.trim(); @@ -577,6 +589,7 @@ unset($p); function seleccionarOtraPrioridad() { clearTimeout(window._timer); + clearTimeout(_timerInactividad); document.getElementById('inp-cedula').value = ''; document.getElementById('inp-cel').value = ''; prioCodigo = prioNombre = prioColor = '';