diff --git a/frontend/src/components/Statistics.jsx b/frontend/src/components/Statistics.jsx index 48ba782..5b8af65 100644 --- a/frontend/src/components/Statistics.jsx +++ b/frontend/src/components/Statistics.jsx @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import ObjectTypeProportionPieChart from "./charts/ObjectTypeProportionPieChart"; import LoadingOverlay from "./LoadingOverlay.jsx"; import HeatmapContainer from "./charts/HeatmapContainer"; +import PunctualityLineChart from "./charts/PunctualityLineChart.jsx"; const Statistics = () => { const [transientTypes, setTransientTypes] = useState([]); @@ -9,8 +10,11 @@ const Statistics = () => { const [trainStatuses, setTrainStatuses] = useState([]); const [trainLatenesses, setTrainLatenesses] = useState([]); const [coordinates, setCoordinates] = useState([]); + const [punctualityData, setPunctualityData] = useState([]); + const [loading, setLoading] = useState(true); const [heatmapLoading, setHeatmapLoading] = useState(true); + const [punctualityLoading, setPunctualityLoading] = useState(true); const [error, setError] = useState(""); // Fetch transient data separately @@ -68,6 +72,30 @@ const Statistics = () => { fetchCoordinates(); }, []); + // Fetch punctuality data + useEffect(() => { + const fetchPunctualityData = async () => { + try { + const response = await fetch("https://z3o9pdmy8g.execute-api.us-east-1.amazonaws.com/return_punctuality_by_timestamp"); + if (!response.ok) throw new Error("Network response was not ok"); + const data = await response.json(); + + const formattedData = data.map(item => ({ + time: new Date(parseInt(item.timestamp) * 1000).toLocaleString(), + punctuality: parseFloat(item.average_punctuality) + })); + + setPunctualityData(formattedData); + } catch (error) { + setError("Failed to fetch punctuality data"); + } finally { + setPunctualityLoading(false); + } + }; + + fetchPunctualityData(); + }, []); + if (loading) return ; if (error) return

{error}

; @@ -120,10 +148,19 @@ const Statistics = () => {
+ +
+ {punctualityLoading ? ( +

Loading Punctuality Data...

+ ) : ( + + )} +
); diff --git a/frontend/src/components/charts/PunctualityLineChart.jsx b/frontend/src/components/charts/PunctualityLineChart.jsx new file mode 100644 index 0000000..260439c --- /dev/null +++ b/frontend/src/components/charts/PunctualityLineChart.jsx @@ -0,0 +1,28 @@ +import React from "react"; +import { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid } from "recharts"; + +const PunctualityLineChart = ({ data }) => { + return ( +
+

Average Punctuality Over Time

+ + + + + + + + + +
+ ); +}; + +export default PunctualityLineChart;