diff --git a/src/components/GrilleSpectaclesPassés.astro b/src/components/GrilleSpectaclesPassés.astro
new file mode 100644
index 0000000..2ea1586
--- /dev/null
+++ b/src/components/GrilleSpectaclesPassés.astro
@@ -0,0 +1,147 @@
+---
+const { evenements, limite = 6, afficherLienVoirTout = true } = Astro.props;
+const evenementsAffiches = evenements.slice(0, limite);
+---
+
+{evenementsAffiches.length > 0 && (
+
+)}
+
+
\ No newline at end of file
diff --git a/src/lib/contentful.ts b/src/lib/contentful.ts
index 70f5774..f61bdd0 100644
--- a/src/lib/contentful.ts
+++ b/src/lib/contentful.ts
@@ -18,6 +18,7 @@ export interface ContentFulEvenement {
lieuUrl: EntryFieldTypes.Text,
position: EntryFieldTypes.Location,
affiche: EntryFieldTypes.AssetLink,
+ album?: EntryFieldTypes.Text,
}
}
@@ -31,7 +32,8 @@ export const evenementFromContentfull = ({
affiche,
lieu,
lieuUrl,
- position
+ position,
+ album
}
}: Entry): Évènement => ({
nom: nom as string,
@@ -41,7 +43,8 @@ export const evenementFromContentfull = ({
affiche,
lieu: lieu as string | undefined,
lieuUrl: lieuUrl as string | undefined,
- position
+ position,
+ album: album as string | undefined
})
export const sortByDate = (evenements: Entry[]): Entry[] => {
@@ -55,7 +58,7 @@ export const sortByDate = (evenements: Entry[]): Entry= 0);
}
+function estPassé(évènement: Évènement): boolean {
+ return !estÀVenir(évènement);
+}
+
export const fetchEvenements = async () => {
const entries = await contentfulClient.getEntries({
content_type: "evenement",
@@ -78,6 +85,17 @@ export const fetchEvenements = async () => {
.filter(estÀVenir)
}
+export const fetchEvenementsPassés = async () => {
+ const entries = await contentfulClient.getEntries({
+ content_type: "evenement",
+ });
+
+ return sortByDate(entries.items)
+ .map(evenementFromContentfull)
+ .filter(estPassé)
+ .reverse() // Afficher les plus récents en premier
+}
+
export const fetchEvenement = async (slug: string) => {
const entries = await contentfulClient.getEntries({
content_type: "evenement",
diff --git a/src/pages/evenements.astro b/src/pages/evenements.astro
new file mode 100644
index 0000000..13693be
--- /dev/null
+++ b/src/pages/evenements.astro
@@ -0,0 +1,67 @@
+---
+import Layout from '../layouts/Layout.astro';
+import { fetchEvenementsPassés } from "../lib/contentful";
+import GrilleSpectaclesPassés from "../components/GrilleSpectaclesPassés.astro";
+
+export const prerender = false
+
+const evenementsPassés = await fetchEvenementsPassés()
+---
+
+
+
+
+
+
+
+ Nos spectacles passés
+
+
+ {evenementsPassés.length > 0 ? (
+
+
+ Découvrez les spectacles que nous avons eu le plaisir de jouer !
+
+
+
+ ) : (
+
+
+ Aucun spectacle passé pour le moment. Revenez bientôt !
+
+
+ )}
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/evenements/[slug].astro b/src/pages/evenements/[slug].astro
index d38b8cb..d471396 100644
--- a/src/pages/evenements/[slug].astro
+++ b/src/pages/evenements/[slug].astro
@@ -9,22 +9,39 @@ export const prerender = false
const {slug} = Astro.params
-const { nom, description, date, lieu, lieuUrl, affiche } = await fetchEvenement(slug)
+const { nom, description, date, lieu, lieuUrl, affiche, album } = await fetchEvenement(slug)
const Wrapper = lieuUrl ? 'a' : 'div'
+
---
{nom}
{affiche &&

}
-
-
- à {lieu}
-
- {
- description &&
- }
-
+
+
+
+ à {lieu}
+
+ {
+ description &&
+ }
+
+
+ {album && (
+
+ )}
+
@@ -42,29 +59,75 @@ const Wrapper = lieuUrl ? 'a' : 'div'