import React from 'react'; import PropTypes from 'prop-types'; import subHours from 'date-fns/sub_hours'; import subDays from 'date-fns/sub_days'; import subMonths from 'date-fns/sub_months'; 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), 'MMM YY'); case 'lastDay': return formatDate(subHours(now, rawData.length - index), 'HH:00'); case 'lastMonth': case 'lastWeek': default: return formatDate(subDays(now, rawData.length - index), '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);