Update event management system by adding Uhrzeit to Termine; enhance data handling in API and CSV exports to accommodate new fields. Refactor Termine component for improved date and time formatting, ensuring accurate display of events. Clean up unused code in MannschaftenUebersicht and streamline layout in Mannschaften index page for better user experience.

This commit is contained in:
Torsten Schulz (local)
2025-11-05 13:22:57 +01:00
parent d6d9a31669
commit bc2f59bd1a
35 changed files with 653 additions and 929 deletions

View File

@@ -27,7 +27,7 @@
<div>
<h3 class="text-xl font-semibold text-gray-900 mb-1">{{ termin.titel }}</h3>
<p class="text-gray-600 mb-2">{{ termin.beschreibung }}</p>
<p class="text-sm text-gray-500">{{ formatFullDate(termin.datum) }}</p>
<p class="text-sm text-gray-500">{{ formatFullDateTime(termin.datum, termin.uhrzeit) }}</p>
</div>
<span :class="[
'px-3 py-1 text-sm font-medium rounded-full',
@@ -74,10 +74,20 @@ const naechsteTermine = computed(() => {
return termine.value
.filter(t => {
const terminDatum = new Date(t.datum)
// Datum + optionale Uhrzeit berücksichtigen
let terminDatum
if (t.uhrzeit && /^\d{2}:\d{2}$/.test(t.uhrzeit)) {
terminDatum = new Date(`${t.datum}T${t.uhrzeit}:00`)
} else {
terminDatum = new Date(t.datum)
}
return terminDatum >= heute
})
.sort((a, b) => new Date(a.datum) - new Date(b.datum))
.sort((a, b) => {
const da = new Date(`${a.datum}${a.uhrzeit ? 'T' + a.uhrzeit + ':00' : ''}`)
const db = new Date(`${b.datum}${b.uhrzeit ? 'T' + b.uhrzeit + ':00' : ''}`)
return da - db
})
})
const formatDay = (dateString) => {
@@ -95,10 +105,15 @@ const formatFullDate = (dateString) => {
const date = new Date(dateString)
const wochentage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
const monate = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
return `${wochentage[date.getDay()]}, ${date.getDate()}. ${monate[date.getMonth()]} ${date.getFullYear()}`
}
const formatFullDateTime = (datum, uhrzeit) => {
const base = formatFullDate(datum)
const time = uhrzeit && /^\d{2}:\d{2}$/.test(uhrzeit) ? `${uhrzeit} Uhr` : ''
return time ? `${base} ${time}` : base
}
const loadTermine = async () => {
try {
const response = await $fetch('/api/termine')