import { useEffect, useMemo, useState } from "react"; import StopDataProvider, { Stop } from "../data/StopDataProvider"; import StopItem from "../components/StopItem"; import Fuse from "fuse.js"; const placeholders = [ "Urzaiz", "Gran Vía", "Castelao", "García Barbón", "Valladares", "Florida", "Pizarro", "Estrada Madrid", "Sanjurjo Badía" ]; export function StopList() { const [data, setData] = useState(null) const [searchResults, setSearchResults] = useState(null); useEffect(() => { StopDataProvider.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 = StopDataProvider.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...

const randomPlaceholder = placeholders[Math.floor(Math.random() * placeholders.length)]; 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) => ( ))}
) }