Checkpoint: Ajout d'un filtre par public cible sur la page de gestion des séquences pour faciliter la recherche des séquences destinées à un profil spécifique (Directeurs, Chefs de service, Autre)

This commit is contained in:
Manus Sandbox
2025-11-17 07:57:18 -05:00
parent 3f16cd8a48
commit 01e2b8b2d4
2 changed files with 27 additions and 2 deletions

View File

@@ -27,6 +27,7 @@ export default function AdminSequences() {
const [searchTerm, setSearchTerm] = useState(""); const [searchTerm, setSearchTerm] = useState("");
const [filterLieu, setFilterLieu] = useState<string>("all"); const [filterLieu, setFilterLieu] = useState<string>("all");
const [filterStatut, setFilterStatut] = useState<string>("all"); const [filterStatut, setFilterStatut] = useState<string>("all");
const [filterPublicCible, setFilterPublicCible] = useState<string>("all");
const [sortBy, setSortBy] = useState<"date" | "lieu" | "capacite">("date"); const [sortBy, setSortBy] = useState<"date" | "lieu" | "capacite">("date");
const [formData, setFormData] = useState({ const [formData, setFormData] = useState({
@@ -219,7 +220,8 @@ export default function AdminSequences() {
const matchSearch = seq.nom.toLowerCase().includes(searchTerm.toLowerCase()); const matchSearch = seq.nom.toLowerCase().includes(searchTerm.toLowerCase());
const matchLieu = filterLieu === "all" || seq.lieu === filterLieu; const matchLieu = filterLieu === "all" || seq.lieu === filterLieu;
const matchStatut = filterStatut === "all" || seq.statut === filterStatut; const matchStatut = filterStatut === "all" || seq.statut === filterStatut;
return matchSearch && matchLieu && matchStatut; const matchPublicCible = filterPublicCible === "all" || seq.publicCible === filterPublicCible;
return matchSearch && matchLieu && matchStatut && matchPublicCible;
}); });
filtered.sort((a, b) => { filtered.sort((a, b) => {
@@ -235,7 +237,7 @@ export default function AdminSequences() {
}); });
return filtered; return filtered;
}, [sequences, searchTerm, filterLieu, filterStatut, sortBy]); }, [sequences, searchTerm, filterLieu, filterStatut, filterPublicCible, sortBy]);
const uniqueLieux = useMemo(() => { const uniqueLieux = useMemo(() => {
if (!sequences) return []; if (!sequences) return [];
@@ -534,6 +536,21 @@ export default function AdminSequences() {
</Select> </Select>
</div> </div>
<div className="space-y-2">
<Label>Public cible</Label>
<Select value={filterPublicCible} onValueChange={setFilterPublicCible}>
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="all">Tous les publics</SelectItem>
<SelectItem value="directeur">Directeurs</SelectItem>
<SelectItem value="chef_service">Chefs de service</SelectItem>
<SelectItem value="autre">Autre</SelectItem>
</SelectContent>
</Select>
</div>
<div className="space-y-2"> <div className="space-y-2">
<Label>Trier par</Label> <Label>Trier par</Label>
<Select value={sortBy} onValueChange={(v: any) => setSortBy(v)}> <Select value={sortBy} onValueChange={(v: any) => setSortBy(v)}>

View File

@@ -152,3 +152,11 @@
- [x] Ajouter le public cible dans l'export PDF des listes d'inscrits - [x] Ajouter le public cible dans l'export PDF des listes d'inscrits
- [x] Ajouter le public cible dans l'export PDF des feuilles de présence - [x] Ajouter le public cible dans l'export PDF des feuilles de présence
- [x] Tester tous les exports pour vérifier l'affichage correct - [x] Tester tous les exports pour vérifier l'affichage correct
## Ajout du filtre par public cible
- [x] Analyser la page AdminSequences pour comprendre le système de filtres existant
- [x] Ajouter un état pour le filtre publicCible
- [x] Ajouter le composant Select pour le filtre publicCible dans l'interface
- [x] Implémenter la logique de filtrage par public cible
- [x] Tester le filtre avec différentes valeurs