AdminJO Front - Documentation API - v0.1.0
    Preparing search index...
    • Composant EvenementsManagement - Gestionnaire principal des événements sportifs olympiques AdminJO

      Returns Element

      Interface complète de gestion des événements avec CRUD, filtrage avancé cascade et notifications

      EvenementsManagement Ce composant constitue le point central de gestion des événements sportifs des Jeux Olympiques 2024. Il orchestre l'ensemble des fonctionnalités CRUD (Create, Read, Update, Delete) avec système de filtrage avancé en cascade, recherche multicritères, interface utilisateur complète incluant tableau de données, modal de saisie avec sélection d'épreuves hiérarchique, notifications de feedback et gestion d'état centralisée. Il assure la coordination entre tous les sous-composants du module événements avec navigation contextuelle, filtrage temporel JO 2024, et fonctionnalités de filtrage relationnel sophistiqué.

      • Coordination générale : Gère tous les sous-composants événements complexes
      • État centralisé : Point unique de vérité pour données événements + relations multiples
      • Flux d'événements : Centralise callbacks et actions utilisateur sophistiquées
      • Session management : Surveillance expiration session utilisateur
      • Layout complet : Structure complète page gestion événements
      • Filtrage cascade : Système recherche + filtres lieu → discipline → épreuve → statut
      • Relations multiples : Gestion liens événements ↔ épreuves ↔ lieux ↔ disciplines
      • Dates JO : Filtrage temporel période olympique Paris 2024
      • useEventsManagement : Hook métier pour opérations CRUD événements + filtres avancés
      • useSessionExpiry : Protection contre expiration session
      • État local UI : Gestion modal, édition, notifications
      • Synchronisation : Coordination état local/distant avec filtres multiples
      • Error handling : Gestion centralisée erreurs création/modification
      • Filter state : 6 critères filtrage (lieu, discipline, épreuve, statut, dates)
      • Données relationnelles : Événements + lieux + épreuves + disciplines chargées
      • Déclenchement : Bouton "Nouvel Événement" dans EvenementsHeader
      • Interface : EvenementModal en mode création (editingEvent = null)
      • Validation : Description + lieu + date + horaire + épreuves optionnelles
      • Sélection épreuves : Interface hiérarchique par discipline avec disponibilité
      • Sauvegarde : Appel createEvent() du hook avec CreateEvenementRequest étendu
      • Feedback : Notification succès "Événement créé avec succès !"
      • Rafraîchissement : Liste mise à jour avec filtres préservés
      • Relations : Association événement ↔ épreuves multiples via modal
      • Source données : Hook useEventsManagement fournit événements + relations
      • Affichage : EvenementsTable avec colonnes spécialisées (description, épreuves, date, lieu, statut, actions)
      • États système : Loading, error, empty gérés dans table
      • Recherche textuelle : SearchAndFilters avec terme persistant
      • Filtres cascade : Lieu → Discipline → Épreuve → Statut avec réinitialisation automatique
      • Filtres temporels : Date début/fin pour période JO 2024 (juillet-septembre)
      • Refresh intelligent : handleRefresh préserve recherche ET tous filtres
      • Sous-composants : EvenementEpreuves et EventStatus intégrés dans lignes
      • Déclenchement : Bouton "Modifier" dans EvenementsTableRow
      • Interface : EvenementModal pré-remplie avec données existantes + épreuves
      • Mode édition : editingEvent contient événement ExtendEvenement complet
      • Épreuves assignées : Gestion disponibilité + épreuves déjà assignées
      • Sauvegarde : Appel updateEvent() avec ID et nouvelles données
      • Feedback : Notification succès "Événement modifié avec succès !"
      • Préservation : Recherche et filtres maintenus après modification
      • Relations : Modification associations événement ↔ épreuves possible
      • Déclenchement : Bouton "Supprimer" dans EvenementsTableRow
      • Sécurité : Confirmation implicite (gérée par composant table)
      • Suppression : Appel deleteEvent() avec ID événement
      • Feedback : Notification succès "Événement supprimé avec succès !"
      • Gestion erreur : Notification erreur si échec suppression
      • État préservé : Recherche et filtres maintenus après suppression
      • Libération épreuves : Épreuves redeviennent disponibles pour autres événements
      • Recherche textuelle : searchTerm via handleSearch()
      • Filtre lieu : filterLieu avec setFilterLieu() (racine cascade)
      • Filtre discipline : filterDiscipline dépendant lieu sélectionné
      • Filtre épreuve : filterEpreuve dépendant lieu ET discipline
      • Filtre statut : filterStatut dépendant tous filtres précédents
      • Dates JO : filterDateDebut/filterDateFin pour période olympique
      • Réinitialisation automatique : Filtres enfants reset si parent change
      • handleLieuChange : setFilterLieu() avec reset cascade automatique
      • handleDisciplineChange : setFilterDiscipline() avec reset épreuve/statut
      • handleEpreuveChange : setFilterEpreuve() avec reset statut
      • handleStatutChange : setFilterStatut() (feuille cascade)
      • handleDateDebutChange/Fin : Gestion période temporelle JO
      • Synchronisation : Tous handlers coordonnés avec état hook
      • Extraction unique : Array.from(new Map()) pour disciplines uniques
      • Tri alphabétique : sort((a, b) => a.nom.localeCompare(b.nom))
      • Relations dynamiques : Disciplines dérivées des épreuves disponibles
      • Performance : Calcul une fois, réutilisation dans composants
      • Cohérence : Disciplines toujours synchronisées avec épreuves
      • showModal : Contrôle visibilité EvenementModal
      • editingEvent : Événement en cours d'édition ou null pour création
      • Ouverture : handleOpenModal() avec événement optionnel
      • Fermeture : Fermeture avec nettoyage état (setEditingEvent(null))
      • Mode dynamique : Modal s'adapte selon editingEvent
      • Données complexes : Transmission lieux, épreuves, événement complet
      • notification state : Objet {message, type} ou null
      • Types supportés : 'success', 'error', 'info'
      • Messages contextuels : Textes spécialisés par action événements
      • Auto-dismiss : Fermeture manuelle par utilisateur
      • Feedback : Confirmation visuelle de toutes les opérations CRUD
      • loading : État chargement liste événements (lecture)
      • createLoading : État chargement opérations CUD via hook
      • error : Messages d'erreur de chargement données
      • Modal states : Loading et error transmis à EvenementModal
      • Granularité : États séparés pour différentes opérations
      • Feedback : Désactivation contrôles pendant opérations async
      • Dates par défaut : Juillet-septembre 2024 pour JO + Paralympiques
      • Filtre début : filterDateDebut avec handleDateDebutChange
      • Filtre fin : filterDateFin avec handleDateFinChange
      • Format ISO : Dates au format YYYY-MM-DD pour API
      • Validation : Cohérence dates début < fin
      • Réinitialisation : Retour aux dates JO par défaut
      1. Clic "Nouvel Événement" → handleOpenModal() sans paramètre
      2. Modal s'ouvre → EvenementModal mode création (editingEvent = null)
      3. Saisie données → Description + lieu + date + horaire + épreuves multiples
      4. Sélection épreuves → Interface hiérarchique par discipline
      5. Soumission → handleSaveEvent() avec CreateEvenementRequest étendu
      6. Création API → createEvent() via hook spécialisé
      7. Succès → Modal ferme, notification succès, liste rafraîchie avec filtres
      8. Erreur → Erreur affichée, modal reste ouverte pour correction
      1. Clic "Modifier" → handleOpenModal(event) avec objet ExtendEvenement
      2. Modal s'ouvre → EvenementModal pré-remplie (editingEvent = event)
      3. Modification données → Tous champs modifiables + épreuves réassignables
      4. Soumission → handleSaveEvent() avec données modifiées
      5. Update API → updateEvent() avec ID et nouvelles données
      6. Succès → Modal ferme, notification succès, liste mise à jour
      7. Erreur → Gestion via hook, feedback utilisateur approprié
      1. Clic "Supprimer" → handleDeleteEvent(id) avec identifiant
      2. Suppression directe → deleteEvent() via hook (confirmation dans table)
      3. Succès → Notification succès, liste automatiquement mise à jour
      4. Erreur → try/catch avec notification erreur générique
      5. Filtres préservés : Recherche et tous filtres maintenues après suppression
      6. Épreuves libérées : Épreuves assignées redeviennent disponibles
      1. Sélection lieu → handleLieuChange() capture lieu olympique
      2. Cascade disciplines → Disciplines disponibles recalculées selon lieu
      3. Sélection discipline → handleDisciplineChange() avec reset épreuves/statut
      4. Cascade épreuves → Épreuves filtrées selon lieu ET discipline
      5. Sélection épreuve → handleEpreuveChange() avec reset statut
      6. Filtre statut → handleStatutChange() final cascade
      7. Dates période → handleDateDebutChange/Fin pour temporel JO
      8. Mise à jour liste → Événements filtrés selon critères multiples coordonnés
      • EvenementsHeader - En-tête avec navigation et bouton création
      • SearchAndFilters - Composant de filtrage multicritères en cascade
      • EvenementsTable - Tableau d'affichage et actions des événements
      • EvenementModal - Modal de création/édition des événements avec épreuves
      • useEventsManagement - Hook métier pour opérations CRUD + filtres avancés
      • useSessionExpiry - Hook de surveillance de session
      • Notification - Composant de feedback utilisateur