PlayerForm.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react'
  2. import { FormGroup, ControlLabel, FormControl, HelpBlock } from 'react-bootstrap'
  3. import { fileSize, date2s, time2s } from '../../helpers'
  4. function FieldGroup ({ id, label, help, file, ...props }) {
  5. return (
  6. <FormGroup controlId={id}>
  7. <ControlLabel>{label}</ControlLabel>
  8. <FormControl {...props} />
  9. {help && <HelpBlock>{help}</HelpBlock>}
  10. {file && <div>{fileSize(file.size)} {date2s(file.lastModified)} {time2s(file.lastModified)}</div>}
  11. </FormGroup>
  12. )
  13. }
  14. class PlayerForm extends React.Component {
  15. constructor () {
  16. super()
  17. this.handleFileUpload = this.handleFileUpload.bind(this)
  18. }
  19. handleFileUpload (event) {
  20. event.preventDefault()
  21. const { fileUploadStart } = this.props.actions
  22. const { alertAdd } = this.props.alerts
  23. const { files } = this.playerListFile
  24. if (files.length === 0) {
  25. alertAdd({ type: 'info', text: 'Datei entfernt' })
  26. return
  27. }
  28. if (files.length > 1) {
  29. alertAdd({ type: 'warning', text: 'Mehrere Dateien gesendet. Nur die erste wird verarbeitet.' })
  30. }
  31. const file = files[0]
  32. fileUploadStart(file)
  33. }
  34. render () {
  35. const { fileUpload, file } = this.props.state
  36. return (
  37. <div>
  38. <form>
  39. <FieldGroup
  40. id='playerListFile'
  41. label='PlayerList.xls File'
  42. help='Die Datei wird von der Swisstennis Turniersoftware generiert.'
  43. type='file'
  44. file={file}
  45. inputRef={input => { this.playerListFile = input }}
  46. onChange={this.handleFileUpload}
  47. disabled={(fileUpload === 'started')}
  48. />
  49. </form>
  50. </div>
  51. )
  52. }
  53. }
  54. export default PlayerForm