Files
geo/app/docs/STATISTICS-CROSS-FILTERING.md

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 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

// 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

  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