4.0 KiB
4.0 KiB
🔄 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 secteursmembres: Liste de tous les membresuser_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
// 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
List<SectorModel> _allSectors = []; // Tous les secteurs
List<MembreModel> _allMembers = []; // Tous les membres
List<UserSectorModel> _userSectors = []; // Associations
Logique de filtrage
- Chargement initial : Toutes les données sont chargées depuis Hive
- Filtrage : Utilisation de
_userSectorspour déterminer les associations - Mise à jour UI :
setState()pour rafraîchir les dropdowns - 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
- Analyse par secteur : Sélectionner "Secteur Nord" pour voir tous les membres y travaillant et leurs statistiques globales
- Analyse par membre : Sélectionner "Jean Dupont" pour voir ses secteurs d'affectation et ses performances
- Vue globale : Garder "Tous" sélectionné pour une vision d'ensemble de l'amicale
🚀 Évolutions futures possibles
- Filtrage des graphiques par secteur : Implémenter le support du paramètre
sectorIddans les widgets de graphiques - Multi-sélection : Permettre de sélectionner plusieurs secteurs ou membres
- Filtres additionnels : Ajouter des filtres par date, type de passage, etc.
- Export filtré : Exporter uniquement les données filtrées