diff --git a/frontend/src/components/Statistics.jsx b/frontend/src/components/Statistics.jsx index a538bef..668dce8 100644 --- a/frontend/src/components/Statistics.jsx +++ b/frontend/src/components/Statistics.jsx @@ -4,6 +4,8 @@ import LoadingOverlay from "./LoadingOverlay.jsx"; const Statistics = () => { const [transientTypes, setTransientTypes] = useState([]); + const [trainTypes, setTrainTypes] = useState([]); + const [trainStatuses, setTrainStatuses] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); @@ -13,13 +15,60 @@ const Statistics = () => { const response = await fetch("https://281bc6mcm5.execute-api.us-east-1.amazonaws.com/transient_data"); if (!response.ok) throw new Error("Network response was not ok"); - const rawData = await response.json(); + const transientData = await response.json(); - const transientTypes = rawData - .map((item) => item.objectType) - .map((type) => type.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')); + let transientTypes = []; + let trainTypes = []; + let trainStatuses = []; + + for (const item of transientData) { + transientTypes.push(item.objectType.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')); + + switch (item.objectType) { + case "IrishRailTrain": + let trainType; + switch (item.trainType) { + case "M": + trainType = "Mainline"; + break; + case "S": + trainType = "Suburban"; + break; + case "D": + trainType = "DART"; + break; + default: + trainType = "Unknown"; + } + trainTypes.push(trainType); + + let trainStatus; + switch (item.trainStatus) { + case "R": + trainStatus = "Running"; + break; + + case "T": + trainStatus = "Terminated"; + break; + + case "N": + trainStatus = "Not yet running"; + break; + + default: + trainStatus = "Unknown"; + } + trainStatuses.push(trainStatus); + + break; + } + } setTransientTypes(transientTypes); + setTrainStatuses(trainStatuses); + setTrainTypes(trainTypes); + } catch (err) { setError("Failed to fetch data"); } finally { @@ -49,18 +98,27 @@ const Statistics = () => { >
No data available
- )} +