import { endOfMonth, format, startOfMonth, subMonths } from 'date-fns' import React from 'react' import { connect } from 'react-redux' import { Bar, BarChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts' import { getStats } from '../../actions/stats' import { activityColors, formatDuration, formatStats } from '../../utils' import CustomTooltip from '../Others/CustomTooltip' class Statistics extends React.Component { constructor(props, context) { super(props, context) const date = new Date() this.state = { start: startOfMonth(subMonths(date, 12)), end: endOfMonth(date), displayedData: 'distance' } } componentDidMount() { this.props.loadMonthActivities( this.props.user.id, this.state.start, this.state.end, ) } handleRadioChange (changeEvent) { this.setState({ displayedData: changeEvent.target.name }) } render() { const { sports, statistics } = this.props const { displayedData, end, start } = this.state const stats = formatStats(statistics, sports, start, end, 'month') return (
Statistics
{Object.keys(statistics).length === 0 ? ( 'No workouts' ) : (
displayedData === 'distance' ? `${value} km` : displayedData === 'duration' ? format(formatDuration(value), 'HH:mm') : value } /> } /> {sports.map((s, i) => ( ))}
)}
) } } export default connect( state => ({ sports: state.sports.data, statistics: state.statistics.data, user: state.user, }), dispatch => ({ loadMonthActivities: (userId, start, end) => { const dateFormat = 'YYYY-MM-DD' const params = { from: format(start, dateFormat), to: format(end, dateFormat), time: 'month' } dispatch(getStats(userId, 'by_time', params)) }, }) )(Statistics)