-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
79 lines (71 loc) · 2.25 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
let timer;
let timeLeft;
let isWorking = true;
let sessionsCompleted = 0;
const timerDisplay = document.getElementById('timer');
const statusDisplay = document.getElementById('status');
const startBtn = document.getElementById('startBtn');
const resetBtn = document.getElementById('resetBtn');
const workDurationInput = document.getElementById('workDuration');
const breakDurationInput = document.getElementById('breakDuration');
const sessionsCompletedDisplay = document.getElementById('sessionsCompleted');
const notificationSound = document.getElementById('notificationSound');
function updateDisplay() {
const minutes = Math.floor(timeLeft / 60);
const seconds = timeLeft % 60;
timerDisplay.textContent = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
function startTimer() {
if (!timer) {
timer = setInterval(() => {
timeLeft--;
updateDisplay();
if (timeLeft === 0) {
clearInterval(timer);
timer = null;
notificationSound.play();
if (isWorking) {
sessionsCompleted++;
sessionsCompletedDisplay.textContent = sessionsCompleted;
startBreak();
} else {
startWork();
}
}
}, 1000);
startBtn.textContent = 'Pause';
} else {
clearInterval(timer);
timer = null;
startBtn.textContent = 'Resume';
}
}
function resetTimer() {
clearInterval(timer);
timer = null;
isWorking = true;
startWork();
}
function startWork() {
timeLeft = workDurationInput.value * 60;
isWorking = true;
statusDisplay.textContent = 'Work';
updateDisplay();
startBtn.textContent = 'Start';
}
function startBreak() {
timeLeft = breakDurationInput.value * 60;
isWorking = false;
statusDisplay.textContent = 'Break';
updateDisplay();
startBtn.textContent = 'Start';
}
startBtn.addEventListener('click', startTimer);
resetBtn.addEventListener('click', resetTimer);
workDurationInput.addEventListener('change', startWork);
breakDurationInput.addEventListener('change', () => {
if (!isWorking) {
startBreak();
}
});
startWork();