Reset Life – Terminal de Operador
<header class="border-b border-green-900 pb-4 mb-8">
<h1 class="text-2xl font-bold tracking-taller">RESET_LIFE_APP // V.1.0</h1>
<p class="text-xs opacity-50">STATUS: SISTEMA OPERATIVO // OXIGENACIÓN_CHECK</p>
</header>
<main id="app-container" class="max-w-md mx-auto">
<div id="display" class="scanner-glow border-2 border-green-500 rounded-xl p-10 text-center mb-8 bg-black">
<h2 id="status-label" class="text-sm mb-4">ESPERANDO CALIBRACIÓN...</h2>
<div id="timer" class="text-6xl font-bold my-6">00.0s</div>
<button id="main-btn" onclick="toggleTimer()" class="bg-green-600 text-black font-bold py-4 px-8 rounded-full hover:bg-green-400 transition-all w-full">
INICIAR APNEA BASE
</button>
</div>
<div class="bg-zinc-900 rounded-lg p-4 text-xs border border-zinc-700">
<h3 class="border-b border-zinc-700 pb-2 mb-2 uppercase">Log de Sesión:</h3>
<div id="log-content">
> Sistema iniciado...<br>
> Pendiente de medida de base celular...
</div>
</div>
</main>
<script>
let startTime, timerInterval;
let apneaBase = 0;
let isRunning = false;
let stage = 'base'; // 'base' o 'post'
function toggleTimer() {
const btn = document.getElementById('main-btn');
const timerDisplay = document.getElementById('timer');
const log = document.getElementById('log-content');
if (!isRunning) {
// START
isRunning = true;
startTime = Date.now();
btn.innerText = "PARAR (STOP)";
btn.classList.replace('bg-green-600', 'bg-red-600');
timerInterval = setInterval(() => {
const elapsed = (Date.now() - startTime) / 1000;
timerDisplay.innerText = elapsed.toFixed(1) + "s";
}, 100);
} else {
// STOP
isRunning = false;
clearInterval(timerInterval);
const finalTime = (Date.now() - startTime) / 1000;
btn.classList.replace('bg-red-600', 'bg-blue-600');
if (stage === 'base') {
apneaBase = finalTime;
log.innerHTML += `<br>> APNEA_BASE: ${apneaBase}s REGISTRADA.`;
log.innerHTML += `<br>> ESPERE 30 MIN TRAS EL EVENTO PARA TEST_POST.`;
btn.innerText = "INICIAR TEST POST (+30min)";
document.getElementById('status-label').innerText = "EVENTO EN PROCESO...";
stage = 'post';
} else {
const diff = ((finalTime - apneaBase) / apneaBase * 100).toFixed(1);
const color = diff >= 0 ? 'text-green-400' : 'text-red-400';
log.innerHTML += `<br>> APNEA_POST: ${finalTime}s.`;
log.innerHTML += `<br>> <span class="${color}">DIFERENCIAL CELULAR: ${diff}%</span>`;
if(finalTime >= 40) {
log.innerHTML += `<br>> !! STATUS: HARDWARE ELITE DETECTADO !!`;
}
btn.innerText = "NUEVO DIAGNÓSTICO";
btn.classList.replace('bg-blue-600', 'bg-green-600');
stage = 'base';
}
}
}
</script>