diff --git a/chart.js b/chart.js
index f3eb165..7645027 100644
--- a/chart.js
+++ b/chart.js
@@ -75,22 +75,18 @@ export default class CycleChart extends Component {
})
}
- determineCurvePoints() {
+ makeTemperatureCurves() {
return temperatureDaysSortedByDate
.filter(cycleDayIsNotInTheFuture())
- .map(cycleDay => {
- const match = this.xAxisTicks.find(tick => tick.label === cycleDay.date)
- const x = match.rightOffset + columnWidth / 2
- const y = normalizeToScale(cycleDay.temperature.value)
- return [x, y].join()
- }).join(' ')
+ .reduce(separateIntoContinousChunks, [[]])
+ .map(makeCurveCoordinatesForChunk.bind(this))
+ .map(makeCurveFromPoints)
}
componentDidMount() {
this.scrollContainer.scrollToEnd()
}
-
render() {
return (
this.scrollContainer.scrollToEnd()}
>
- {this.makeColumnGrid(this.xAxisTicks)}
+ { this.makeColumnGrid(this.xAxisTicks) }
- {this.placeBleedingSymbolsOnColumns()}
+ { this.placeBleedingSymbolsOnColumns() }
+
+ { this.makeTemperatureCurves() }
-
)
@@ -164,4 +155,48 @@ function cycleDayIsNotInTheFuture() {
const cycleDayLocalDate = LocalDate.parse(cycleDay.date)
return cycleDayLocalDate.isBefore(today) || cycleDayLocalDate.isEqual(today)
}
+}
+
+function separateIntoContinousChunks(curveChunks, curr) {
+ const lastChunk = curveChunks[curveChunks.length - 1]
+ const lastSeenCycleDate = lastChunk.length && lastChunk[lastChunk.length - 1]
+
+ if (!lastSeenCycleDate) {
+ lastChunk.push(curr)
+ return curveChunks
+ }
+
+ const lastSeenLocalDate = LocalDate.parse(lastSeenCycleDate.date)
+ const currLocalDate = LocalDate.parse(curr.date)
+ if (lastSeenLocalDate.compareTo(currLocalDate) === 1) {
+ lastChunk.push(curr)
+ } else {
+ curveChunks.push([curr])
+ }
+
+ return curveChunks
+}
+
+function makeCurveCoordinatesForChunk(chunk) {
+ return chunk
+ .map(cycleDay => {
+ const match = this.xAxisTicks.find(tick => tick.label === cycleDay.date)
+ const x = match.rightOffset + columnWidth / 2
+ const y = normalizeToScale(cycleDay.temperature.value)
+ return [x, y].join()
+ })
+ .join(' ')
+}
+
+function makeCurveFromPoints(curveChunkPoints, i) {
+ return (
+
+ )
}
\ No newline at end of file