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
{error}
; return (Loading Heatmap...
) : (