-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
90 lines (70 loc) · 2.25 KB
/
app.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
function main() {
var locks = document.createElement("ul")
document.body.appendChild(locks)
locks.classList.add("locks")
function update(e) {
var data = JSON.parse(e.data)
while (locks.firstChild)
locks.removeChild(locks.firstChild)
data.forEach(function (d) {
var lock = document.createElement("li")
var buttons = document.createElement("div")
var buttonLock = document.createElement("button")
var buttonUnlock = document.createElement("button")
buttons.classList.add("buttons")
var h = document.createElement("h1")
h.textContent = d.name
lock.appendChild(h)
var span = document.createElement("span")
span.textContent = d.locked ? "Verschlossen" : "Offen"
lock.appendChild(span)
if (d.uncertain) {
var unc = document.createElement("span")
unc.classList.add("warning")
unc.textContent = "(ungewiss)"
lock.appendChild(unc)
}
if (d.error != 0) {
var err = document.createElement("span")
err.classList.add("error")
err.textContent = "Fehler: " + d.error
lock.appendChild(err)
}
if (d.battery_low) {
var bat = document.createElement("span")
bat.classList.add("error")
bat.textContent = "Batterie leer!"
lock.appendChild(bat)
}
buttonLock.onclick = function () {
var url = '/api/lock/' + d.id
var req = new XMLHttpRequest()
req.open('PUT', url)
req.send('lock')
}
buttonUnlock.onclick = function () {
var url = '/api/lock/' + d.id
var req = new XMLHttpRequest()
req.open('PUT', url)
req.send('unlock')
}
buttons.appendChild(buttonLock)
buttons.appendChild(buttonUnlock)
lock.appendChild(buttons)
locks.appendChild(lock)
buttonLock.textContent = "🔒 zu"
buttonUnlock.textContent = "🔓 auf"
})
}
var door = document.createElement("button")
door.textContent = "Türöffner betätigen"
door.onclick = function () {
var req = new XMLHttpRequest()
req.open('PUT', '/api/door')
req.send()
}
document.body.appendChild(door)
var stream = new EventSource('/api/locks/stream')
stream.onmessage = update
}
main()