From e4a737f43e45f02e80c06346cea73756f83854f3 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero <94913521+arielcostas@users.noreply.github.com> Date: Mon, 3 Mar 2025 21:13:28 +0100 Subject: Implement map page --- src/pages/Map.tsx | 103 ++++++++++++++++++++---------------------------------- 1 file changed, 37 insertions(+), 66 deletions(-) (limited to 'src/pages/Map.tsx') diff --git a/src/pages/Map.tsx b/src/pages/Map.tsx index dbf5b9f..4d89ae0 100644 --- a/src/pages/Map.tsx +++ b/src/pages/Map.tsx @@ -1,76 +1,47 @@ -import { useEffect, useMemo, useState } from "react"; -import { Link, useNavigate } from "react-router"; -import { Stop, StopDataProvider } from "../data/StopDataProvider"; -import LineIcon from "../components/LineIcon"; +import { StopDataProvider, Stop } from "../data/StopDataProvider"; + +import 'leaflet/dist/leaflet.css' +import 'react-leaflet-markercluster/styles' + +import { useEffect, useState } from 'react'; +import LineIcon from '../components/LineIcon'; +import { Link } from 'react-router'; +import { MapContainer } from "react-leaflet/MapContainer"; +import { TileLayer } from "react-leaflet/TileLayer"; +import { Marker } from "react-leaflet/Marker"; +import { Popup } from "react-leaflet/Popup"; +import MarkerClusterGroup from "react-leaflet-markercluster"; const sdp = new StopDataProvider(); export function StopMap() { - const [data, setData] = useState(null) - const navigate = useNavigate(); + const [stops, setStops] = useState([]); + const position = [42.229188855975046, -8.72246955783102] useEffect(() => { - sdp.getStops().then((stops: Stop[]) => setData(stops)) + sdp.getStops().then((stops) => { setStops(stops); }); }, []); - const handleStopSearch = async (event: React.FormEvent) => { - event.preventDefault() - - const stopId = (event.target as HTMLFormElement).stopId.value - const searchNumber = parseInt(stopId) - if (data?.find(stop => stop.stopId === searchNumber)) { - navigate(`/estimates/${searchNumber}`) - } else { - alert("Parada no encontrada") - } - } - - if (data === null) return

Loading...

- return ( -
-

Map View

- -
- {/* Map placeholder - in a real implementation, this would be a map component */} -
-

Map will be displayed here

-
-
- -
-
- - -
- - -
- -
-

Nearby Stops

-
    - {data?.slice(0, 5).map((stop: Stop) => ( -
  • - - ({stop.stopId}) {stop.name} -
    - {stop.lines?.map(line => )} -
    - -
  • - ))} -
-
-
- ) + + + + {stops.map((stop) => ( + + + {stop.name} +
+ {stop.lines.map((line) => ( + + ))} +
+
+ ))} +
+ +
+ ); } -- cgit v1.3