feat: synchronisation mode deconnecte fin chat et stats

This commit is contained in:
2025-08-31 18:21:20 +02:00
parent 41a4505b4b
commit 604294af96
149 changed files with 285769 additions and 250633 deletions

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