From 2f58db84c8e74be65a1373d92a2f82f3c2b5a543 Mon Sep 17 00:00:00 2001 From: emelko Date: Wed, 6 Jun 2018 16:14:08 +0200 Subject: [PATCH 1/7] Edit temperature, save value to db, show on dayview --- app.js | 8 ++++-- day-view.js | 22 ++++++++++++--- db.js | 20 ++++++------- home.js | 6 +--- list.js | 60 --------------------------------------- temperature.js | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 109 insertions(+), 83 deletions(-) delete mode 100644 list.js create mode 100644 temperature.js 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/day-view.js b/day-view.js index 5f3e307..2685b9f 100644 --- a/day-view.js +++ b/day-view.js @@ -19,24 +19,38 @@ export default class DayView extends Component { render() { const navigate = this.props.navigation.navigate - const day = this.state.cycleDay - const bleedingValue = day.bleeding && day.bleeding.value + const cycleDay = this.state.cycleDay + const bleedingValue = cycleDay.bleeding && cycleDay.bleeding.value let bleedingLabel if (typeof bleedingValue === 'number') { bleedingLabel = `Bleeding: ${labels[bleedingValue]}` + if (cycleDay.bleeding.exclude) bleedingLabel += " (Excluded)" } else { bleedingLabel = '' } + const temperatureValue = cycleDay.temperature && cycleDay.temperature.value + let temperatureLabel + if (typeof temperatureValue === 'number') { + temperatureLabel = `Temperature: ${temperatureValue}` + if (cycleDay.temperature.exclude) temperatureLabel += " (Excluded)" + } else { + temperatureLabel = '' + } return ( - {formatDateForViewHeader(day.date)} + {formatDateForViewHeader(cycleDay.date)} Cycle day {getCycleDay()} {bleedingLabel} + {temperatureLabel} + ) } diff --git a/db.js b/db.js index dd2648e..13e70c7 100644 --- a/db.js +++ b/db.js @@ -1,8 +1,9 @@ import realm from 'realm' let db -let cycleDaysSortedbyTempValueView = [] + let bleedingDaysSortedByDate = [] +let cycleDaysSortedbyDate = [] const TemperatureSchema = { name: 'Temperature', @@ -46,19 +47,17 @@ async function openDatabase() { // we only want this in dev mode deleteRealmIfMigrationNeeded: true }) + + bleedingDaysSortedByDate = db.objects('CycleDay').fil<<<<<<< 933b64056a13d04c3bfdebf531962b84d9daa4ce // just for testing purposes, the highest temperature will be topmost // because I was too layz to make a scroll view - cycleDaysSortedbyTempValueView = db.objects('CycleDay').filtered('temperature != null').sorted('temperature.value', true) - bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true) + cycleDaysSortedbyTempValueView = db.objects('CycleDay').filtered('temperature != null').sorted('temperature.value', true) tered('bleeding != null').sorted('date', true) + cycleDaysSortedbyDate = db.objects('CycleDay').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,10 +80,9 @@ function getOrCreateCycleDay(localDate) { } export { - cycleDaysSortedbyTempValueView, openDatabase, saveTemperature, saveBleeding, getOrCreateCycleDay, bleedingDaysSortedByDate -} \ No newline at end of file +} diff --git a/home.js b/home.js index 3552246..0ae1a4d 100644 --- a/home.js +++ b/home.js @@ -17,10 +17,6 @@ export default class Home extends Component { return ( Welcome! Today is day {getCycleDay()} of your current cycle - + + + + ) + } +} From d4633e0900fae5b67ae151d4893bce91ef1bc8c1 Mon Sep 17 00:00:00 2001 From: Julia Friesel Date: Wed, 6 Jun 2018 17:04:28 +0200 Subject: [PATCH 2/7] Get previous temperature and fill it as placeholder --- db.js | 20 +++++++++++++------- temperature.js | 14 +++++++++++--- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/db.js b/db.js index 13e70c7..c80efb2 100644 --- a/db.js +++ b/db.js @@ -1,9 +1,8 @@ import realm from 'realm' let db - -let bleedingDaysSortedByDate = [] let cycleDaysSortedbyDate = [] +let bleedingDaysSortedByDate = [] const TemperatureSchema = { name: 'Temperature', @@ -48,11 +47,8 @@ async function openDatabase() { deleteRealmIfMigrationNeeded: true }) - bleedingDaysSortedByDate = db.objects('CycleDay').fil<<<<<<< 933b64056a13d04c3bfdebf531962b84d9daa4ce - // just for testing purposes, the highest temperature will be topmost - // because I was too layz to make a scroll view - cycleDaysSortedbyTempValueView = db.objects('CycleDay').filtered('temperature != null').sorted('temperature.value', true) tered('bleeding != null').sorted('date', true) cycleDaysSortedbyDate = db.objects('CycleDay').sorted('date', true) + bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true) } function saveTemperature(cycleDay, temperature) { @@ -79,10 +75,20 @@ function getOrCreateCycleDay(localDate) { return result } +function getPreviousTemperature(cycleDay) { + const cycleDayIndex = cycleDaysSortedbyDate.findIndex(day => day === cycleDay) + const previousCycleDays = cycleDaysSortedbyDate.slice(cycleDayIndex + 1) + const winner = previousCycleDays.find(cycleDay => cycleDay.temperature) + if (!winner) return null + return winner.temperature.value +} + export { + cycleDaysSortedbyDate, openDatabase, saveTemperature, saveBleeding, getOrCreateCycleDay, - bleedingDaysSortedByDate + bleedingDaysSortedByDate, + getPreviousTemperature } diff --git a/temperature.js b/temperature.js index be03abe..36e46f2 100644 --- a/temperature.js +++ b/temperature.js @@ -8,7 +8,7 @@ import { } from 'react-native' import styles from './styles' -import { saveTemperature } from './db' +import { saveTemperature, getPreviousTemperature } from './db' import { formatDateForViewHeader } from './format' import getCycleDay from './get-cycle-day' @@ -16,10 +16,18 @@ export default class Temp extends Component { constructor(props) { super(props) const cycleDay = props.navigation.state.params.cycleDay - console.log(cycleDay.temperature ? cycleDay.temperature.value : '') + let initialValue + + if(cycleDay.temperature) { + initialValue = cycleDay.temperature.toString() + } else { + const prevTemp = getPreviousTemperature(cycleDay) + initialValue = prevTemp ? prevTemp.toString() : '' + } + this.state = { cycleDay, - currentValue: cycleDay.temperature ? cycleDay.temperature.value.toString() : '', + currentValue: initialValue, exclude: cycleDay.temperature ? cycleDay.temperature.exclude : false } } From d93164ae04e3d2f38085dfbe47fadd999d199741 Mon Sep 17 00:00:00 2001 From: emelko Date: Tue, 12 Jun 2018 11:30:36 +0200 Subject: [PATCH 3/7] Bugfix parsing only value of temp toString --- temperature.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/temperature.js b/temperature.js index 36e46f2..03491e6 100644 --- a/temperature.js +++ b/temperature.js @@ -19,7 +19,7 @@ export default class Temp extends Component { let initialValue if(cycleDay.temperature) { - initialValue = cycleDay.temperature.toString() + initialValue = cycleDay.temperature.value.toString() } else { const prevTemp = getPreviousTemperature(cycleDay) initialValue = prevTemp ? prevTemp.toString() : '' From cc9746a0acb3bd0d1ae938f3b66b6dd70c11e679 Mon Sep 17 00:00:00 2001 From: Julia Friesel Date: Tue, 12 Jun 2018 12:45:32 +0200 Subject: [PATCH 4/7] Remove cycleDay from state --- bleeding.js | 13 ++++++------- temperature.js | 13 ++++++------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/bleeding.js b/bleeding.js index 359a94f..01fc4ce 100644 --- a/bleeding.js +++ b/bleeding.js @@ -15,22 +15,21 @@ import getCycleDay from './get-cycle-day' 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 }, @@ -48,13 +47,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} />