import React from 'react'; function Analytics({ activities, goals }) { // Calculate various analytics const calculateAnalytics = () => { if (activities.length === 0) return null; const now = new Date(); const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000); const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); // Filter activities by time period const last30Days = activities.filter(activity => new Date(activity.timestamp || Date.now()) >= thirtyDaysAgo ); const last7Days = activities.filter(activity => new Date(activity.timestamp || Date.now()) >= sevenDaysAgo ); // Calculate totals by category const categoryTotals = activities.reduce((acc, activity) => { acc[activity.type] = (acc[activity.type] || 0) + activity.co2; return acc; }, {}); // Calculate monthly trend const monthlyData = []; for (let i = 29; i >= 0; i--) { const date = new Date(now.getTime() - i * 24 * 60 * 60 * 1000); const dayActivities = activities.filter(activity => { const activityDate = new Date(activity.timestamp || Date.now()); return activityDate.toDateString() === date.toDateString(); }); const dayTotal = dayActivities.reduce((sum, activity) => sum + activity.co2, 0); monthlyData.push({ date: date.getDate(), co2: dayTotal, day: date.toLocaleDateString('en-US', { weekday: 'short' }) }); } // Calculate averages const dailyAverage = last30Days.reduce((sum, activity) => sum + activity.co2, 0) / 30; const weeklyAverage = last7Days.reduce((sum, activity) => sum + activity.co2, 0) / 7; // Calculate improvement const firstHalf = last30Days.slice(0, 15).reduce((sum, activity) => sum + activity.co2, 0) / 15; const secondHalf = last30Days.slice(15).reduce((sum, activity) => sum + activity.co2, 0) / 15; const improvement = ((firstHalf - secondHalf) / firstHalf) * 100; return { categoryTotals, monthlyData, dailyAverage, weeklyAverage, improvement, totalActivities: activities.length, totalCO2: activities.reduce((sum, activity) => sum + activity.co2, 0), last30DaysCO2: last30Days.reduce((sum, activity) => sum + activity.co2, 0), last7DaysCO2: last7Days.reduce((sum, activity) => sum + activity.co2, 0) }; }; const analytics = calculateAnalytics(); if (!analytics) { return (

📊 Analytics

Start tracking activities to see your analytics!

); } const categoryColors = { transport: '#2196F3', energy: '#FF9800', food: '#4CAF50', waste: '#9C27B0' }; const categoryIcons = { transport: '🚗', energy: '⚡', food: '🍽️', waste: '🗑️' }; return (

📊 Your Environmental Analytics

{/* Key Metrics */}
{analytics.totalCO2.toFixed(1)}
Total CO₂ (kg)
{analytics.dailyAverage.toFixed(1)}
Daily Average
0 ? '#4CAF50' : '#f44336', fontWeight: 'bold' }}> {analytics.improvement > 0 ? '-' : '+'}{Math.abs(analytics.improvement).toFixed(1)}%
30-Day Trend
{analytics.totalActivities}
Activities Logged
{/* Category Breakdown */}

🎯 Impact by Category

{Object.entries(analytics.categoryTotals).map(([category, total]) => (
{categoryIcons[category]}
{category} {total.toFixed(1)} kg CO₂
{((total / analytics.totalCO2) * 100).toFixed(1)}% of total impact
))}
{/* Environmental Impact Comparison */}

🌍 Your Environmental Impact

🌳
{(analytics.totalCO2 / 22).toFixed(1)} trees
needed to offset
🚗
{(analytics.totalCO2 / 0.21).toFixed(0)} km
car driving equivalent
{(analytics.totalCO2 / 0.5).toFixed(0)} kWh
electricity equivalent
); } export default Analytics;