diff --git a/src/lib/storyblok.ts b/src/lib/storyblok.ts index ced270d..04b4f46 100644 --- a/src/lib/storyblok.ts +++ b/src/lib/storyblok.ts @@ -17,6 +17,7 @@ export interface Spectacle { affiche: string; gallery: string[]; dossierPro: string; + dateCreation: string; _blok: SbBlokData; } @@ -54,6 +55,7 @@ export function mapStoryToSpectacle(story: any): Spectacle { affiche: c.affiche?.filename || '', gallery: (c.galerie || []).map((a: any) => a.filename), dossierPro: c.dossier?.filename || '', + dateCreation: c.date_creation || '', _blok: c, }; } diff --git a/src/pages/spectacles/index.astro b/src/pages/spectacles/index.astro index 5134428..ec4c471 100644 --- a/src/pages/spectacles/index.astro +++ b/src/pages/spectacles/index.astro @@ -5,9 +5,17 @@ import { storyblokEditable } from '@storyblok/astro'; import { fetchSpectacles } from '../../lib/storyblok'; const spectacles = await fetchSpectacles(); -const jeunePublic = spectacles.filter(s => s.category === 'jeune-public' && !s.retired); -const toutPublic = spectacles.filter(s => s.category === 'tout-public' && !s.retired); -const retraites = spectacles.filter(s => s.retired); + +const byDateDesc = (a: typeof spectacles[number], b: typeof spectacles[number]) => { + if (!a.dateCreation && !b.dateCreation) return 0; + if (!a.dateCreation) return 1; + if (!b.dateCreation) return -1; + return new Date(b.dateCreation).getTime() - new Date(a.dateCreation).getTime(); +}; + +const jeunePublic = spectacles.filter(s => s.category === 'jeune-public' && !s.retired).sort(byDateDesc); +const toutPublic = spectacles.filter(s => s.category === 'tout-public' && !s.retired).sort(byDateDesc); +const retraites = spectacles.filter(s => s.retired).sort(byDateDesc); ---