diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 8065e77..9b68301 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,19 +1,15 @@ import React, { useState } from "react"; import { MapContainer, TileLayer, Marker, Popup } from "react-leaflet"; import "leaflet/dist/leaflet.css"; +import MarkerClusterGroup from "react-leaflet-markercluster"; import L, { Icon } from "leaflet"; -// icons -import busStationIconURL from "../src/assets/icons/bus-station.png"; -import busIconURL from "../src/assets/icons/bus.png"; +import "leaflet.markercluster/dist/MarkerCluster.css"; +import "leaflet.markercluster/dist/MarkerCluster.Default.css"; + +// Icons import trainStationIconURL from "../src/assets/icons/train-station.png"; import trainIconURL from "../src/assets/icons/train.png"; -import trainLateIconURL from "../src/assets/icons/train_late.png"; -import trainNotRunningIconURL from "../src/assets/icons/train_notrunning.png"; -import trainOntimeIconURL from "../src/assets/icons/train_ontime.png"; -import tramStationIconURL from "../src/assets/icons/tram-station.png"; - - // Fix marker icon issue with Leaflet delete L.Icon.Default.prototype._getIconUrl; @@ -28,7 +24,7 @@ icons.set( "IrishRailStation", new Icon({ iconUrl: trainStationIconURL, - iconSize: [38, 38], + iconSize: [24, 24], }) ); @@ -36,22 +32,23 @@ icons.set( "IrishRailTrain", new Icon({ iconUrl: trainIconURL, - iconSize: [38, 38], + iconSize: [24, 24], }) ); -const TRAINSIENT_DATA_API = "https://281bc6mcm5.execute-api.us-east-1.amazonaws.com/transient_data" +const TRANSIENT_DATA_API = "https://281bc6mcm5.execute-api.us-east-1.amazonaws.com/transient_data"; +const PERMANENT_DATA_API = "https://a6y312dpuj.execute-api.us-east-1.amazonaws.com/permanent_data"; const dataSources = [ - { id: "IrishRailTrains", name: "Irish Rail Trains", url: TRAINSIENT_DATA_API + "?objectType=IrishRailTrain" }, - { id: "source2", name: "Data Source 2", url: "https://api.example.com/source2" }, - { id: "source3", name: "Data Source 3", url: "https://api.example.com/source3" }, + { id: "IrishRailTrains", name: "Irish Rail Trains", url: TRANSIENT_DATA_API + "?objectType=IrishRailTrain" }, + { id: "IrishRailStations", name: "Irish Rail Stations", url: PERMANENT_DATA_API + "?objectType=IrishRailStation" }, ]; function App() { const [selectedSources, setSelectedSources] = useState([]); const [markers, setMarkers] = useState([]); const [loading, setLoading] = useState(false); + const [clusteringEnabled, setClusteringEnabled] = useState(true); const handleCheckboxChange = (id) => { setSelectedSources((prev) => @@ -84,50 +81,67 @@ function App() { }; return ( - <> -