Use new smpto module in day view
This commit is contained in:
+14
-2
@@ -4,16 +4,20 @@ const LocalDate = joda.LocalDate
|
||||
export default function config(opts) {
|
||||
let bleedingDaysSortedByDate
|
||||
let temperatureDaysSortedByDate
|
||||
let cycleDaysSortedByDate
|
||||
let maxBreakInBleeding
|
||||
|
||||
if (!opts) {
|
||||
// we only want to require (and run) the db module when not running the tests
|
||||
// we only want to require (and run) the db module
|
||||
// when not running the tests
|
||||
bleedingDaysSortedByDate = require('../db').bleedingDaysSortedByDate
|
||||
temperatureDaysSortedByDate = require('../db').temperatureDaysSortedByDate
|
||||
cycleDaysSortedByDate = require('../db').cycleDaysSortedByDate
|
||||
maxBreakInBleeding = 1
|
||||
} else {
|
||||
bleedingDaysSortedByDate = opts.bleedingDaysSortedByDate || []
|
||||
temperatureDaysSortedByDate = opts.temperatureDaysSortedByDate || []
|
||||
cycleDaysSortedByDate = opts.cycleDaysSortedByDate || []
|
||||
maxBreakInBleeding = opts.maxBreakInBleeding || 1
|
||||
}
|
||||
|
||||
@@ -67,9 +71,17 @@ export default function config(opts) {
|
||||
.map(day => day.temperature.value)
|
||||
}
|
||||
|
||||
function getCycleDaysBeforeDay(targetDateString) {
|
||||
const firstCycleDay = getLastMensesStart(targetDateString)
|
||||
return cycleDaysSortedByDate.filter(({date}) => {
|
||||
return date >= firstCycleDay.date && date <= targetDateString
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
getCycleDayNumber,
|
||||
getLastMensesStart,
|
||||
getPreviousTemperaturesInCycle
|
||||
getPreviousTemperaturesInCycle,
|
||||
getCycleDaysBeforeDay
|
||||
}
|
||||
}
|
||||
|
||||
+10
-21
@@ -1,29 +1,18 @@
|
||||
import getTemperatureStatus from './sympto/temperature'
|
||||
import getFertilityStatus from './sympto'
|
||||
import cycleModule from './cycle'
|
||||
|
||||
const getLastMensesStart = cycleModule().getLastMensesStart
|
||||
const getPreviousTemperaturesInCycle = cycleModule().getPreviousTemperaturesInCycle
|
||||
const { getCycleDaysBeforeDay } = cycleModule()
|
||||
|
||||
export default function (dateString) {
|
||||
// we get earliest last, but sympto wants earliest first
|
||||
const cycle = getCycleDaysBeforeDay(dateString).reverse()
|
||||
// const previousCycles = getPreviousCycles()
|
||||
const status = getFertilityStatus({cycle})
|
||||
|
||||
function getTemperatureFertilityStatus(targetDateString) {
|
||||
const lastMensesStart = getLastMensesStart(targetDateString)
|
||||
if (!lastMensesStart) return formatStatusForApp({ detected: false })
|
||||
const previousTemperaturesInCycle = getPreviousTemperaturesInCycle(targetDateString, lastMensesStart)
|
||||
// we get temps with latest first, but sympto module expects latest last
|
||||
previousTemperaturesInCycle.reverse()
|
||||
const status = getTemperatureStatus(previousTemperaturesInCycle)
|
||||
return formatStatusForApp(status)
|
||||
}
|
||||
|
||||
function formatStatusForApp(status) {
|
||||
if (!status.detected) return 'fertile'
|
||||
const dict = [
|
||||
"regular temperature",
|
||||
"first exception",
|
||||
"second exception"
|
||||
]
|
||||
return `infertile according to the ${dict[status.rule]} rule`
|
||||
}
|
||||
|
||||
export {
|
||||
getTemperatureFertilityStatus
|
||||
const fertileStatus = status.assumeFertility ? 'fertile' : 'infertile'
|
||||
return `You are currently ${fertileStatus}`
|
||||
}
|
||||
Reference in New Issue
Block a user