Make header back arrow function for auto save

This commit is contained in:
Julia Friesel
2019-05-12 20:41:13 +02:00
parent bc13f5c1e6
commit d1e16abe34
14 changed files with 228 additions and 241 deletions
+5 -12
View File
@@ -125,19 +125,12 @@ export default class App extends Component {
goBack={this.handleBackButtonPress} goBack={this.handleBackButtonPress}
/> />
} }
{this.isSymptomView() &&
<Header
title={title}
isSymptomView={true}
goBack={this.handleBackButtonPress}
date={currentProps.date}
goToSymptomInfo={() => this.navigate(INFO_SYMPTOM_PAGE, {
symptomView: currentPage,
...currentProps
})}
/>}
<Page navigate={this.navigate} {...currentProps} /> <Page
navigate={this.navigate}
{...currentProps}
handleBackButtonPress={this.handleBackButtonPress}
/>
{!this.isSymptomView() && {!this.isSymptomView() &&
<Menu navigate={this.navigate} currentPage={currentPage} /> <Menu navigate={this.navigate} currentPage={currentPage} />
+1 -4
View File
@@ -1,6 +1,5 @@
import React from 'react' import React from 'react'
import { import {
View,
Switch, Switch,
ScrollView ScrollView
} from 'react-native' } from 'react-native'
@@ -34,7 +33,7 @@ export default class Bleeding extends SymptomView {
}) })
} }
render() { renderContent() {
const bleedingRadioProps = [ const bleedingRadioProps = [
{ label: bleeding.labels[0], value: 0 }, { label: bleeding.labels[0], value: 0 },
{ label: bleeding.labels[1], value: 1 }, { label: bleeding.labels[1], value: 1 },
@@ -42,7 +41,6 @@ export default class Bleeding extends SymptomView {
{ label: bleeding.labels[3], value: 3 }, { label: bleeding.labels[3], value: 3 },
] ]
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header={bleeding.heaviness.header} header={bleeding.heaviness.header}
@@ -67,7 +65,6 @@ export default class Bleeding extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -4
View File
@@ -1,6 +1,5 @@
import React from 'react' import React from 'react'
import { import {
View,
Switch, Switch,
ScrollView ScrollView
} from 'react-native' } from 'react-native'
@@ -35,7 +34,7 @@ export default class Cervix extends SymptomView {
}) })
} }
render() { renderContent() {
const cervixOpeningRadioProps = [ const cervixOpeningRadioProps = [
{ label: labels.opening.categories[0], value: 0 }, { label: labels.opening.categories[0], value: 0 },
{ label: labels.opening.categories[1], value: 1 }, { label: labels.opening.categories[1], value: 1 },
@@ -52,7 +51,6 @@ export default class Cervix extends SymptomView {
] ]
const mandatoryNotCompleted = typeof this.state.opening != 'number' || typeof this.state.firmness != 'number' const mandatoryNotCompleted = typeof this.state.opening != 'number' || typeof this.state.firmness != 'number'
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header="Opening" header="Opening"
@@ -97,7 +95,6 @@ export default class Cervix extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -3
View File
@@ -28,14 +28,13 @@ export default class Desire extends SymptomView {
this.saveSymptomEntry({ value: this.state.currentValue }) this.saveSymptomEntry({ value: this.state.currentValue })
} }
render() { renderContent() {
const desireRadioProps = [ const desireRadioProps = [
{ label: intensity[0], value: 0 }, { label: intensity[0], value: 0 },
{ label: intensity[1], value: 1 }, { label: intensity[1], value: 1 },
{ label: intensity[2], value: 2 } { label: intensity[2], value: 2 }
] ]
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header={desire.header} header={desire.header}
@@ -48,7 +47,6 @@ export default class Desire extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -3
View File
@@ -47,9 +47,8 @@ export default class Mood extends SymptomView {
} }
} }
render() { renderContent() {
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
explainer={labels.explainer} explainer={labels.explainer}
@@ -72,7 +71,6 @@ export default class Mood extends SymptomView {
} }
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -3
View File
@@ -38,7 +38,7 @@ export default class Mucus extends SymptomView {
}) })
} }
render() { renderContent() {
const mucusFeeling = [ const mucusFeeling = [
{ label: labels.feeling.categories[0], value: 0 }, { label: labels.feeling.categories[0], value: 0 },
{ label: labels.feeling.categories[1], value: 1 }, { label: labels.feeling.categories[1], value: 1 },
@@ -52,7 +52,6 @@ export default class Mucus extends SymptomView {
] ]
const mandatoryNotCompletedYet = typeof this.state.feeling != 'number' || typeof this.state.texture != 'number' const mandatoryNotCompletedYet = typeof this.state.feeling != 'number' || typeof this.state.texture != 'number'
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header='Feeling' header='Feeling'
@@ -87,7 +86,6 @@ export default class Mucus extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -3
View File
@@ -34,9 +34,8 @@ export default class Note extends SymptomView {
}) })
} }
render() { renderContent() {
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
explainer={noteExplainer} explainer={noteExplainer}
@@ -52,7 +51,6 @@ export default class Note extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+2 -6
View File
@@ -2,7 +2,6 @@ import React from 'react'
import { import {
ScrollView, ScrollView,
TextInput, TextInput,
View
} from 'react-native' } from 'react-native'
import { pain as labels } from '../../../i18n/en/cycle-day' import { pain as labels } from '../../../i18n/en/cycle-day'
import { shared as sharedLabels } from '../../../i18n/en/labels' import { shared as sharedLabels } from '../../../i18n/en/labels'
@@ -49,9 +48,8 @@ export default class Pain extends SymptomView {
} }
} }
render() { renderContent() {
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
explainer={labels.explainer} explainer={labels.explainer}
@@ -73,8 +71,6 @@ export default class Pain extends SymptomView {
/> />
} }
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>)
</View>
)
} }
} }
+1 -4
View File
@@ -1,7 +1,6 @@
import React from 'react' import React from 'react'
import { import {
TextInput, TextInput,
View,
ScrollView ScrollView
} from 'react-native' } from 'react-native'
import styles from '../../../styles' import styles from '../../../styles'
@@ -49,9 +48,8 @@ export default class Sex extends SymptomView {
} }
} }
render() { renderContent() {
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header={sexLabels.header} header={sexLabels.header}
@@ -86,7 +84,6 @@ export default class Sex extends SymptomView {
/> />
} }
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+21 -1
View File
@@ -1,11 +1,15 @@
import React from 'react'
import { Component } from 'react' import { Component } from 'react'
import { BackHandler } from 'react-native' import { BackHandler, View } from 'react-native'
import { saveSymptom } from '../../../db' import { saveSymptom } from '../../../db'
import Header from '../../header/symptom-view'
import { headerTitles } from '../../../i18n/en/labels'
export default class SymptomView extends Component { export default class SymptomView extends Component {
constructor(props) { constructor(props) {
super() super()
this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPress.bind(this)) this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPress.bind(this))
this.globalBackhandler = props.handleBackButtonPress
this.symptomName = props.symptomName this.symptomName = props.symptomName
this.date = props.date this.date = props.date
} }
@@ -21,4 +25,20 @@ export default class SymptomView extends Component {
componentWillUnmount() { componentWillUnmount() {
this.backHandler.remove() this.backHandler.remove()
} }
render() {
return (
<View style={{flex: 1}}>
<Header
title={headerTitles[this.symptomName].toLowerCase()}
date={this.date}
goBack={() => {
this.onBackButtonPress()
this.globalBackhandler()
}}
/>
{this.renderContent()}
</View>
)
}
} }
+1 -3
View File
@@ -116,13 +116,12 @@ export default class Temp extends SymptomView {
this.setState({ isTimePickerVisible: true }) this.setState({ isTimePickerVisible: true })
} }
render() { renderContent() {
const inputStyle = [styles.temperatureTextInput] const inputStyle = [styles.temperatureTextInput]
if (this.state.isSuggestion) { if (this.state.isSuggestion) {
inputStyle.push(styles.temperatureTextInputSuggestion) inputStyle.push(styles.temperatureTextInputSuggestion)
} }
return ( return (
<View style={{ flex: 1 }}>
<ScrollView style={styles.page}> <ScrollView style={styles.page}>
<SymptomSection <SymptomSection
header={labels.temperature.header} header={labels.temperature.header}
@@ -189,7 +188,6 @@ export default class Temp extends SymptomView {
/> />
</SymptomSection> </SymptomSection>
</ScrollView> </ScrollView>
</View>
) )
} }
} }
+1 -6
View File
@@ -3,7 +3,6 @@ import { Dimensions } from 'react-native'
import CycleDayHeader from './cycle-day' import CycleDayHeader from './cycle-day'
import DefaultHeader from './default' import DefaultHeader from './default'
import BackButtonHeader from './back-button' import BackButtonHeader from './back-button'
import SymptomViewHeader from './symptom-view'
export default function Header(p) { export default function Header(p) {
const middle = Dimensions.get('window').width / 2 const middle = Dimensions.get('window').width / 2
@@ -11,11 +10,7 @@ export default function Header(p) {
if (props.isCycleDayOverView) { if (props.isCycleDayOverView) {
return (<CycleDayHeader {...props} />) return (<CycleDayHeader {...props} />)
} } else if (props.showBackButton) {
else if (props.isSymptomView) {
return (<SymptomViewHeader {...props} />)
}
else if (props.showBackButton) {
return (<BackButtonHeader {...props} />) return (<BackButtonHeader {...props} />)
} }
else { else {
+4 -2
View File
@@ -2,7 +2,8 @@ import React from 'react'
import { import {
View, View,
Text, Text,
TouchableOpacity TouchableOpacity,
Dimensions
} from 'react-native' } from 'react-native'
import styles, { iconStyles } from '../../styles' import styles, { iconStyles } from '../../styles'
import FeatherIcon from 'react-native-vector-icons/Feather' import FeatherIcon from 'react-native-vector-icons/Feather'
@@ -10,11 +11,12 @@ import NavigationArrow from './navigation-arrow'
import formatDate from '../helpers/format-date' import formatDate from '../helpers/format-date'
export default function SymptomViewHeader(props) { export default function SymptomViewHeader(props) {
const middle = Dimensions.get('window').width / 2
return ( return (
<View style={[styles.header, styles.headerCycleDay, styles.headerSymptom]}> <View style={[styles.header, styles.headerCycleDay, styles.headerSymptom]}>
<View <View
style={styles.accentCircle} style={styles.accentCircle}
left={props.middle - styles.accentCircle.width / 2} left={middle - styles.accentCircle.width / 2}
/> />
<NavigationArrow <NavigationArrow
direction='left' direction='left'
+9 -9
View File
@@ -32,15 +32,15 @@ export const headerTitles = {
Password: settingsTitles.password, Password: settingsTitles.password,
About: settingsTitles.about, About: settingsTitles.about,
License: settingsTitles.license, License: settingsTitles.license,
BleedingEditView: 'Bleeding', bleeding: 'Bleeding',
TemperatureEditView: 'Temperature', temperature: 'Temperature',
MucusEditView: 'Mucus', mucus: 'Mucus',
CervixEditView: 'Cervix', cervix: 'Cervix',
NoteEditView: 'Note', note: 'Note',
DesireEditView: 'Desire', desire: 'Desire',
SexEditView: 'Sex', sex: 'Sex',
PainEditView: 'Pain', pain: 'Pain',
MoodEditView: 'Mood', mood: 'Mood',
InfoSymptom: 'Info' InfoSymptom: 'Info'
} }