2017-12-25 18:19:28 +01:00
|
|
|
import React from 'react'
|
2017-12-31 19:32:52 +01:00
|
|
|
import { Helmet } from 'react-helmet'
|
2017-12-25 18:19:28 +01:00
|
|
|
import { connect } from 'react-redux'
|
|
|
|
|
2018-05-09 10:25:08 +02:00
|
|
|
import ActivityCard from './ActivityCard'
|
2018-05-31 22:39:50 +02:00
|
|
|
import Calendar from './../Others/Calendar'
|
2018-05-20 13:12:35 +02:00
|
|
|
import Records from './Records'
|
2018-05-09 10:25:08 +02:00
|
|
|
import Statistics from './Statistics'
|
2018-05-10 23:39:59 +02:00
|
|
|
import { getData } from '../../actions'
|
2018-05-17 13:33:44 +02:00
|
|
|
import { getMoreActivities } from '../../actions/activities'
|
2018-05-09 10:25:08 +02:00
|
|
|
|
2018-01-28 13:01:26 +01:00
|
|
|
class DashBoard extends React.Component {
|
2018-05-10 23:39:59 +02:00
|
|
|
constructor(props, context) {
|
|
|
|
super(props, context)
|
|
|
|
this.state = {
|
|
|
|
page: 1,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-09 10:25:08 +02:00
|
|
|
componentDidMount() {
|
|
|
|
this.props.loadActivities()
|
|
|
|
}
|
|
|
|
|
2017-12-25 18:19:28 +01:00
|
|
|
render() {
|
2018-05-10 23:39:59 +02:00
|
|
|
const {
|
2018-05-20 13:12:35 +02:00
|
|
|
activities, loadMoreActivities, message, records, sports
|
2018-05-10 23:39:59 +02:00
|
|
|
} = this.props
|
2018-05-17 13:33:44 +02:00
|
|
|
const paginationEnd = activities.length > 0
|
|
|
|
? activities[activities.length - 1].previous_activity === null
|
|
|
|
: true
|
2018-05-10 23:39:59 +02:00
|
|
|
const { page } = this.state
|
2017-12-25 18:19:28 +01:00
|
|
|
return (
|
|
|
|
<div>
|
2017-12-31 19:32:52 +01:00
|
|
|
<Helmet>
|
|
|
|
<title>mpwo - Dashboard</title>
|
|
|
|
</Helmet>
|
2018-05-10 23:39:59 +02:00
|
|
|
{message ? (
|
|
|
|
<code>{message}</code>
|
|
|
|
) : (
|
2018-05-20 13:12:35 +02:00
|
|
|
(activities.length > 0 && sports.length > 0) ? (
|
2018-05-30 17:48:58 +02:00
|
|
|
<div className="container dashboard">
|
2018-05-10 23:39:59 +02:00
|
|
|
<div className="row">
|
2018-05-20 13:12:35 +02:00
|
|
|
<div className="col-md-4">
|
2018-05-31 22:39:50 +02:00
|
|
|
<Calendar />
|
2018-05-20 13:12:35 +02:00
|
|
|
<Records records={records} sports={sports} />
|
|
|
|
<Statistics />
|
|
|
|
</div>
|
|
|
|
<div className="col-md-8">
|
2018-05-10 23:39:59 +02:00
|
|
|
{activities.map(activity => (
|
|
|
|
<ActivityCard
|
|
|
|
activity={activity}
|
|
|
|
key={activity.id}
|
|
|
|
sports={sports}
|
|
|
|
/>
|
|
|
|
))}
|
|
|
|
{!paginationEnd &&
|
|
|
|
<input
|
|
|
|
type="submit"
|
|
|
|
className="btn btn-default btn-md btn-block"
|
|
|
|
value="Load more activities"
|
|
|
|
onClick={() => {
|
|
|
|
loadMoreActivities(page + 1)
|
|
|
|
this.setState({ page: page + 1 })
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
}
|
|
|
|
</div>
|
2018-05-10 11:36:08 +02:00
|
|
|
</div>
|
2018-05-09 10:25:08 +02:00
|
|
|
</div>
|
2018-05-10 11:36:08 +02:00
|
|
|
) : (
|
|
|
|
'No activities for now'
|
2018-05-10 23:39:59 +02:00
|
|
|
))}
|
2017-12-25 18:19:28 +01:00
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default connect(
|
|
|
|
state => ({
|
2018-05-09 10:25:08 +02:00
|
|
|
activities: state.activities.data,
|
|
|
|
message: state.message,
|
2018-05-20 13:12:35 +02:00
|
|
|
records: state.records.data,
|
2018-05-09 10:25:08 +02:00
|
|
|
sports: state.sports.data,
|
|
|
|
}),
|
|
|
|
dispatch => ({
|
|
|
|
loadActivities: () => {
|
2018-05-10 23:39:59 +02:00
|
|
|
dispatch(getData('activities', null, 1))
|
2018-05-20 13:12:35 +02:00
|
|
|
dispatch(getData('records'))
|
2018-05-10 23:39:59 +02:00
|
|
|
},
|
|
|
|
loadMoreActivities: page => {
|
|
|
|
dispatch(getMoreActivities(page))
|
2018-05-09 10:25:08 +02:00
|
|
|
},
|
2017-12-25 18:19:28 +01:00
|
|
|
})
|
2018-01-28 13:01:26 +01:00
|
|
|
)(DashBoard)
|