From b19783c4698cb47e789c3b95bdb5c68a71d2e0c0 Mon Sep 17 00:00:00 2001 From: "Sean C. Rhea" Date: Wed, 15 Aug 2007 20:46:44 +0000 Subject: [PATCH] Rob Carlsen's patch for ignoring zeros in heart rate during intervals. --- src/gui/RideItem.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gui/RideItem.cpp b/src/gui/RideItem.cpp index 7490d592d..e610e1d04 100644 --- a/src/gui/RideItem.cpp +++ b/src/gui/RideItem.cpp @@ -51,6 +51,7 @@ static void summarize(QString &intervals, double &int_hr_sum, double &int_cad_sum, double &int_mph_sum, + double &int_secs_hr, double &int_max_power) { double dur = round(time_end - time_start); @@ -58,7 +59,7 @@ static void summarize(QString &intervals, double minutes = (int) (dur/60.0); double seconds = dur - (60 * minutes); double watts_avg = int_watts_sum / dur; - double hr_avg = int_hr_sum / dur; + double hr_avg = int_hr_sum / int_secs_hr; double cad_avg = int_cad_sum / dur; double mph_avg = int_mph_sum / dur; double energy = int_watts_sum / 1000.0; // watts_avg / 1000.0 * dur; @@ -169,13 +170,14 @@ RideItem::htmlSummary() double total_hr = 0.0; double secs_cad = 0.0; double total_cad = 0.0; - + QString intervals = ""; unsigned last_interval = UINT_MAX; double int_watts_sum = 0.0; double int_hr_sum = 0.0; double int_cad_sum = 0.0; double int_mph_sum = 0.0; + double int_secs_hr = 0.0; double int_max_power = 0.0; double time_start, time_end, mile_start, mile_end; @@ -191,12 +193,13 @@ RideItem::htmlSummary() if (last_interval != UINT_MAX) { summarize(intervals, last_interval, time_start, time_end, mile_start, mile_end, int_watts_sum, - int_hr_sum, int_cad_sum, int_mph_sum, int_max_power); + int_hr_sum, int_cad_sum, int_mph_sum, int_secs_hr, int_max_power); } last_interval = point->interval; time_start = point->secs; mile_start = point->miles; + int_secs_hr = secs_delta; } if ((point->mph > 0.0) || (point->cad > 0.0)) { @@ -220,6 +223,7 @@ RideItem::htmlSummary() total_hr += point->hr * secs_delta; secs_hr += secs_delta; int_hr_sum += point->hr * secs_delta; + int_secs_hr += secs_delta; } if (point->cad > 0) { total_cad += point->cad * secs_delta; @@ -235,14 +239,14 @@ RideItem::htmlSummary() } summarize(intervals, last_interval, time_start, time_end, mile_start, mile_end, int_watts_sum, - int_hr_sum, int_cad_sum, int_mph_sum, int_max_power); + int_hr_sum, int_cad_sum, int_mph_sum, int_secs_hr, int_max_power); avg_watts = (secs_watts == 0.0) ? 0.0 : round(total_watts / secs_watts); total_distance = raw->points.back()->miles; total_work = total_watts / 1000.0; - + summary += "

"; summary += ""; summary += "";

Totals