aboutsummaryrefslogtreecommitdiffstats
path: root/static/block_time.js
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()