|
1 | 1 | import React from 'react'; |
| 2 | +import { reduxForm } from 'redux-form'; |
| 3 | + |
| 4 | +import { FormComponent, Form, TextInput, TextareaInput, SubmitButton, |
| 5 | + CheckBoxInput, SelectInput, FileInput } from './Form'; |
| 6 | +import * as Validate from '../validate'; |
| 7 | +import CesiumTooltip from './Tooltip'; |
2 | 8 |
|
3 | 9 |
|
4 | 10 | const UploadFeaturesForm = props => { |
| 11 | + const { fields, fields: { datasetID, featuresetName, dataFile }, |
| 12 | + handleSubmit, submitting, resetForm, error, featuresList, |
| 13 | + featureDescriptions } = props; |
| 14 | + const datasets = props.datasets.map(ds => ( |
| 15 | + { id: ds.id, |
| 16 | + label: ds.name } |
| 17 | + )); |
| 18 | + |
5 | 19 | return ( |
6 | 20 | <div> |
7 | | - Upload Features Form content |
| 21 | + <Form onSubmit={handleSubmit} error={error}> |
| 22 | + <TextInput label="Feature Set Name" {...featuresetName} /> |
| 23 | + <SelectInput |
| 24 | + label="Select Associated Featureset" |
| 25 | + key={props.selectedProject.id} |
| 26 | + options={[{ label: 'No associated dataset', id: 'None' }, ...datasets]} |
| 27 | + {...datasetID} |
| 28 | + /> |
| 29 | + <FileInput |
| 30 | + label="Data File" |
| 31 | + {...dataFile} |
| 32 | + data-tip |
| 33 | + data-for="dataFileTooltip" |
| 34 | + /> |
| 35 | + <SubmitButton |
| 36 | + label="Upload Features" |
| 37 | + disabled={submitting} |
| 38 | + resetForm={resetForm} |
| 39 | + /> |
| 40 | + </Form> |
| 41 | + <CesiumTooltip |
| 42 | + id="dataFileTooltip" |
| 43 | + text="File format must match that of downloaded feature set" |
| 44 | + /> |
8 | 45 | </div> |
9 | 46 | ); |
10 | 47 | }; |
11 | 48 |
|
| 49 | +UploadFeaturesForm.propTypes = { |
| 50 | + fields: React.PropTypes.object.isRequired, |
| 51 | + datasets: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, |
| 52 | + error: React.PropTypes.string, |
| 53 | + handleSubmit: React.PropTypes.func.isRequired, |
| 54 | + submitting: React.PropTypes.bool.isRequired, |
| 55 | + resetForm: React.PropTypes.func.isRequired, |
| 56 | + selectedProject: React.PropTypes.object |
| 57 | +}; |
| 58 | + |
| 59 | + |
| 60 | +const mapStateToProps = (state, ownProps) => { |
| 61 | + |
| 62 | + const initialValues = { }; |
| 63 | + |
| 64 | + const filteredDatasets = state.datasets.filter(dataset => |
| 65 | + (dataset.project_id === ownProps.selectedProject.id)); |
| 66 | + |
| 67 | + return { |
| 68 | + datasets: filteredDatasets, |
| 69 | + fields: ['datasetID', 'featuresetName', 'dataFile'], |
| 70 | + initialValues: { ...initialValues, |
| 71 | + datasetID: "No associated dataset" } |
| 72 | + }; |
| 73 | +}; |
| 74 | + |
| 75 | +const validate = Validate.createValidator({ |
| 76 | + featuresetName: [Validate.required], |
| 77 | + dataFile: [Validate.oneFile] |
| 78 | +}); |
12 | 79 |
|
13 | | -export default UploadFeaturesForm; |
| 80 | +export default reduxForm( |
| 81 | + { |
| 82 | + form: 'uploadFeatures', |
| 83 | + fields: [''], |
| 84 | + validate |
| 85 | + }, mapStateToProps)(UploadFeaturesForm); |
0 commit comments