-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathevents.js
More file actions
76 lines (61 loc) · 2.75 KB
/
events.js
File metadata and controls
76 lines (61 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
document.addEventListener('DOMContentLoaded', async () => {
const eventsContainer = document.querySelector('.events-list');
if (!eventsContainer) return;
try {
// Ajouter un paramètre timestamp pour éviter la mise en cache
const timestamp = new Date().getTime();
const response = await fetch(`/api/events.json?t=${timestamp}`);
if (!response.ok) {
throw new Error('Erreur lors du chargement des événements');
}
const events = await response.json();
// Vider le contenu actuel
eventsContainer.innerHTML = '';
if (events.length === 0) {
// Afficher un message si aucun événement n'est disponible
eventsContainer.innerHTML = '<div class="event-card show"><h3>Aucun événement à venir pour le moment</h3><p>Consultez cette page ultérieurement pour découvrir nos prochains événements.</p></div>';
return;
}
// Trier les événements par ordre
events.sort((a, b) => a.order - b.order);
// Ajouter chaque événement au conteneur
events.forEach(event => {
const eventCard = document.createElement('div');
eventCard.className = 'event-card hidden';
let imageHtml = '';
if (event.image) {
imageHtml = `
<div class="event-image">
<img src="${event.image}" alt="${event.title}" style="width: 100%; height: 100%; object-fit: cover;">
</div>
`;
}
eventCard.innerHTML = `
<h4 class="event-date">${event.date}</h4>
<h3 class="event-title">${event.title}</h3>
${imageHtml}
<p class="event-description">${event.description}</p>
<a href="${event.link}" class="read-more">${event.linkText}</a>
`;
eventsContainer.appendChild(eventCard);
});
// Afficher un message de débogage dans la console
console.log(`${events.length} événements chargés à ${new Date().toLocaleTimeString()}`);
// Réinitialiser l'observateur pour les nouveaux éléments
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('show');
entry.target.classList.remove('hidden');
observer.unobserve(entry.target);
}
});
});
const hiddenElements = document.querySelectorAll('.event-card.hidden');
hiddenElements.forEach((el) => observer.observe(el));
} catch (error) {
console.error('Erreur:', error);
// Afficher un message d'erreur dans le conteneur
eventsContainer.innerHTML = `<div class="event-card show"><h3>Erreur lors du chargement des événements</h3><p>Veuillez actualiser la page et réessayer. Message d'erreur: ${error.message}</p></div>`;
}
});