import React, { useState, useEffect } from "react"; import ObjectTypeProportionPieChart from "./charts/ObjectTypeProportionPieChart"; import LoadingOverlay from "./LoadingOverlay.jsx"; import HeatmapContainer from "./charts/HeatmapContainer"; const Statistics = () => { const [transientTypes, setTransientTypes] = useState([]); const [trainTypes, setTrainTypes] = useState([]); const [trainStatuses, setTrainStatuses] = useState([]); const [trainLatenesses, setTrainLatenesses] = useState([]); const [coordinates, setCoordinates] = useState([]); const [loading, setLoading] = useState(true); const [heatmapLoading, setHeatmapLoading] = useState(true); const [error, setError] = useState(""); // Fetch transient data separately useEffect(() => { const fetchTransientData = async () => { try { const transientResponse = await fetch("https://281bc6mcm5.execute-api.us-east-1.amazonaws.com/transient_data"); if (!transientResponse.ok) throw new Error("Network response was not ok"); const transientData = await transientResponse.json(); let transientTypes = []; let trainTypes = []; let trainStatuses = []; let trainLatenesses = []; 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')); if (item.objectType === "IrishRailTrain") { trainTypes.push(item.trainTypeFull); trainStatuses.push(item.trainStatusFull); trainLatenesses.push(item.trainPunctualityStatus); } } setTransientTypes(transientTypes); setTrainTypes(trainTypes); setTrainStatuses(trainStatuses); setTrainLatenesses(trainLatenesses); } catch (err) { setError("Failed to fetch transient data"); } finally { setLoading(false); } }; fetchTransientData(); }, []); // Fetch heatmap coordinates separately useEffect(() => { const fetchCoordinates = async () => { try { const coordsResponse = await fetch("https://kc0re7ep0b.execute-api.us-east-1.amazonaws.com/return_all_coordinates"); if (!coordsResponse.ok) throw new Error("Network response was not ok"); const coordsData = await coordsResponse.json(); setCoordinates(coordsData["coordinates"]); } catch (err) { setError("Failed to fetch heatmap data"); } finally { setHeatmapLoading(false); } }; fetchCoordinates(); }, []); if (loading) return ; if (error) return

{error}

; return (
{heatmapLoading ? (

Loading Heatmap...

) : ( )}
); }; export default Statistics;