feat: add categorie filter membre search

This commit is contained in:
2025-11-18 14:02:02 +01:00
parent bf75d9d036
commit 1b5bf8ba6c
5 changed files with 54 additions and 24 deletions

View File

@@ -28,18 +28,19 @@ export function MemberList({source}) {
const [lastSearch, setLastSearch] = useState("");
const [paymentFilter, setPaymentFilter] = useState(2);
const [order, setOrder] = useState("");
const [catFilter, setCatFilter] = useState("");
const setLoading = useLoadingSwitcher()
const {
data,
error,
refresh
} = useFetch(`/member/find/${source}?page=${page}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}`, setLoading, 1)
} = useFetch(`/member/find/${source}?page=${page}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}&categorie=${catFilter}`, setLoading, 1)
useEffect(() => {
refresh(`/member/find/${source}?page=${page}&search=${lastSearch}&club=${clubFilter}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}`);
}, [hash, clubFilter, stateFilter, lastSearch, paymentFilter, order]);
refresh(`/member/find/${source}?page=${page}&search=${lastSearch}&club=${clubFilter}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}&categorie=${catFilter}`);
}, [hash, clubFilter, stateFilter, lastSearch, paymentFilter, order, catFilter]);
useEffect(() => {
if (!data)
@@ -123,10 +124,10 @@ export function MemberList({source}) {
<div className="card mb-4">
<div className="card-header">Filtre</div>
<div className="card-body">
<FiltreBar showLicenceState={showLicenceState} setShowLicenceState={setShowLicenceState} data={data}
<FiltreBar showLicenceState={showLicenceState} setShowLicenceState={setShowLicenceState}
clubFilter={clubFilter} setClubFilter={setClubFilter} source={source}
stateFilter={stateFilter} setStateFilter={setStateFilter} paymentFilter={paymentFilter}
setPaymentFilter={setPaymentFilter}/>
setPaymentFilter={setPaymentFilter} catFilter={catFilter} setCatFilter={setCatFilter}/>
</div>
</div>
@@ -501,31 +502,32 @@ function OrderBar({onOrderChange, source}) {
);
}
let allClub = []
function FiltreBar({
showLicenceState,
setShowLicenceState,
data,
clubFilter,
setClubFilter,
source,
stateFilter,
setStateFilter,
paymentFilter,
setPaymentFilter
setPaymentFilter,
catFilter,
setCatFilter,
}) {
useEffect(() => {
if (!data)
return;
allClub.push(...data.result.map((e) => e.club?.name))
allClub = allClub.filter((value, index, self) => self.indexOf(value) === index).filter(value => value != null).sort()
}, [data]);
return <div>
<div className="mb-3">
<Checkbox value={showLicenceState} onChange={setShowLicenceState} label="Afficher l'état des licences"/>
</div>
<div className="mb-3">
<select className="form-select" value={catFilter} onChange={event => setCatFilter(event.target.value)}>
<option value="">--- toute les catégories ---</option>
{Tools.CatList.map(cat => (
<option key={cat} value={cat}>{getCatName(cat)}</option>
))}
</select>
</div>
{source !== "club" && <ClubSelectFilter clubFilter={clubFilter} setClubFilter={setClubFilter}/>}
<div className="mb-3">
<select className="form-select" value={stateFilter} onChange={event => setStateFilter(Number(event.target.value))}>

View File

@@ -23,6 +23,20 @@ export const errFormater = (data, msg) => {
return `${msg} (${data.response.statusText}: ${JSON.stringify(data.response.data)}) 😕`
}
export const CatList = [
"SUPER_MINI",
"MINI_POUSSIN",
"POUSSIN",
"BENJAMIN",
"MINIME",
"CADET",
"JUNIOR",
"SENIOR1",
"SENIOR2",
"VETERAN1",
"VETERAN2"
];
export function getCategoryFormBirthDate(birth_date, currentDate = new Date()) {
const currentSaison = getSaison(currentDate)
const birthYear = birth_date.getFullYear()