feat(frontend): Architecture multi-modes pour les widgets de formulaires #78

Closed
opened 2026-02-03 14:43:13 +00:00 by jmartin · 1 comment
Owner

?? Objectif

Refactoriser les widgets de formulaires pour supporter 4 modes d'affichage diff�rents au lieu d'avoir des widgets s�par�s pour l'�dition et la lecture seule.

?? Contexte actuel

Actuellement, nous avons :

  • Des widgets de formulaire �ditables (inscription)
  • Du code dupliqu� dans les r�capitulatifs pour afficher les m�mes donn�es en lecture seule

Cette duplication pose des probl�mes de :

  • Maintenance (modifications en double)
  • Coh�rence visuelle
  • Taille du code

?? Architecture propos�e

Les 4 modes

Mode Layout �ditable Usage
Desktop Edit Horizontal (2 colonnes) ? Oui Formulaire d'inscription desktop
Mobile Edit Vertical (1 colonne) ? Oui Formulaire d'inscription mobile
Desktop Readonly Horizontal (2 colonnes) ? Non R�capitulatif desktop
Mobile Readonly Vertical (1 colonne) ? Non R�capitulatif mobile

Impl�mentation technique

Ajout d'une configuration de mode dans chaque widget :

enum DisplayMode {
  editDesktop,      // �dition horizontal (d�faut actuel)
  editMobile,       // �dition vertical
  readonlyDesktop,  // Lecture horizontal (r�cap)
  readonlyMobile,   // Lecture vertical (r�cap mobile)
}

// Ou configuration granulaire :
class DisplayConfig {
  final bool isReadonly;
  final bool isVertical;
  
  DisplayConfig({
    this.isReadonly = false,
    this.isVertical = false,
  });
}

? Avantages

  1. DRY - Un seul widget = une seule source de v�rit�
  2. Coh�rence - M�me structure entre formulaire et r�cap
  3. Maintenance - Modification en un seul endroit
  4. Responsive - Desktop/mobile automatique
  5. R�utilisabilit� - Inscription, r�cap, profil, �dition, etc.
  6. Testabilit� - Tests une seule fois pour tous les modes

?? Widgets concern�s

Priorit� 1 (utilis�s dans r�caps)

  • PersonalInfoFormScreen - Infos personnelles (nom, adresse, contact)
  • ProfessionalInfoFormScreen - Infos professionnelles AM
  • PresentationFormScreen - Motivation/pr�sentation

Priorit� 2 (optionnels)

  • ChildCardWidget - Carte enfant (d�j� extrait)

?? �tapes de mise en �uvre

Phase 1 : PersonalInfoFormScreen

  1. Ajouter enum DisplayMode ou classe DisplayConfig
  2. Adapter le layout selon le mode (horizontal/vertical)
  3. G�rer l'�tat �ditable/readonly des champs
  4. Tester les 4 modes

Phase 2 : ProfessionalInfoFormScreen

  1. Appliquer la m�me logique que Phase 1
  2. G�rer la photo en mode readonly

Phase 3 : PresentationFormScreen

  1. Appliquer la m�me logique
  2. G�rer le texte multiligne en readonly

Phase 4 : Refactorisation des r�caps

  1. Remplacer les cartes de r�cap AM Step 4 par les widgets en mode readonly
  2. Remplacer les cartes de r�cap Parent Step 5 par les widgets en mode readonly
  3. Supprimer le code dupliqu�

Phase 5 : Responsive mobile (optionnel)

  1. D�tecter la taille d'�cran
  2. Basculer automatiquement entre modes desktop/mobile

?? Impact estim�

  • R�duction de code : ~300-500 lignes (suppression duplication r�caps)
  • Fichiers modifi�s : 6 widgets + 2 �crans de r�cap
  • Risque : Faible (ajout de fonctionnalit�s, pas de suppression)
  • Tests requis : Formulaires d'inscription + r�capitulatifs

?? Ressources

  • Widgets actuels : frontend/lib/widgets/
  • �crans r�cap : am_register_step4_screen.dart, parent_register_step5_screen.dart
