diff --git a/components/MannschaftenUebersicht.vue b/components/MannschaftenUebersicht.vue index 23d8f55..2bcbf7c 100644 --- a/components/MannschaftenUebersicht.vue +++ b/components/MannschaftenUebersicht.vue @@ -102,7 +102,7 @@ diff --git a/pages/mannschaften/index.vue b/pages/mannschaften/index.vue index 676323c..027be06 100644 --- a/pages/mannschaften/index.vue +++ b/pages/mannschaften/index.vue @@ -6,8 +6,27 @@
-

- Unsere aktiven Mannschaften in der Saison {{ selectedSeasonLabel }} +

+ Unsere aktiven Mannschaften in der Saison + +

@@ -37,6 +56,7 @@ import { computed } from 'vue' import MannschaftenUebersicht from '~/components/MannschaftenUebersicht.vue' const route = useRoute() +const router = useRouter() const getCurrentSeasonSlug = () => { const now = new Date() @@ -46,18 +66,37 @@ const getCurrentSeasonSlug = () => { return `${String(startYear).slice(-2)}--${String(endYear).slice(-2)}` } -const selectedSeason = computed(() => { - const value = String(route.query.season || '').trim() - return /^\d{2}--\d{2}$/.test(value) ? value : getCurrentSeasonSlug() +const currentSeason = getCurrentSeasonSlug() +const { data: seasonsResult } = await useFetch('/api/mannschaften/seasons') + +const seasons = computed(() => { + const availableSeasons = Array.isArray(seasonsResult.value?.seasons) + ? seasonsResult.value.seasons + : [] + + return [...new Set([currentSeason, ...availableSeasons])] + .filter(season => /^\d{2}--\d{2}$/.test(season)) + .sort() + .reverse() }) -const selectedSeasonLabel = computed(() => { - const match = String(selectedSeason.value || '').match(/^(\d{2})--(\d{2})$/) - return match ? `20${match[1]}/${match[2]}` : selectedSeason.value +const selectedSeason = computed({ + get() { + const value = String(route.query.season || '').trim() + return seasons.value.includes(value) ? value : currentSeason + }, + set(value) { + const season = seasons.value.includes(value) ? value : currentSeason + router.replace({ query: { ...route.query, season } }) + } }) +const formatSeasonLabel = (season) => { + const match = String(season || '').match(/^(\d{2})--(\d{2})$/) + return match ? `20${match[1]}/${match[2]}` : season +} + useHead({ title: 'Mannschaften - Harheimer TC', }) -