import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { ecoSpireIntegration } from '../utils/ecoSpireIntegration';
import { calculateCarbonFootprint, generateSampleCarbonData } from '../utils/carbonFootprintTracker';
import { analyzeAirQuality } from '../utils/airQualityAnalysis';
import { systemHealthChecker } from '../utils/systemHealth';
import { testSuite } from '../utils/testSuite';
function Track() {
const { t } = useTranslation();
const [activities, setActivities] = useState([]);
const [newActivity, setNewActivity] = useState({ type: 'transport', description: '', co2: 0 });
const [goals, setGoals] = useState({ daily: 10, weekly: 70, monthly: 300 });
const [carbonFootprint, setCarbonFootprint] = useState(null);
const [airQuality, setAirQuality] = useState(null);
const [systemHealth, setSystemHealth] = useState(null);
const [isLoading, setIsLoading] = useState(false);
const [activeTab, setActiveTab] = useState('tracker');
useEffect(() => {
const savedActivities = localStorage.getItem('ecospire-activities');
const savedGoals = localStorage.getItem('ecospire-goals');
if (savedActivities) {
setActivities(JSON.parse(savedActivities));
}
if (savedGoals) {
setGoals(JSON.parse(savedGoals));
}
// Initialize system
initializeSystem();
}, []);
useEffect(() => {
localStorage.setItem('ecospire-activities', JSON.stringify(activities));
}, [activities]);
const initializeSystem = async () => {
try {
// Initialize EcoSpire Integration Hub
await ecoSpireIntegration.initializeTools();
// Get system health
const health = await systemHealthChecker.performHealthCheck();
setSystemHealth(health);
// Load sample carbon footprint data
const sampleData = generateSampleCarbonData();
const footprint = await calculateCarbonFootprint(sampleData);
setCarbonFootprint(footprint);
// Get air quality data
const airData = await analyzeAirQuality(null, 'Urban Area');
setAirQuality(airData);
} catch (error) {
console.error('System initialization failed:', error);
}
};
const addActivity = () => {
if (newActivity.description) {
const activityWithTimestamp = {
...newActivity,
id: Date.now(),
timestamp: Date.now()
};
setActivities([...activities, activityWithTimestamp]);
setNewActivity({ type: 'transport', description: '', co2: 0 });
}
};
const deleteActivity = (id) => {
setActivities(activities.filter(activity => activity.id !== id));
};
const totalCO2 = activities.reduce((sum, activity) => sum + activity.co2, 0);
const runSystemTest = async () => {
setIsLoading(true);
try {
const testResults = await testSuite.runAllTests();
alert(t('track.systemTestResults', { passed: testResults.summary.passed, failed: testResults.summary.failed, warnings: testResults.summary.warnings, successRate: testResults.summary.successRate }));
} catch (error) {
alert(t('track.systemTestFailed', { message: error.message }));
} finally {
setIsLoading(false);
}
};
const runPerformanceAnalysis = async () => {
setIsLoading(true);
try {
const report = await ecoSpireIntegration.runSystemTest();
console.log('Performance Analysis:', report);
alert(t('track.performanceAnalysisComplete', { overallStatus: report.overallStatus, toolCount: Object.keys(report.toolStatus).length, successRate: report.performanceMetrics.successRate.toFixed(1) }));
} catch (error) {
alert(t('track.performanceAnalysisFailed', { message: error.message }));
} finally {
setIsLoading(false);
}
};
return (
{t('track.title')}
{t('track.subtitle')}
{/* System Status */}
{systemHealth && (
{t('track.systemStatus', { status: systemHealth.overall.toUpperCase(), score: systemHealth.overallScore })}
)}
{/* Navigation Tabs */}
{[
{ id: 'tracker', label: t('track.tabs.tracker'), icon: '📊' },
{ id: 'dashboard', label: t('track.tabs.dashboard'), icon: '🌍' },
{ id: 'system', label: t('track.tabs.system'), icon: '⚙️' }
].map(tab => (
))}
{/* Carbon Tracker Tab */}
{activeTab === 'tracker' && (
<>
{t('track.addNewActivity')}
setNewActivity({ ...newActivity, description: e.target.value })}
style={{ width: '100%', padding: '10px', marginBottom: '10px', borderRadius: '5px', border: '1px solid #ddd' }}
/>
setNewActivity({ ...newActivity, co2: parseFloat(e.target.value) || 0 })}
style={{ width: '100%', padding: '10px', marginBottom: '15px', borderRadius: '5px', border: '1px solid #ddd' }}
/>
{t('track.todaysImpact')}
10 ? '#f44336' : '#4CAF50' }}>
{totalCO2.toFixed(1)}
{t('track.kgCo2Today')}
{t('track.treeEquivalent', { count: (totalCO2 / 22).toFixed(1) })}
>
)}
{/* Environmental Dashboard Tab */}
{activeTab === 'dashboard' && (
{/* Carbon Footprint Analysis */}
{carbonFootprint && (
{t('track.carbonFootprintAnalysis')}
{carbonFootprint.total.toFixed(1)}
{t('track.kgCo2eDaily')}
{carbonFootprint.comparison.category}
{t('track.annualProjection')}: {carbonFootprint.comparison.annualProjection} kg CO₂e
{t('track.vsGlobalAverage')}: {carbonFootprint.comparison.vsGlobalAverage.value}% {carbonFootprint.comparison.vsGlobalAverage.message}
{t('track.confidence')}: {carbonFootprint.confidence}%
)}
{/* Air Quality Status */}
{airQuality && (
{t('track.airQualityStatus')}
{airQuality.overallAQI}
{t('track.aqiIndex')}
{airQuality.category}
{t('track.dominantPollutant')}: {airQuality.dominantPollutant?.toUpperCase()}
{t('track.healthAdvice')}: {airQuality.healthRecommendations?.general}
{t('track.confidence')}: {airQuality.confidence}%
)}
{/* System Performance */}
{t('track.systemPerformance')}
{systemHealth?.overallScore || 0}%
{t('track.systemHealth')}
{systemHealth?.overall?.toUpperCase() || t('track.unknown')}
{t('track.components')}: {Object.keys(systemHealth?.components || {}).length}
{t('track.errors')}: {systemHealth?.errors?.length || 0}
{t('track.warnings')}: {systemHealth?.warnings?.length || 0}
{/* Quick Actions */}
{t('track.quickActions')}
)}
{/* System Control Tab */}
{activeTab === 'system' && (
{t('track.systemControlPanel')}
{/* Tool Status */}
{t('track.analysisToolsStatus')}
{[
{ name: t('track.tools.waterQuality'), icon: '💧', status: 'active', accuracy: '89.3%' },
{ name: t('track.tools.biodiversity'), icon: '🦜', status: 'active', accuracy: '82.1%' },
{ name: t('track.tools.airQuality'), icon: '🌬️', status: 'active', accuracy: '85.0%' },
{ name: t('track.tools.carbonTracker'), icon: '🌱', status: 'active', accuracy: '90.0%' },
{ name: t('track.tools.soilHealth'), icon: '🌱', status: 'active', accuracy: '78.5%' },
{ name: t('track.tools.climateImpact'), icon: '🌡️', status: 'active', accuracy: '85.7%' }
].map(tool => (
{tool.icon}
{tool.name}
{t(`track.toolStatus.${tool.status}`)}
{t('track.accuracy', { value: tool.accuracy })}
))}
{/* System Metrics */}
{t('track.systemMetrics')}
6
{t('track.activeTools')}
2.1s
{t('track.avgResponse')}
0
{t('track.criticalErrors')}
{/* Advanced Controls */}
{t('track.advancedControls')}
)}
{/* Recent Activities - Only show in tracker tab */}
{activeTab === 'tracker' && (
{t('track.recentActivities')}
{activities.length === 0 ? (
{t('track.noActivities')}
) : (
{activities
.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))
.map(activity => (
{activity.type === 'transport' ? '🚗' : activity.type === 'energy' ? '⚡' : activity.type === 'food' ? '🍽️' : '🗑️'}
{activity.description}
{activity.timestamp ? new Date(activity.timestamp).toLocaleString() : t('track.today')}
{t('track.kgCo2', { value: activity.co2 })}
))}
)}
)}
{/* Footer */}
{t('track.footer.title')}
{t('track.footer.subtitle')}
{t('track.footer.status', { date: new Date().toLocaleString() })}
);
}
export default Track;