import React, { Component } from 'react' import { Text, View, ScrollView } from 'react-native' import { LocalDate, ChronoUnit } from 'js-joda' import styles from '../styles/index' import cycleModule from '../lib/cycle' import getCycleInfo from '../lib/cycle-length' import {stats as labels} from './labels' export default class Stats extends Component { render() { const allMensesStarts = cycleModule().getAllMensesStarts() const atLeastOneCycle = allMensesStarts.length > 1 let cycleLengths let numberOfCycles let cycleInfo if (atLeastOneCycle) { cycleLengths = getCycleLength(allMensesStarts) numberOfCycles = cycleLengths.length if (numberOfCycles > 1) { cycleInfo = getCycleInfo(cycleLengths) } } return ( {!atLeastOneCycle && {labels.emptyStats} } {atLeastOneCycle && numberOfCycles === 1 && {labels.oneCycleStats(cycleLengths[0])} } {atLeastOneCycle && numberOfCycles > 1 && {labels.getBasisOfStats(numberOfCycles)} {labels.averageLabel} {cycleInfo.mean + ' ' + labels.daysLabel} {labels.minLabel} {cycleInfo.minimum + ' ' + labels.daysLabel} {labels.maxLabel} {cycleInfo.maximum + ' ' + labels.daysLabel} {labels.stdLabel} {cycleInfo.stdDeviation + ' ' + labels.daysLabel} } ) } } function getCycleLength(cycleStartDates) { const cycleLengths = [] for (let i = 0; i < cycleStartDates.length - 1; i++) { const nextCycleStart = LocalDate.parse(cycleStartDates[i]) const cycleStart = LocalDate.parse(cycleStartDates[i + 1]) cycleLengths.push(cycleStart.until(nextCycleStart, ChronoUnit.DAYS)) } return cycleLengths }