On release/v3.1.4: Sauvegarde temporaire pour changement de branche
This commit is contained in:
@@ -1325,6 +1325,126 @@ graph TD
|
||||
E -->|ValueListenableBuilder| A
|
||||
```
|
||||
|
||||
## 📱 Widgets de passages et navigation
|
||||
|
||||
### 🎯 PassagesListWidget
|
||||
|
||||
Le widget `PassagesListWidget` est le composant central pour l'affichage et la gestion des passages dans toute l'application. Il offre une expérience utilisateur cohérente avec des fonctionnalités adaptatives selon le contexte.
|
||||
|
||||
#### ✨ Fonctionnalités principales
|
||||
|
||||
- **Affichage adaptatif** : Liste complète ou tableau de bord avec fond transparent
|
||||
- **Flux conditionnel de clic** : Comportement intelligent selon le type de passage
|
||||
- **Bouton de création intégré** : Bouton "+" vert dans l'en-tête pour ajouter des passages
|
||||
- **Filtrage avancé** : Par type, utilisateur, période, avec exclusions possibles
|
||||
- **Actions contextuelles** : Modification, suppression, génération de reçus
|
||||
|
||||
#### 🔄 Flux conditionnel des clics sur passages
|
||||
|
||||
Le widget implémente un comportement intelligent lors du clic sur un passage :
|
||||
|
||||
```dart
|
||||
// Logique de gestion des clics
|
||||
void _handlePassageClick(Map<String, dynamic> passage) {
|
||||
final int passageType = passage['type'] as int? ?? 1;
|
||||
|
||||
if (passageType == 2) {
|
||||
// Type 2 (À finaliser) : Ouverture directe du formulaire d'édition
|
||||
_showEditDialog(context, passageModel);
|
||||
} else {
|
||||
// Autres types : Affichage des détails avec option de modification
|
||||
_showDetailsDialogWithEditOption(context, passage, passageModel);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Comportements par type de passage :**
|
||||
- **Type 1 (Réalisé)** : Affiche les détails complets avec option "Modifier"
|
||||
- **Type 2 (À finaliser)** : Ouvre directement le formulaire d'édition pour finalisation rapide
|
||||
- **Type 3 (Absent)** : Affiche les détails avec options limitées
|
||||
- **Type 4 (Refusé)** : Affiche les détails en lecture seule
|
||||
|
||||
#### 🎨 Dialog de détails amélioré
|
||||
|
||||
La boîte de dialogue des détails a été repensée pour une meilleure lisibilité :
|
||||
|
||||
- **Organisation par sections** : Client, Passage, Lieu avec icônes distinctives
|
||||
- **Badges colorés** : Visualisation rapide du type et statut
|
||||
- **Formatage intelligent** : Dates, montants et informations structurées
|
||||
- **Actions contextuelles** : Boutons adaptés selon les permissions
|
||||
|
||||
#### ➕ Bouton de création contextuel
|
||||
|
||||
Le widget intègre un bouton "+" vert flottant dans l'en-tête pour créer de nouveaux passages :
|
||||
|
||||
```dart
|
||||
// Paramètres pour activer le bouton de création
|
||||
PassagesListWidget(
|
||||
showAddButton: true, // Active le bouton "+"
|
||||
onAddPassage: () async {
|
||||
// Logique de création avec PassageFormDialog
|
||||
await _showPassageFormDialog(context);
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
**Pages avec bouton de création activé :**
|
||||
- `user_field_mode_page.dart` : Mode terrain pour création rapide
|
||||
- `user_history_page.dart` : Historique avec ajout possible
|
||||
- `admin_history_page.dart` : Gestion administrative complète
|
||||
|
||||
### 🎯 DashboardAppBar - Évolution de l'interface
|
||||
|
||||
#### ❌ Suppression du bouton "Nouveau passage"
|
||||
|
||||
Le bouton global "Nouveau passage" a été **définitivement retiré** de la barre d'application (`DashboardAppBar`) pour privilégier une approche contextuelle :
|
||||
|
||||
**Avant :**
|
||||
- Bouton toujours visible dans l'AppBar
|
||||
- Création de passage possible depuis n'importe quelle page
|
||||
- Confusion possible sur le contexte de création
|
||||
|
||||
**Après :**
|
||||
- Boutons "+" contextuels dans les pages appropriées
|
||||
- Création limitée aux contextes pertinents
|
||||
- Interface épurée et plus intuitive
|
||||
|
||||
#### 🎨 Architecture simplifiée
|
||||
|
||||
La suppression du bouton global a permis de :
|
||||
- Nettoyer les dépendances (`passage_form_dialog.dart`, `app_keys.dart`)
|
||||
- Simplifier les paramètres de `DashboardLayout`
|
||||
- Réduire la complexité de navigation
|
||||
- Améliorer la cohérence UX
|
||||
|
||||
### 🎯 Mode tableau de bord
|
||||
|
||||
Pour les pages de tableau de bord, le `PassagesListWidget` s'adapte automatiquement :
|
||||
|
||||
#### 🏠 Page d'accueil utilisateur
|
||||
|
||||
Dans `user_dashboard_home_page.dart`, l'affichage est optimisé :
|
||||
|
||||
```dart
|
||||
// Configuration pour le tableau de bord
|
||||
SizedBox(
|
||||
height: 450, // Hauteur fixe pour éviter l'overflow
|
||||
child: PassagesListWidget(
|
||||
passages: recentPassages,
|
||||
showFilters: false, // Pas de filtres sur le dashboard
|
||||
showSearch: false, // Pas de recherche
|
||||
maxPassages: 20, // Limite aux 20 plus récents
|
||||
transparentBackground: true, // Fond transparent pour intégration
|
||||
),
|
||||
)
|
||||
```
|
||||
|
||||
**Améliorations du dashboard :**
|
||||
- Suppression de la Card wrapper pour un design épuré
|
||||
- Fond transparent pour intégration harmonieuse
|
||||
- En-tête coloré maintenu pour la lisibilité
|
||||
- Limite augmentée à 20 passages récents (au lieu de 10)
|
||||
|
||||
### ✨ Composants de l'architecture
|
||||
|
||||
#### **1. Page Parente (ex: AdminOperationsPage)**
|
||||
|
||||
Reference in New Issue
Block a user