From e5418c32e21d6907cc292b3d54e90e6cfcdc7d97 Mon Sep 17 00:00:00 2001 From: Julia Friesel Date: Wed, 30 Sep 2020 20:33:21 +0200 Subject: [PATCH] Fix ordinal suffix for numbers greater than 10 --- components/chart/cycle-day-label.js | 6 +++--- components/helpers/home.js | 20 +++++++++++++------- components/home.js | 12 ++++++------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index aec35d5..f5ef7aa 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -7,7 +7,7 @@ import moment from 'moment' import AppText from '../common/app-text' import cycleModule from '../../lib/cycle' -import { dateEnding } from '../helpers/home' +import { getOrdinalSuffix } from '../helpers/home' import { Containers, Typography } from '../../styles' const CycleDayLabel = ({ height, date }) => { @@ -18,13 +18,13 @@ const CycleDayLabel = ({ height, date }) => { const dateFormatting = isFirstDayOfMonth ? 'MMM' : 'D' const shortDate = moment(date, "YYYY-MM-DD").format(dateFormatting) const ending = isFirstDayOfMonth ? - '' : dateEnding[this.cycleDayNumber] || dateEnding['default'] + '' : getOrdinalSuffix(this.cycleDayNumber) const cycleDayLabel = cycleDayNumber ? cycleDayNumber : ' ' return ( {cycleDayLabel} - + {shortDate} {ending} diff --git a/components/helpers/home.js b/components/helpers/home.js index 1da8516..4851091 100644 --- a/components/helpers/home.js +++ b/components/helpers/home.js @@ -12,7 +12,7 @@ function getTimes(prediction) { 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 ]) + LocalDate.parse(prediction[0][prediction[0].length - 1]) const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) return { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd } } @@ -63,9 +63,15 @@ export function getBleedingPredictionRange(prediction) { return (daysToEnd === 0 ? '0' : `0 - ${daysToEnd}`) } -export const dateEnding = { - '1': 'st', - '2': 'nd', - '3': 'rd', - 'default': 'th' -} +export function getOrdinalSuffix(num) { + const suffixes = { + 1: 'st', + 2: 'nd', + 3: 'rd', + default: 'th' + } + + const numAsString = num.toString() + const lastNumber = numAsString[numAsString.length - 1] + return suffixes[lastNumber] || suffixes.default +} \ No newline at end of file diff --git a/components/home.js b/components/home.js index a1d5e87..2444194 100644 --- a/components/home.js +++ b/components/home.js @@ -13,7 +13,7 @@ import Button from './common/button' import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' -import { determinePredictionText, dateEnding } from './helpers/home' +import { determinePredictionText, getOrdinalSuffix } from './helpers/home' import { Colors, Fonts, Sizes, Spacing } from '../styles' import { home as labels } from '../i18n/en/labels' @@ -32,15 +32,15 @@ class Home extends Component { this.todayDateString = today.toString() const { getCycleDayNumber, getPredictedMenses } = cycleModule() this.cycleDayNumber = getCycleDayNumber(this.todayDateString) - const {status, phase, statusText} = + const { status, phase, statusText } = getFertilityStatusForDay(this.todayDateString) const prediction = getPredictedMenses() this.cycleDayText = !this.cycleDayNumber ? labels.cycleDayNotEnoughInfo - : `${this.cycleDayNumber}${dateEnding[this.cycleDayNumber] || dateEnding['default']}` + : `${this.cycleDayNumber}${getOrdinalSuffix(this.cycleDayNumber)}` this.phase = phase this.phaseText = !phase ? statusText - : `${phase}${dateEnding[phase] || dateEnding['default']}` + : `${phase}${getOrdinalSuffix(phase)}` this.prediction = determinePredictionText(prediction) this.status = status this.statusText = statusText @@ -149,13 +149,13 @@ const styles = StyleSheet.create({ }) const mapStateToProps = (state) => { - return({ + return ({ date: getDate(state), }) } const mapDispatchToProps = (dispatch) => { - return({ + return ({ navigate: (page) => dispatch(navigate(page)), setDate: (date) => dispatch(setDate(date)), })