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
|
|
|
}
|
|
|
|
|
2019-01-04 11:51:06 +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) {
|
2019-01-04 11:51:06 +01:00
|
|
|
this.props.loadActivities(
|
|
|
|
this.props.user.id,
|
|
|
|
this.props.statsParams,
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-03 11:16:46 +01:00
|
|
|
render() {
|
2019-01-04 13:42:52 +01:00
|
|
|
const { displayedSports, sports, statistics, statsParams } = this.props
|
2019-01-04 15:23:03 +01:00
|
|
|
if (Object.keys(statistics).length === 0) {
|
|
|
|
return 'No workouts'
|
|
|
|
}
|
2019-01-04 13:42:52 +01:00
|
|
|
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 => ({
|
2019-01-04 11:51:06 +01:00
|
|
|
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)
|