feat: synchronisation mode deconnecte fin chat et stats
This commit is contained in:
120
app/docs/STATISTICS-DUAL-FILTERS.md
Normal file
120
app/docs/STATISTICS-DUAL-FILTERS.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# 🎯 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 `_selectedFilterType` et `_filterTypes`
|
||||
- Remplacement de `_selectedUser` par `_selectedMember` (plus clair)
|
||||
- Deux méthodes de dropdown distinctes : `_buildSectorDropdown()` et `_buildMemberDropdown()`
|
||||
|
||||
## 📂 Modifications apportées
|
||||
|
||||
### Variables d'état
|
||||
```dart
|
||||
// Avant
|
||||
String _selectedFilterType = 'Secteur';
|
||||
String _selectedSector = 'Tous';
|
||||
String _selectedUser = 'Tous';
|
||||
|
||||
// Après
|
||||
String _selectedSector = 'Tous';
|
||||
String _selectedMember = 'Tous';
|
||||
```
|
||||
|
||||
### Layout des filtres
|
||||
```dart
|
||||
// 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
|
||||
```dart
|
||||
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 :
|
||||
|
||||
1. **Modifier les widgets de graphiques** pour accepter un paramètre `sectorId`
|
||||
2. **Adapter les requêtes de données** pour joindre les tables passages et secteurs
|
||||
3. **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 :
|
||||
|
||||
```dart
|
||||
// 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
|
||||
|
||||
1. **Sélectionner un membre** : Le graphique affiche uniquement les données de ce membre
|
||||
2. **Sélectionner "Tous"** : Affiche toutes les données
|
||||
3. **Changer la période** : Modifie l'échelle temporelle
|
||||
4. **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.
|
||||
Reference in New Issue
Block a user