mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
Lap Averages in Real Time mode
Add lap average for hr watts cadence speed.
This commit is contained in:
committed by
Mark Liversedge
parent
1b1fe43238
commit
0ba75f3f19
@@ -20,7 +20,7 @@
|
||||
#include "DialWindow.h"
|
||||
|
||||
DialWindow::DialWindow(MainWindow *mainWindow) :
|
||||
GcWindow(mainWindow), mainWindow(mainWindow), average(1)
|
||||
GcWindow(mainWindow), mainWindow(mainWindow), average(1), isNewLap(false)
|
||||
{
|
||||
rolling.resize(150); // enough for 30 seconds at 5hz
|
||||
|
||||
@@ -85,6 +85,7 @@ DialWindow::DialWindow(MainWindow *mainWindow) :
|
||||
connect(mainWindow, SIGNAL(configChanged()), this, SLOT(seriesChanged()));
|
||||
connect(mainWindow, SIGNAL(stop()), this, SLOT(stop()));
|
||||
connect(mainWindow, SIGNAL(start()), this, SLOT(start()));
|
||||
connect(mainWindow, SIGNAL(newLap()), this, SLOT(onNewLap()));
|
||||
|
||||
// setup colors
|
||||
seriesChanged();
|
||||
@@ -158,6 +159,17 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
|
||||
|
||||
}
|
||||
|
||||
if( isNewLap &&
|
||||
( series == RealtimeData::AvgCadenceLap ||
|
||||
series == RealtimeData::AvgHeartRateLap ||
|
||||
series == RealtimeData::AvgSpeedLap ||
|
||||
series == RealtimeData::AvgWattsLap ) )
|
||||
{
|
||||
count = 0;
|
||||
sum = 0.0;
|
||||
isNewLap = false;
|
||||
}
|
||||
|
||||
switch (series) {
|
||||
|
||||
case RealtimeData::Time:
|
||||
@@ -193,6 +205,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
|
||||
break;
|
||||
|
||||
case RealtimeData::AvgWatts:
|
||||
case RealtimeData::AvgWattsLap:
|
||||
sum += rtData.value(RealtimeData::Watts);
|
||||
count++;
|
||||
value = sum / count;
|
||||
@@ -200,6 +213,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
|
||||
break;
|
||||
|
||||
case RealtimeData::AvgSpeed:
|
||||
case RealtimeData::AvgSpeedLap:
|
||||
sum += rtData.value(RealtimeData::Speed);
|
||||
count++;
|
||||
value = sum / count;
|
||||
@@ -208,6 +222,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
|
||||
break;
|
||||
|
||||
case RealtimeData::AvgCadence:
|
||||
case RealtimeData::AvgCadenceLap:
|
||||
sum += rtData.value(RealtimeData::Cadence);
|
||||
count++;
|
||||
value = sum / count;
|
||||
@@ -215,6 +230,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
|
||||
break;
|
||||
|
||||
case RealtimeData::AvgHeartRate:
|
||||
case RealtimeData::AvgHeartRateLap:
|
||||
sum += rtData.value(RealtimeData::HeartRate);
|
||||
count++;
|
||||
value = sum / count;
|
||||
@@ -469,22 +485,26 @@ void DialWindow::seriesChanged()
|
||||
case RealtimeData::Joules:
|
||||
case RealtimeData::Watts:
|
||||
case RealtimeData::AvgWatts:
|
||||
case RealtimeData::AvgWattsLap:
|
||||
foreground = GColor(CPOWER);
|
||||
break;
|
||||
|
||||
case RealtimeData::Speed:
|
||||
case RealtimeData::VirtualSpeed:
|
||||
case RealtimeData::AvgSpeed:
|
||||
case RealtimeData::AvgSpeedLap:
|
||||
foreground = GColor(CSPEED);
|
||||
break;
|
||||
|
||||
case RealtimeData::Cadence:
|
||||
case RealtimeData::AvgCadence:
|
||||
case RealtimeData::AvgCadenceLap:
|
||||
foreground = GColor(CCADENCE);
|
||||
break;
|
||||
|
||||
case RealtimeData::HeartRate:
|
||||
case RealtimeData::AvgHeartRate:
|
||||
case RealtimeData::AvgHeartRateLap:
|
||||
foreground = GColor(CHEARTRATE);
|
||||
break;
|
||||
|
||||
@@ -526,3 +546,9 @@ DialWindow::setAverageFromSlider() {
|
||||
setAverageFromText(QString("%1").arg(averageSlider->value()));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
DialWindow::onNewLap()
|
||||
{
|
||||
isNewLap = true;
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@ class DialWindow : public GcWindow
|
||||
void start();
|
||||
void stop();
|
||||
void pause();
|
||||
void onNewLap();
|
||||
|
||||
protected:
|
||||
|
||||
@@ -106,6 +107,7 @@ class DialWindow : public GcWindow
|
||||
int average;
|
||||
int count;
|
||||
double sum;
|
||||
bool isNewLap;
|
||||
|
||||
// for keeping track of rolling averages (max 30s at 5hz)
|
||||
// used by NP and XPower
|
||||
|
||||
@@ -211,6 +211,10 @@ const QList<RealtimeData::DataSeries> &RealtimeData::listDataSeries()
|
||||
seriesList << AvgSpeed;
|
||||
seriesList << AvgCadence;
|
||||
seriesList << AvgHeartRate;
|
||||
seriesList << AvgWattsLap;
|
||||
seriesList << AvgSpeedLap;
|
||||
seriesList << AvgCadenceLap;
|
||||
seriesList << AvgHeartRateLap;
|
||||
seriesList << VirtualSpeed;
|
||||
seriesList << AltWatts;
|
||||
seriesList << LRBalance;
|
||||
@@ -298,6 +302,18 @@ QString RealtimeData::seriesName(DataSeries series)
|
||||
case AvgCadence: return tr("Average Cadence");
|
||||
break;
|
||||
|
||||
case AvgWattsLap: return tr("Lap Power");
|
||||
break;
|
||||
|
||||
case AvgSpeedLap: return tr("Lap Speed");
|
||||
break;
|
||||
|
||||
case AvgHeartRateLap: return tr("Lap Heartrate");
|
||||
break;
|
||||
|
||||
case AvgCadenceLap: return tr("Lap Cadence");
|
||||
break;
|
||||
|
||||
case LRBalance: return tr("Left/Right Balance");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
XPower, BikeScore, RI, Joules, SkibaVI,
|
||||
NP, TSS, IF, VI,
|
||||
AvgWatts, AvgSpeed, AvgCadence, AvgHeartRate,
|
||||
AvgWattsLap, AvgSpeedLap, AvgCadenceLap, AvgHeartRateLap,
|
||||
VirtualSpeed, AltWatts, LRBalance };
|
||||
|
||||
typedef enum dataseries DataSeries;
|
||||
|
||||
Reference in New Issue
Block a user