diff --git a/components/chart/chart.js b/components/chart/chart.js index 5900164..ebb0d85 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -269,17 +269,33 @@ function setUpFertilityStatusFunc() { function dateIsInPeriOrPostPhase(dateString) { return ( - dateString >= cycleStatus.phases.periOvulatory.start.date && - dateString <= cycleStatus.phases.postOvulatory.start.date + dateString >= cycleStatus.phases.periOvulatory.start.date ) } function precededByAnotherTempValue(dateString) { - return Object.keys(cycleStatus.phases).some(phaseName => { - return cycleStatus.phases[phaseName].cycleDays.some(day => { - return day.temperature && day.date < dateString + return ( + // we are only interested in days that have a preceding + // temp + Object.keys(cycleStatus.phases).some(phaseName => { + return cycleStatus.phases[phaseName].cycleDays.some(day => { + return day.temperature && day.date < dateString + }) }) - }) + // and also a following temp, so we don't draw the line + // longer than necessary + && + cycleStatus.phases.postOvulatory.cycleDays.some(day => { + return day.temperature && day.date > dateString + }) + ) + } + + function isInTempMeasuringPhase(cycleDay, dateString) { + return ( + cycleDay && cycleDay.temperature + || precededByAnotherTempValue(dateString) + ) } return function(dateString, cycleDay) { @@ -292,20 +308,17 @@ function setUpFertilityStatusFunc() { const tempShift = cycleStatus.temperatureShift - if ( - tempShift && - tempShift.firstHighMeasurementDay.date === dateString - ) { - ret.drawFhmLine = true - } + if (tempShift) { + if (tempShift.firstHighMeasurementDay.date === dateString) { + ret.drawFhmLine = true + } - if ( - tempShift && - cycleDay && - (cycleDay.temperature || precededByAnotherTempValue(dateString)) && - dateIsInPeriOrPostPhase(dateString) - ) { - ret.drawLtlAt = normalizeToScale(tempShift.ltl) + if ( + dateIsInPeriOrPostPhase(dateString) && + isInTempMeasuringPhase(cycleDay, dateString) + ) { + ret.drawLtlAt = normalizeToScale(tempShift.ltl) + } } return ret diff --git a/components/home.js b/components/home.js index 212ac51..07b50db 100644 --- a/components/home.js +++ b/components/home.js @@ -7,7 +7,7 @@ import { import { LocalDate } from 'js-joda' import styles from '../styles/index' import cycleModule from '../lib/cycle' -import { getOrCreateCycleDay, bleedingDaysSortedByDate, fillWithDummyData } from '../db' +import { getOrCreateCycleDay, bleedingDaysSortedByDate, fillWithDummyData, deleteAll } from '../db' const getCycleDayNumber = cycleModule().getCycleDayNumber @@ -73,6 +73,12 @@ export default class Home extends Component { title="fill with example data"> + + + ) diff --git a/db/index.js b/db/index.js index b6971c7..948d805 100644 --- a/db/index.js +++ b/db/index.js @@ -117,6 +117,12 @@ function fillWithDummyData() { }) } +function deleteAll() { + db.write(() => { + db.deleteAll() + }) +} + function getPreviousTemperature(cycleDay) { cycleDay.wrappedDate = LocalDate.parse(cycleDay.date) const winner = temperatureDaysSortedByDate.find(day => { @@ -134,6 +140,7 @@ export { temperatureDaysSortedByDate, cycleDaysSortedByDate, fillWithDummyData, + deleteAll, getPreviousTemperature, getCycleDay }