blob: d33d603a253c73e35c849d0f3e7a26c082679f01 (
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
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
|
class Clock {
update(now) {
}
}
class Timebar extends Clock {
constructor(start_time, end_time) {
super();
this.start_time = start_time;
this.end_time = end_time;
this.bar_object = false
}
update(now) {
// if (! (this.start_time <= now.getTime() && now.getTime() < this.end_time))
// return;
var event_area = document.getElementById(now.format("~Y-~m-~d"))
if (event_area) {
if (this.bar_object) {
this.bar_object.parentNode.removeChild(this.bar_object)
} else {
this.bar_object = makeElement ('div', {
id: 'bar',
className: 'eventlike current-time',
});
}
this.bar_object.style.top = date_to_percent(now) + "%";
event_area.append(this.bar_object)
}
}
}
class SmallcalCellHighlight extends Clock {
constructor(small_cal) {
super();
this.small_cal = small_cal;
this.current_cell = false
}
update(now) {
if (this.current_cell) {
this.current_cell.style.border = "";
}
/* This is expeced to fail if the current date is not
currently on screen. */
this.current_cell = this.small_cal.querySelector(
"time[datetime='" + now.format("~Y-~m-~d") + "']");
if (this.current_cell) {
this.current_cell.style.border = "1px solid black";
}
}
}
/* -------------------------------------------------- */
class ClockElement extends HTMLElement {
constructor () {
super();
}
connectedCallback () {
let interval = this.hasAttribute('interval') ? +this.getAttribute('img') : 60;
interval *= 1000 /* ms */
this.timer_id = window.setInterval(() => this.update(new Date), interval)
this.update(new Date)
}
static get observedAttributes () {
return ['timer_id']
}
update (now) { /* noop */ }
}
class TodayButton extends ClockElement {
update (now) {
this.querySelector('a').href = now.format("~Y-~m-~d.html")
}
}
customElements.define('today-button', TodayButton)
class CurrentTime extends ClockElement {
update (now) {
this.innerHTML = now.format('~H:~M:~S')
}
}
customElements.define('current-time', CurrentTime)
|