Home Reference Source

application/components/container-blog.js

  1. import React from 'react';
  2. import Immutable from 'immutable';
  3. import {connect} from 'react-redux';
  4.  
  5. import {Link} from 'react-router';
  6. import RaisedButton from 'material-ui/RaisedButton';
  7. import Paper from 'material-ui/Paper';
  8. import IconAdd from 'material-ui/svg-icons/content/add';
  9. import {Toolbar, ToolbarGroup, ToolbarSeparator, ToolbarTitle} from 'material-ui/Toolbar';
  10. import ReduxPaginator from './common/redux-paginator';
  11.  
  12. import LoadingIndicator from './common/loading-indicator';
  13. import ContainerTable from './container/container-table';
  14. import ContainerToolbar from './container/container-toolbar';
  15.  
  16. import {Row, Col} from './flexbox';
  17.  
  18. import {
  19. containersMaybeFetch,
  20. containersFetch
  21. } from './../redux/actions/container-actions';
  22.  
  23. class Blog extends React.Component {
  24. constructor(props) {
  25. super(props);
  26. }
  27.  
  28. componentWillMount() {
  29. const {dispatch} = this.props;
  30. const page = (this.props.location && this.props.location.query.page)
  31. ? this.props.location.query.page
  32. : 1;
  33.  
  34. dispatch(containersFetch({page: page, type: ['blog']}));
  35. }
  36.  
  37. handlePagination(page) {
  38. if (this.props.containers.pagination.current == page) {
  39. return;
  40. }
  41.  
  42. const {dispatch} = this.props;
  43. dispatch(containersFetch({page: page, type: ['blog']}));
  44. }
  45.  
  46. render() {
  47.  
  48. return (
  49. <div id='containers-root'>
  50. <Row>
  51. <Col xs={12} md={10} lg={9} offsetMd={1} offsetLg={1}>
  52. <ContainerToolbar
  53. items={this.props.containers.items}
  54. page={this.props.containers.pagination.current}
  55. search=''
  56. perPage={20}
  57. onPaginate={this.handlePagination.bind(this)}
  58. containerType={'blog'}
  59. />
  60. {
  61. this.props.containers.isFetching
  62. ? <LoadingIndicator />
  63. : (
  64. <ContainerTable containers={this.props.containers.items} />
  65. )
  66. }
  67. </Col>
  68. </Row>
  69. </div>
  70. );
  71. }
  72. }
  73.  
  74. const mapStateToProps = (state) => {
  75. return {
  76. containers: state.containers
  77. };
  78. }
  79.  
  80. export default connect(mapStateToProps)(Blog);