Fix preview filters and button reset on reload
This commit is contained in:
14
web/app.py
14
web/app.py
@@ -58,6 +58,8 @@ def index(request: Request, _: None = Depends(require_auth)):
|
|||||||
@app.post("/preview")
|
@app.post("/preview")
|
||||||
async def preview_pdf(
|
async def preview_pdf(
|
||||||
file: UploadFile = File(...),
|
file: UploadFile = File(...),
|
||||||
|
exclude_rest: bool = Form(False),
|
||||||
|
exclude_vacation: bool = Form(False),
|
||||||
_: None = Depends(require_auth),
|
_: None = Depends(require_auth),
|
||||||
):
|
):
|
||||||
filename = file.filename or "dienstplan.pdf"
|
filename = file.filename or "dienstplan.pdf"
|
||||||
@@ -86,8 +88,18 @@ async def preview_pdf(
|
|||||||
status_code=422,
|
status_code=422,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
rest_types = ['R56', 'R36', 'vRWF48', 'RWE', 'vR48']
|
||||||
events_preview = []
|
events_preview = []
|
||||||
for event in dienstplan["events"]:
|
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({
|
events_preview.append({
|
||||||
"date": event["date"].strftime("%d.%m.%Y") if event["date"] else "",
|
"date": event["date"].strftime("%d.%m.%Y") if event["date"] else "",
|
||||||
"service": event["service"] or "—",
|
"service": event["service"] or "—",
|
||||||
@@ -101,7 +113,7 @@ async def preview_pdf(
|
|||||||
"name": f"{dienstplan.get('vorname', '')} {dienstplan.get('name', '')}".strip(),
|
"name": f"{dienstplan.get('vorname', '')} {dienstplan.get('name', '')}".strip(),
|
||||||
"personalnummer": dienstplan.get("personalnummer", "—"),
|
"personalnummer": dienstplan.get("personalnummer", "—"),
|
||||||
"betriebshof": dienstplan.get("betriebshof", "—"),
|
"betriebshof": dienstplan.get("betriebshof", "—"),
|
||||||
"count": len(dienstplan["events"]),
|
"count": len(events_preview),
|
||||||
},
|
},
|
||||||
"events": events_preview,
|
"events": events_preview,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -250,6 +250,8 @@
|
|||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("file", currentFile);
|
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", {
|
const response = await fetch("/preview", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -350,6 +352,13 @@
|
|||||||
hide("step2");
|
hide("step2");
|
||||||
show("step-init");
|
show("step-init");
|
||||||
hide("error");
|
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) {
|
function showError(message) {
|
||||||
|
|||||||
Reference in New Issue
Block a user