diff --git a/mobile/src/WorkItem/WorkItem.js b/mobile/src/WorkItem/WorkItem.js index 0a95200..4f4ce94 100644 --- a/mobile/src/WorkItem/WorkItem.js +++ b/mobile/src/WorkItem/WorkItem.js @@ -66,7 +66,7 @@ export class WorkItem extends React.Component { isValid: (r, v) => v !== "", }, workItemType: { - isValid: true, + isValid: (r, v) => v !== "", alwaysGet: true, }, } @@ -171,14 +171,11 @@ export class WorkItem extends React.Component { @autobind handleRegionChange(region) { - const { binder } = this.state - - this.setState( - binder.updateFieldValue( - "location", + if (this.latLngInput) { + this.latLngInput.handleChangeText( formatLatLng(region.latitude, region.longitude) ) - ) + } } render() { @@ -200,6 +197,7 @@ export class WorkItem extends React.Component { name="workItemType" label="Work Item Type:" options={workItemTypeEnum} + message="Select a work item type" /> @@ -235,7 +233,12 @@ export class WorkItem extends React.Component { pointerEvents={false} /> - + (this.latLngInput = ref)} + binder={binder} + name="location" + label="Location:" + /> Pictures: diff --git a/mobile/src/WorkItem/WorkItemList.js b/mobile/src/WorkItem/WorkItemList.js index 3c671ff..5406643 100644 --- a/mobile/src/WorkItem/WorkItemList.js +++ b/mobile/src/WorkItem/WorkItemList.js @@ -52,12 +52,40 @@ export class WorkItemList extends React.Component { } @autobind - handleItemSelect(item, index) { + handleItemSelect(item, ref) { this.props.history.push(`/workitem?id=${item._id}`) } @autobind - handleItemDelete(item, index) {} + handleItemDelete(item, ref) { + api + .deleteWorkItem(item._id) + .then(() => { + return api + .listWorkItems() + .then((list) => { + this.setState({ listItems: list.items }) + }) + .catch(() => { + this.setState({ + messageModal: { + icon: "hand", + message: "Unable to get list of work items", + detail: error.message, + }, + }) + }) + }) + .catch(() => { + this.setState({ + messageModal: { + icon: "hand", + message: "Unable to get delete work item", + detail: error.message, + }, + }) + }) + } @autobind handleMessageDismiss() { @@ -65,7 +93,7 @@ export class WorkItemList extends React.Component { } @autobind - handleAddPress(item, index) { + handleDonePress() { this.props.history.push("/workitem") } @@ -88,7 +116,7 @@ export class WorkItemList extends React.Component {
(item._id)} - renderItem={({ item, index }) => ( + keyExtractor={(item) => item._id} + renderItem={({ item }, rowMap) => ( this.handleItemSelect(item, index)}> + onPress={() => this.handleItemSelect(item, rowMap[item._id])}> )} - renderHiddenItem={({ item, index }) => ( + renderHiddenItem={({ item }, rowMap) => ( this.handleItemDelete(item, index)}> + onPress={() => this.handleItemDelete(item, rowMap[item._id])}> - {label} + + + {label} + 1} numberOfLines={lines} editable={!disabled} - autoCapitalize='none' - underlineColorAndroid='white' + autoCapitalize="none" + underlineColorAndroid="white" value={value} secureTextEntry={password} onChangeText={this.handleChangeText} - placeholder={placeholder} /> - {message} + placeholder={placeholder} + /> + + {message} + ) } diff --git a/mobile/src/ui/BoundOptionStrip.js b/mobile/src/ui/BoundOptionStrip.js index 2c98674..3648608 100644 --- a/mobile/src/ui/BoundOptionStrip.js +++ b/mobile/src/ui/BoundOptionStrip.js @@ -12,6 +12,7 @@ export class BoundOptionStrip extends React.Component { options: PropTypes.arrayOf( PropTypes.shape({ value: PropTypes.string, text: PropTypes.string }) ).isRequired, + message: PropTypes.string, } constructor(props) { @@ -31,8 +32,8 @@ export class BoundOptionStrip extends React.Component { } render() { - const { name, label, options } = this.props - const { visible, disabled, value } = this.state + const { name, label, options, message } = this.props + const { visible, disabled, value, valid } = this.state return ( + + {message} + ) }