Files
ferrovia-panel/docs/INFORMATIONS_PAGE_REFACTOR.md
T
2026-08-25 01:23:13 +02:00

4.1 KiB

Page Informations - Documentation des modifications

Vue d'ensemble

La page Informations a été entièrement recodée pour afficher correctement tous les contenus des onglets (Info Trafic, Événements, Actualités) en utilisant la structure native des web components wcs-tabs.

Modifications principales

1. Structure des onglets

Avant :

  • Utilisation de headers-only sur wcs-tabs
  • Gestion manuelle du contenu avec des conditions {activeTab === 'trafic' && ...}
  • Synchronisation complexe de l'état avec des listeners multiples

Après :

  • Utilisation complète de wcs-tabs avec wcs-tab-panel
  • Chaque onglet a son propre wcs-tab-panel avec le contenu approprié
  • Synchronisation simplifiée de l'état de l'onglet actif

2. Structure du code

<wcs-tabs
  selected-index={activeTab === 'trafic' ? 0 : activeTab === 'evenements' ? 1 : 2}
  onWcsTabChange={(e) => {
    const idx = e.detail?.selectedIndex;
    setActiveTab(idx === 0 ? 'trafic' : idx === 1 ? 'evenements' : 'actualites');
  }}
>
  <wcs-tab header="Info Trafic">
    <wcs-mat-icon icon="warning" />
  </wcs-tab>
  <wcs-tab header="Événements">
    <wcs-mat-icon icon="event" />
  </wcs-tab>
  <wcs-tab header="Actualités">
    <wcs-mat-icon icon="article" />
  </wcs-tab>

  {/* Panneau Info Trafic */}
  <wcs-tab-panel slot="panel">
    {/* Contenu... */}
  </wcs-tab-panel>

  {/* Panneau Événements */}
  <wcs-tab-panel slot="panel">
    {/* Contenu... */}
  </wcs-tab-panel>

  {/* Panneau Actualités */}
  <wcs-tab-panel slot="panel">
    {/* Contenu... */}
  </wcs-tab-panel>
</wcs-tabs>

3. Gestion de l'état

  • État simplifié : L'état activeTab est maintenu pour la cohérence avec les formulaires
  • Synchronisation : L'événement onWcsTabChange met à jour l'état React
  • Affichage : Chaque wcs-tab-panel contient le contenu correspondant (loading, empty state, ou tableau)

4. Fichier CSS dédié

Création de Informations.css avec :

  • Styles pour les badges (sévérité, type, catégorie, statut)
  • Styles pour les formulaires (form-group, form-row, form-checkboxes)
  • Styles pour les modales (modal-large, modal-small, modal-header, modal-body, modal-footer)
  • Styles pour les tableaux
  • États de chargement et vides
  • Design responsive
  • Animations

5. Fonctionnalités préservées

Toutes les fonctionnalités existantes sont préservées :

  • Création, modification et suppression d'info trafic
  • Création, modification et suppression d'événements
  • Création, modification et suppression d'actualités
  • Filtrage par région
  • Validation des formulaires
  • Gestion des états de chargement et d'erreur

Avantages de la nouvelle structure

  1. Meilleure compatibilité : Utilise correctement la structure native des web components
  2. Code plus propre : Moins de logique conditionnelle pour l'affichage
  3. Maintenabilité : Structure plus claire et plus facile à modifier
  4. Performance : Le web component gère lui-même l'affichage/masquage des panneaux
  5. Style cohérent : CSS dédié pour une meilleure organisation

Test de la page

Pour vérifier que tout fonctionne correctement :

  1. Onglets : Cliquer sur chaque onglet (Info Trafic, Événements, Actualités)
  2. Affichage : Vérifier que le contenu de chaque onglet s'affiche correctement
  3. Création : Tester la création d'un nouvel élément dans chaque onglet
  4. Modification : Tester la modification d'un élément existant
  5. Suppression : Tester la suppression d'un élément
  6. Responsive : Vérifier l'affichage sur mobile/tablette

Fichiers modifiés

  • src/pages/informations/Informations.js : Composant principal recodé
  • src/pages/informations/Informations.css : Nouveau fichier de styles (créé)

Notes techniques

  • Les web components WCS (SNCF Design System) sont correctement utilisés
  • La synchronisation entre React et les web components est gérée via les événements natifs
  • Les formulaires continuent d'utiliser la synchronisation DOM pour garantir la fiabilité
  • Le CSS est modularisé et suit les conventions de nommage BEM