How can I filter by selector?

Viewed 18

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>

                          
                </>
            )
}
0 Answers
Related