diff --git a/app.js b/app.js index 8976a63..3a310a0 100644 --- a/app.js +++ b/app.js @@ -1,6 +1,7 @@ import { createStackNavigator } from 'react-navigation' import Home from './home' -import TemperatureList from './list' + +import Temperature from './temperature' import Calendar from './calendar' import DayView from './day-view' import Bleeding from './bleeding' @@ -11,8 +12,9 @@ YellowBox.ignoreWarnings(['Warning: isMounted(...) is deprecated']) export default createStackNavigator({ home: { screen: Home }, - temperatureList: { screen: TemperatureList }, + + temperature: { screen: Temperature }, calendar: { screen: Calendar }, dayView: { screen: DayView }, bleeding: { screen: Bleeding } -}) \ No newline at end of file +}) diff --git a/bleeding.js b/bleeding.js index 6b2e956..31dc8c6 100644 --- a/bleeding.js +++ b/bleeding.js @@ -17,22 +17,21 @@ const getCycleDayNumber = cycleDayModule() export default class Bleeding extends Component { constructor(props) { super(props) - const cycleDay = props.navigation.state.params.cycleDay - let bleedingValue = cycleDay.bleeding && cycleDay.bleeding.value + this.cycleDay = props.navigation.state.params.cycleDay + let bleedingValue = this.cycleDay.bleeding && this.cycleDay.bleeding.value if (! (typeof bleedingValue === 'number') ){ bleedingValue = -1 } this.state = { - cycleDay, currentValue: bleedingValue, - exclude: cycleDay.bleeding ? cycleDay.bleeding.exclude : false + exclude: this.cycleDay.bleeding ? this.cycleDay.bleeding.exclude : false } } // TODO display cycle day render() { const navigate = this.props.navigation.navigate - const day = this.state.cycleDay + const day = this.cycleDay const bleedingRadioProps = [ {label: labels[0], value: 0 }, {label: labels[1], value: 1 }, @@ -50,13 +49,13 @@ export default class Bleeding extends Component { formHorizontal={true} labelHorizontal={false} onPress={(itemValue) => { - this.setState({ currentValue: itemValue }) + this.setState({currentValue: itemValue}) }} /> Exclude { - this.setState({ exclude: val }) + this.setState({exclude: val}) }} value={this.state.exclude} /> + ) } diff --git a/db.js b/db.js index 3ce8f12..a469530 100644 --- a/db.js +++ b/db.js @@ -1,4 +1,6 @@ import Realm from 'realm' +import { LocalDate } from 'js-joda' + const TemperatureSchema = { name: 'Temperature', @@ -42,16 +44,12 @@ const db = new Realm({ deleteRealmIfMigrationNeeded: true }) -const cycleDaysSortedbyTempValueView = db.objects('CycleDay').filtered('temperature != null').sorted('temperature.value', true) const bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true) +const temperatureDaysSortedByDate = db.objects('CycleDay').filtered('temperature != null').sorted('date', true) -function saveTemperature(date, temperature) { +function saveTemperature(cycleDay, temperature) { db.write(() => { - const doc = { - date, - temperature - } - db.create('CycleDay', doc) + cycleDay.temperature = temperature }) } @@ -81,12 +79,22 @@ function deleteAll() { }) } +function getPreviousTemperature(cycleDay) { + cycleDay.wrappedDate = LocalDate.parse(cycleDay.date) + const winner = temperatureDaysSortedByDate.find(day => { + const wrappedDate = LocalDate.parse(day.date) + return wrappedDate.isBefore(cycleDay.wrappedDate) + }) + if (!winner) return null + return winner.temperature.value +} + export { - cycleDaysSortedbyTempValueView, saveTemperature, saveBleeding, getOrCreateCycleDay, bleedingDaysSortedByDate, getCycleDaysSortedByDateView, - deleteAll -} \ No newline at end of file + deleteAll, + getPreviousTemperature +} diff --git a/home.js b/home.js index 14c7847..9ae5917 100644 --- a/home.js +++ b/home.js @@ -4,10 +4,10 @@ import { Button, Text } from 'react-native' +import { LocalDate } from 'js-joda' import styles from './styles' import cycleDayModule from './get-cycle-day-number' -import { bleedingDaysSortedByDate, deleteAll } from './db' -import { LocalDate } from 'js-joda' +import { getOrCreateCycleDay, bleedingDaysSortedByDate, deleteAll } from './db' const getCycleDayNumber = cycleDayModule() @@ -28,13 +28,20 @@ export default class Home extends Component { bleedingDaysSortedByDate.removeAllListeners() } + passTodayToDayView() { + const todayDateString = LocalDate.now().toString() + const cycleDay = getOrCreateCycleDay(todayDateString) + const navigate = this.props.navigation.navigate + navigate('dayView', { cycleDay }) + } + render() { const navigate = this.props.navigation.navigate return ( {this.state.welcomeText} + + + + ) + } +}