feat: synchronisation mode deconnecte fin chat et stats
This commit is contained in:
89
app/docs/STATISTICS-CROSS-FILTERING.md
Normal file
89
app/docs/STATISTICS-CROSS-FILTERING.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# 🔄 Filtrage Croisé Secteur/Membre dans les Statistiques
|
||||
|
||||
## 📋 Fonctionnalité implémentée
|
||||
|
||||
La page de statistiques administrateur dispose maintenant d'un système de **filtrage croisé intelligent** entre les comboboxes Secteur et Membre.
|
||||
|
||||
## ✨ Comportement du filtrage
|
||||
|
||||
### 1. 🏢 Sélection d'un secteur
|
||||
Quand l'administrateur sélectionne un secteur spécifique :
|
||||
- La liste des membres se met à jour pour **afficher uniquement les membres affectés à ce secteur**
|
||||
- **Auto-sélection intelligente** : Le premier membre du secteur est automatiquement sélectionné
|
||||
- Les graphiques se mettent à jour pour afficher les données de ce membre
|
||||
- Si le membre précédemment sélectionné est dans ce secteur, il reste sélectionné
|
||||
|
||||
### 2. 👤 Sélection d'un membre
|
||||
Quand l'administrateur sélectionne un membre spécifique :
|
||||
- La liste des secteurs se met à jour pour **afficher uniquement les secteurs où ce membre est affecté**
|
||||
- Les graphiques se mettent à jour pour afficher uniquement les données de ce membre
|
||||
- Si le secteur précédemment sélectionné n'est pas associé à ce membre, il est réinitialisé à "Tous"
|
||||
|
||||
### 3. 🔄 Sélection de "Tous"
|
||||
Quand "Tous" est sélectionné dans l'une des comboboxes :
|
||||
- L'autre combobox affiche à nouveau **toutes les options disponibles**
|
||||
- L'autre combobox est également réinitialisée à "Tous"
|
||||
- Les graphiques affichent toutes les données sans filtre
|
||||
|
||||
## 🗂️ Source des données
|
||||
|
||||
Le filtrage utilise les données stockées dans les boxes Hive :
|
||||
- **`sectors`** : Liste de tous les secteurs
|
||||
- **`membres`** : Liste de tous les membres
|
||||
- **`user_sector`** : Associations entre membres (users) et secteurs
|
||||
|
||||
## 📊 Impact sur les graphiques
|
||||
|
||||
Les graphiques sont mis à jour en temps réel selon les filtres :
|
||||
- **ActivityChart** : Affiche l'activité du/des membre(s) sélectionné(s)
|
||||
- **PassageSummaryCard** : Répartition des passages pour le/les membre(s)
|
||||
- **PaymentPieChart** : Répartition des paiements pour le/les membre(s)
|
||||
|
||||
✅ **Solution implémentée** : Puisque chaque secteur a toujours au moins un membre, la sélection d'un secteur déclenche automatiquement la sélection du premier membre de ce secteur, garantissant ainsi que les graphiques affichent toujours des données pertinentes.
|
||||
|
||||
## 🔧 Implémentation technique
|
||||
|
||||
### Nouvelles méthodes ajoutées
|
||||
|
||||
```dart
|
||||
// Mise à jour de la liste des secteurs
|
||||
void _updateSectorsList({int? forMemberId})
|
||||
|
||||
// Mise à jour de la liste des membres
|
||||
void _updateMembersList({int? forSectorId})
|
||||
```
|
||||
|
||||
### Variables de stockage
|
||||
|
||||
```dart
|
||||
List<SectorModel> _allSectors = []; // Tous les secteurs
|
||||
List<MembreModel> _allMembers = []; // Tous les membres
|
||||
List<UserSectorModel> _userSectors = []; // Associations
|
||||
```
|
||||
|
||||
### Logique de filtrage
|
||||
|
||||
1. **Chargement initial** : Toutes les données sont chargées depuis Hive
|
||||
2. **Filtrage** : Utilisation de `_userSectors` pour déterminer les associations
|
||||
3. **Mise à jour UI** : `setState()` pour rafraîchir les dropdowns
|
||||
4. **Synchronisation** : Les sélections incompatibles sont automatiquement réinitialisées
|
||||
|
||||
## 🎯 Cas d'usage
|
||||
|
||||
### Pour l'administrateur
|
||||
- Voir rapidement quels membres travaillent sur un secteur donné
|
||||
- Analyser les performances d'un membre sur ses différents secteurs
|
||||
- Comparer l'activité entre secteurs ou entre membres
|
||||
- Identifier les secteurs sans activité récente
|
||||
|
||||
### Exemples concrets
|
||||
1. **Analyse par secteur** : Sélectionner "Secteur Nord" pour voir tous les membres y travaillant et leurs statistiques globales
|
||||
2. **Analyse par membre** : Sélectionner "Jean Dupont" pour voir ses secteurs d'affectation et ses performances
|
||||
3. **Vue globale** : Garder "Tous" sélectionné pour une vision d'ensemble de l'amicale
|
||||
|
||||
## 🚀 Évolutions futures possibles
|
||||
|
||||
1. **Filtrage des graphiques par secteur** : Implémenter le support du paramètre `sectorId` dans les widgets de graphiques
|
||||
2. **Multi-sélection** : Permettre de sélectionner plusieurs secteurs ou membres
|
||||
3. **Filtres additionnels** : Ajouter des filtres par date, type de passage, etc.
|
||||
4. **Export filtré** : Exporter uniquement les données filtrées
|
||||
Reference in New Issue
Block a user