Get actual amount of cycle days to display
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ const config = {
|
|||||||
temperatureScale: {
|
temperatureScale: {
|
||||||
low: 35,
|
low: 35,
|
||||||
high: 38
|
high: 38
|
||||||
},
|
}
|
||||||
xAxisRangeInDays: 1000
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const margin = 3
|
const margin = 3
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user