feat(recepcion): mostrar contador de exámenes seleccionados

Badge junto al título "Exámenes solicitados" que muestra cuántos
exámenes lleva el turno actual. Se actualiza en tiempo real al
agregar o quitar ítems del TomSelect.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-28 09:41:06 -05:00
co-authored by Claude Sonnet 4.6
parent fa591873a9
commit 3d26700e16
+13 -3
View File
@@ -709,7 +709,9 @@ document.addEventListener('DOMContentLoaded', function() {
<!-- ── Sección 3: Exámenes ── -->
<div class="ficha-section">
<h6><i class="fas fa-vial me-1"></i>Exámenes solicitados</h6>
<h6><i class="fas fa-vial me-1"></i>Exámenes solicitados
<span id="exam-count-badge" class="badge bg-primary ms-1 d-none"></span>
</h6>
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="chk-solo-muestras" onchange="toggleSoloMuestras()">
<label class="form-check-label small fw-semibold text-warning" for="chk-solo-muestras">
@@ -1150,14 +1152,22 @@ let pollingConsentimientosId = null;
let examTS;
function _actualizarContadorExamenes() {
const badge = document.getElementById('exam-count-badge');
if (!badge || !examTS) return;
const n = examTS.items.length;
badge.textContent = n;
badge.classList.toggle('d-none', n === 0);
}
document.addEventListener('DOMContentLoaded', () => {
examTS = new TomSelect('#sel-examenes', {
plugins: ['remove_button'],
maxOptions: null,
selectOnTab: false,
onItemAdd() { recalcularPrecios(); examTS.setTextboxValue(''); examTS.refreshOptions(false); examTS.close(); },
onItemRemove: () => recalcularPrecios(),
onItemAdd() { recalcularPrecios(); _actualizarContadorExamenes(); examTS.setTextboxValue(''); examTS.refreshOptions(false); examTS.close(); },
onItemRemove() { recalcularPrecios(); _actualizarContadorExamenes(); },
onType(str) {
if (!str) return;
requestAnimationFrame(() => {