Füge Funktion zur Umwandlung von Saison-Slugs in Labels hinzu und aktualisiere PDF-Daten mit saisonalen Informationen
All checks were successful
Code Analysis and Production Deploy / analyze (push) Successful in 7m51s
Code Analysis and Production Deploy / deploy-production (push) Has been skipped
Code Analysis and Production Deploy / deploy-test (push) Successful in 1m56s

This commit is contained in:
Torsten Schulz (local)
2026-07-15 11:27:34 +02:00
parent cb1e7a2fed
commit d9c5d242ec

View File

@@ -3,6 +3,12 @@ import path from 'path'
import { readSpielplanData, validateSeasonSlug } from '../../utils/spielplan-data.js' import { readSpielplanData, validateSeasonSlug } from '../../utils/spielplan-data.js'
import { info as loggerInfo, error as loggerError } from '../../utils/logger.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) => { export default defineEventHandler(async (event) => {
try { try {
const query = getQuery(event) const query = getQuery(event)
@@ -121,19 +127,19 @@ export default defineEventHandler(async (event) => {
} }
// Filtere nach Wettbewerb (Standard: Punktrunde) // 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') { if (wettbewerb !== 'alle') {
filteredData = filteredData.filter(row => { filteredData = filteredData.filter(row => {
const runde = (row.Runde || '').toLowerCase() 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') { if (wettbewerb === 'punktrunde') {
return runde === 'vr' || return !isPokal
runde.includes('vorrunde') ||
runde === 'rr' ||
runde.includes('rückrunde') ||
runde.includes('verbandsrunde')
} else if (wettbewerb === 'pokal') { } else if (wettbewerb === 'pokal') {
return runde === 'pokal' || runde.includes('pokal') return isPokal
} }
return true return true
@@ -182,6 +188,15 @@ export default defineEventHandler(async (event) => {
// Generiere LaTeX-Code für PDF // Generiere LaTeX-Code für PDF
const teamName = team.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()) const teamName = team.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase())
const currentDate = new Date().toLocaleDateString('de-DE') 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 = ` let latexContent = `
\\documentclass[9pt,a4paper]{article} \\documentclass[9pt,a4paper]{article}
@@ -197,13 +212,13 @@ export default defineEventHandler(async (event) => {
\\title{Spielplan ${teamName}} \\title{Spielplan ${teamName}}
\\author{Harheimer TC} \\author{Harheimer TC}
\\date{Saison 2025/26 - Stand: ${currentDate}} \\date{Saison ${seasonLabel} - Stand: ${currentDate}}
% PDF-Metadaten für Sicherheit % PDF-Metadaten für Sicherheit
\\usepackage[pdftex]{hyperref} \\usepackage[pdftex]{hyperref}
\\hypersetup{ \\hypersetup{
pdfauthor={Harheimer TC}, pdfauthor={Harheimer TC},
pdftitle={Spielplan ${teamName} - Saison 2025/26}, pdftitle={Spielplan ${teamName} - Saison ${seasonLabel}},
pdfsubject={Vereinsspielplan}, pdfsubject={Vereinsspielplan},
pdfkeywords={Tischtennis, Spielplan, Harheimer TC, ${teamName}}, pdfkeywords={Tischtennis, Spielplan, Harheimer TC, ${teamName}},
pdfcreator={Harheimer TC CMS}, pdfcreator={Harheimer TC CMS},