import React from 'react'; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, Legend, } from 'recharts'; import { SiteDetails } from '@/types/SiteData'; interface MonthlyBarChartProps { siteData: SiteDetails | null; } const consumptionColor = '#003049'; const generationColor = '#669bbc'; // Month names for X-axis labels const MONTHS = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ]; const MonthlyBarChart: React.FC = ({ siteData }) => { const chartData = React.useMemo(() => { if ( !siteData || siteData.consumptionData.length === 0 || siteData.generationData.length === 0 ) { return []; } // Initialize totals const monthlyData = Array.from({ length: 12 }, (_, month) => ({ month: MONTHS[month], consumption: 0, generation: 0, })); // Group daily data into months (assume data is in order from Jan 1 to Dec 31) // Group daily data into months (assume data is in order from Jan 1 to Dec 31) for (let i = 0; i < siteData.consumptionData.length; i++) { const monthIndex = Math.floor(i / 30.42); // Rough approximation if (monthIndex < 12) { monthlyData[monthIndex].consumption += siteData.consumptionData[i]; monthlyData[monthIndex].generation += siteData.generationData[i]; } } // ✅ Only return the last 6 months return monthlyData.slice(-6); }, [siteData]); if (!siteData || chartData.length === 0) { return (

Monthly Energy Yield

No data available for chart. Please select a site.

); } return (

Monthly Energy Yield

); }; export default MonthlyBarChart;