diff --git a/components/chart/chart.js b/components/chart/chart.js index 6e7da685c53bc04db22a8e4db58ae260ba2800ce..8a91920e30cd65bbaf5ce3a1c92f7060a53c2940 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -67,6 +67,8 @@ export default class CycleChart extends Component { data={this.state.columns} renderItem={this.renderColumn} keyExtractor={item => item.dateString} + initialNumToRender={15} + maxToRenderPerBatch={5} > </FlatList> </View> diff --git a/components/chart/day-column.js b/components/chart/day-column.js index a24899afa8499b0882e0159140ad36f8a64c38df..bb6e834b73191544542918f52fa9971031eb412d 100644 --- a/components/chart/day-column.js +++ b/components/chart/day-column.js @@ -17,12 +17,12 @@ import slowlog from 'react-native-slowlog' const getCycleDayNumber = cycleModule().getCycleDayNumber const label = styles.column.label +const getFhmAndLtlInfo = setUpFertilityStatusFunc() export default class DayColumn extends Component { constructor(props) { super(props) - this.getFhmAndLtlInfo = setUpFertilityStatusFunc() - // slowlog(this, /.*/) + slowlog(this, /.*/) } makeDayColumn(data, index) { const { @@ -35,8 +35,7 @@ export default class DayColumn extends Component { } = data const cycleDayNumber = getCycleDayNumber(dateString) const dateLabel = dateString.split('-').slice(1).join('-') - // const nfpLineInfo = this.getFhmAndLtlInfo(dateString, temperature) - const nfpLineInfo = {} + const nfpLineInfo = getFhmAndLtlInfo(dateString, temperature) return ( <G onPress={() => this.passDateToDayView(dateString)}> diff --git a/components/chart/nfp-lines.js b/components/chart/nfp-lines.js index a58abc06e20264db2b8f73cc9abb544d619326fb..e5265acdbe46ed3683ff5c5829568bf5638bc0c4 100644 --- a/components/chart/nfp-lines.js +++ b/components/chart/nfp-lines.js @@ -2,26 +2,26 @@ import { getCycleStatusForDay } from '../../lib/sympto-adapter' import { normalizeToScale } from './y-axis' export default function () { - let cycleStatus - let cycleStartDate - let noMoreCycles = false + const cycle = { + status: null + } function updateCurrentCycle(dateString) { - cycleStatus = getCycleStatusForDay(dateString) - if(!cycleStatus) { - noMoreCycles = true + cycle.status = getCycleStatusForDay(dateString) + if(!cycle.status) { + cycle.noMoreCycles = true return } - if (cycleStatus.phases.preOvulatory) { - cycleStartDate = cycleStatus.phases.preOvulatory.start.date + if (cycle.status.phases.preOvulatory) { + cycle.startDate = cycle.status.phases.preOvulatory.start.date } else { - cycleStartDate = cycleStatus.phases.periOvulatory.start.date + cycle.startDate = cycle.status.phases.periOvulatory.start.date } } function dateIsInPeriOrPostPhase(dateString) { return ( - dateString >= cycleStatus.phases.periOvulatory.start.date + dateString >= cycle.status.phases.periOvulatory.start.date ) } @@ -29,15 +29,15 @@ export default function () { return ( // we are only interested in days that have a preceding // temp - Object.keys(cycleStatus.phases).some(phaseName => { - return cycleStatus.phases[phaseName].cycleDays.some(day => { + Object.keys(cycle.status.phases).some(phaseName => { + return cycle.status.phases[phaseName].cycleDays.some(day => { return day.temperature && day.date < dateString }) }) // and also a following temp, so we don't draw the line // longer than necessary && - cycleStatus.phases.postOvulatory.cycleDays.some(day => { + cycle.status.phases.postOvulatory.cycleDays.some(day => { return day.temperature && day.date > dateString }) ) @@ -51,13 +51,13 @@ export default function () { return function(dateString, temperature) { const ret = {} - if (!cycleStatus && !noMoreCycles) updateCurrentCycle(dateString) - if (noMoreCycles) return ret + if (!cycle.status && !cycle.noMoreCycles) updateCurrentCycle(dateString) + if (cycle.noMoreCycles) return ret - if (dateString < cycleStartDate) updateCurrentCycle(dateString) - if (noMoreCycles) return ret + if (dateString < cycle.startDate) updateCurrentCycle(dateString) + if (cycle.noMoreCycles) return ret - const tempShift = cycleStatus.temperatureShift + const tempShift = cycle.status.temperatureShift if (tempShift) { if (tempShift.firstHighMeasurementDay.date === dateString) {