Skip to content

Commit 1ed5594

Browse files
committed
recorder: show both barometer and GPS altitude in elevation chart
1 parent 2185655 commit 1ed5594

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

apps/recorder/interface.html

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -201,23 +201,14 @@
201201
scales: { y: { min: 0, max: 100, title: 'Battery %' }, y1: { position: 'right', min: 3.0, max: 4.2, title: 'Voltage (V)', grid: false } }
202202
},
203203
steps: { filter: d => d.Steps !== undefined && d.Steps !== "", data: d => parseInt(d.Steps) || 0, label: 'Steps per Interval', color: '#36a2eb', title: 'Step Count Over Time', type: 'bar', cumulative: true },
204-
elevation: {
205-
filter: d => (d['Barometer Altitude'] && d['Barometer Altitude'] !== "" && !isNaN(parseFloat(d['Barometer Altitude']))) || (d.Altitude && d.Altitude !== "" && !isNaN(parseFloat(d.Altitude))),
206-
data: d => {
207-
if (d['Barometer Altitude'] && d['Barometer Altitude'] !== "" && !isNaN(parseFloat(d['Barometer Altitude']))) {
208-
return convertElevation(parseFloat(d['Barometer Altitude'])).value;
209-
} else {
210-
return convertElevation(parseFloat(d.Altitude)).value;
211-
}
212-
},
213-
label: () => convertElevation(1).label,
214-
color: '#8b5cf6',
204+
elevation: {
205+
filter: d => (d['Barometer Altitude'] !== undefined && d['Barometer Altitude'] !== "") || (d.Altitude !== undefined && d.Altitude !== ""),
215206
title: 'Elevation Profile',
216-
getTitle: data => {
217-
// Check if we have any barometer altitude data
218-
const hasBarometerAlt = data.some(d => d['Barometer Altitude'] && d['Barometer Altitude'] !== "" && !isNaN(parseFloat(d['Barometer Altitude'])));
219-
return hasBarometerAlt ? 'Elevation Profile (Barometer)' : 'Elevation Profile (GPS)';
220-
}
207+
datasets: [
208+
{ key: 'Barometer Altitude', label: () => 'Barometer (' + convertElevation(1).unit + ')', color: '#8b5cf6', yAxis: 'y', convert: convertElevation },
209+
{ key: 'Altitude', label: () => 'GPS (' + convertElevation(1).unit + ')', color: '#a855f7', yAxis: 'y', convert: convertElevation }
210+
],
211+
scales: { y: { title: () => convertElevation(1).label } }
221212
},
222213
speed: { filter: d => d.Latitude && d.Longitude && d.Latitude !== "" && d.Longitude !== "", calculate: true, label: () => convertSpeed(1).label, color: '#f59e0b', title: 'Speed Over Time' },
223214
barometer: {
@@ -252,7 +243,7 @@
252243
.filter(ds => data.some(pt => pt[ds.key] !== undefined && pt[ds.key] !== ""))
253244
.map(ds => makeDataset(ds.label, data.map(pt => {
254245
const val = parseFloat(pt[ds.key]);
255-
return val ? (ds.convert ? ds.convert(val).value : val) : null;
246+
return val ? (ds.convert ? parseFloat(ds.convert(val).value.toFixed(1)) : val) : null;
256247
}), ds.color, { fill: false, yAxisID: ds.yAxis }));
257248
} else if (type === 'speed') {
258249
// Calculate speed from GPS coordinates
@@ -292,7 +283,7 @@
292283
interaction: { intersect: false, mode: 'point' },
293284
plugins: {
294285
title: { display: true, text: config.getTitle ? config.getTitle(data) : config.title },
295-
legend: { display: datasets.length > 1 },
286+
legend: { display: true },
296287
tooltip: { mode: 'nearest', intersect: false }
297288
},
298289
scales: {
@@ -520,7 +511,10 @@
520511
const items = [];
521512
if (pointData.Time) items.push(`<strong>🕐 ${pointData.Time.toLocaleTimeString()}</strong>`);
522513
if (pointData.Heartrate) items.push(`❤️ ${pointData.Heartrate} BPM`);
523-
if (pointData.Altitude) {
514+
if (pointData['Barometer Altitude'] && pointData['Barometer Altitude'] !== "" && !isNaN(parseFloat(pointData['Barometer Altitude']))) {
515+
const e = convertElevation(parseFloat(pointData['Barometer Altitude']));
516+
items.push(`⛰️ ${e.value.toFixed(0)} ${e.unit}`);
517+
} else if (pointData.Altitude) {
524518
const e = convertElevation(parseFloat(pointData.Altitude));
525519
items.push(`⛰️ ${e.value.toFixed(0)} ${e.unit}`);
526520
}

0 commit comments

Comments
 (0)