summaryrefslogtreecommitdiff
path: root/src/client/components/controls/controls.js
blob: f691b56e43e5127109b814d583fe61ad09458a57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import React, { Component } from 'react'
import autobind from 'autobind-decorator'
import { FormGroup, ControlLabel, FormControl, HelpBlock } from 'react-bootstrap'
import DatePicker from '../datepicker/datepicker'
import moment from 'moment'

import { levels } from '../../../constants'

import { input } from './controls.css'

const FieldGroup = ({onChange, id, label, help, ...props }) => // eslint-disable-line
  <FormGroup controlId={id}>
    <ControlLabel>{label}</ControlLabel>
    <FormControl {...props} onChange={onChange} className={input} />
    {help && <HelpBlock>{help}</HelpBlock>}
  </FormGroup>

const getLevelSelect = levelEnum => Object.keys(levelEnum).map(k => ({ value: levelEnum[k], label: k }))

@autobind
class Controls extends Component {
  constructor (props) {
    super(props)
    this.state = {
      startMoment: moment(),
      endMoment: moment(),
      showStartdt: true,
      showEnddt: false
    }
  }
  handleChange (e) {
    this.props.onChange(e.target)
  }
  toggleStartdt () {
    // TODO put this back
    // this.setState({ showStartdt: !this.state.showStartdt })
  }
  toggleEnddt () {
    this.setState({ showEnddt: !this.state.showEnddt })
  }
  updateStartMoment (moment) {
    this.setState({ startMoment: moment })
  }
  updateEndMoment (moment) {
    this.setState({ endMoment: moment })
  }

  render () {
    return (
      <div>
        <FormGroup>
          <ControlLabel style={{display: 'block'}}>Level</ControlLabel>
          <select id='level' onChange={this.handleChange} className={input} >
            { getLevelSelect(levels).reverse().map((k, i) => <option value={k.value} key={i}>{k.label}</option>) }
          </select>
        </FormGroup>
        <FieldGroup
          onChange={this.handleChange}
          id='pagesize'
          type='number'
          label='Page Size'
        />
        <FieldGroup
          onFocus={this.toggleStartdt}
          onBlur={this.toggleStartdt}
          type='text'
          label='Start Date'
          value={this.state.startMoment._d}
          readOnly
        />
        { this.state.showStartdt ? <DatePicker moment={this.state.startMoment} onChange={this.updateStartMoment} /> : null }
        <FieldGroup
          onFocus={this.toggleEnddt}
          onBlur={this.toggleEnddt}
          type='text'
          label='End Date'
          readOnly
        />
        { this.state.showEnddt ? <DatePicker moment={this.state.endMoment} onChange={this.updateEndMoment} /> : null }
      </div>
    )
  }
}

export default Controls