36 lines
970 B
JavaScript
36 lines
970 B
JavaScript
import getFertilityStatus from './sympto'
|
|
import cycleModule from './cycle'
|
|
import { fertilityStatus } from '../labels/labels'
|
|
|
|
const { getCycleDaysBeforeDay, getPreviousCycles } = cycleModule()
|
|
|
|
export default function (dateString) {
|
|
const cycle = getCycleDaysBeforeDay(dateString)
|
|
if (!cycle) return fertilityStatus.unknown
|
|
|
|
const previousCycles = getPreviousCycles(cycle[0])
|
|
|
|
const status = getFertilityStatus({
|
|
cycle: formatCycleForSympto(cycle),
|
|
previousCycles: previousCycles.map(formatCycleForSympto)
|
|
})
|
|
|
|
if (status.phases.postOvulatory) {
|
|
const phase = status.phases.postOvulatory
|
|
if (phase.start.date === dateString) {
|
|
return fertilityStatus.fertileUntilEvening
|
|
}
|
|
}
|
|
|
|
if (status.assumeFertility) {
|
|
return fertilityStatus.fertile
|
|
} else {
|
|
return fertilityStatus.infertile
|
|
}
|
|
}
|
|
|
|
function formatCycleForSympto(cycle) {
|
|
// we get earliest last, but sympto wants earliest first
|
|
cycle.reverse()
|
|
return cycle
|
|
} |