diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js index 21e0df880db33ebb01d5a9fcb5fab77a6778bada..9a058eecf5a5edf3b725aaf39ff194409fbfc79c 100644 --- a/components/cycle-day/cycle-day-overview.js +++ b/components/cycle-day/cycle-day-overview.js @@ -98,16 +98,16 @@ export default class CycleDayOverView extends Component { data={getLabel('sex', cycleDay.sex)} disabled={dateInFuture} /> - <SymptomBox - title='Note' - onPress={() => this.navigate('NoteEditView')} - data={getLabel('note', cycleDay.note)} - /> <SymptomBox title='Pain' onPress={() => this.navigate('PainEditView')} 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 (and) because there are no pseudo properties in RN */} <FillerBoxes /> diff --git a/components/cycle-day/symptoms/pain.js b/components/cycle-day/symptoms/pain.js index 6365065329cc36c18a41f970fdc34ddeb664d620..18f80e4966a04c56b593dcb1812f011600b90855 100644 --- a/components/cycle-day/symptoms/pain.js +++ b/components/cycle-day/symptoms/pain.js @@ -1,17 +1,39 @@ import React, { Component } from 'react' import { - CheckBox, ScrollView, - Text, TextInput, View } from 'react-native' -import styles from '../../../styles' import { saveSymptom } from '../../../db' -import { - pain as painLabels -} from '../labels/labels' +import { pain as labels } from '../labels/labels' 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 { 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() { return ( <View style={{ flex: 1 }}> <ScrollView> <View> - <View style={styles.symptomViewRowInline}> - <Text style={styles.symptomDayView}>{painLabels.cramps}</Text> - <CheckBox - value={this.state.cramps} - 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> + <SelectBoxGroup + data={boxes} + onSelect={this.toggleState} + optionsState={this.state} + /> { this.state.other && <TextInput autoFocus={this.state.focusTextArea} diff --git a/components/cycle-day/symptoms/sex.js b/components/cycle-day/symptoms/sex.js index 0d2febb80736fda65d153b5a312ed5c6427224cc..adcfcef2e6c3da267105df5a86e8e8f19008228b 100644 --- a/components/cycle-day/symptoms/sex.js +++ b/components/cycle-day/symptoms/sex.js @@ -12,33 +12,33 @@ import SelectBoxGroup from '../select-box-group' import { SymptomSectionHeader } from '../../app-text' const sexBoxes = [{ - label: activityLabels.solo, + label: sexLabels.solo, stateKey: 'solo' }, { - label: activityLabels.partner, + label: sexLabels.partner, stateKey: 'partner' }] const contraceptiveBoxes = [{ - label: contraceptiveLabels.condom, + label: sexLabels.condom, stateKey: 'condom' }, { - label: contraceptiveLabels.pill, + label: sexLabels.pill, stateKey: 'pill' }, { - label: contraceptiveLabels.iud, + label: sexLabels.iud, stateKey: 'iud' }, { - label: contraceptiveLabels.patch, + label: sexLabels.patch, stateKey: 'patch' }, { - label: contraceptiveLabels.ring, + label: sexLabels.ring, stateKey: 'ring' }, { - label: contraceptiveLabels.implant, + label: sexLabels.implant, stateKey: 'implant' }, { - label: contraceptiveLabels.other, + label: sexLabels.other, stateKey: 'other' }]