65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
|
const resetBtn = document.querySelector('#reset');
|
||
|
const playBtn = document.querySelector('#play');
|
||
|
const timerEl = document.querySelector('#timer');
|
||
|
const root = document.querySelector(':root');
|
||
|
|
||
|
// Initial setup
|
||
|
const totalSeconds = 60;
|
||
|
let playing = false;
|
||
|
let currentSeconds = totalSeconds;
|
||
|
timerEl.innerText = formatTime(totalSeconds);
|
||
|
|
||
|
const timerInterval = setInterval(run, 1000);
|
||
|
|
||
|
playBtn.addEventListener('click', () => {
|
||
|
playing = !playing;
|
||
|
playBtn.classList.toggle('play');
|
||
|
playBtn.classList.toggle('bg-green-500'); // Toggle the color class
|
||
|
const playIcon = playBtn.querySelector('i');
|
||
|
playIcon.classList.toggle('fa-play'); // Toggle the play icon
|
||
|
playIcon.classList.toggle('fa-pause'); // Toggle the pause icon
|
||
|
});
|
||
|
resetBtn.addEventListener('click', resetAll);
|
||
|
|
||
|
// Run the timer
|
||
|
function run() {
|
||
|
if (playing) {
|
||
|
currentSeconds -= 1;
|
||
|
if (currentSeconds <= 0) {
|
||
|
clearInterval(timerInterval);
|
||
|
resetAll();
|
||
|
}
|
||
|
|
||
|
timerEl.innerText = formatTime(currentSeconds);
|
||
|
root.style.setProperty('--degrees', calcDeg());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Format the time
|
||
|
function formatTime(seconds) {
|
||
|
const minutes = Math.floor(seconds / 60);
|
||
|
const newSeconds = seconds % 60;
|
||
|
|
||
|
return `${minutes.toString().padStart(2, '0')}:${newSeconds
|
||
|
.toString()
|
||
|
.padStart(2, '0')}`;
|
||
|
}
|
||
|
|
||
|
// Calculate the degrees
|
||
|
function calcDeg() {
|
||
|
return `${360 - (currentSeconds / totalSeconds) * 360}deg`;
|
||
|
}
|
||
|
|
||
|
// Reset all the values
|
||
|
function resetAll() {
|
||
|
playing = false;
|
||
|
playBtn.classList.remove('play');
|
||
|
playBtn.classList.remove('bg-green-500'); // Remove the color class
|
||
|
const playIcon = playBtn.querySelector('i');
|
||
|
playIcon.classList.remove('fa-pause'); // Remove the pause icon
|
||
|
playIcon.classList.add('fa-play'); // Add the play icon
|
||
|
currentSeconds = totalSeconds;
|
||
|
timerEl.innerText = formatTime(totalSeconds);
|
||
|
root.style.setProperty('--degrees', '0deg');
|
||
|
}
|