Apply select tab group to pain edit view

This commit is contained in:
Julia Friesel
2018-09-01 20:11:31 +02:00
parent 4ed3aa48e0
commit 083e55eee8
3 changed files with 55 additions and 101 deletions
+5 -5
View File
@@ -98,16 +98,16 @@ export default class CycleDayOverView extends Component {
data={getLabel('sex', cycleDay.sex)} data={getLabel('sex', cycleDay.sex)}
disabled={dateInFuture} disabled={dateInFuture}
/> />
<SymptomBox
title='Note'
onPress={() => this.navigate('NoteEditView')}
data={getLabel('note', cycleDay.note)}
/>
<SymptomBox <SymptomBox
title='Pain' title='Pain'
onPress={() => this.navigate('PainEditView')} onPress={() => this.navigate('PainEditView')}
data={getLabel('pain', cycleDay.pain)} data={getLabel('pain', cycleDay.pain)}
/> />
<SymptomBox
title='Note'
onPress={() => this.navigate('NoteEditView')}
data={getLabel('note', cycleDay.note)}
/>
{/* this is just to make the last row adhere to the grid {/* this is just to make the last row adhere to the grid
(and) because there are no pseudo properties in RN */} (and) because there are no pseudo properties in RN */}
<FillerBoxes /> <FillerBoxes />
+41 -87
View File
@@ -1,17 +1,39 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import { import {
CheckBox,
ScrollView, ScrollView,
Text,
TextInput, TextInput,
View View
} from 'react-native' } from 'react-native'
import styles from '../../../styles'
import { saveSymptom } from '../../../db' import { saveSymptom } from '../../../db'
import { import { pain as labels } from '../labels/labels'
pain as painLabels
} from '../labels/labels'
import ActionButtonFooter from './action-button-footer' import ActionButtonFooter from './action-button-footer'
import SelectBoxGroup from '../select-box-group'
const boxes = [{
label: labels.cramps,
stateKey: 'cramps'
}, {
label: labels.ovulationPain,
stateKey: 'ovulationPain'
}, {
label: labels.headache,
stateKey: 'headache'
}, {
label: labels.backache,
stateKey: 'backache'
}, {
label: labels.nausea,
stateKey: 'nausea'
}, {
label: labels.tenderBreasts,
stateKey: 'tenderBreasts'
}, {
label: labels.migraine,
stateKey: 'migraine'
}, {
label: labels.other,
stateKey: 'other'
}]
export default class Pain extends Component { export default class Pain extends Component {
constructor(props) { constructor(props) {
@@ -26,92 +48,24 @@ export default class Pain extends Component {
} }
} }
toggleState = (key) => {
const curr = this.state[key]
this.setState({[key]: !curr})
if (key === 'other' && !curr) {
this.setState({focusTextArea: true})
}
}
render() { render() {
return ( return (
<View style={{ flex: 1 }}> <View style={{ flex: 1 }}>
<ScrollView> <ScrollView>
<View> <View>
<View style={styles.symptomViewRowInline}> <SelectBoxGroup
<Text style={styles.symptomDayView}>{painLabels.cramps}</Text> data={boxes}
<CheckBox onSelect={this.toggleState}
value={this.state.cramps} optionsState={this.state}
onValueChange={(val) => { />
this.setState({cramps: val})
}}
/>
<Text style={styles.symptomDayView}>
{painLabels.ovulationPain}
</Text>
<CheckBox
value={this.state.ovulationPain}
onValueChange={(val) => {
this.setState({ovulationPain: val})
}}
/>
</View>
<View style={styles.symptomViewRowInline}>
<Text style={styles.symptomDayView}>
{painLabels.headache}
</Text>
<CheckBox
value={this.state.headache}
onValueChange={(val) => {
this.setState({headache: val})
}}
/>
<Text style={styles.symptomDayView}>
{painLabels.backache}
</Text>
<CheckBox
value={this.state.backache}
onValueChange={(val) => {
this.setState({backache: val})
}}
/>
</View>
<View style={styles.symptomViewRowInline}>
<Text style={styles.symptomDayView}>
{painLabels.nausea}
</Text>
<CheckBox
value={this.state.nausea}
onValueChange={(val) => {
this.setState({nausea: val})
}}
/>
<Text style={styles.symptomDayView}>
{painLabels.tenderBreasts}
</Text>
<CheckBox
value={this.state.tenderBreasts}
onValueChange={(val) => {
this.setState({tenderBreasts: val})
}}
/>
</View>
<View style={styles.symptomViewRowInline}>
<Text style={styles.symptomDayView}>
{painLabels.migraine}
</Text>
<CheckBox
value={this.state.migraine}
onValueChange={(val) => {
this.setState({migraine: val})
}}
/>
<Text style={styles.symptomDayView}>
{painLabels.other}
</Text>
<CheckBox
value={this.state.other}
onValueChange={(val) => {
this.setState({
other: val,
focusTextArea: true
})
}}
/>
</View>
{ this.state.other && { this.state.other &&
<TextInput <TextInput
autoFocus={this.state.focusTextArea} autoFocus={this.state.focusTextArea}
+9 -9
View File
@@ -12,33 +12,33 @@ import SelectBoxGroup from '../select-box-group'
import { SymptomSectionHeader } from '../../app-text' import { SymptomSectionHeader } from '../../app-text'
const sexBoxes = [{ const sexBoxes = [{
label: activityLabels.solo, label: sexLabels.solo,
stateKey: 'solo' stateKey: 'solo'
}, { }, {
label: activityLabels.partner, label: sexLabels.partner,
stateKey: 'partner' stateKey: 'partner'
}] }]
const contraceptiveBoxes = [{ const contraceptiveBoxes = [{
label: contraceptiveLabels.condom, label: sexLabels.condom,
stateKey: 'condom' stateKey: 'condom'
}, { }, {
label: contraceptiveLabels.pill, label: sexLabels.pill,
stateKey: 'pill' stateKey: 'pill'
}, { }, {
label: contraceptiveLabels.iud, label: sexLabels.iud,
stateKey: 'iud' stateKey: 'iud'
}, { }, {
label: contraceptiveLabels.patch, label: sexLabels.patch,
stateKey: 'patch' stateKey: 'patch'
}, { }, {
label: contraceptiveLabels.ring, label: sexLabels.ring,
stateKey: 'ring' stateKey: 'ring'
}, { }, {
label: contraceptiveLabels.implant, label: sexLabels.implant,
stateKey: 'implant' stateKey: 'implant'
}, { }, {
label: contraceptiveLabels.other, label: sexLabels.other,
stateKey: 'other' stateKey: 'other'
}] }]