Spaces:
Running
Running
please look at this and fix this properly
Browse files- index.html +15 -8
index.html
CHANGED
|
@@ -85,11 +85,14 @@
|
|
| 85 |
</div>
|
| 86 |
</div>
|
| 87 |
</div>
|
| 88 |
-
<script>
|
| 89 |
let timerInterval;
|
| 90 |
let isRunning = false;
|
| 91 |
let startTime;
|
| 92 |
let elapsedTime = 0;
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
// Timer functions
|
| 95 |
function startTimer() {
|
|
@@ -117,6 +120,7 @@
|
|
| 117 |
elapsedTime = Date.now() - startTime;
|
| 118 |
updateDisplay(elapsedTime);
|
| 119 |
}
|
|
|
|
| 120 |
function updateDisplay(time) {
|
| 121 |
const seconds = Math.floor((time / 1000) % 60);
|
| 122 |
const minutes = Math.floor((time / (1000 * 60)) % 60);
|
|
@@ -132,7 +136,6 @@
|
|
| 132 |
}
|
| 133 |
|
| 134 |
// Drag functionality
|
| 135 |
-
const widget = document.getElementById('timer-widget');
|
| 136 |
let isDragging = false;
|
| 137 |
let offsetX, offsetY;
|
| 138 |
|
|
@@ -164,6 +167,7 @@
|
|
| 164 |
top: rect.top
|
| 165 |
}));
|
| 166 |
});
|
|
|
|
| 167 |
// Load saved position
|
| 168 |
const savedPosition = localStorage.getItem('timerPosition');
|
| 169 |
if (savedPosition) {
|
|
@@ -175,26 +179,26 @@
|
|
| 175 |
widget.style.left = 'calc(100vw - 200px)';
|
| 176 |
widget.style.top = 'calc(100vh - 100px)';
|
| 177 |
}
|
|
|
|
| 178 |
// Toggle expanded state
|
| 179 |
-
let isExpanded = false;
|
| 180 |
-
|
| 181 |
liveClock.addEventListener('click', () => {
|
| 182 |
isExpanded = !isExpanded;
|
| 183 |
widget.classList.toggle('expanded', isExpanded);
|
| 184 |
-
|
| 185 |
-
// Save expanded state
|
| 186 |
localStorage.setItem('timerExpanded', isExpanded);
|
| 187 |
});
|
| 188 |
-
|
|
|
|
| 189 |
document.getElementById('start-btn').addEventListener('click', startTimer);
|
| 190 |
document.getElementById('stop-btn').addEventListener('click', stopTimer);
|
| 191 |
document.getElementById('reset-btn').addEventListener('click', resetTimer);
|
|
|
|
| 192 |
// Load expanded state
|
| 193 |
const savedExpanded = localStorage.getItem('timerExpanded') === 'true';
|
| 194 |
if (savedExpanded) {
|
| 195 |
isExpanded = true;
|
| 196 |
widget.classList.add('expanded');
|
| 197 |
}
|
|
|
|
| 198 |
// Initialize with current time and update live clock
|
| 199 |
function updateLiveClock() {
|
| 200 |
const now = new Date();
|
|
@@ -216,7 +220,8 @@
|
|
| 216 |
// Update live clock immediately and every second
|
| 217 |
updateLiveClock();
|
| 218 |
setInterval(updateLiveClock, 1000);
|
| 219 |
-
|
|
|
|
| 220 |
const noteInput = document.getElementById('time-note');
|
| 221 |
noteInput.addEventListener('change', () => {
|
| 222 |
const note = noteInput.value.trim();
|
|
@@ -237,8 +242,10 @@
|
|
| 237 |
document.getElementById('note-text').textContent = savedNote;
|
| 238 |
widget.classList.add('has-note');
|
| 239 |
}
|
|
|
|
| 240 |
// Initialize with stopped state
|
| 241 |
resetTimer();
|
|
|
|
| 242 |
// Make sure widget stays visible when minimized
|
| 243 |
widget.style.minWidth = '150px';
|
| 244 |
widget.style.minHeight = '70px';
|
|
|
|
| 85 |
</div>
|
| 86 |
</div>
|
| 87 |
</div>
|
| 88 |
+
<script>
|
| 89 |
let timerInterval;
|
| 90 |
let isRunning = false;
|
| 91 |
let startTime;
|
| 92 |
let elapsedTime = 0;
|
| 93 |
+
let isExpanded = false;
|
| 94 |
+
const widget = document.getElementById('timer-widget');
|
| 95 |
+
const liveClock = document.getElementById('live-clock');
|
| 96 |
|
| 97 |
// Timer functions
|
| 98 |
function startTimer() {
|
|
|
|
| 120 |
elapsedTime = Date.now() - startTime;
|
| 121 |
updateDisplay(elapsedTime);
|
| 122 |
}
|
| 123 |
+
|
| 124 |
function updateDisplay(time) {
|
| 125 |
const seconds = Math.floor((time / 1000) % 60);
|
| 126 |
const minutes = Math.floor((time / (1000 * 60)) % 60);
|
|
|
|
| 136 |
}
|
| 137 |
|
| 138 |
// Drag functionality
|
|
|
|
| 139 |
let isDragging = false;
|
| 140 |
let offsetX, offsetY;
|
| 141 |
|
|
|
|
| 167 |
top: rect.top
|
| 168 |
}));
|
| 169 |
});
|
| 170 |
+
|
| 171 |
// Load saved position
|
| 172 |
const savedPosition = localStorage.getItem('timerPosition');
|
| 173 |
if (savedPosition) {
|
|
|
|
| 179 |
widget.style.left = 'calc(100vw - 200px)';
|
| 180 |
widget.style.top = 'calc(100vh - 100px)';
|
| 181 |
}
|
| 182 |
+
|
| 183 |
// Toggle expanded state
|
|
|
|
|
|
|
| 184 |
liveClock.addEventListener('click', () => {
|
| 185 |
isExpanded = !isExpanded;
|
| 186 |
widget.classList.toggle('expanded', isExpanded);
|
|
|
|
|
|
|
| 187 |
localStorage.setItem('timerExpanded', isExpanded);
|
| 188 |
});
|
| 189 |
+
|
| 190 |
+
// Button event listeners
|
| 191 |
document.getElementById('start-btn').addEventListener('click', startTimer);
|
| 192 |
document.getElementById('stop-btn').addEventListener('click', stopTimer);
|
| 193 |
document.getElementById('reset-btn').addEventListener('click', resetTimer);
|
| 194 |
+
|
| 195 |
// Load expanded state
|
| 196 |
const savedExpanded = localStorage.getItem('timerExpanded') === 'true';
|
| 197 |
if (savedExpanded) {
|
| 198 |
isExpanded = true;
|
| 199 |
widget.classList.add('expanded');
|
| 200 |
}
|
| 201 |
+
|
| 202 |
// Initialize with current time and update live clock
|
| 203 |
function updateLiveClock() {
|
| 204 |
const now = new Date();
|
|
|
|
| 220 |
// Update live clock immediately and every second
|
| 221 |
updateLiveClock();
|
| 222 |
setInterval(updateLiveClock, 1000);
|
| 223 |
+
|
| 224 |
+
// Save notes to localStorage
|
| 225 |
const noteInput = document.getElementById('time-note');
|
| 226 |
noteInput.addEventListener('change', () => {
|
| 227 |
const note = noteInput.value.trim();
|
|
|
|
| 242 |
document.getElementById('note-text').textContent = savedNote;
|
| 243 |
widget.classList.add('has-note');
|
| 244 |
}
|
| 245 |
+
|
| 246 |
// Initialize with stopped state
|
| 247 |
resetTimer();
|
| 248 |
+
|
| 249 |
// Make sure widget stays visible when minimized
|
| 250 |
widget.style.minWidth = '150px';
|
| 251 |
widget.style.minHeight = '70px';
|