Get actual amount of cycle days to display

This commit is contained in:
Julia Friesel
2018-08-12 11:21:11 +02:00
parent 0afaf8e297
commit cd1e689aae
4 changed files with 27 additions and 12 deletions
+14 -7
View File
@@ -4,9 +4,8 @@ import range from 'date-range'
import { LocalDate } from 'js-joda' import { LocalDate } from 'js-joda'
import { yAxis, normalizeToScale } from './y-axis' import { yAxis, normalizeToScale } from './y-axis'
import DayColumn from './day-column' import DayColumn from './day-column'
import { getCycleDay, cycleDaysSortedByDate } from '../../db' import { getCycleDay, cycleDaysSortedByDate, getAmountOfCycleDays } from '../../db'
import styles from './styles' import styles from './styles'
import config from './config'
const yAxisView = <View {...styles.yAxis}>{yAxis.labels}</View> const yAxisView = <View {...styles.yAxis}>{yAxis.labels}</View>
@@ -14,7 +13,7 @@ export default class CycleChart extends Component {
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
columns: makeColumnInfo(config.xAxisRangeInDays) columns: makeColumnInfo(),
} }
this.renderColumn = ({item, index}) => { this.renderColumn = ({item, index}) => {
return ( return (
@@ -29,7 +28,7 @@ export default class CycleChart extends Component {
this.reCalculateChartInfo = (function(Chart) { this.reCalculateChartInfo = (function(Chart) {
return function() { return function() {
Chart.setState({columns: makeColumnInfo(config.xAxisRangeInDays)}) Chart.setState({columns: makeColumnInfo()})
} }
})(this) })(this)
@@ -60,8 +59,16 @@ export default class CycleChart extends Component {
} }
} }
function makeColumnInfo(n) { function makeColumnInfo() {
const xAxisDates = getPreviousDays(n).map(jsDate => { let amountOfCycleDays = getAmountOfCycleDays()
// if there's not much data yet, we want to show at least 30 days on the chart
if (amountOfCycleDays < 30) {
amountOfCycleDays = 30
} else {
// we don't want the chart to end abruptly before the first data day
amountOfCycleDays += 5
}
const xAxisDates = getTodayAndPreviousDays(amountOfCycleDays).map(jsDate => {
return LocalDate.of( return LocalDate.of(
jsDate.getFullYear(), jsDate.getFullYear(),
jsDate.getMonth() + 1, jsDate.getMonth() + 1,
@@ -85,7 +92,7 @@ function makeColumnInfo(n) {
}) })
} }
function getPreviousDays(n) { function getTodayAndPreviousDays(n) {
const today = new Date() const today = new Date()
today.setHours(0) today.setHours(0)
today.setMinutes(0) today.setMinutes(0)
+1 -2
View File
@@ -4,8 +4,7 @@ const config = {
temperatureScale: { temperatureScale: {
low: 35, low: 35,
high: 38 high: 38
}, }
xAxisRangeInDays: 1000
} }
const margin = 3 const margin = 3
-1
View File
@@ -57,7 +57,6 @@ export default class DayColumn extends Component {
} }
if (typeof mucus === 'number') { if (typeof mucus === 'number') {
console.log('ever')
const mucusIcon = ( const mucusIcon = (
<View <View
position='absolute' position='absolute'
+12 -2
View File
@@ -1,5 +1,5 @@
import Realm from 'realm' import Realm from 'realm'
import { LocalDate } from 'js-joda' import { LocalDate, ChronoUnit } from 'js-joda'
import { import {
cycleWithTempAndNoMucusShift, cycleWithTempAndNoMucusShift,
cycleWithFhm, cycleWithFhm,
@@ -193,6 +193,15 @@ function getColumnNamesForCsv() {
} }
} }
function getAmountOfCycleDays() {
const amountOfCycleDays = cycleDaysSortedByDate.length
if (!amountOfCycleDays) return 0
const earliest = cycleDaysSortedByDate[amountOfCycleDays - 1]
const today = LocalDate.now()
const earliestAsLocalDate = LocalDate.parse(earliest.date)
return earliestAsLocalDate.until(today, ChronoUnit.DAYS)
}
export { export {
saveSymptom, saveSymptom,
getOrCreateCycleDay, getOrCreateCycleDay,
@@ -203,5 +212,6 @@ export {
deleteAll, deleteAll,
getPreviousTemperature, getPreviousTemperature,
getCycleDay, getCycleDay,
getColumnNamesForCsv getColumnNamesForCsv,
getAmountOfCycleDays
} }