import { createContext, useContext, useState, useEffect } from 'react'; import { fetchBenchmarks, fetchResults, fetchEval, fetchNlg } from '../api'; const AppContext = createContext(); export function AppProvider({ children }) { const [benchmarks, setBenchmarks] = useState([]); const [currentBM, setCurrentBM] = useState('WTI'); const [months, setMonths] = useState([]); const [currentMonth, setCurrentMonth] = useState(0); const [evalData, setEvalData] = useState({}); const [nlgData, setNlgData] = useState({}); const [loading, setLoading] = useState(true); // Load benchmarks on mount useEffect(() => { fetchBenchmarks().then(bms => { setBenchmarks(bms); if (bms.length > 0) setCurrentBM(bms[0]); }).catch(() => setBenchmarks(['WTI'])); }, []); // Load data when benchmark changes useEffect(() => { if (!currentBM) return; setLoading(true); Promise.all([ fetchResults(currentBM), fetchEval(currentBM), fetchNlg(currentBM), ]).then(([results, ev, nlg]) => { setMonths(results); setCurrentMonth(results.length - 1); setEvalData(ev); setNlgData(nlg); setLoading(false); }).catch(err => { console.error('Failed to load data:', err); setLoading(false); }); }, [currentBM]); const current = months[currentMonth] || {}; const prev = months[currentMonth - 1] || current; return ( {children} ); } export function useApp() { return useContext(AppContext); }