Make Practice Summary Report stub
This commit is contained in:
87
client/src/scenes/PracticeSummaryReport/index.js
Normal file
87
client/src/scenes/PracticeSummaryReport/index.js
Normal file
@@ -0,0 +1,87 @@
|
||||
import React, { Component } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import {Container, Grid} from 'semantic-ui-react';
|
||||
|
||||
import MainMenu from '../../components/MainMenu';
|
||||
import DateRangePicker from '../../components/DateRangePicker';
|
||||
import MemberSelector from './components/MemberSelector';
|
||||
import MemberSummary from './components/MemberSummary';
|
||||
import MemberIncidentsTable from '../../components/MemberIncidentsTable';
|
||||
|
||||
import { fetchMemberIncidents } from '../../store/actions';
|
||||
|
||||
class PracticeSummaryReport extends Component {
|
||||
constructor(props){
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
dateRange: null,
|
||||
memberId: null,
|
||||
};
|
||||
}
|
||||
|
||||
onDateRangeUpdate(dateRange){
|
||||
this.fetchIncidents(dateRange, this.state.memberId);
|
||||
this.setState({dateRange});
|
||||
}
|
||||
|
||||
onMemberSelectionUpdate(memberId){
|
||||
this.fetchIncidents(this.state.dateRange, memberId);
|
||||
this.setState({memberId});
|
||||
}
|
||||
|
||||
fetchIncidents(dateRange, memberId){
|
||||
const { fetchMemberIncidents } = this.props;
|
||||
|
||||
if (dateRange && dateRange.startDate && dateRange.endDate && memberId){
|
||||
fetchMemberIncidents(memberId, dateRange);
|
||||
}
|
||||
}
|
||||
|
||||
render () {
|
||||
const { memberIncidents, loading } = this.props;
|
||||
|
||||
return (
|
||||
<Container>
|
||||
<MainMenu/>
|
||||
<h3>Practice Summary Report</h3>
|
||||
<hr/>
|
||||
<Grid stackable columns="equal">
|
||||
<Grid.Row>
|
||||
<Grid.Column>
|
||||
<MemberSelector onMemberSelect={this.onMemberSelectionUpdate.bind(this)} />
|
||||
</Grid.Column>
|
||||
<Grid.Column>
|
||||
<DateRangePicker onDatesUpdate={this.onDateRangeUpdate.bind(this)}/>
|
||||
</Grid.Column>
|
||||
</Grid.Row>
|
||||
<Grid.Row>
|
||||
<Grid.Column>
|
||||
<MemberSummary />
|
||||
</Grid.Column>
|
||||
</Grid.Row>
|
||||
<Grid.Row>
|
||||
<Grid.Column>
|
||||
<MemberIncidentsTable
|
||||
title="Detail list"
|
||||
incidents={memberIncidents}
|
||||
loading={loading}
|
||||
/>
|
||||
</Grid.Column>
|
||||
</Grid.Row>
|
||||
</Grid>
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
memberIncidents: state.memberIncidents.result,
|
||||
loading: state.memberIncidents.pending,
|
||||
});
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
fetchMemberIncidents: (memberId, dateRange) => fetchMemberIncidents(dispatch, memberId, dateRange),
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(PracticeSummaryReport);
|
||||
Reference in New Issue
Block a user