-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
187 lines (161 loc) Β· 6.41 KB
/
Copy pathscript.js
File metadata and controls
187 lines (161 loc) Β· 6.41 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
let timerInterval;
let timeLeft = null;
let isBreakTime = false;
let isPaused = false;
const studyTimerElement = document.getElementById('study-timer');
const startButton = document.getElementById('start');
const pauseButton = document.getElementById('pause');
const resetButton = document.getElementById('reset');
const studyDurationSelect = document.getElementById('study-duration');
const breakDurationSelect = document.getElementById('break-duration');
const restMessage = document.getElementById('rest-message');
const timerLabel = document.getElementById('timer-label');
function updateTimerDisplay() {
if (timeLeft === null) {
studyTimerElement.textContent = '00:00';
} else {
const minutes = Math.floor(timeLeft / 60).toString().padStart(2, '0');
const seconds = (timeLeft % 60).toString().padStart(2, '0');
studyTimerElement.textContent = `${minutes}:${seconds}`;
}
}
function initializeTimer() {
if (studyDurationSelect.value) {
timeLeft = parseInt(studyDurationSelect.value) * 60;
updateTimerDisplay();
isBreakTime = false;
timerLabel.textContent = "Waktu Belajar";
}
startButton.disabled = false;
pauseButton.disabled = false;
resetButton.disabled = false;
}
function startTimer() {
if (timeLeft > 0 && !isPaused) {
timerInterval = setInterval(() => {
if (timeLeft > 0) {
timeLeft--;
updateTimerDisplay();
} else {
clearInterval(timerInterval);
if (!isBreakTime) {
alert("Waktu belajar telah selesai!ππ");
isBreakTime = true;
timeLeft = parseInt(breakDurationSelect.value) * 60; // Set waktu istirahat sesuai pilihan pengguna
timerLabel.textContent = "Waktu Istirahat π";
} else {
alert("Waktu istirahat telah selesai!ππ");
isBreakTime = false;
timeLeft = parseInt(studyDurationSelect.value) * 60; // Reset ke waktu belajar
timerLabel.textContent = "Waktu Belajar";
}
updateTimerDisplay();
startTimer(); // Mulai timer lagi untuk waktu berikutnya
}
}, 1000);
}
}
function pauseTimer() {
clearInterval(timerInterval);
timerInterval = null;
isPaused = true;
}
function resumeTimer() {
isPaused = false;
startTimer();
}
function resetTimer() {
clearInterval(timerInterval);
timerInterval = null;
timeLeft = parseInt(studyDurationSelect.value) * 60;
updateTimerDisplay();
restMessage.style.display = 'none';
isPaused = false;
isBreakTime = false;
timerLabel.textContent = "Waktu Belajar";
}
startButton.addEventListener('click', startTimer);
pauseButton.addEventListener('click', pauseTimer);
resetButton.addEventListener('click', resetTimer);
studyDurationSelect.addEventListener('change', initializeTimer);
breakDurationSelect.addEventListener('change', () => {
if (isBreakTime) {
timeLeft = parseInt(breakDurationSelect.value) * 60; // Update waktu istirahat jika sudah dalam mode istirahat
updateTimerDisplay();
}
});
updateTimerDisplay();
const todoForm = document.getElementById('todo-form');
const todoInput = document.getElementById('todo-input');
const todoList = document.getElementById('todo-list');
const deleteCompletedButton = document.getElementById('delete-completed');
function loadTasks() {
const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
tasks.forEach(task => {
createTaskElement(task.text, task.completed);
});
}
function saveTasks() {
const tasks = Array.from(todoList.children).map(task => ({
text: task.querySelector('label').textContent,
completed: task.classList.contains('completed')
}));
localStorage.setItem('tasks', JSON.stringify(tasks));
}
function createTaskElement(taskText, completed = false) {
const li = document.createElement('li');
li.classList.add('todo-item');
if (completed) li.classList.add('completed');
li.innerHTML = `
<div style="display: flex; align-items: center; flex-grow: 1;">
<input type="checkbox" class="todo-checkbox" ${completed ? 'checked ' : ''}>
<label>${taskText}</label>
</div>
<button class="delete-btn">Delete</button>
`;
const checkbox = li.querySelector('.todo-checkbox');
const deleteBtn = li.querySelector('.delete-btn');
checkbox.addEventListener('change', function() {
li.classList.toggle('completed', this.checked);
saveTasks();
});
deleteBtn.addEventListener('click', function() {
li.remove();
saveTasks();
});
todoList.appendChild(li);
return li;
}
todoForm.addEventListener('submit', function(e) {
e.preventDefault();
const taskText = todoInput.value.trim();
if (taskText !== "") {
createTaskElement(taskText);
todoInput.value = "";
saveTasks();
}
});
deleteCompletedButton.addEventListener('click', function() {
const completedTasks = document.querySelectorAll('.todo-item.completed');
completedTasks.forEach(task => task.remove());
saveTasks();
});
document.addEventListener('DOMContentLoaded', loadTasks);
// Motivational Quotes
const motivasiArray = [
"Belajarlah dengan tekun, karena pengetahuan yang Anda dapatkan akan menjadi bekal untuk kesuksesan Anda!",
"Setiap langkah kecil adalah kemajuan, teruslah melangkah!",
"Kesuksesan tidak datang dari apa yang Anda lakukan sesekali, tetapi dari apa yang Anda lakukan secara konsisten.",
"Jangan pernah menyerah, karena hal-hal yang baik membutuhkan waktu.",
"Percayalah pada dirimu sendiri dan semua yang kamu inginkan akan datang padamu pada waktu yang tepat."
];
let currentMotivasiIndex = 0;
function gantiMotivasi() {
const motivasiTextElement = document.getElementById('motivasi-text');
motivasiTextElement.textContent = motivasiArray[currentMotivasiIndex];
currentMotivasiIndex = (currentMotivasiIndex + 1) % motivasiArray.length; // Loop kembali ke awal
}
// Ganti kata motivasi setiap 5 detik
setInterval(gantiMotivasi, 5000);
// Inisialisasi dengan kata motivasi pertama
gantiMotivasi();