import { useEffect, useMemo, useState } from "react"; import { Stop, StopDataProvider } from "../data/StopDataProvider"; import StopItem from "../components/StopItem"; import Fuse from "fuse.js"; const sdp = new StopDataProvider(); export function StopList() { const [data, setData] = useState(null) const [searchResults, setSearchResults] = useState(null); useEffect(() => { sdp.getStops().then((stops: Stop[]) => setData(stops)) }, []); const handleStopSearch = (event: React.ChangeEvent) => { const stopName = event.target.value; if (data) { const fuse = new Fuse(data, { keys: ['name'], threshold: 0.3 }); const results = fuse.search(stopName).map(result => result.item); setSearchResults(results); } } const favouritedStops = useMemo(() => { return data?.filter(stop => stop.favourite) ?? [] }, [data]) const recentStops = useMemo(() => { const recent = sdp.getRecent(); if (recent.length === 0) return null; return recent.map(stopId => data?.find(stop => stop.stopId === stopId) as Stop).reverse(); }, [data]) if (data === null) return

Loading...

return (

UrbanoVigo Web

{searchResults && searchResults.length > 0 && (

Resultados de la búsqueda

    {searchResults.map((stop: Stop) => ( ))}
)}

Paradas favoritas

{favouritedStops?.length === 0 && (

Accede a una parada y márcala como favorita para verla aquí.

)}
    {favouritedStops?.sort((a, b) => a.stopId - b.stopId).map((stop: Stop) => ( ))}
{recentStops && recentStops.length > 0 && (

Recientes

    {recentStops.map((stop: Stop) => ( ))}
)}

Paradas

    {data?.sort((a, b) => a.stopId - b.stopId).map((stop: Stop) => ( ))}
) }