Shorten line lengths in cycle

This commit is contained in:
Julia Friesel
2018-08-02 10:33:52 +02:00
parent e1fa656b8f
commit 2f9b08fd8b
+23 -14
View File
@@ -1,6 +1,6 @@
import * as joda from 'js-joda' import * as joda from 'js-joda'
const LocalDate = joda.LocalDate const LocalDate = joda.LocalDate
const DAYS = joda.ChronoUnit.DAYS
export default function config(opts) { export default function config(opts) {
let bleedingDaysSortedByDate let bleedingDaysSortedByDate
@@ -28,28 +28,31 @@ export default function config(opts) {
return day return day
}) })
const firstBleedingDayBeforeTargetDayIndex = withWrappedDates.findIndex(day => { const firstBleedingBeforeTargetDayIndex = withWrappedDates.findIndex(day => {
return ( return (
day.wrappedDate.isEqual(targetDate) || day.wrappedDate.isEqual(targetDate) ||
day.wrappedDate.isBefore(targetDate) day.wrappedDate.isBefore(targetDate)
) )
}) })
if (firstBleedingDayBeforeTargetDayIndex < 0) { if (firstBleedingBeforeTargetDayIndex < 0) {
withWrappedDates.forEach(day => delete day.wrappedDate) withWrappedDates.forEach(day => delete day.wrappedDate)
return null return null
} }
const previousBleedingDays = withWrappedDates.slice(firstBleedingDayBeforeTargetDayIndex) const prevBleedingDays = withWrappedDates.slice(firstBleedingBeforeTargetDayIndex)
const lastMensesStart = previousBleedingDays.find((day, i) => { const lastMensesStart = prevBleedingDays.find((day, i) => {
return thereIsNoPreviousBleedingDayWithinTheThreshold(day, previousBleedingDays.slice(i + 1)) return noBleedingDayWithinThreshold(day, prevBleedingDays.slice(i + 1))
}) })
function thereIsNoPreviousBleedingDayWithinTheThreshold(bleedingDay, previousBleedingDays) { function noBleedingDayWithinThreshold(day, previousBleedingDays) {
const periodThreshold = bleedingDay.wrappedDate.minusDays(maxBreakInBleeding + 1) const periodThreshold = day.wrappedDate.minusDays(maxBreakInBleeding + 1)
return !previousBleedingDays.some(({ wrappedDate }) => { return !previousBleedingDays.some(({ wrappedDate }) => {
return wrappedDate.equals(periodThreshold) || wrappedDate.isAfter(periodThreshold) return (
wrappedDate.equals(periodThreshold) ||
wrappedDate.isAfter(periodThreshold)
)
}) })
} }
@@ -66,9 +69,11 @@ export default function config(opts) {
return day return day
}) })
const firstBleedingDayAfterTargetDay = withWrappedDates.reverse().find(day => { const firstBleedingDayAfterTargetDay = withWrappedDates
return day.wrappedDate.isAfter(targetDate) .reverse()
}) .find(day => {
return day.wrappedDate.isAfter(targetDate)
})
withWrappedDates.forEach(day => delete day.wrappedDate) withWrappedDates.forEach(day => delete day.wrappedDate)
@@ -80,7 +85,7 @@ export default function config(opts) {
if (!lastMensesStart) return null if (!lastMensesStart) return null
const targetDate = LocalDate.parse(targetDateString) const targetDate = LocalDate.parse(targetDateString)
const lastMensesLocalDate = LocalDate.parse(lastMensesStart.date) const lastMensesLocalDate = LocalDate.parse(lastMensesStart.date)
const diffInDays = lastMensesLocalDate.until(targetDate, joda.ChronoUnit.DAYS) const diffInDays = lastMensesLocalDate.until(targetDate, DAYS)
// cycle starts at day 1 // cycle starts at day 1
return diffInDays + 1 return diffInDays + 1
@@ -100,7 +105,11 @@ export default function config(opts) {
function getPreviousCycle(dateString) { function getPreviousCycle(dateString) {
const startOfCycle = getLastMensesStart(dateString) const startOfCycle = getLastMensesStart(dateString)
if (!startOfCycle) return null if (!startOfCycle) return null
const dateBeforeStartOfCycle = LocalDate.parse(startOfCycle.date).minusDays(1).toString() const dateBeforeStartOfCycle = LocalDate
.parse(startOfCycle.date)
.minusDays(1)
.toString()
return getCycleForDay(dateBeforeStartOfCycle) return getCycleForDay(dateBeforeStartOfCycle)
} }