This commit is contained in:
Lizandro Guarnizo
2026-04-21 14:07:47 -05:00
parent e5bf7297f4
commit 02b8d0eb30
2 changed files with 16 additions and 6 deletions
-1
View File
@@ -145,7 +145,6 @@ try {
break; break;
} }
$sets[] = 'actualizado_at = NOW()';
$sql = 'UPDATE turnero_turnos SET ' . implode(', ', $sets) . ' WHERE id = ?'; $sql = 'UPDATE turnero_turnos SET ' . implode(', ', $sets) . ' WHERE id = ?';
$binds[] = $turnoId; $binds[] = $turnoId;
+16 -5
View File
@@ -425,23 +425,32 @@ function escHtml(str) {
return d.innerHTML; return d.innerHTML;
} }
// ── Carga inicial ───────────────────────────────────────────── // ── Carga/polling ─────────────────────────────────────────────
async function cargarInicial() { let pollTimer = null;
async function cargarSnapshot() {
const url = new URL(BASE_API + 'get_cola.php', location.href); const url = new URL(BASE_API + 'get_cola.php', location.href);
url.searchParams.set('area', area); url.searchParams.set('area', area);
if (lugarId) url.searchParams.set('lugar_id', lugarId); if (lugarId) url.searchParams.set('lugar_id', lugarId);
try { try {
const res = await fetch(url.toString()); const res = await fetch(url.toString(), { cache: 'no-store' });
const json = await res.json(); const json = await res.json();
if (json.ok) renderSnapshot(json); if (json.ok) renderSnapshot(json);
} catch (_) { /* SSE tomará el relevo */ } } catch (_) {}
}
// Arrancar polling cada 4 s (funciona aunque SSE falle por proxy)
function iniciarPolling() {
cargarSnapshot();
pollTimer = setInterval(cargarSnapshot, 4000);
} }
// ── SSE ─────────────────────────────────────────────────────── // ── SSE ───────────────────────────────────────────────────────
const chipEstado = document.getElementById('chip-estado'); const chipEstado = document.getElementById('chip-estado');
let esSource = null; let esSource = null;
let reconnectDelay = 2000; let reconnectDelay = 2000;
let sseViva = false;
function conectarSSE() { function conectarSSE() {
const sseUrl = new URL(BASE_API + 'sse_turno.php', location.href); const sseUrl = new URL(BASE_API + 'sse_turno.php', location.href);
@@ -452,6 +461,7 @@ function conectarSSE() {
esSource.addEventListener('open', () => { esSource.addEventListener('open', () => {
reconnectDelay = 2000; reconnectDelay = 2000;
sseViva = true;
chipEstado.className = 'estado-chip conectado'; chipEstado.className = 'estado-chip conectado';
chipEstado.innerHTML = '<i class="fas fa-circle me-1" style="font-size:.5rem"></i>En vivo'; chipEstado.innerHTML = '<i class="fas fa-circle me-1" style="font-size:.5rem"></i>En vivo';
}); });
@@ -464,6 +474,7 @@ function conectarSSE() {
}); });
esSource.addEventListener('error', () => { esSource.addEventListener('error', () => {
sseViva = false;
chipEstado.className = 'estado-chip error'; chipEstado.className = 'estado-chip error';
chipEstado.innerHTML = '<i class="fas fa-exclamation-circle me-1"></i>Reconectando…'; chipEstado.innerHTML = '<i class="fas fa-exclamation-circle me-1"></i>Reconectando…';
esSource.close(); esSource.close();
@@ -473,7 +484,7 @@ function conectarSSE() {
} }
// ── Inicio ──────────────────────────────────────────────────── // ── Inicio ────────────────────────────────────────────────────
cargarInicial(); iniciarPolling();
conectarSSE(); conectarSSE();
</script> </script>
</body> </body>