-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
108 lines (90 loc) · 3.34 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
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
let timer;
let isRunning = false;
let milliseconds = 0;
let millisecondsSteps = 40;
function startStop() {
if (isRunning) {
clearInterval(timer);
timer = null;
} else {
timer = setInterval(updateDisplay, millisecondsSteps); // Use millisecondsSteps
}
isRunning = !isRunning; // Toggle the state properly
}
// Update milliseconds when dropdown changes
document.getElementById('msDropdown').addEventListener('change', function () {
millisecondsSteps = parseInt(this.value);
if (isRunning) {
clearInterval(timer);
timer = setInterval(updateDisplay, millisecondsSteps); // Restart with new interval
}
});
function reset() {
clearInterval(timer);
isRunning = false;
milliseconds = 0;
updateDisplay();
}
function updateDisplay() {
const display = document.getElementById('display');
const formattedTime = formatTime(milliseconds);
display.innerText = formattedTime;
milliseconds += 40; // Increment by 40 milliseconds, wrapping around 0-39
}
function formatTime(ms) {
const date = new Date(ms);
const hours = date.getUTCHours().toString().padStart(2, '0');
const minutes = date.getUTCMinutes().toString().padStart(2, '0');
const seconds = date.getUTCSeconds().toString().padStart(2, '0');
const formattedMilliseconds = Math.floor((ms % 1000) / (1000 / millisecondsSteps)).toString().padStart(2, '0'); // Display only two digits up to milliseconds steps
return `${hours}:${minutes}:${seconds}.${formattedMilliseconds}`;
}
//settings popup
document.addEventListener("DOMContentLoaded", () => {
const settingsButton = document.getElementById("settingsButton");
const settingsModal = document.getElementById("settingsModal");
const fontToggle = document.getElementById("fontToggle");
const msDropdown = document.getElementById("msDropdown");
const clockDisplay = document.getElementById("display");
// Load settings from localStorage
fontToggle.checked = localStorage.getItem("useSegoeUI") === "true";
msDropdown.value = localStorage.getItem("msPerSecond") || "40";
// Apply settings
if (fontToggle.checked) {
clockDisplay.style.fontFamily = "'Segoe UI', sans-serif";
}
// Open settings modal
settingsButton.addEventListener("click", () => {
settingsModal.style.display = "block";
});
// Close modal when tapping outside it (for mobile usability)
window.onclick = (event) => {
if (event.target === settingsModal) {
closeSettings();
}
};
// Save settings
window.saveSettings = () => {
localStorage.setItem("useSegoeUI", fontToggle.checked);
localStorage.setItem("msPerSecond", msDropdown.value);
if (fontToggle.checked) {
clockDisplay.style.fontFamily = "'Segoe UI', sans-serif";
} else {
clockDisplay.style.fontFamily = ""; // Reset to default
}
alert("Settings saved!");
};
// Close modal
window.closeSettings = () => {
settingsModal.style.display = "none";
};
});
function applyClockFont() {
const clockDisplay = document.getElementById("display");
const useSegoe = localStorage.getItem("useSegoeUI") === "true";
if (useSegoe) {
clockDisplay.style.fontFamily = "'Segoe UI Custom', sans-serif";
} else {
clockDisplay.style.fontFamily = "'FancyCat', sans-serif";
}
}