diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 610c7bc..2237ece 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -279,6 +279,8 @@ if ($modoTurnero && $embebido && $_soloFirmaPro) { if ($_pm && $_h < 12) $_h += 12; $_mpHoraFija = sprintf('%02d:%02d', $_h, $_m2); $_mpMin = PHP_INT_MAX; // sentinel: va después de todos los Minuto X + } elseif (stripos($_mpLabel, 'Otro') !== false) { + $_mpMin = PHP_INT_MAX; // sentinel: toma de hora libre } } elseif ($_t === 'hora' && ($_mpMin !== null || $_mpHoraFija !== null)) { $_mpHora = $_c['id'] ?? null; @@ -628,6 +630,13 @@ function _addExamWizardHtml(string $cid): string { font-size:1rem;font-weight:700; } .mp-cfg-body { padding:1.25rem; } .mp-cfg-foot { padding:0 1.25rem 1.25rem; } + .mp-chips { display:flex;flex-wrap:wrap;gap:.4rem;padding:.25rem 0; } + .mp-chip { padding:.3rem .75rem;border:1.5px solid #cbd5e1;border-radius:2rem; + background:#f8fafc;color:#475569;font-size:.82rem;cursor:pointer;transition:all .15s;line-height:1.4; } + .mp-chip.active { background:#1e3a5f;border-color:#1e3a5f;color:#fff;font-weight:600; } + .mp-chip.signed { background:#f0fdf4;border-color:#86efac;color:#166534;cursor:default; } + .mp-chip:not(.signed):not(:disabled):hover { border-color:#1e3a5f; } + .mp-chip-otro-inp { display:none;width:100px;vertical-align:middle;margin-left:.3rem; } .mp-cfg-gtitle { font-weight:700;font-size:.88rem;color:#1e3a5f;margin-bottom:.5rem; border-left:3px solid = htmlspecialchars($docColor) ?>;padding-left:.5rem; } .mp-cfg-item { border:1.5px solid #e5e7eb;border-radius:8px;padding:.35rem .6rem; @@ -1346,41 +1355,69 @@ function _mpGuardarConfig(config, examType, onOk, onErr) { .catch(function() { onErr('Error de conexión.'); }); } +function _mpChipLabel(label) { + var m = label.match(/Minuto\s+(\d+)/i); + if (m) return m[1]; + var pm = label.match(/(\d{1,2}):\d{2}\s*p\.?m/i); + if (pm) return pm[1] + 'pm'; + if (/otro/i.test(label)) return 'Otro'; + return label.replace(/^Toma\s*·\s*/i, '').trim(); +} + function _mpShowCfgPanel(examName, groups, isModify) { - // Construir checkboxes var savedFirmas = window._mpSavedFirmas || {}; var html = ''; var multiGrupo = Object.keys(groups).length > 1; for (var gk in groups) { var secs = groups[gk]; - var title = secs[0] ? (secs[0].display || gk) : gk; html += '