client/src/components/SessionList.js
changeset 62 b2514a9bcd49
child 93 469da13402e2
equal deleted inserted replaced
61:7586b4a11c32 62:b2514a9bcd49
       
     1 import React, { Component } from 'react';
       
     2 import { connect } from 'react-redux';
       
     3 import { bindActionCreators } from 'redux';
       
     4 import { Grid, Row, Col, ListGroup, ListGroupItem, Button } from 'react-bootstrap';
       
     5 import moment from 'moment';
       
     6 import '../App.css';
       
     7 import Navbar from './Navbar';
       
     8 import * as sessionsActions from '../actions/sessionsActions';
       
     9 import uuidV1 from 'uuid/v1';
       
    10 
       
    11 class SessionList extends Component {
       
    12 
       
    13   createSession = () => {
       
    14     const sessionId = uuidV1();
       
    15     this.props.sessionsActions.createSession(sessionId);
       
    16     this.props.history.push('/sessions/' + sessionId);
       
    17   }
       
    18 
       
    19   render() {
       
    20     return (
       
    21       <div>
       
    22         <Navbar history={this.props.history} />
       
    23         <Grid fluid>
       
    24           <Row>
       
    25             <Col md={6} mdOffset={3}>
       
    26               <ListGroup>
       
    27                 {this.props.sessions.map((session) =>
       
    28                   <ListGroupItem
       
    29                     key={session.get('_id')}
       
    30                     onClick={() => this.props.history.push('/sessions/' + session.get('_id'))}>
       
    31                     {session.title || 'No title'} {session.get('_id')} {moment(session.get('date')).format('DD/MM/YYYY')}
       
    32                   </ListGroupItem>
       
    33                 )}
       
    34               </ListGroup>
       
    35               <Button bsStyle="success" onClick={this.createSession}>Create new session</Button>
       
    36             </Col>
       
    37           </Row>
       
    38         </Grid>
       
    39       </div>
       
    40     );
       
    41   }
       
    42 }
       
    43 
       
    44 function mapStateToProps(state, props) {
       
    45   return {
       
    46     // currentSession: state.get('currentSession'),
       
    47     // sessions: state.get('sessions')
       
    48     sessions: state['sessions']
       
    49   };
       
    50 }
       
    51 
       
    52 function mapDispatchToProps(dispatch) {
       
    53   return {
       
    54     sessionsActions: bindActionCreators(sessionsActions, dispatch)
       
    55   }
       
    56 }
       
    57 
       
    58 export default connect(mapStateToProps, mapDispatchToProps)(SessionList);