3.8 KiB
3.8 KiB
🎯 Filtres Secteur et Membre Séparés dans les Statistiques
📋 Changements effectués
La page de statistiques a été modifiée pour avoir deux comboboxes de filtrage distinctes au lieu d'un système avec sélection du type de filtre puis du filtre lui-même.
✨ Améliorations apportées
1. 🎨 Interface simplifiée
- Avant : Une combobox "Filtrer par" (Secteur/Membre) puis une combobox dynamique
- Après : Deux comboboxes distinctes toujours visibles :
- Une pour les Secteurs
- Une pour les Membres
2. 📊 Filtrage fonctionnel pour les membres
- Le filtre par membre fonctionne correctement
- Les graphiques se mettent à jour quand on sélectionne un membre
- L'option "Tous" affiche toutes les données
3. 🔧 Code nettoyé
- Suppression de
_selectedFilterTypeet_filterTypes - Remplacement de
_selectedUserpar_selectedMember(plus clair) - Deux méthodes de dropdown distinctes :
_buildSectorDropdown()et_buildMemberDropdown()
📂 Modifications apportées
Variables d'état
// Avant
String _selectedFilterType = 'Secteur';
String _selectedSector = 'Tous';
String _selectedUser = 'Tous';
// Après
String _selectedSector = 'Tous';
String _selectedMember = 'Tous';
Layout des filtres
// Desktop : 2 lignes
Row 1: [Période] [Nombre de jours]
Row 2: [Secteur] [Membre]
// Mobile : Tous en colonne
[Période]
[Nombre de jours]
[Secteur]
[Membre]
Utilisation dans les graphiques
ActivityChart(
userId: _selectedMember != 'Tous'
? _getMemberIdFromName(_selectedMember)
: null,
// Le filtre par secteur n'est pas encore supporté
)
⚠️ Limitation actuelle : Filtre par secteur
Le filtre par secteur n'est pas encore fonctionnel car les widgets de graphiques (ActivityChart et PassageSummaryCard) ne supportent pas le paramètre sectorId.
Pourquoi ?
Les graphiques actuels sont conçus pour filtrer uniquement par userId. Pour ajouter le support du secteur, il faudrait :
- Modifier les widgets de graphiques pour accepter un paramètre
sectorId - Adapter les requêtes de données pour joindre les tables passages et secteurs
- Implémenter la logique de filtrage basée sur l'appartenance du passage au secteur
Solution temporaire
- La combobox Secteur est visible mais inactive sur les graphiques
- Seul le filtre par membre est fonctionnel
- J'ai ajouté des commentaires dans le code pour indiquer cette limitation
Pour implémenter le filtre par secteur
Il faudrait modifier ActivityChart et PassageSummaryCard ainsi :
// Dans ActivityChart
class ActivityChart extends StatefulWidget {
final int? userId;
final int? sectorId; // Nouveau paramètre
// ...
}
// Dans la logique de filtrage
List<PassageModel> getFilteredPassages() {
var passages = allPassages;
if (widget.userId != null) {
passages = passages.where((p) => p.userId == widget.userId).toList();
}
if (widget.sectorId != null) {
passages = passages.where((p) => p.sectorId == widget.sectorId).toList();
}
return passages;
}
🎯 Résultat final
- ✅ Interface plus claire : Les deux filtres sont toujours visibles
- ✅ Filtre par membre fonctionnel : Les graphiques se mettent à jour correctement
- ✅ Données réelles : Les comboboxes affichent les vrais secteurs et membres
- ⚠️ Filtre par secteur en attente : Nécessite des modifications plus profondes
📈 Utilisation
- Sélectionner un membre : Le graphique affiche uniquement les données de ce membre
- Sélectionner "Tous" : Affiche toutes les données
- Changer la période : Modifie l'échelle temporelle
- Changer le nombre de jours : Ajuste la plage de données affichées
Le filtre par secteur sera fonctionnel dans une prochaine version après modification des widgets de graphiques.