import React from 'react'; import format from 'date-fns/format'; import { LineChart, XAxis, YAxis, Line, CartesianGrid } from 'recharts'; import { lighten } from 'polished'; import { Countries, CountryCases, Data } from '../types'; import { getCases } from '../utils/get-cases'; import { processCases } from '../utils/regression'; const margin = { top: 0, right: 0, bottom: 0, left: 0, }; const dateTickFormatter = (date: Date): string => { return format(new Date(date), 'LLL do'); // 'Do MMM'); }; type Props = { countries: Countries; }; const GraphCases: React.FC = ({ countries }) => { const [showCumulative, setCumulative] = React.useState(true); const toggleCumulative = React.useCallback(() => setCumulative(last => !last), []); const countryCases = React.useMemo( () => countries.map(({ country }) => ({ country, dataSource: getCases(country), })), [countries], ); const data = React.useMemo(() => processCases(countryCases, showCumulative), [ countryCases, showCumulative, ]); if (!data.length) { return (

No data!

); } return (
<> {countries.map(({ country }, index) => (

Country: {country}

Source:{' '} {countryCases[index].dataSource.source}

))}

Cumulative cases

{countries.map(({ country, color }) => ( ))} {countries.map(({ country, color }) => ( ))}
); }; export default GraphCases;