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 { yAxis, normalizeToScale } from './y-axis'
import DayColumn from './day-column'
import { getCycleDay, cycleDaysSortedByDate } from '../../db'
import { getCycleDay, cycleDaysSortedByDate, getAmountOfCycleDays } from '../../db'
import styles from './styles'
import config from './config'
const yAxisView = <View {...styles.yAxis}>{yAxis.labels}</View>
@@ -14,7 +13,7 @@ export default class CycleChart extends Component {
constructor(props) {
super(props)
this.state = {
columns: makeColumnInfo(config.xAxisRangeInDays)
columns: makeColumnInfo(),
}
this.renderColumn = ({item, index}) => {
return (
@@ -29,7 +28,7 @@ export default class CycleChart extends Component {
this.reCalculateChartInfo = (function(Chart) {
return function() {
Chart.setState({columns: makeColumnInfo(config.xAxisRangeInDays)})
Chart.setState({columns: makeColumnInfo()})
}
})(this)
@@ -60,8 +59,16 @@ export default class CycleChart extends Component {
}
}
function makeColumnInfo(n) {
const xAxisDates = getPreviousDays(n).map(jsDate => {
function makeColumnInfo() {
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(
jsDate.getFullYear(),
jsDate.getMonth() + 1,
@@ -85,7 +92,7 @@ function makeColumnInfo(n) {
})
}
function getPreviousDays(n) {
function getTodayAndPreviousDays(n) {
const today = new Date()
today.setHours(0)
today.setMinutes(0)
+1 -2
View File
@@ -4,8 +4,7 @@ const config = {
temperatureScale: {
low: 35,
high: 38
},
xAxisRangeInDays: 1000
}
}
const margin = 3
-1
View File
@@ -57,7 +57,6 @@ export default class DayColumn extends Component {
}
if (typeof mucus === 'number') {
console.log('ever')
const mucusIcon = (
<View
position='absolute'
+12 -2
View File
@@ -1,5 +1,5 @@
import Realm from 'realm'
import { LocalDate } from 'js-joda'
import { LocalDate, ChronoUnit } from 'js-joda'
import {
cycleWithTempAndNoMucusShift,
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 {
saveSymptom,
getOrCreateCycleDay,
@@ -203,5 +212,6 @@ export {
deleteAll,
getPreviousTemperature,
getCycleDay,
getColumnNamesForCsv
getColumnNamesForCsv,
getAmountOfCycleDays
}