From 340865ad234f974ec4c0afcbfb6ff06f50a11b2f Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Sun, 20 Apr 2025 19:07:29 +0200 Subject: Load stops from local data files --- src/pages/Estimates.tsx | 12 +++++------- src/pages/Map.tsx | 16 +++++++++++----- src/pages/StopList.tsx | 8 +++----- 3 files changed, 19 insertions(+), 17 deletions(-) (limited to 'src/pages') diff --git a/src/pages/Estimates.tsx b/src/pages/Estimates.tsx index 900ffc5..90745da 100644 --- a/src/pages/Estimates.tsx +++ b/src/pages/Estimates.tsx @@ -1,6 +1,6 @@ import { JSX, useEffect, useState } from "react"; import { useParams } from "react-router"; -import { StopDataProvider } from "../data/StopDataProvider"; +import StopDataProvider from "../data/StopDataProvider"; import { Star } from 'lucide-react'; import "../styles/Estimates.css"; import { RegularTable } from "../components/RegularTable"; @@ -22,8 +22,6 @@ export interface StopDetails { }[] } -const sdp = new StopDataProvider(); - const loadData = async (stopId: string) => { const resp = await fetch(`/api/GetStopEstimates?id=${stopId}`); return await resp.json(); @@ -44,20 +42,20 @@ export function Estimates(): JSX.Element { }) - sdp.pushRecent(parseInt(params.stopId ?? "")); + StopDataProvider.pushRecent(parseInt(params.stopId ?? "")); setFavourited( - sdp.isFavourite(parseInt(params.stopId ?? "")) + StopDataProvider.isFavourite(parseInt(params.stopId ?? "")) ); }, [params.stopId]); const toggleFavourite = () => { if (favourited) { - sdp.removeFavourite(parseInt(params.stopId ?? "")); + StopDataProvider.removeFavourite(parseInt(params.stopId ?? "")); setFavourited(false); } else { - sdp.addFavourite(parseInt(params.stopId ?? "")); + StopDataProvider.addFavourite(parseInt(params.stopId ?? "")); setFavourited(true); } } diff --git a/src/pages/Map.tsx b/src/pages/Map.tsx index 9abb7a3..af95bf9 100644 --- a/src/pages/Map.tsx +++ b/src/pages/Map.tsx @@ -1,4 +1,4 @@ -import { StopDataProvider, Stop } from "../data/StopDataProvider"; +import StopDataProvider, { Stop } from "../data/StopDataProvider"; import 'leaflet/dist/leaflet.css' import 'react-leaflet-markercluster/styles' @@ -20,8 +20,6 @@ const icon = new Icon({ shadowSize: [41, 41] }); -const sdp = new StopDataProvider(); - // Componente auxiliar para detectar cambios en el mapa const MapEventHandler = () => { const { updateMapState } = useApp(); @@ -43,9 +41,17 @@ export function StopMap() { const { mapState } = useApp(); useEffect(() => { - sdp.getStops().then((stops) => { setStops(stops); }); + StopDataProvider.getStops().then((stops) => { setStops(stops); }); }, []); + const getDisplayName = (stop: Stop): string => { + if (typeof stop.name === 'string') { + return stop.name; + } + + return stop.name.intersect || stop.name.original; + } + return ( ( - {stop.name} + {getDisplayName(stop)}
{stop.lines.map((line) => ( diff --git a/src/pages/StopList.tsx b/src/pages/StopList.tsx index 72cccda..449ae84 100644 --- a/src/pages/StopList.tsx +++ b/src/pages/StopList.tsx @@ -1,10 +1,8 @@ import { useEffect, useMemo, useState } from "react"; -import { Stop, StopDataProvider } from "../data/StopDataProvider"; +import StopDataProvider, { Stop } from "../data/StopDataProvider"; import StopItem from "../components/StopItem"; import Fuse from "fuse.js"; -const sdp = new StopDataProvider(); - const placeholders = [ "Urzaiz", "Gran Vía", @@ -22,7 +20,7 @@ export function StopList() { const [searchResults, setSearchResults] = useState(null); useEffect(() => { - sdp.getStops().then((stops: Stop[]) => setData(stops)) + StopDataProvider.getStops().then((stops: Stop[]) => setData(stops)) }, []); const handleStopSearch = (event: React.ChangeEvent) => { @@ -39,7 +37,7 @@ export function StopList() { }, [data]) const recentStops = useMemo(() => { - const recent = sdp.getRecent(); + const recent = StopDataProvider.getRecent(); if (recent.length === 0) return null; -- cgit v1.3