Newer
Older
import { LocalDate } from "js-joda"
export default function(cycle, previousCycles) {
let preOvuPhaseLength = 5
const minus8DayRuleResult = apply8DayRule(previousCycles)
if (minus8DayRuleResult) preOvuPhaseLength = minus8DayRuleResult
const startDate = LocalDate.parse(cycle[0].date)
const preOvuEndDate = startDate.plusDays(preOvuPhaseLength - 1).toString()
const maybePreOvuDays = cycle.slice(0, preOvuPhaseLength).filter(d => {
return d.date <= preOvuEndDate
})
const preOvulatoryDays = getDaysUntilFertileMucus(maybePreOvuDays)
// if mucus occurs on the 1st cycle day, there is no pre-ovu phase
if (!preOvulatoryDays.length) return null
if (preOvulatoryDays.length === maybePreOvuDays.length) {
} else {
endDate = preOvulatoryDays[preOvulatoryDays.length - 1].date
}
return {
cycleDays: preOvulatoryDays,
start: {
date: preOvulatoryDays[0].date
},
end: {
}
}
}
function getDaysUntilFertileMucus(days) {
const firstFertileMucusDayIndex = days.findIndex(day => {
return day.mucus && day.mucus.value > 1
})
if (firstFertileMucusDayIndex > -1) {
return days.slice(0, firstFertileMucusDayIndex)
}
return days