diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index 900d229..f0c4e2d 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -1,12 +1,15 @@
import React, { useState, useEffect, useMemo } from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
+import Navbar from "./components/Navbar";
+import Statistics from "./components/Statistics.jsx";
+
import Sidebar from "./components/Sidebar";
import MapComponent from "./components/MapComponent";
import LoadingOverlay from "./components/LoadingOverlay";
+
import LuasPopup from "./components/LuasPopup";
-import Navbar from "./components/Navbar";
-import Statistics from "./components/Statistics.jsx";
+import TrainStationPopup from "./components/TrainStationPopup";
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";
@@ -183,14 +186,7 @@ function App() {
case "IrishRailStation":
objectTitle = item.trainStationDesc + " Train Station";
popupContent = (
-
-
{objectTitle}
-
- - Train Station Name: {item.trainStationDesc}
- - Train Station ID: {item.trainStationID}
- - Train Station Code: {item.trainStationCode}
-
-
+
);
markerText = item.trainStationCode + " " + item.trainStationDesc;
diff --git a/frontend/src/components/LuasPopup.jsx b/frontend/src/components/LuasPopup.jsx
index a6caf58..cbba62e 100644
--- a/frontend/src/components/LuasPopup.jsx
+++ b/frontend/src/components/LuasPopup.jsx
@@ -17,10 +17,6 @@ const LuasPopup = ({ item, objectTitle, luasLine }) => {
// Ensure 'tram' is an array, if it's not, convert it into an array
const trams = Array.isArray(direction.tram) ? direction.tram : [direction.tram];
- // const tramDetails = trams.map(tram =>
- // `Destination: ${tram["@destination"]}, Arrival: ${tram["@dueMins"]} mins`
- // ).join("
");
-
let tramDetails = "";
trams.forEach(tram => {
if (tram["@dueMins"] === "DUE") {
diff --git a/frontend/src/components/TrainStationPopup.jsx b/frontend/src/components/TrainStationPopup.jsx
new file mode 100644
index 0000000..d2345f4
--- /dev/null
+++ b/frontend/src/components/TrainStationPopup.jsx
@@ -0,0 +1,61 @@
+import React, { useState } from "react";
+
+const TrainStationPopup = ({ item, objectTitle }) => {
+ const [trainInfo, setTrainInfo] = useState("");
+
+ const fetchTrainData = async () => {
+ try {
+ const response = await fetch(`https://kkz92ft0ad.execute-api.us-east-1.amazonaws.com/return_station_data?stationCode=${item.trainStationCode}`);
+ const data = await response.json();
+
+ // Ensure objStationData is always an array
+ let trainDataArray = Array.isArray(data.ArrayOfObjStationData.objStationData)
+ ? data.ArrayOfObjStationData.objStationData
+ : [data.ArrayOfObjStationData.objStationData];
+
+ trainDataArray = trainDataArray.slice(0, 3); // Only show the first 3 trains
+
+ const trainData = trainDataArray.map(train => ({
+ trainCode: train.Traincode,
+ origin: train.Origin,
+ destination: train.Destination,
+ dueIn: train.Duein,
+ late: train.Late,
+ status: train.Status,
+ lastLocation: train.Lastlocation,
+ }));
+
+ const trainInfoHtml = "Trains due in next 90 minutes:
"
+ + trainData.map(train => `
+ Train Code: ${train.trainCode}
+ Origin: ${train.origin}
+ Destination: ${train.destination}
+ Due In: ${train.dueIn} minutes
+ Punctuality: ${train.late > 0 ? `${train.late} minute${train.late === 1 ? "" : "s"} late` : train.late < 0 ? `${Math.abs(train.late)} minute${Math.abs(train.late) === 1 ? "" : "s"} early` : "On time"}
+ Status: ${train.status}
+ Last Location: ${train.lastLocation || "N/A"}
+ `).join("");
+
+ setTrainInfo(trainInfoHtml);
+ } catch (error) {
+ setTrainInfo("Failed to fetch train data");
+ }
+ };
+
+ return (
+
+
{objectTitle}
+
+ - Train Station Name: {item.trainStationDesc}
+ - Train Station ID: {item.trainStationID}
+ - Train Station Code: {item.trainStationCode}
+
+
+
+
+ );
+};
+
+export default TrainStationPopup;
\ No newline at end of file