# 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