2026-03-06 21:20:48 +01:00
|
|
|
from nicegui import ui, app
|
|
|
|
|
from data import database, data_api
|
|
|
|
|
from gui import gui_style
|
2026-03-10 15:34:25 +01:00
|
|
|
from wood import logger
|
2026-03-06 21:20:48 +01:00
|
|
|
|
|
|
|
|
def setup_routes():
|
2026-03-08 16:23:39 +01:00
|
|
|
@ui.page('/admin', dark=True)
|
2026-03-10 15:34:25 +01:00
|
|
|
def admin_page():
|
2026-03-08 16:23:39 +01:00
|
|
|
gui_style.apply_design()
|
2026-03-10 15:34:25 +01:00
|
|
|
|
|
|
|
|
with ui.header().classes('items-center justify-between bg-zinc-900 p-4 shadow-lg'):
|
|
|
|
|
ui.button("Zurück", on_click= lambda: ui.navigate.to("/") )
|
|
|
|
|
|
|
|
|
|
if app.storage.user.get('authenticated', False):
|
|
|
|
|
with ui.card().classes("w-full"):
|
|
|
|
|
with ui.row().classes("w-full"):
|
|
|
|
|
ui.button("test")
|
|
|
|
|
ui.button(icon="refresh", on_click=lambda: ui.navigate.reload)
|
|
|
|
|
|
|
|
|
|
ui.label("System Audit Log").classes('text-2xl font-bold text-white mb-4')
|
|
|
|
|
|
|
|
|
|
# Daten abrufen
|
|
|
|
|
log_data = logger.get_full_log()
|
|
|
|
|
|
|
|
|
|
# Tabelle aufbauen
|
|
|
|
|
columns = [
|
|
|
|
|
{'name': 'time', 'label': 'Zeitstempel', 'field': 'timestamp', 'align': 'left', 'sortable': True},
|
|
|
|
|
{'name': 'user', 'label': 'Auslöser', 'field': 'player_name', 'align': 'left'},
|
|
|
|
|
{'name': 'action', 'label': 'Aktion', 'field': 'action', 'align': 'left', 'sortable': True},
|
|
|
|
|
{'name': 'details', 'label': 'Details', 'field': 'details', 'align': 'left'}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
if len(log_data) > 0:
|
|
|
|
|
# Wir schneiden bei den Millisekunden vom Zeitstempel wieder etwas ab [:19]
|
|
|
|
|
for row in log_data:
|
|
|
|
|
row['timestamp'] = str(row['timestamp'])[:19]
|
|
|
|
|
|
|
|
|
|
# Tabelle zeichnen
|
|
|
|
|
ui.table(columns=columns, rows=log_data, row_key='id').classes('w-full bg-zinc-900 text-gray-300')
|
|
|
|
|
else:
|
|
|
|
|
ui.label("Das Logbuch ist leer.").classes('text-gray-500 italic')
|