From d9c5d242ec8bddc67fa2a9b4774ce1e9741dae01 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 15 Jul 2026 11:27:34 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=BCge=20Funktion=20zur=20Umwandlung=20von?= =?UTF-8?q?=20Saison-Slugs=20in=20Labels=20hinzu=20und=20aktualisiere=20PD?= =?UTF-8?q?F-Daten=20mit=20saisonalen=20Informationen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/spielplan/pdf.get.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/server/api/spielplan/pdf.get.js b/server/api/spielplan/pdf.get.js index e8ae77a..6083a21 100755 --- a/server/api/spielplan/pdf.get.js +++ b/server/api/spielplan/pdf.get.js @@ -3,6 +3,12 @@ import path from 'path' import { readSpielplanData, validateSeasonSlug } from '../../utils/spielplan-data.js' import { info as loggerInfo, error as loggerError } from '../../utils/logger.js' +function seasonSlugToLabel(slug) { + const match = String(slug || '').match(/^(\d{2})--(\d{2})$/) + if (!match) return '' + return `20${match[1]}/${match[2]}` +} + export default defineEventHandler(async (event) => { try { const query = getQuery(event) @@ -121,19 +127,19 @@ export default defineEventHandler(async (event) => { } // Filtere nach Wettbewerb (Standard: Punktrunde) - const wettbewerb = query.wettbewerb || 'punktrunde' + // Muss zur Frontend-Logik passen: Punktrunde = alles, was kein Pokal ist. + const wettbewerb = String(query.wettbewerb || 'punktrunde').toLowerCase().trim() if (wettbewerb !== 'alle') { filteredData = filteredData.filter(row => { const runde = (row.Runde || '').toLowerCase() + const staffel = (row.Staffel || '').toLowerCase() + const liga = (row.Liga || '').toLowerCase() + const isPokal = runde.includes('pokal') || staffel.includes('pokal') || liga.includes('pokal') if (wettbewerb === 'punktrunde') { - return runde === 'vr' || - runde.includes('vorrunde') || - runde === 'rr' || - runde.includes('rückrunde') || - runde.includes('verbandsrunde') + return !isPokal } else if (wettbewerb === 'pokal') { - return runde === 'pokal' || runde.includes('pokal') + return isPokal } return true @@ -182,6 +188,15 @@ export default defineEventHandler(async (event) => { // Generiere LaTeX-Code für PDF const teamName = team.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()) const currentDate = new Date().toLocaleDateString('de-DE') + const seasonLabel = seasonSlugToLabel(spielplan.season) || 'Unbekannt' + + loggerInfo('Spielplan-PDF Filterergebnis', { + team, + wettbewerb, + season: spielplan.season, + totalRows: dataRows.length, + filteredRows: filteredData.length + }) let latexContent = ` \\documentclass[9pt,a4paper]{article} @@ -197,13 +212,13 @@ export default defineEventHandler(async (event) => { \\title{Spielplan ${teamName}} \\author{Harheimer TC} -\\date{Saison 2025/26 - Stand: ${currentDate}} +\\date{Saison ${seasonLabel} - Stand: ${currentDate}} % PDF-Metadaten für Sicherheit \\usepackage[pdftex]{hyperref} \\hypersetup{ pdfauthor={Harheimer TC}, - pdftitle={Spielplan ${teamName} - Saison 2025/26}, + pdftitle={Spielplan ${teamName} - Saison ${seasonLabel}}, pdfsubject={Vereinsspielplan}, pdfkeywords={Tischtennis, Spielplan, Harheimer TC, ${teamName}}, pdfcreator={Harheimer TC CMS},