diff --git a/web/app.py b/web/app.py index 067822c..6320d4e 100644 --- a/web/app.py +++ b/web/app.py @@ -58,6 +58,8 @@ def index(request: Request, _: None = Depends(require_auth)): @app.post("/preview") async def preview_pdf( file: UploadFile = File(...), + exclude_rest: bool = Form(False), + exclude_vacation: bool = Form(False), _: None = Depends(require_auth), ): filename = file.filename or "dienstplan.pdf" @@ -86,8 +88,18 @@ async def preview_pdf( status_code=422, ) + rest_types = ['R56', 'R36', 'vRWF48', 'RWE', 'vR48'] events_preview = [] for event in dienstplan["events"]: + service_type = event["service"] + normalized_service_type = service_type.lstrip('0') or '0' + + # Wende Filter an + if exclude_rest and (service_type in rest_types or normalized_service_type == "Ruhe"): + continue + if exclude_vacation and normalized_service_type == "60": + continue + events_preview.append({ "date": event["date"].strftime("%d.%m.%Y") if event["date"] else "", "service": event["service"] or "—", @@ -101,7 +113,7 @@ async def preview_pdf( "name": f"{dienstplan.get('vorname', '')} {dienstplan.get('name', '')}".strip(), "personalnummer": dienstplan.get("personalnummer", "—"), "betriebshof": dienstplan.get("betriebshof", "—"), - "count": len(dienstplan["events"]), + "count": len(events_preview), }, "events": events_preview, }) diff --git a/web/templates/index.html b/web/templates/index.html index e8f8ff0..5c56b17 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -250,6 +250,8 @@ try { const formData = new FormData(); formData.append("file", currentFile); + formData.append("exclude_rest", document.getElementById("exclude_rest").checked); + formData.append("exclude_vacation", document.getElementById("exclude_vacation").checked); const response = await fetch("/preview", { method: "POST", @@ -350,6 +352,13 @@ hide("step2"); show("step-init"); hide("error"); + + // Stelle sicher, dass der Button aktiv ist + const btn = document.querySelector("#step-init button"); + if (btn) { + btn.disabled = false; + btn.textContent = "Vorschau laden"; + } } function showError(message) {