From dd24e6058fe3a30a1ef2231105916c4ffa79b6c8 Mon Sep 17 00:00:00 2001 From: emelko Date: Tue, 23 Apr 2019 20:44:59 +0200 Subject: [PATCH 1/7] Fixes prediction range in drop on homescreen --- components/home.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/home.js b/components/home.js index f362285..fcfb91c 100644 --- a/components/home.js +++ b/components/home.js @@ -217,5 +217,11 @@ function getBleedingPredictionRange(prediction) { if (todayDate.isAfter(bleedingEnd)) { return labels.unknown } - return '0' + const daysToEnd = todayDate.until(bleedingEnd, ChronoUnit.DAYS) + if (daysToEnd === 0) { + return '0' + } else { + return `0 - ${daysToEnd}` + } + } \ No newline at end of file From 93abaf99be102eefe742201aaba8fd9f664e420e Mon Sep 17 00:00:00 2001 From: emelko Date: Wed, 24 Apr 2019 12:53:04 +0200 Subject: [PATCH 2/7] Nicer formatting for past bleeding prediction --- components/helpers/format-date.js | 4 ++++ components/home.js | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/helpers/format-date.js b/components/helpers/format-date.js index 079ea4d..f600581 100644 --- a/components/helpers/format-date.js +++ b/components/helpers/format-date.js @@ -7,3 +7,7 @@ export default function (date) { const formattedDate = today.equals(dateToDisplay) ? 'today' : moment(date).format('MMMM Do YYYY') return formattedDate.toLowerCase() } + +export function dateForShortDescription (date) { + return moment(date.toString()).format('dddd, MMMM Do') +} \ No newline at end of file diff --git a/components/home.js b/components/home.js index fcfb91c..8aa5183 100644 --- a/components/home.js +++ b/components/home.js @@ -16,6 +16,7 @@ import { getFertilityStatusForDay } from '../lib/sympto-adapter' import styles, { cycleDayColor, periodColor, secondaryColor } from '../styles' import AppText from './app-text' import Button from './button' +import { dateForShortDescription } from './helpers/format-date' const ShowMoreToggler = ({ isShowingMore, onToggle }) => { const {height, width} = Dimensions.get('window') @@ -193,7 +194,7 @@ function determinePredictionText(bleedingPrediction) { } if (todayDate.isAfter(bleedingEnd)) { return predictLabels.predictionInPast( - bleedingStart.toString(), bleedingEnd.toString() + dateForShortDescription(bleedingStart), dateForShortDescription(bleedingEnd) ) } const daysToEnd = todayDate.until(bleedingEnd, ChronoUnit.DAYS) @@ -223,5 +224,4 @@ function getBleedingPredictionRange(prediction) { } else { return `0 - ${daysToEnd}` } - } \ No newline at end of file From 6577038f2277621dadcbe022c5884b38d56af971 Mon Sep 17 00:00:00 2001 From: emelko Date: Thu, 25 Apr 2019 10:58:04 +0200 Subject: [PATCH 3/7] Rename to predictedBleeding --- components/home.js | 28 ++++++++++++++-------------- lib/notifications.js | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/components/home.js b/components/home.js index 8aa5183..f2b5414 100644 --- a/components/home.js +++ b/components/home.js @@ -182,22 +182,22 @@ export default class Home extends Component { function determinePredictionText(bleedingPrediction) { if (!bleedingPrediction.length) return predictLabels.noPrediction const todayDate = LocalDate.now() - const bleedingStart = LocalDate.parse(bleedingPrediction[0][0]) - const bleedingEnd = LocalDate.parse( + const predictedBleedingStart = LocalDate.parse(bleedingPrediction[0][0]) + const predictedBleedingEnd = LocalDate.parse( bleedingPrediction[0][ bleedingPrediction[0].length - 1 ] ) - if (todayDate.isBefore(bleedingStart)) { + if (todayDate.isBefore(predictedBleedingStart)) { return predictLabels.predictionInFuture( - todayDate.until(bleedingStart, ChronoUnit.DAYS), - todayDate.until(bleedingEnd, ChronoUnit.DAYS) + todayDate.until(predictedBleedingStart, ChronoUnit.DAYS), + todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) ) } - if (todayDate.isAfter(bleedingEnd)) { + if (todayDate.isAfter(predictedBleedingEnd)) { return predictLabels.predictionInPast( - dateForShortDescription(bleedingStart), dateForShortDescription(bleedingEnd) + dateForShortDescription(predictedBleedingStart), dateForShortDescription(predictedBleedingEnd) ) } - const daysToEnd = todayDate.until(bleedingEnd, ChronoUnit.DAYS) + const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) if (daysToEnd === 0) { return predictLabels.predictionStartedNoDaysLeft } else if (daysToEnd === 1) { @@ -210,15 +210,15 @@ function determinePredictionText(bleedingPrediction) { function getBleedingPredictionRange(prediction) { if (!prediction.length) return labels.unknown const todayDate = LocalDate.now() - const bleedingStart = LocalDate.parse(prediction[0][0]) - const bleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) - if (todayDate.isBefore(bleedingStart)) { - return `${todayDate.until(bleedingStart, ChronoUnit.DAYS)}-${todayDate.until(bleedingEnd, ChronoUnit.DAYS)}` + const predictedBleedingStart = LocalDate.parse(prediction[0][0]) + const predictedBleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) + if (todayDate.isBefore(predictedBleedingStart)) { + return `${todayDate.until(predictedBleedingStart, ChronoUnit.DAYS)}-${todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS)}` } - if (todayDate.isAfter(bleedingEnd)) { + if (todayDate.isAfter(predictedBleedingEnd)) { return labels.unknown } - const daysToEnd = todayDate.until(bleedingEnd, ChronoUnit.DAYS) + const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) if (daysToEnd === 0) { return '0' } else { diff --git a/lib/notifications.js b/lib/notifications.js index 9836a37..1692484 100644 --- a/lib/notifications.js +++ b/lib/notifications.js @@ -58,9 +58,9 @@ export default function setupNotifications(navigate) { function setupPeriodReminder() { const bleedingPrediction = cycleModule().getPredictedMenses() if (bleedingPrediction.length > 0) { - const bleedingStart = Moment(bleedingPrediction[0][0], "YYYY-MM-DD") + const predictedBleedingStart = Moment(bleedingPrediction[0][0], "YYYY-MM-DD") // 3 days before and at 6 am - const reminderDate = bleedingStart + const reminderDate = predictedBleedingStart .subtract(3, 'days') .hours(6) .minutes(0) From dc5b34546a1fca9656a14bed94d5b8e4f6abdbca Mon Sep 17 00:00:00 2001 From: emelko Date: Thu, 25 Apr 2019 11:01:33 +0200 Subject: [PATCH 4/7] Renames function to say what it 'does' --- components/helpers/format-date.js | 2 +- components/home.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/helpers/format-date.js b/components/helpers/format-date.js index f600581..cf63f70 100644 --- a/components/helpers/format-date.js +++ b/components/helpers/format-date.js @@ -8,6 +8,6 @@ export default function (date) { return formattedDate.toLowerCase() } -export function dateForShortDescription (date) { +export function formatDateForShortText (date) { return moment(date.toString()).format('dddd, MMMM Do') } \ No newline at end of file diff --git a/components/home.js b/components/home.js index f2b5414..b173435 100644 --- a/components/home.js +++ b/components/home.js @@ -16,7 +16,7 @@ import { getFertilityStatusForDay } from '../lib/sympto-adapter' import styles, { cycleDayColor, periodColor, secondaryColor } from '../styles' import AppText from './app-text' import Button from './button' -import { dateForShortDescription } from './helpers/format-date' +import { formatDateForShortText } from './helpers/format-date' const ShowMoreToggler = ({ isShowingMore, onToggle }) => { const {height, width} = Dimensions.get('window') @@ -194,7 +194,7 @@ function determinePredictionText(bleedingPrediction) { } if (todayDate.isAfter(predictedBleedingEnd)) { return predictLabels.predictionInPast( - dateForShortDescription(predictedBleedingStart), dateForShortDescription(predictedBleedingEnd) + formatDateForShortText(predictedBleedingStart), formatDateForShortText(predictedBleedingEnd) ) } const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) From 3ec4d2218edf2fc0e5154627c965a8d96eabc890 Mon Sep 17 00:00:00 2001 From: emelko Date: Thu, 25 Apr 2019 11:41:41 +0200 Subject: [PATCH 5/7] Adds getTime function for bleedingPredictions reuse; minor style formatting --- components/home.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/components/home.js b/components/home.js index b173435..73a4ef7 100644 --- a/components/home.js +++ b/components/home.js @@ -179,13 +179,17 @@ export default class Home extends Component { } } +function getTimes(prediction) { + const todayDate = LocalDate.now() + const predictedBleedingStart = LocalDate.parse(prediction[0][0]) + const predictedBleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) + const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) + return { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd } +} + function determinePredictionText(bleedingPrediction) { if (!bleedingPrediction.length) return predictLabels.noPrediction - const todayDate = LocalDate.now() - const predictedBleedingStart = LocalDate.parse(bleedingPrediction[0][0]) - const predictedBleedingEnd = LocalDate.parse( - bleedingPrediction[0][ bleedingPrediction[0].length - 1 ] - ) + const { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd } = getTimes(bleedingPrediction) if (todayDate.isBefore(predictedBleedingStart)) { return predictLabels.predictionInFuture( todayDate.until(predictedBleedingStart, ChronoUnit.DAYS), @@ -194,10 +198,10 @@ function determinePredictionText(bleedingPrediction) { } if (todayDate.isAfter(predictedBleedingEnd)) { return predictLabels.predictionInPast( - formatDateForShortText(predictedBleedingStart), formatDateForShortText(predictedBleedingEnd) + formatDateForShortText(predictedBleedingStart), + formatDateForShortText(predictedBleedingEnd) ) } - const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) if (daysToEnd === 0) { return predictLabels.predictionStartedNoDaysLeft } else if (daysToEnd === 1) { @@ -209,16 +213,13 @@ function determinePredictionText(bleedingPrediction) { function getBleedingPredictionRange(prediction) { if (!prediction.length) return labels.unknown - const todayDate = LocalDate.now() - const predictedBleedingStart = LocalDate.parse(prediction[0][0]) - const predictedBleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) + const { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd } = getTimes(prediction) if (todayDate.isBefore(predictedBleedingStart)) { return `${todayDate.until(predictedBleedingStart, ChronoUnit.DAYS)}-${todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS)}` } if (todayDate.isAfter(predictedBleedingEnd)) { return labels.unknown } - const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) if (daysToEnd === 0) { return '0' } else { From ea36d4ec7a65a31b3eb22ede73e0b0c7d7c50b9d Mon Sep 17 00:00:00 2001 From: emelko Date: Wed, 1 May 2019 13:07:40 +0200 Subject: [PATCH 6/7] Change if statement with conditional operator --- components/home.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/components/home.js b/components/home.js index 73a4ef7..32e35eb 100644 --- a/components/home.js +++ b/components/home.js @@ -179,7 +179,7 @@ export default class Home extends Component { } } -function getTimes(prediction) { +function getTimes(prediction) { const todayDate = LocalDate.now() const predictedBleedingStart = LocalDate.parse(prediction[0][0]) const predictedBleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) @@ -220,9 +220,5 @@ function getBleedingPredictionRange(prediction) { if (todayDate.isAfter(predictedBleedingEnd)) { return labels.unknown } - if (daysToEnd === 0) { - return '0' - } else { - return `0 - ${daysToEnd}` - } + return (daysToEnd === 0 ? '0' : `0 - ${daysToEnd}`) } \ No newline at end of file From bc0d36ed54c3ba8319ab3ac369d734e84781a37c Mon Sep 17 00:00:00 2001 From: emelko Date: Fri, 10 May 2019 13:11:36 +0200 Subject: [PATCH 7/7] Adds comment for bleeding prediction ranges --- components/home.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/home.js b/components/home.js index 32e35eb..5e64814 100644 --- a/components/home.js +++ b/components/home.js @@ -179,9 +179,10 @@ export default class Home extends Component { } } -function getTimes(prediction) { +function getTimes(prediction) { const todayDate = LocalDate.now() const predictedBleedingStart = LocalDate.parse(prediction[0][0]) + /* the range of predicted bleeding days can be either 3 or 5 */ const predictedBleedingEnd = LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) return { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd }