public/js/components/CommonsDivisions/CommonsDivisions.js (50 lines of code) (raw):

import React from 'react'; import {PropTypes} from 'prop-types'; import {CommonsDivisionResultPropType} from '../../actions/ParliamentActions/getLatestCommonsDivisions.js'; import CommonsDivision from './CommonsDivision'; import moment from 'moment'; class CommonsDivisions extends React.Component { static propTypes = { commonsDivisions: PropTypes.arrayOf(CommonsDivisionResultPropType), atomActions: PropTypes.shape({ getLatestCommonsDivisions: PropTypes.func.isRequired }).isRequired }; UNSAFE_componentWillMount() { this.props.atomActions.getLatestCommonsDivisions(); } render() { if (this.props.commonsDivisions) { return ( <div> <h2 className="divisions-heading">Latest Commons Divisions (as of {moment().format("HH:mm")})</h2> <div className="atom-editor divisions-container"> <ul className="divisions-list"> { this.props.commonsDivisions.map(data => { return (<CommonsDivision key={data.division.parliamentId} atom={data.atom} division={data.division}/>); }) } </ul> </div> </div> ); } else { return (<div>Loading the latest commons divisions from data.parliament.uk...</div>); } } } //REDUX CONNECTIONS import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import * as getLatestCommonsDivisions from '../../actions/ParliamentActions/getLatestCommonsDivisions.js'; function mapStateToProps(state) { return { commonsDivisions: state.commonsDivisions }; } function mapDispatchToProps(dispatch) { return { atomActions: bindActionCreators(Object.assign({}, getLatestCommonsDivisions), dispatch) }; } export default connect(mapStateToProps, mapDispatchToProps)(CommonsDivisions);