import React from 'react'; import PropTypes from 'prop-types'; 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'; const ChartArea = ({ 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 ( ); }; ChartArea.propTypes = { data: PropTypes.arrayOf(PropTypes.number.isRequired).isRequired, period: PropTypes.string.isRequired, }; export default withTitle(ChartArea);