From ae874cd665133bee91353af4cf18a541932e327f47a3c49084f0cc26ce7a000c Mon Sep 17 00:00:00 2001 From: Terrence Ezrol Date: Sun, 13 Jul 2025 15:47:11 -0400 Subject: [PATCH] Add development percent --- src/roast.html | 5 ++++- src/roast.ts | 21 ++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/roast.html b/src/roast.html index 00d4066..fa52bff 100644 --- a/src/roast.html +++ b/src/roast.html @@ -6,7 +6,10 @@ -
0:00
+
+ 0:00 + +
diff --git a/src/roast.ts b/src/roast.ts index 1ef3284..cea7401 100644 --- a/src/roast.ts +++ b/src/roast.ts @@ -6,6 +6,7 @@ let log: Array<{ time: string, event: string, temp?: number }> = []; let targets: number[] = []; let currentTargetIndex = 0; let interval: NodeJS.Timeout | null = null; +let firstCrackTime: number | null = null; declare global { interface Window { @@ -45,9 +46,21 @@ function stopTimer(): void { } function updateTimerDisplay(): void { + const roastTimeEl = document.getElementById("roastTime")!; + const devPercentEl = document.getElementById("devPercent")!; + const minutes = Math.floor(timer / 60); const seconds = timer % 60; - document.getElementById("timer")!.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + roastTimeEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + + if (firstCrackTime !== null && timer > firstCrackTime) { + const devTime = timer - firstCrackTime; + const devRatio = Math.floor((devTime / timer) * 100); + devPercentEl.textContent = ` (${devRatio}%)`; + devPercentEl.style.display = 'inline'; + } else { + devPercentEl.style.display = 'none'; + } } function logEvent(eventName: string): void { @@ -73,6 +86,10 @@ function logEvent(eventName: string): void { tempButtons.innerHTML = ""; return; } + if (eventName === "First Crack") { + firstCrackTime = timer; + } + log.push({ time: formatTime(timer), event: eventName }); updateLog(); } @@ -84,6 +101,8 @@ function resetSystem(): void { document.getElementById("create-plan")!.classList.remove("hidden"); const tempButtons = document.getElementById("temp-buttons")!; tempButtons.innerHTML = ""; + const devPercentEl = document.getElementById("devPercent")!; + devPercentEl.style.display = "none"; } function formatTime(seconds: number): string {