diff --git a/components/calendar.js b/components/calendar.js index 4aa7f135eef45fdb040819ecaeb071e7881ff5cc..dbff83c9c801f43f0d0bb8d8322d65856d3d3c2a 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -1,6 +1,7 @@ import React, { Component } from 'react' import { View } from 'react-native' import { CalendarList } from 'react-native-calendars' +import Header from './header' import * as styles from '../styles' import { getOrCreateCycleDay, bleedingDaysSortedByDate } from '../db' @@ -34,12 +35,15 @@ export default class CalendarView extends Component { render() { return ( - <View style={styles.container}> - <CalendarList - onDayPress={ this.passDateToDayView.bind(this) } - markedDates = { this.state.bleedingDaysInCalFormat } - markingType = {'period'} - /> + <View> + <Header title='Calendar' /> + <View style={styles.container}> + <CalendarList + onDayPress={this.passDateToDayView.bind(this)} + markedDates={this.state.bleedingDaysInCalFormat} + markingType={'period'} + /> + </View> </View> ) } diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js index 35e1e3f66b473e5d417d22321da59154f2cbc4c6..78178fe824ff1bda9eb71294b9bbd7496313db6b 100644 --- a/components/cycle-day/cycle-day-overview.js +++ b/components/cycle-day/cycle-day-overview.js @@ -7,11 +7,10 @@ import { Dimensions } from 'react-native' import { LocalDate } from 'js-joda' +import Header from '../header' import { getOrCreateCycleDay } from '../../db' import cycleModule from '../../lib/cycle' import Icon from 'react-native-vector-icons/FontAwesome' -import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons' -import { formatDateForViewHeader } from './labels/format' import styles, { iconStyles } from '../../styles' import { bleeding as bleedingLabels, @@ -24,8 +23,6 @@ import { intensity as intensityLabels } from './labels/labels' -const getCycleDayNumber = cycleModule().getCycleDayNumber - export default class CycleDayOverView extends Component { constructor(props) { super(props) @@ -51,30 +48,15 @@ export default class CycleDayOverView extends Component { render() { const cycleDay = this.state.cycleDay + const getCycleDayNumber = cycleModule().getCycleDayNumber const cycleDayNumber = getCycleDayNumber(cycleDay.date) return ( <ScrollView> - <View style={ styles.cycleDayDateView }> - <MaterialIcon - name='arrow-left-drop-circle' - {...iconStyles.navigationArrow} - onPress={() => this.goToCycleDay('before')} - /> - <View> - <Text style={styles.dateHeader}> - {formatDateForViewHeader(cycleDay.date)} - </Text> - {cycleDayNumber && - <Text style={styles.cycleDayNumber} > - Cycle day {cycleDayNumber} - </Text>} - </View > - <MaterialIcon - name='arrow-right-drop-circle' - {...iconStyles.navigationArrow} - onPress={() => this.goToCycleDay('after')} - /> - </View > + <Header + cycleDayOverView={true} + cycleDayNumber={cycleDayNumber} + date={cycleDay.date} + /> <View style={styles.symptomBoxesView}> <SymptomBox title='Bleeding' diff --git a/components/cycle-day/symptoms/index.js b/components/cycle-day/symptoms/index.js index 3c0f834b4f9a7760ea49894eaa2bca20d52ba3dc..c2c050b62c923eba8012eb5dc54735a499182396 100644 --- a/components/cycle-day/symptoms/index.js +++ b/components/cycle-day/symptoms/index.js @@ -1,10 +1,6 @@ import React, { Component } from 'react' -import { - View, - Text, - ScrollView -} from 'react-native' -import styles from '../../../styles' +import { ScrollView } from 'react-native' +import Header from '../../header' import actionButtonModule from '../action-buttons' import BleedingEditView from './bleeding' import TemperatureEditView from './temperature' @@ -51,13 +47,7 @@ export default class SymptomView extends Component { render() { return ( <ScrollView> - <View style={ styles.header }> - <View> - <Text style={styles.dateHeader}> - {titles[this.state.visibleComponent]} - </Text> - </View > - </View > + <Header title={titles[this.state.visibleComponent]}/> {React.createElement( symptomViews[this.state.visibleComponent], { diff --git a/components/header.js b/components/header.js new file mode 100644 index 0000000000000000000000000000000000000000..1fd285ebc5888262e6a17f136b9c48978466c8bf --- /dev/null +++ b/components/header.js @@ -0,0 +1,43 @@ +import React, { Component } from 'react' +import { + View, + Text +} from 'react-native' +import styles, { iconStyles } from '../styles' +import Icon from 'react-native-vector-icons/MaterialCommunityIcons' +import { formatDateForViewHeader } from '../components/cycle-day/labels/format' + +export default class Header extends Component { + render() { + return ( + this.props.cycleDayOverView ? + <View style={[styles.header, styles.headerCycleDay]}> + <Icon + name='arrow-left-drop-circle' + {...iconStyles.navigationArrow} + onPress={() => this.goToCycleDay('before')} + /> + <View> + <Text style={styles.dateHeader}> + {formatDateForViewHeader(this.props.date)} + </Text> + {this.props.cycleDayNumber && + <Text style={styles.cycleDayNumber} > + Cycle day {this.props.cycleDayNumber} + </Text>} + </View > + <Icon + name='arrow-right-drop-circle' + {...iconStyles.navigationArrow} + onPress={() => this.goToCycleDay('after')} + /> + </View > + : + <View style={styles.header}> + <Text style={styles.dateHeader}> + {this.props.title} + </Text> + </View > + ) + } +} \ No newline at end of file diff --git a/components/home.js b/components/home.js index 5381e3bec357118f78f6edf27f862d0e2973a405..9c8d14ff6d4e7483a0fdbdf9753d9d01b5a93b5c 100644 --- a/components/home.js +++ b/components/home.js @@ -6,6 +6,7 @@ import { ScrollView } from 'react-native' import { LocalDate } from 'js-joda' +import Header from './header' import styles from '../styles/index' import cycleModule from '../lib/cycle' import { getOrCreateCycleDay, bleedingDaysSortedByDate, fillWithDummyData, deleteAll } from '../db' @@ -48,6 +49,7 @@ export default class Home extends Component { render() { return ( <ScrollView> + <Header title='Home'/> <Text style={styles.welcome}>{this.state.welcomeText}</Text> <View style={styles.homeButtons}> <View style={styles.homeButton}> diff --git a/components/settings.js b/components/settings.js index 97907b101cd7e527d4f351d5025fd93fe39adb42..3552872a507d960090f0a652671e79351e0a3528 100644 --- a/components/settings.js +++ b/components/settings.js @@ -9,6 +9,7 @@ import { import Share from 'react-native-share' import { DocumentPicker, DocumentPickerUtil } from 'react-native-document-picker' import rnfs from 'react-native-fs' +import Header from './header' import styles from '../styles/index' import { settings as labels } from './labels' import getDataAsCsvDataUri from '../lib/import-export/export-to-csv' @@ -18,6 +19,7 @@ export default class Settings extends Component { render() { return ( <ScrollView> + <Header title='Settings'/> <View style={styles.homeButtons}> <View style={styles.homeButton}> <Button diff --git a/components/stats.js b/components/stats.js index 4021fdee0af44ab2fb229e565988014ba4a4d99f..c37a518c37817dd13e146c734906e7d73b1dd152 100644 --- a/components/stats.js +++ b/components/stats.js @@ -5,6 +5,7 @@ import { ScrollView } from 'react-native' import { LocalDate, ChronoUnit } from 'js-joda' +import Header from './header' import styles from '../styles/index' import cycleModule from '../lib/cycle' import getCycleInfo from '../lib/cycle-length' @@ -15,6 +16,7 @@ export default class Stats extends Component { const statsText = determineStatsText(allMensesStarts) return ( <ScrollView> + <Header title='Statistics' /> <View> <Text style={styles.stats}>{statsText}</Text> </View> diff --git a/styles/index.js b/styles/index.js index 087d20de70711a286791592c374439fbcd0df336..f55ef4e7adcc473fc4fd9fbf25e9334aa7ae88a4 100644 --- a/styles/index.js +++ b/styles/index.js @@ -75,11 +75,14 @@ export default StyleSheet.create({ alignItems: 'center', height: 50 }, - cycleDayDateView: { + header: { backgroundColor: primaryColor, paddingVertical: 18, paddingHorizontal: 15, alignItems: 'center', + justifyContent: 'center' + }, + headerCycleDay: { flexDirection: 'row', justifyContent: 'space-between' },