From 07b1d349d5a1f3cc69135cfe11e1fa46b048cd7b Mon Sep 17 00:00:00 2001 From: lonkaars Date: Tue, 2 Apr 2024 14:50:15 +0200 Subject: add more websocket communication specs --- ui/css/style.css | 4 +++ ui/index.html | 88 +++++++++++++----------------------------------- ui/js/api.js | 55 +++++++++++++++++++++++++++--- ui/websocket_output.json | 16 +++++++++ 4 files changed, 94 insertions(+), 69 deletions(-) create mode 100644 ui/websocket_output.json (limited to 'ui') diff --git a/ui/css/style.css b/ui/css/style.css index 7b8f8d2..8b2201a 100644 --- a/ui/css/style.css +++ b/ui/css/style.css @@ -160,3 +160,7 @@ details[open] summary { border-bottom: 1px solid #0008; } +input[type="range"] { + width: 100%; +} + diff --git a/ui/index.html b/ui/index.html index 07c4141..61723a1 100644 --- a/ui/index.html +++ b/ui/index.html @@ -18,47 +18,33 @@
-
- Lights +
+ Verlichting
-
    -
  • -
  • -
  • -
-
Percentage: 0%
- + +
Felheid: 0%
-
- Traffic lights +
+ Stoplichten
- - -
Status:
- -
-
- -
- Barrier -
- - -
Status:
- + + +
Status:
diff --git a/ui/js/api.js b/ui/js/api.js index 5fca3cf..319d8c2 100644 --- a/ui/js/api.js +++ b/ui/js/api.js @@ -1,11 +1,57 @@ import ws from './socket.js'; -export default { +function send(obj) { + ws.send(JSON.stringify(obj)); +} + +function setPolkaDot(el, bool) { + el.classList.remove("on"); + el.classList.remove("off"); + el.classList.add(bool ? "on" : "off"); +} + +const api = { + update: { + barrier: open => setPolkaDot(document.getElementById("barrierValue"), open), + trafficLights: state => document.getElementById("trafficLightsValue").innerText = state, + lights: value => document.getElementById("lightsValue").innerText = value, + matrix: state => document.getElementById("matrixValue").value = state, + photocell: on => setPolkaDot(document.getElementById("photocellValue"), on), + cctv: on => setPolkaDot(document.getElementById("cctvValue"), on), + }, msg: { send: { - helloWorld: () => { - ws.send(JSON.stringify({res: 'OK'})); - } + helloWorld: () => send({ type: 'helloWorld' }), + barrier: el => { + var open = el.value == "true"; // string to boolean + send({ type: 'barrier', open }); + api.update.barrier(open); + }, + trafficLights: el => { + var state = el.value; + send({ type: 'trafficLights', state }); + api.update.trafficLights(el.innerText); + }, + lights: el => { + var value = Number(el.value); + send({ type: 'lights', value }); + api.update.lights(value); + }, + matrix: el => { + var state = el.value; + send({ type: 'matrix', state }); + api.update.matrix(value); + }, + photocell: el => { + var on = el.value == "true"; + send({ type: 'photocell', on }); + api.update.photocell(on); + }, + cctv: el => { + var on = el.value == "true"; + send({ type: 'barrier', on }); + api.update.cctv(on); + }, }, handle: { helloWorld: msg => { @@ -15,3 +61,4 @@ export default { }, }; +export default api; diff --git a/ui/websocket_output.json b/ui/websocket_output.json new file mode 100644 index 0000000..6b6deef --- /dev/null +++ b/ui/websocket_output.json @@ -0,0 +1,16 @@ +{ "type": "photocell", "on": true } +{ "type": "photocell", "on": false } +{ "type": "barrier", "on": false } +{ "type": "barrier", "on": true } +{ "type": "barrier", "open": true } +{ "type": "barrier", "open": false } +{ "type": "matrix", "state": "construction" } +{ "type": "matrix", "state": "road_closed" } +{ "type": "matrix", "state": "disabled" } +{ "type": "lights", "value": 0 } +{ "type": "lights", "value": 12 } +{ "type": "lights", "value": 100 } +{ "type": "trafficLights", "state": "off" } +{ "type": "trafficLights", "state": "red" } +{ "type": "helloWorld" } +{ "type": "helloWorld" } -- cgit v1.2.3