Add development percent

This commit is contained in:
2025-07-13 15:47:11 -04:00
parent 7f402fcade
commit ae874cd665
2 changed files with 24 additions and 2 deletions

View File

@@ -6,7 +6,10 @@
<link rel="stylesheet" href="./roast.css"> <link rel="stylesheet" href="./roast.css">
</head> </head>
<body> <body>
<div id="timer">0:00</div> <div id="timer">
<span id="roastTime">0:00</span>
<span id="devPercent" style="display: none;"> (0%)</span>
</div>
<div id="create-plan"> <div id="create-plan">
<input type="text" id="plan-input" placeholder="Enter temperatures (comma separated)"> <input type="text" id="plan-input" placeholder="Enter temperatures (comma separated)">
<button onclick="setPlan()">Set Plan</button> <button onclick="setPlan()">Set Plan</button>

View File

@@ -6,6 +6,7 @@ let log: Array<{ time: string, event: string, temp?: number }> = [];
let targets: number[] = []; let targets: number[] = [];
let currentTargetIndex = 0; let currentTargetIndex = 0;
let interval: NodeJS.Timeout | null = null; let interval: NodeJS.Timeout | null = null;
let firstCrackTime: number | null = null;
declare global { declare global {
interface Window { interface Window {
@@ -45,9 +46,21 @@ function stopTimer(): void {
} }
function updateTimerDisplay(): void { function updateTimerDisplay(): void {
const roastTimeEl = document.getElementById("roastTime")!;
const devPercentEl = document.getElementById("devPercent")!;
const minutes = Math.floor(timer / 60); const minutes = Math.floor(timer / 60);
const seconds = 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 { function logEvent(eventName: string): void {
@@ -73,6 +86,10 @@ function logEvent(eventName: string): void {
tempButtons.innerHTML = ""; tempButtons.innerHTML = "";
return; return;
} }
if (eventName === "First Crack") {
firstCrackTime = timer;
}
log.push({ time: formatTime(timer), event: eventName }); log.push({ time: formatTime(timer), event: eventName });
updateLog(); updateLog();
} }
@@ -84,6 +101,8 @@ function resetSystem(): void {
document.getElementById("create-plan")!.classList.remove("hidden"); document.getElementById("create-plan")!.classList.remove("hidden");
const tempButtons = document.getElementById("temp-buttons")!; const tempButtons = document.getElementById("temp-buttons")!;
tempButtons.innerHTML = ""; tempButtons.innerHTML = "";
const devPercentEl = document.getElementById("devPercent")!;
devPercentEl.style.display = "none";
} }
function formatTime(seconds: number): string { function formatTime(seconds: number): string {