2025-02-22 09:53:26 +01:00
|
|
|
# Copyright (c) 2025, Julian Müller (ChaoticByte)
|
|
|
|
|
|
|
|
|
|
|
|
from nicegui import ui
|
|
|
|
|
2025-02-23 20:57:42 +01:00
|
|
|
from dashboard.system import HTTPServer, System, SystemState
|
2025-02-22 09:53:26 +01:00
|
|
|
from dashboard.ui import init_ui
|
|
|
|
|
|
|
|
|
|
|
|
# define systems
|
|
|
|
|
|
|
|
|
|
|
|
class ExampleSystem(System):
|
|
|
|
|
|
|
|
pressed = False
|
|
|
|
|
|
|
|
def __init__(self, *args):
|
|
|
|
super().__init__(*args)
|
|
|
|
self.started = False
|
|
|
|
|
|
|
|
def update_state(self):
|
|
|
|
if self.started:
|
|
|
|
self.state = SystemState.OK
|
|
|
|
self.state_verbose = f"{self.name} is currently started."
|
|
|
|
else:
|
|
|
|
self.state = SystemState.FAILED
|
|
|
|
self.state_verbose = f"{self.name} is currently stopped."
|
|
|
|
|
|
|
|
def get_actions(self) -> dict:
|
|
|
|
if self.started:
|
|
|
|
return {"Stop": self.stop}
|
|
|
|
else:
|
|
|
|
return {"Start": self.start}
|
|
|
|
|
|
|
|
def start(self):
|
|
|
|
self.state = SystemState.UNKNOWN
|
|
|
|
self.state_verbose = f"{self.name} is currently starting."
|
|
|
|
self.started = True
|
|
|
|
ui.notify("Starting " + self.name)
|
|
|
|
|
|
|
|
def stop(self):
|
|
|
|
self.state = SystemState.UNKNOWN
|
|
|
|
self.state_verbose = f"{self.name} is currently stopping."
|
|
|
|
self.started = False
|
|
|
|
ui.notify("Stopping " + self.name)
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
systems = [
|
2025-02-23 16:55:59 +01:00
|
|
|
"Example Heading 1",
|
2025-02-22 09:53:26 +01:00
|
|
|
ExampleSystem("Example System 1", "Description text ..."),
|
2025-02-23 16:55:59 +01:00
|
|
|
"Example Heading 2",
|
2025-02-23 20:57:42 +01:00
|
|
|
HTTPServer("example.org", "The example.org HTTP server.", "https://example.org/")
|
2025-02-22 09:53:26 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
init_ui(systems)
|
2025-02-23 16:37:18 +01:00
|
|
|
ui.run(show=False, title="Dashboard")
|