import React, { Component } from 'react';
import { Container, Header, Segment, Divider,
        List, Modal, Button, Image, Form, Input, TextArea, Checkbox, Icon } from 'semantic-ui-react';
import { connect } from 'react-redux';

import { getNews, } from '../../actions';
import { postNews, writeNews } from '../../actions/news.js'

class News extends Component {

  componentWillMount() {
    this.props.getNews();
  }


  render_add_news(){
    const { title, text } = this.props.newNews;
    const author = this.props.user.id;
    return (
    <Modal trigger={<Button >Add news</Button>}>
    <Modal.Header>Új hír:</Modal.Header>
    <Modal.Content>
    <Form>
      <Form.Field
        control={Input}
        label='Title'
        name='title'
        onChange={e => this.props.writeNews(e)}
        value={title}
        placeholder='Title' />
      <Form.Field
        control={TextArea}
        label='Text'
        name='text'
        onChange={e => this.props.writeNews(e)}
        value={text}
        placeholder='Tell us what you want...' />
    </Form>
    </Modal.Content>
    <Modal.Actions>
       <Button inverted color='red' >
         <Icon name='remove' /> Cancel
       </Button>
       <Button
         inverted color='green'
         onClick={() => this.props.postNews({title, text, author})}>
         <Icon name='checkmark' /> Add
       </Button>
     </Modal.Actions>
  </Modal>

);
  }

  render_news() {
    const news = this.props.news;

    return news.map( (item, index) => (
      <div key={index} id={index}>
        { index > 0 ? <Divider /> : ''}
        <Header as='h3' style={{ fontSize: '2em' }}>{item.title}</Header>
        <p style={{ fontSize: '1.33em' }}>{item.text}</p>
      </div>
    ));

  }

  render_sidebar() {
    const news = this.props.news;

    return news.map( (item, index) => (
        <List.Item as='a' href={`#${index}`}>
          <List.Icon name='align justify' verticalAlign={"middle"}/>
          <List.Content>
            <List.Header>
              {item.title}
            </List.Header>
          </List.Content>
        </List.Item>
    ));

  }

  render() {

    return (
      <div>
      {/*  <Segment inverted textAlign='center' vertical>
          <Container>
            <Header
              as='h1'
              content='Hírek'
              inverted
              style={{
                fontSize: '2em',
                fontWeight: 'normal',
                marginBottom: 0,
                marginTop: '0.2em',
                padding: 0
              }}
            />
          </Container>
        </Segment>
        */}

        <Segment floated={'left'} style={{ padding: '3em 3em' }} vertical>
          {this.render_add_news()}
          <Container text textAlign = {'center'}>
            {this.render_news()}
          </Container>
        </Segment>
        <Segment floated={'right'} style={{ padding: '1em 1em' }} vertical>
          <List size={'big'} link divided>
              {this.render_sidebar()}
          </List>
        </Segment>
      </div>
    );
  }
}


const mapStateToProps = ({ news, newNews, user }) => ({ news, newNews, user });

export default connect(mapStateToProps, { getNews, postNews, writeNews,  })(News);