I am trying to filter through a city selector, I want to select the desired city in the selector to return the clinics that contain that province, something escapes me because I do not get the desired result, any help please.////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import React, { useState, useEffect } from 'react'
import Button from 'react-bootstrap/Button';
import { getClinic } from '../../api/drupalAPI'
import {Clinic} from '@icofcv/common';
import { selectClinics } from '../../actions/detailClinics'
import Form from 'react-bootstrap/Form';
export const SearchFilterClinics = () => {
const [clinicList, setClinicList] = useState<Clinic[]>([]);
const [clinicListFilteredSelect, setClinicListFilteredSelect] = useState<Clinic[>([]);
const [filterSelectClinic, setFilterSelectClinic] = useState("");
console.log(filterSelectClinic);
const fetchClinicList = async () => {
getClinic().then((response)=>{
console.log(response)
setClinicList(response);
setClinicListFilteredSelect(response)
}).catch ( (error) => {
console.error(error);
throw error;
});
}
////filter
const handleChangeSelect = e =>{
setFilterSelectClinic(e.target.value);
filterSelect(e.target.value);
}
const filterSelect=(termSearch)=>{
const resultFilterSelect = clinicList.filter((element) => {
if(element.province?.toString().toLowerCase().includes(termSearch.toLowerCase() )
){
return element;
}
});
setClinicListFilteredSelect(resultFilterSelect);
}
useEffect (() => {
fetchClinicList();
}, []);
return (
<>
<div>
<Form.Label htmlFor="text">Provincia</Form.Label>
<Form.Select aria-label="provincias" onChange={ handleChangeSelect}>
<option data-postal="00" value="todos">Todos</option>
<option data-postal="01" value={filterSelectClinic} onChange={ handleChangeSelect}>Alava/Araba</option>
<option data-postal="02" value={filterSelectClinic} onChange={ handleChangeSelect}>Albacete</option>
<option data-postal="03" value={filterSelectClinic} onChange={ handleChangeSelect}>Alicante</option>
<option data-postal="04" value={filterSelectClinic} onChange={ handleChangeSelect}>Almería</option>
<option data-postal="05" value={filterSelectClinic} onChange={ handleChangeSelect}>Avila</option>
<option data-postal="06" value={filterSelectClinic} onChange={ handleChangeSelect}>Badajoz</option>
<option data-postal="07" value={filterSelectClinic} onChange={ handleChangeSelect}>Islas Baleares</option>
<option data-postal="08" value={filterSelectClinic} onChange={ handleChangeSelect}>Barcelona</option>
<option data-postal="09" value={filterSelectClinic} onChange={ handleChangeSelect}>Burgos</option>
<option data-postal="10" value={filterSelectClinic} onChange={ handleChangeSelect}>Cáceres</option>
<option data-postal="11" value={filterSelectClinic} onChange={ handleChangeSelect}>Cádiz</option>
<option data-postal="12" value={filterSelectClinic} onChange={ handleChangeSelect}>Castellón</option>
<option data-postal="13" value={filterSelectClinic} onChange={ handleChangeSelect}>Ciudad Real</option>
<option data-postal="14" value={filterSelectClinic} onChange={ handleChangeSelect}>Córdoba</option>
<option data-postal="15" value={filterSelectClinic} onChange={ handleChangeSelect}>A Coruña/La Coruña</option>
<option data-postal="16" value={filterSelectClinic} onChange={ handleChangeSelect}>Cuenca</option>
<option data-postal="17" value={filterSelectClinic} onChange={ handleChangeSelect}>Gerona/Girona</option>
<option data-postal="18" value={filterSelectClinic} onChange={ handleChangeSelect}>Granada</option>
<option data-postal="19" value={filterSelectClinic} onChange={ handleChangeSelect}>Guadalajara</option>
<option data-postal="20" value={filterSelectClinic} onChange={ handleChangeSelect}>Gipuzkoa/Guipuzcoa</option>
<option data-postal="21" value={filterSelectClinic} onChange={ handleChangeSelect}>Huelva</option>
<option data-postal="22" value={filterSelectClinic} onChange={ handleChangeSelect}>Huesca</option>
<option data-postal="23" value={filterSelectClinic} onChange={ handleChangeSelect}>Jaen</option>
<option data-postal="24" value={filterSelectClinic} onChange={ handleChangeSelect}>León</option>
<option data-postal="25" value={filterSelectClinic} onChange={ handleChangeSelect}>Lérida/Lleida</option>
<option data-postal="26" value={filterSelectClinic} onChange={ handleChangeSelect}>La Rioja</option>
<option data-postal="27" value={filterSelectClinic} onChange={ handleChangeSelect}>Lugo</option>
<option data-postal="28" value={filterSelectClinic} onChange={ handleChangeSelect}>Madrid</option>
<option data-postal="29" value={filterSelectClinic} onChange={ handleChangeSelect}>Málaga</option>
<option data-postal="30" value={filterSelectClinic} onChange={ handleChangeSelect}>Murcia</option>
<option data-postal="31" value={filterSelectClinic} onChange={ handleChangeSelect}>Navarra</option>
<option data-postal="32" value={filterSelectClinic} onChange={ handleChangeSelect}>Orense/Ourense</option>
<option data-postal="33" value={filterSelectClinic} onChange={ handleChangeSelect}>Asturias</option>
<option data-postal="34" value={filterSelectClinic} onChange={ handleChangeSelect}>Palencia</option>
<option data-postal="35" value={filterSelectClinic} onChange={ handleChangeSelect}>Las Palmas</option>
<option data-postal="36" value={filterSelectClinic} onChange={ handleChangeSelect}>Pontevedra</option>
<option data-postal="37" value={filterSelectClinic} onChange={ handleChangeSelect}>Salamanca</option>
<option data-postal="38" value={filterSelectClinic} onChange={ handleChangeSelect}>S.C.Tenerife</option>
<option data-postal="39" value={filterSelectClinic} onChange={ handleChangeSelect}>Cantabria</option>
<option data-postal="40" value={filterSelectClinic} onChange={ handleChangeSelect}>Segovia</option>
<option data-postal="41" value={filterSelectClinic} onChange={ handleChangeSelect}>Sevilla</option>
<option data-postal="42" value={filterSelectClinic} onChange={ handleChangeSelect}>Soria</option>
<option data-postal="43" value={filterSelectClinic} onChange={ handleChangeSelect}>Tarragona</option>
<option data-postal="44" value={filterSelectClinic} onChange={ handleChangeSelect}>Teruel</option>
<option data-postal="45" value={filterSelectClinic} onChange={ handleChangeSelect}>Toledo</option>
<option data-postal="46" value={filterSelectClinic} onChange={ handleChangeSelect}>Valencia</option>
<option data-postal="47" value={filterSelectClinic} onChange={ handleChangeSelect}>Valladolid</option>
<option data-postal="48" value={filterSelectClinic} onChange={ handleChangeSelect}>Bizkaia/Vizcaya</option>
<option data-postal="49" value={filterSelectClinic} onChange={ handleChangeSelect}>Zamora</option>
<option data-postal="50" value={filterSelectClinic} onChange={ handleChangeSelect}>Zaragoza</option>
<option data-postal="51" value={filterSelectClinic} onChange={ handleChangeSelect}>Ceuta</option>
<option data-postal="52" value={filterSelectClinic} onChange={ handleChangeSelect}>Melilla</option>
</Form.Select>
<div>RESULT</div>
{
clinicListFilteredSelect.map((clinic) => (
<div>
<div>{clinic.title}</div>
<div>{clinic.propsPhone}</div>
<div>{clinic.mobile}</div>
<div>{clinic.email}</div>
<div>{clinic.province} </div>
<div>{clinic.registry}</div>
</div>
))
}
</div>
</>
)
}