import React, { FC } from 'react'; import subHours from 'date-fns/subHours'; import subDays from 'date-fns/subDays'; import subMonths from 'date-fns/subMonths'; import formatDate from 'date-fns/format'; import { AreaChart, Area, XAxis, YAxis, CartesianGrid, ResponsiveContainer, Tooltip, } from 'recharts'; import withTitle from './withTitle'; interface Props { data: number[]; period: string; } const ChartArea: FC = ({ data: rawData, period }) => { const now = new Date(); const getDate = index => { switch (period) { case 'allTime': return formatDate( subMonths(now, rawData.length - index - 1), 'MMM yyy' ); case 'lastDay': return formatDate(subHours(now, rawData.length - index - 1), 'HH:00'); case 'lastMonth': case 'lastWeek': default: return formatDate(subDays(now, rawData.length - index - 1), 'MMM dd'); } }; const data = rawData.map((view, index) => ({ name: getDate(index), views: view, })); return ( ); }; export default withTitle(ChartArea);