60 lines
1.4 KiB
React
Raw Normal View History

2019-01-03 11:16:46 +01:00
import { format } from 'date-fns'
import React from 'react'
import { connect } from 'react-redux'
import { getStats } from '../../../actions/stats'
2019-01-04 10:07:24 +01:00
import { formatStats } from '../../../utils/stats'
2019-01-03 11:16:46 +01:00
import StatsChart from './StatsChart'
class Statistics extends React.PureComponent {
componentDidMount() {
2019-01-04 15:23:03 +01:00
this.updateData()
2019-01-03 11:16:46 +01:00
}
componentDidUpdate(prevProps) {
2019-01-04 15:23:03 +01:00
if ((this.props.user.id && (this.props.user.id !== prevProps.user.id)) ||
this.props.statsParams !== prevProps.statsParams
) {
this.updateData()
}
}
updateData() {
if (this.props.user.id) {
this.props.loadActivities(
this.props.user.id,
this.props.statsParams,
)
}
}
2019-01-03 11:16:46 +01:00
render() {
const { displayedSports, sports, statistics, statsParams } = this.props
2019-01-04 15:23:03 +01:00
if (Object.keys(statistics).length === 0) {
return 'No workouts'
}
const stats = formatStats(statistics, sports, statsParams, displayedSports)
2019-01-04 15:23:03 +01:00
return (<StatsChart sports={sports} stats={stats} />)
2019-01-03 11:16:46 +01:00
}
}
export default connect(
state => ({
sports: state.sports.data,
statistics: state.statistics.data,
user: state.user,
}),
dispatch => ({
loadActivities: (userId, data) => {
2019-01-03 11:16:46 +01:00
const dateFormat = 'YYYY-MM-DD'
const params = {
from: format(data.start, dateFormat),
to: format(data.end, dateFormat),
time: data.duration
}
dispatch(getStats(userId, data.type, params))
},
})
)(Statistics)