Add development percent
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
21
src/roast.ts
21
src/roast.ts
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user