AdminJO Front - Documentation API - v0.1.0
    Preparing search index...

    Function useEpreuvesManagement

    • Hook useEpreuvesManagement - Gestion complète des épreuves sportives

      Ce hook fournit une interface unifiée pour la gestion des épreuves sportives des JO 2024. Il combine les opérations CRUD, le filtrage par discipline, la recherche textuelle et le tri hiérarchique pour une administration efficace des épreuves olympiques.

      Returns {
          epreuves: Epreuve[];
          disciplines: Discipline[];
          searchTerm: string;
          selectedDisciplineId: number | null;
          loading: boolean;
          error: string | null;
          createLoading: boolean;
          createError: string | null;
          loadEpreuves: (
              searchQuery?: string,
              disciplineId?: number | null,
          ) => Promise<void>;
          createEpreuve: (epreuveData: CreateEpreuveRequest) => Promise<Epreuve>;
          updateEpreuve: (
              id: number,
              epreuveData: CreateEpreuveRequest,
          ) => Promise<Epreuve>;
          deleteEpreuve: (id: number) => Promise<void>;
          handleSearch: (query: string) => Promise<void>;
          handleDisciplineFilter: (disciplineId: number | null) => Promise<void>;
          setCreateError: Dispatch<SetStateAction<string | null>>;
      }

      Interface complète de gestion des épreuves

      useEpreuvesManagement

      • Chargement automatique : Récupération de toutes les épreuves et disciplines au montage
      • Tri hiérarchique : Classement par discipline puis par nom d'épreuve
      • Gestion d'état : États de chargement et d'erreur pour chaque opération
      • Synchronisation : Mise à jour temps réel avec les données backend
      • Recherche textuelle : Filtrage par libellé d'épreuve
      • Filtrage par discipline : Restriction aux épreuves d'une discipline spécifique
      • Filtres combinés : Application simultanée de recherche et filtrage disciplinaire
      • Recherche API : Délégation optimisée au backend pour performance
      • Création : Ajout de nouvelles épreuves avec association discipline
      • Lecture : Récupération et affichage des épreuves avec données discipline
      • Mise à jour : Modification des épreuves existantes
      • Suppression : Suppression sécurisée des épreuves
      • Tri automatique : Maintien de l'ordre hiérarchique après chaque opération
      • epreuves : Liste des épreuves triées par discipline et nom
      • disciplines : Référentiel complet des disciplines pour association
      • searchTerm : Terme de recherche textuelle actuel
      • selectedDisciplineId : ID de la discipline sélectionnée pour filtrage
      • loading : Indicateur de chargement pour les opérations de lecture
      • error : Messages d'erreur pour les opérations principales
      • createLoading : État de chargement spécifique aux opérations CRUD
      • createError : Messages d'erreur spécifiques aux opérations CRUD
      1. Initialisation : Chargement des épreuves et disciplines avec tri hiérarchique
      2. Filtrage : Application des filtres de recherche et discipline côté serveur
      3. CRUD : Opérations avec mise à jour immédiate et recharge des disciplines
      4. Tri : Maintien automatique de l'ordre discipline > épreuve
      5. Gestion d'erreurs : Capture et affichage des erreurs pour chaque opération
      • epreuveApi : Service API principal pour les épreuves
      • disciplineApi : Service API pour le référentiel des disciplines
      • Filtrage optimisé : Délégation au backend avec paramètres combinés
      • Synchronisation : Rechargement des disciplines après modifications d'épreuves
      function EpreuvesManagementPage() {
      const {
      epreuves,
      disciplines,
      loading,
      error,
      searchTerm,
      setSearchTerm,
      selectedDisciplineId,
      setSelectedDisciplineId,
      createEpreuve,
      updateEpreuve,
      deleteEpreuve,
      createLoading,
      createError
      } = useEpreuvesManagement();

      if (loading) return <Spinner />;
      if (error) return <ErrorMessage message={error} />;

      return (
      <div>
      <SearchBar value={searchTerm} onChange={setSearchTerm} />
      <DisciplineFilter
      value={selectedDisciplineId}
      options={disciplines}
      onChange={setSelectedDisciplineId}
      />
      <CreateEpreuveForm
      disciplines={disciplines}
      onSubmit={createEpreuve}
      loading={createLoading}
      error={createError}
      />
      <EpreuvesList
      epreuves={epreuves}
      onUpdate={updateEpreuve}
      onDelete={deleteEpreuve}
      />
      </div>
      );
      }