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:
@@ -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)}>
|
||||||
|
|||||||
8
todo.md
8
todo.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user