diff --git a/src/components/AreaGraph.vue b/src/components/AreaGraph.vue index 7399611..5caa851 100644 --- a/src/components/AreaGraph.vue +++ b/src/components/AreaGraph.vue @@ -201,7 +201,7 @@ export default { // Creating Scales const xScaleDistance = d3 .scaleLinear() - .domain(d3.extent(graphRecords, (d) => d.distance! / 1000) as number[]) + .domain(d3.extent(graphRecords, (d) => (d.distance ?? 0) / 1000) as number[]) .range([marginLeft, width - marginRight]) const xScaleTimestamp = d3 @@ -211,7 +211,7 @@ export default { const xScale = this.hasDistance ? xScaleDistance : xScaleTimestamp this.scaleByDistanceOrTimestamp = (rec: Record): number => { - if (this.hasDistance) return xScale(rec.distance! / 1000) + if (this.hasDistance) return xScale((rec.distance ?? 0) / 1000) return xScale(new Date(rec.timestamp!).getTime()) } diff --git a/src/components/ElevationGraph.vue b/src/components/ElevationGraph.vue index 7be801d..decb87e 100644 --- a/src/components/ElevationGraph.vue +++ b/src/components/ElevationGraph.vue @@ -20,7 +20,7 @@ {{ typeof recordView.distance === 'number' - ? (recordView.distance! / 1000).toFixed(2) + ? ((recordView.distance ?? 0) / 1000).toFixed(2) : '0.00' }} km @@ -119,7 +119,7 @@ export default { return } pointer.style('opacity', 1) - pointer.attr('transform', `translate(${this.xScale(record.distance! / 1000)}, 0)`) + pointer.attr('transform', `translate(${this.xScale((record.distance ?? 0) / 1000)}, 0)`) } }, receivedRecordFreeze: { @@ -189,7 +189,7 @@ export default { // Creating Scales const xScale = d3 .scaleLinear() - .domain(d3.extent(graphRecords, (d) => d.distance! / 1000) as Number[]) + .domain(d3.extent(graphRecords, (d) => (d.distance ?? 0) / 1000) as Number[]) .range([marginLeft, width - marginRight]) this.xScale = xScale @@ -298,7 +298,7 @@ export default { const area = d3 .area() .curve(d3.curveBasis) - .x((d: Record) => xScale(d.distance! / 1000) as number) + .x((d: Record) => xScale((d.distance ?? 0) / 1000) as number) .y0(yScale(d3.min(yScale.domain())!)) .y1((d) => yScale(d.altitude ?? 0)) @@ -322,14 +322,14 @@ export default { .selectAll('stop') .data(graphRecords) .join('stop') - .attr('offset', (d) => xScale(d.distance! / 1000) / width) + .attr('offset', (d) => xScale((d.distance ?? 0) / 1000) / width) .attr('stop-color', (d) => this.color(d.grade ?? 0)) // Add Line const line = d3 .line() .curve(d3.curveBasis) - .x((d: Record) => xScale(d.distance! / 1000) as number) + .x((d: Record) => xScale((d.distance ?? 0) / 1000) as number) .y((d) => yScale(d.altitude ?? 0)) svg @@ -388,9 +388,9 @@ export default { let nearestRecord: Record = new Record() let dx = Number.MAX_VALUE // let counter = 0 // TODO: remove after debug (currently it's the fastest lookup) - if (xScale(this.records[lookupIndex].distance! / 1000) <= px) { + if (xScale((this.records[lookupIndex].distance ?? 0) / 1000) <= px) { for (let i = lookupIndex; i < this.records.length; i++) { - const delta = Math.abs(px - xScale(this.records[i].distance! / 1000)!) + const delta = Math.abs(px - xScale((this.records[i].distance ?? 0) / 1000)!) if (delta > dx) break nearestRecord = this.records[i] dx = delta @@ -399,7 +399,7 @@ export default { // console.debug(`look forward for ${counter} records`) } else { for (let i = lookupIndex; i >= 0; i--) { - const delta = Math.abs(px - xScale(this.records[i].distance! / 1000)!) + const delta = Math.abs(px - xScale((this.records[i].distance ?? 0) / 1000)!) if (delta > dx) break nearestRecord = this.records[i] dx = delta