/** * Script de compte à rebours pour la page de maintenance */ class CountdownTimer { constructor(targetDate) { this.targetDate = new Date(targetDate).getTime(); this.elements = { days: document.getElementById('countdown-days'), hours: document.getElementById('countdown-hours'), minutes: document.getElementById('countdown-minutes'), seconds: document.getElementById('countdown-seconds') }; this.start(); } start() { // Mise à jour immédiate this.updateTimer(); // Mise à jour chaque seconde this.interval = setInterval(() => { this.updateTimer(); }, 1000); } updateTimer() { const now = new Date().getTime(); const distance = this.targetDate - now; if (distance < 0) { // Le compte à rebours est terminé this.stop(); this.onComplete(); return; } const days = Math.floor(distance / (1000 * 60 * 60 * 24)); const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((distance % (1000 * 60)) / 1000); // Mise à jour des éléments du DOM if (this.elements.days) this.elements.days.textContent = this.formatNumber(days); if (this.elements.hours) this.elements.hours.textContent = this.formatNumber(hours); if (this.elements.minutes) this.elements.minutes.textContent = this.formatNumber(minutes); if (this.elements.seconds) this.elements.seconds.textContent = this.formatNumber(seconds); } formatNumber(num) { return num.toString().padStart(2, '0'); } stop() { if (this.interval) { clearInterval(this.interval); } } onComplete() { // Rediriger vers la page principale quand le compte à rebours est terminé window.location.href = '/'; } } // Animation des éléments au chargement document.addEventListener('DOMContentLoaded', function() { // Initialiser le compte à rebours si les éléments existent if (document.getElementById('countdown-days')) { // La date cible est fournie par PHP if (typeof COUNTDOWN_TARGET_DATE !== 'undefined') { new CountdownTimer(COUNTDOWN_TARGET_DATE); } } // Animation d'apparition progressive const elements = document.querySelectorAll('.countdown-container > *'); elements.forEach((element, index) => { element.style.opacity = '0'; element.style.transform = 'translateY(30px)'; setTimeout(() => { element.style.transition = 'opacity 0.8s ease, transform 0.8s ease'; element.style.opacity = '1'; element.style.transform = 'translateY(0)'; }, 100 * (index + 1)); }); }); // Gérer la fermeture propre du timer window.addEventListener('beforeunload', function() { // Arrêter le timer si il existe if (window.countdownTimer) { window.countdownTimer.stop(); } });