## ?? Objectif Refactoriser les widgets de formulaires pour supporter 4 modes d'affichage diff�rents au lieu d'avoir des widgets s�par�s pour l'�dition et la lecture seule. ## ?? Contexte actuel Actuellement, nous avons : - Des widgets de formulaire �ditables (inscription) - Du code dupliqu� dans les r�capitulatifs pour afficher les m�mes donn�es en lecture seule Cette duplication pose des probl�mes de : - Maintenance (modifications en double) - Coh�rence visuelle - Taille du code ## ?? Architecture propos�e ### Les 4 modes | Mode | Layout | �ditable | Usage | |------|--------|----------|-------| | **Desktop Edit** | Horizontal (2 colonnes) | ? Oui | Formulaire d'inscription desktop | | **Mobile Edit** | Vertical (1 colonne) | ? Oui | Formulaire d'inscription mobile | | **Desktop Readonly** | Horizontal (2 colonnes) | ? Non | R�capitulatif desktop | | **Mobile Readonly** | Vertical (1 colonne) | ? Non | R�capitulatif mobile | ### Impl�mentation technique Ajout d'une configuration de mode dans chaque widget : ```dart enum DisplayMode { editDesktop, // �dition horizontal (d�faut actuel) editMobile, // �dition vertical readonlyDesktop, // Lecture horizontal (r�cap) readonlyMobile, // Lecture vertical (r�cap mobile) } // Ou configuration granulaire : class DisplayConfig { final bool isReadonly; final bool isVertical; DisplayConfig({ this.isReadonly = false, this.isVertical = false, }); } ``` ## ? Avantages 1. **DRY** - Un seul widget = une seule source de v�rit� 2. **Coh�rence** - M�me structure entre formulaire et r�cap 3. **Maintenance** - Modification en un seul endroit 4. **Responsive** - Desktop/mobile automatique 5. **R�utilisabilit�** - Inscription, r�cap, profil, �dition, etc. 6. **Testabilit�** - Tests une seule fois pour tous les modes ## ?? Widgets concern�s ### Priorit� 1 (utilis�s dans r�caps) - [ ] PersonalInfoFormScreen - Infos personnelles (nom, adresse, contact) - [ ] ProfessionalInfoFormScreen - Infos professionnelles AM - [ ] PresentationFormScreen - Motivation/pr�sentation ### Priorit� 2 (optionnels) - [ ] ChildCardWidget - Carte enfant (d�j� extrait) ## ?? �tapes de mise en �uvre ### Phase 1 : PersonalInfoFormScreen 1. Ajouter enum DisplayMode ou classe DisplayConfig 2. Adapter le layout selon le mode (horizontal/vertical) 3. G�rer l'�tat �ditable/readonly des champs 4. Tester les 4 modes ### Phase 2 : ProfessionalInfoFormScreen 1. Appliquer la m�me logique que Phase 1 2. G�rer la photo en mode readonly ### Phase 3 : PresentationFormScreen 1. Appliquer la m�me logique 2. G�rer le texte multiligne en readonly ### Phase 4 : Refactorisation des r�caps 1. Remplacer les cartes de r�cap AM Step 4 par les widgets en mode readonly 2. Remplacer les cartes de r�cap Parent Step 5 par les widgets en mode readonly 3. Supprimer le code dupliqu� ### Phase 5 : Responsive mobile (optionnel) 1. D�tecter la taille d'�cran 2. Basculer automatiquement entre modes desktop/mobile ## ?? Impact estim� - **R�duction de code** : ~300-500 lignes (suppression duplication r�caps) - **Fichiers modifi�s** : 6 widgets + 2 �crans de r�cap - **Risque** : Faible (ajout de fonctionnalit�s, pas de suppression) - **Tests requis** : Formulaires d'inscription + r�capitulatifs ## ?? Ressources - Widgets actuels : frontend/lib/widgets/ - �crans r�cap : am_register_step4_screen.dart, parent_register_step5_screen.dart
Author
Owner

Refonte des formulaires multi-modes termin�e. Les widgets supportent maintenant les modes Desktop/Mobile et �dition/Lecture seule de mani�re adaptative. Documentation mise � jour.

Refonte des formulaires multi-modes termin�e. Les widgets supportent maintenant les modes Desktop/Mobile et �dition/Lecture seule de mani�re adaptative. Documentation mise � jour.
Sign in to join this conversation.
No description provided.