Skip to content
Snippets Groups Projects
Commit e5418c32 authored by Julia Friesel's avatar Julia Friesel Committed by Sofiya Tepikin
Browse files

Fix ordinal suffix for numbers greater than 10

parent 77908afd
No related branches found
No related tags found
No related merge requests found
......@@ -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 (
<View style={[styles.container, { height }]}>
<AppText style={styles.textBold}>{cycleDayLabel}</AppText>
<View style={{flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center'}}>
<View style={{ flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center' }}>
<AppText style={styles.text}>{shortDate}</AppText>
<AppText style={styles.textLight}>{ending}</AppText>
</View>
......
......@@ -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
......@@ -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)),
})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment