Merge pull request 'Füge Funktion zur Umwandlung von Saison-Slugs in Labels hinzu und aktualisiere PDF-Daten mit saisonalen Informationen' (#45) from dev into main
All checks were successful
Code Analysis and Production Deploy / analyze (push) Has been skipped
Code Analysis and Production Deploy / deploy-production (push) Successful in 1m59s
Code Analysis and Production Deploy / deploy-test (push) Has been skipped

Reviewed-on: #45
This commit was merged in pull request #45.
This commit is contained in:
2026-07-15 11:38:20 +02:00

View File

@@ -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},