blob: d6510ae8f90df5437ab34f39be0b980cea9cd60b (
plain)
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
|
function init() {
initTimeVisualizer('timeVisualizer');
}
export function updateTime() {
fetch("/time")
.then(res => res.json())
.then(data => {
document.getElementById("weatherSummary").innerText = data.time;
});
}
function initTimeVisualizer(containerId) {
const grid = document.createElement('div');
grid.className = 'grid';
document.getElementById(containerId).appendChild(grid);
function updateTime() {
grid.innerHTML = '';
const now = new Date();
const hours = now.getHours();
const minutes = now.getMinutes();
for (let i = 0; i < 24; i++) {
const cell = document.createElement('div');
cell.className = 'cell';
if (i >= 20 || i < 4) cell.classList.add('sleep');
if (i < hours) cell.classList.add('past');
if (i === hours) {
cell.classList.add('current');
const fillPercentage = (minutes / 60) * 100;
cell.style.setProperty('--fill', `${fillPercentage}%`);
const line = document.createElement('div');
line.className = 'timeline';
line.style.left = `calc(${fillPercentage}% - 1px)`;
cell.appendChild(line);
}
grid.appendChild(cell);
}
}
updateTime();
setInterval(updateTime, 60000); // 1min
}
init()
|