Files
infoscreen/dashboard/callbacks/appointments_callbacks.py
2025-06-16 20:31:49 +00:00

88 lines
2.4 KiB
Python

# dashboard/callbacks/appointments_callbacks.py
import requests
import json
from flask import session
from dash import Input, Output, State, callback, ctx, dash
import os
import sys
sys.path.append('/workspace')
print("appointments_callbacks.py geladen")
API_BASE_URL = os.getenv("API_BASE_URL", "http://192.168.43.100")
@callback(
dash.Output('output', 'children'),
dash.Input('calendar', 'lastDateClick')
)
def display_date(date_str):
if date_str:
return f"Letzter Klick auf: {date_str}"
return "Klicke auf ein Datum im Kalender!"
@callback(
dash.Output('event-output', 'children'),
dash.Input('calendar', 'lastEventClick')
)
def display_event(event_id):
if event_id:
return f"Letztes Event geklickt: {event_id}"
return "Klicke auf ein Event im Kalender!"
@callback(
dash.Output('select-output', 'children'),
dash.Input('calendar', 'lastSelect')
)
def display_select(select_info):
if select_info:
return f"Markiert: {select_info['start']} bis {select_info['end']} (ganztägig: {select_info['allDay']})"
return "Markiere einen Bereich im Kalender!"
@callback(
dash.Output('calendar', 'events'),
dash.Input('calendar', 'lastNavClick'),
)
def load_events(view_dates):
"""
Lädt Events aus der API für den angezeigten Zeitraum im Kalender.
"""
print("Lade Events für Zeitraum:", view_dates)
if not view_dates or "start" not in view_dates or "end" not in view_dates:
return []
start = view_dates["start"]
end = view_dates["end"]
try:
resp = requests.get(f"{API_BASE_URL}/api/events",
params={"start": start, "end": end})
resp.raise_for_status()
events = resp.json()
return events
except Exception as e:
print("Fehler beim Laden der Events:", e)
return []
# --- Modalbox öffnen ---
@callback(
Output("appointment-modal", "opened"),
[
Input("open-appointment-modal-btn", "n_clicks"),
Input("close-appointment-modal-btn", "n_clicks")
],
State("appointment-modal", "opened"),
prevent_initial_call=True
)
def toggle_appointment_modal(open_click, close_click, is_open):
from dash import ctx
trigger = ctx.triggered_id
if trigger == "open-appointment-modal-btn" and open_click:
return True
if trigger == "close-appointment-modal-btn" and close_click:
return False
return is_open