From 2f982dd29a0a7004421af5fc562730a8d675c1c8 Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Tue, 20 Dec 2022 17:25:59 +0100 Subject: [PATCH] Added changeable stops & improved web GUI --- server/api.py | 9 +++++++++ server/departures.py | 2 +- server/lora.py | 4 ++++ server/static/admin.css | 19 +++++++++++-------- server/static/admin.html | 22 ++++++++++++++++------ server/static/admin.js | 10 ++++++++-- server/static/index.html | 2 +- server/static/style.css | 4 ++-- 8 files changed, 52 insertions(+), 20 deletions(-) diff --git a/server/api.py b/server/api.py index ddc8b51..b27ae08 100644 --- a/server/api.py +++ b/server/api.py @@ -70,6 +70,15 @@ class API: d.clear() return {'success': True} + @route('/admin/devices/change_stop', method='POST') + def admin_devices_change_stop(): + if main.config["admin"]["secret"] != request.forms.get('secret'): + return {'error': "unauthorized"} + for i, d in enumerate(main.controller.devices): + if str(i) == request.forms.get('index'): + d.set_stop(request.forms.get('stop_id')) + return {'success': True} + @error(404) def error404(err): return '' diff --git a/server/departures.py b/server/departures.py index 9d46575..4e8a224 100644 --- a/server/departures.py +++ b/server/departures.py @@ -32,7 +32,7 @@ class Departure: remove = [] for did in Departure.storage: d = Departure.storage[did] - if d.get_departure() < -3.5: + if d.get_departure() < -1: Departure.id_pool[d.stop_id].remove(d.id) remove.append(did) for did in remove: diff --git a/server/lora.py b/server/lora.py index 21f87d4..7dd187d 100644 --- a/server/lora.py +++ b/server/lora.py @@ -54,6 +54,10 @@ class LoraDevice: self.port = 1 self.clear() + def set_stop(self, stop_id: str): + self.clear() + self.stop_id = stop_id + def get_updated_departures(self): self.send_time() for d in Departure.get(self.stop_id): diff --git a/server/static/admin.css b/server/static/admin.css index 9c34165..aaa2a97 100644 --- a/server/static/admin.css +++ b/server/static/admin.css @@ -1,12 +1,15 @@ -.devices {display: flex; flex-direction: column; gap: 10px;} -.devices > * {background-color: var(--alt-bg); border-radius: 8px; box-shadow: 0 2px 10px 0 #0005; border: 1px solid var(--border-color); overflow: hidden;} +.cards {display: flex; flex-direction: column; gap: 10px;} +.cards > * {background-color: var(--alt-bg); border-radius: 8px; box-shadow: 0 2px 10px 0 #0005; border: 1px solid var(--border-color); overflow: hidden;} -.devices .header {cursor: pointer; padding: 15px; display: grid; grid-template-columns: 1fr max-content; user-select: none;} -.devices .id {font-weight: 700;} -.devices .settings {padding: 15px; border-top: 1px solid var(--border-color2); background: var(--alt-bg2); display: none;} -.devices .settings.visible {display: block;} +.cards .header {padding: 15px; display: grid; grid-template-columns: 1fr max-content; user-select: none;} +.cards .first {font-weight: 700;} +.cards .settings {padding: 15px; border-top: 1px solid var(--border-color2); background: var(--alt-bg2); display: none;} +.cards .settings.visible {display: block;} -.devices .actions {display: flex; gap: 10px; flex-wrap: wrap; align-items: center;} -.devices .actions::before {content: "Rychlé akce:"; font-weight: 500; font-size: 90%; opacity: .5; text-transform: uppercase;} +.cards .actions {display: flex; gap: 10px; flex-wrap: wrap; align-items: center;} +.cards .actions::before {content: "Akce:"; font-weight: 500; font-size: 90%; opacity: .5; text-transform: uppercase;} +@media screen and (max-width: 500px) { + .cards .actions::before {display: none;} +} .login form input {margin-bottom: 15px; display: block;} \ No newline at end of file diff --git a/server/static/admin.html b/server/static/admin.html index a93de46..cb5b51b 100644 --- a/server/static/admin.html +++ b/server/static/admin.html @@ -11,20 +11,30 @@

Zařízení

-
+
-
-
{{ d.id }}
-
{{ stops[d.stop_id] ? stops[d.stop_id].name : "Nenastaveno" }}
+
+
{{ d.id }}
+
{{ stops[d.stop_id] ? stops[d.stop_id].name : "Nenastaveno" }}
- - + + +
+

Zastávky

+
+
+
+
{{ s.name }}
+
{{ id }}
+
+
+
-
+
diff --git a/server/static/style.css b/server/static/style.css index 34e3095..872e81e 100644 --- a/server/static/style.css +++ b/server/static/style.css @@ -3,7 +3,7 @@ --alt-bg: #303030; --alt-bg2: #242424; --button-bg: #454545; - --button-hover-bg: #3E3E3E; + --button-hover-bg: #505050; --border-color: #3E3E3E; --border-color2: #1f1f1f; } @@ -29,7 +29,7 @@ body {background-color: var(--site-bg); color: #fffd; margin: 0; margin-top: 35p .icon {fill: #fff; width: 24px; height: 24px;} .icon.icon-dropdown {fill: #fff5;} -.filter-toggle {cursor: pointer;} +.clickable {cursor: pointer;} .nav {position: fixed; top: 0; left: 0; width: 100%; z-index: 10;} .nav .inner {background: linear-gradient(to bottom, var(--site-bg) 70%, transparent 100%); padding: 20px 25px; margin: auto; max-width: 700px; padding-bottom: 30px; transition: padding .1s; display: grid; grid-template-columns: 1fr max-content; gap: 15px; align-items: center;}