TableDataImportForm.jsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import FormGroup from 'react-bootstrap/es/FormGroup';
  4. import ControlLabel from 'react-bootstrap/es/ControlLabel';
  5. import FormControl from 'react-bootstrap/es/FormControl';
  6. import Button from 'react-bootstrap/es/Button';
  7. export default class TableDataImportForm extends React.Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. dataFormat: 'csv',
  12. data: ''
  13. };
  14. this.importButtonHandler = this.importButtonHandler.bind(this);
  15. }
  16. importButtonHandler() {
  17. this.props.onImport(this.state.dataFormat, this.state.data);
  18. }
  19. render() {
  20. return (
  21. <form action="" className="data-import-form pt-5">
  22. <FormGroup>
  23. <ControlLabel>Select Data Format</ControlLabel>
  24. <FormControl componentClass="select" placeholder="select"
  25. value={this.state.dataFormat} onChange={e => this.setState({dataFormat: e.target.value})}>
  26. <option value="csv">CSV</option>
  27. <option value="tsv">TSV</option>
  28. <option value="html">(TBD) HTML</option>
  29. </FormControl>
  30. </FormGroup>
  31. <FormGroup>
  32. <ControlLabel>Import Data</ControlLabel>
  33. <FormControl componentClass="textarea" placeholder="Paste table data" style={{ height: 200 }}
  34. onChange={e => this.setState({data: e.target.value})}/>
  35. </FormGroup>
  36. <div className="d-flex justify-content-end">
  37. <Button bsStyle="default" onClick={this.props.onCancel}>Cancel</Button>
  38. <Button bsStyle="primary" onClick={this.importButtonHandler}>Import</Button>
  39. </div>
  40. </form>
  41. );
  42. }
  43. }
  44. TableDataImportForm.propTypes = {
  45. onCancel: PropTypes.func,
  46. onImport: PropTypes.func
  47. };