Update lugar.php
This commit is contained in:
@@ -78,6 +78,7 @@ $adminNombre = $_SESSION['admin_user']['full_name'] ?? $_SESSION['admin_user']['
|
||||
.cola-card.activo { border-color: #6366f1; box-shadow: 0 0 0 2px #c7d2fe; }
|
||||
.cola-card.en-servicio-card { border-color: #16a34a; background: #f0fdf4; }
|
||||
.cola-card.en-servicio-card.activo { border-color: #16a34a; box-shadow: 0 0 0 2px #bbf7d0; }
|
||||
.cola-card.nav-selected { border-color: #3b82f6; background: #eff6ff; box-shadow: 0 0 0 2px #bfdbfe; }
|
||||
.prio-dot {
|
||||
width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
@@ -220,12 +221,9 @@ require_once __DIR__ . '/../../../shared/components/sidebar.php';
|
||||
<span id="badge-turno-activo" class="badge bg-primary ms-1 d-none" id="badge-cod-activo"></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-muted small d-none d-md-inline"><?= htmlspecialchars($adminNombre) ?></span>
|
||||
<button class="btn btn-sm btn-outline-secondary" onclick="cambiarLugar()">
|
||||
<i class="fas fa-exchange-alt me-1"></i>Cambiar lugar
|
||||
</button>
|
||||
<span class="text-muted small"><?= htmlspecialchars($adminNombre) ?></span>
|
||||
<button class="btn btn-primary btn-sm" id="btn-llamar" onclick="llamarSiguiente()">
|
||||
<i class="fas fa-bell me-1"></i>Llamar siguiente
|
||||
<i class="fas fa-exchange-alt me-1"></i>Cambiar
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -235,12 +233,29 @@ require_once __DIR__ . '/../../../shared/components/sidebar.php';
|
||||
<!-- ══ Cola ═══════════════════════════════════════════ -->
|
||||
<div class="lugar-cola">
|
||||
<div class="lugar-cola-hdr">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<div class="d-flex align-items-center justify-content-between mb-2">
|
||||
<span class="fw-semibold text-secondary" style="font-size:.78rem;text-transform:uppercase;letter-spacing:.05em">
|
||||
<i class="fas fa-list-ol me-1"></i>EN ESPERA
|
||||
</span>
|
||||
<span class="badge bg-primary rounded-pill" id="badge-count">0</span>
|
||||
</div>
|
||||
<button class="btn btn-primary w-100 py-2" id="btn-llamar" onclick="llamarSiguiente()">
|
||||
<i class="fas fa-bell me-2"></i>Llamar siguiente
|
||||
</button>
|
||||
<!-- Navegación entre turnos en espera -->
|
||||
<div class="d-flex align-items-center gap-1 mt-2" id="nav-cola" style="display:none!important">
|
||||
<button class="btn btn-outline-secondary btn-sm flex-shrink-0" onclick="navCola(-1)" title="Anterior">
|
||||
<i class="fas fa-chevron-up"></i>
|
||||
</button>
|
||||
<div class="flex-grow-1 text-center py-1 px-2 rounded" id="nav-preview"
|
||||
style="background:#f1f5f9;font-size:.82rem;font-weight:600;min-height:32px;cursor:pointer"
|
||||
onclick="llamarNavActual()" title="Clic para llamar este turno">
|
||||
<span class="text-muted" style="font-weight:400">— ninguno seleccionado —</span>
|
||||
</div>
|
||||
<button class="btn btn-outline-secondary btn-sm flex-shrink-0" onclick="navCola(1)" title="Siguiente">
|
||||
<i class="fas fa-chevron-down"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cola-items" id="cola-items">
|
||||
<div class="cola-vacia">
|
||||
@@ -474,6 +489,7 @@ function renderCola(snap) {
|
||||
const items = snap.cola || [];
|
||||
const espera = items.filter(t => t.estado === 'en_espera_lugar');
|
||||
document.getElementById('badge-count').textContent = espera.length;
|
||||
_actualizarNavCola(items);
|
||||
|
||||
const lista = document.getElementById('cola-items');
|
||||
if (!items.length) {
|
||||
@@ -508,6 +524,52 @@ function enfocarFicha() {
|
||||
document.getElementById('ficha-turno')?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
||||
}
|
||||
|
||||
// ── Navegación entre turnos en espera ─────────────────────────
|
||||
let _navItems = []; // lista de turnos en_espera_lugar actual
|
||||
let _navIdx = -1; // índice seleccionado
|
||||
|
||||
function _actualizarNavCola(items) {
|
||||
_navItems = items.filter(t => t.estado === 'en_espera_lugar');
|
||||
// Mantener idx si el turno seleccionado sigue en lista
|
||||
if (_navIdx >= _navItems.length) _navIdx = _navItems.length - 1;
|
||||
const nav = document.getElementById('nav-cola');
|
||||
if (_navItems.length > 0) {
|
||||
nav.style.removeProperty('display');
|
||||
if (_navIdx < 0) _navIdx = 0;
|
||||
_renderNavPreview();
|
||||
} else {
|
||||
nav.style.display = 'none';
|
||||
_navIdx = -1;
|
||||
document.getElementById('nav-preview').innerHTML =
|
||||
`<span class="text-muted" style="font-weight:400">— ninguno seleccionado —</span>`;
|
||||
}
|
||||
}
|
||||
|
||||
function _renderNavPreview() {
|
||||
const t = _navItems[_navIdx];
|
||||
if (!t) return;
|
||||
document.getElementById('nav-preview').innerHTML =
|
||||
`<span style="color:${t.prioridad_color};font-size:.75rem">${t.prioridad_codigo}</span>
|
||||
<strong class="ms-1">${escHtml(t.codigo)}</strong>
|
||||
<span class="text-muted ms-1" style="font-size:.75rem">${escHtml(t.paciente_nombre || '')}</span>
|
||||
<i class="fas fa-bell ms-1 text-primary" style="font-size:.7rem"></i>`;
|
||||
// Resaltar la card en la lista
|
||||
document.querySelectorAll('.cola-card').forEach(el => el.classList.remove('nav-selected'));
|
||||
const cards = document.querySelectorAll('#cola-items .cola-card');
|
||||
if (cards[_navIdx]) cards[_navIdx].classList.add('nav-selected');
|
||||
}
|
||||
|
||||
function navCola(dir) {
|
||||
if (!_navItems.length) return;
|
||||
_navIdx = (_navIdx + dir + _navItems.length) % _navItems.length;
|
||||
_renderNavPreview();
|
||||
}
|
||||
|
||||
async function llamarNavActual() {
|
||||
if (_navIdx < 0 || !_navItems[_navIdx]) return;
|
||||
await llamarTurnoEspecifico(_navItems[_navIdx].id);
|
||||
}
|
||||
|
||||
// ── Llamar siguiente ──────────────────────────────────────────
|
||||
async function llamarSiguiente() {
|
||||
await _llamar({});
|
||||
|
||||
Reference in New Issue
Block a user