import subMonths from "date-fns/subMonths"; import subHours from "date-fns/subHours"; import formatDate from "date-fns/format"; import subDays from "date-fns/subDays"; import React, { FC } from "react"; import { AreaChart, Area, XAxis, YAxis, CartesianGrid, ResponsiveContainer, Tooltip } from "recharts"; 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 ChartArea;