Deprecated BestIntervalDialog

Added Specification parameter to AddIntervalDialog::findPeaks
So it can be used as a more general replacement for
BestIntervalDialog::findBests and findBestsKPH
This commit is contained in:
Alejandro Martinez
2016-06-29 20:00:42 -03:00
parent 6a2f934681
commit bab562fb46
9 changed files with 41 additions and 39 deletions

View File

@@ -29,7 +29,7 @@
#include "PaceZones.h" #include "PaceZones.h"
#include "Settings.h" #include "Settings.h"
#include "Colors.h" // for ColorEngine #include "Colors.h" // for ColorEngine
#include "BestIntervalDialog.h" // till we fixup ridefilecache to have offsets #include "AddIntervalDialog.h" // till we fixup ridefilecache to have offsets
#include "TimeUtils.h" // time_to_string() #include "TimeUtils.h" // time_to_string()
#include "WPrime.h" // for matches #include "WPrime.h" // for matches
@@ -844,8 +844,8 @@ RideItem::updateIntervals()
for(int i=0; durations[i] != 0; i++) { for(int i=0; durations[i] != 0; i++) {
// go hunting for best peak // go hunting for best peak
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBests(f, Specification(), durations[i], 1, results); AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::watts, RideFile::original, durations[i], 1, results, "", "");
// did we get one ? // did we get one ?
if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) { if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) {
@@ -878,8 +878,8 @@ RideItem::updateIntervals()
for(int i=0; durations[i] != 0; i++) { for(int i=0; durations[i] != 0; i++) {
// go hunting for best peak // go hunting for best peak
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBestsKPH(f, Specification(), durations[i], 1, results); AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::kph, RideFile::original, durations[i], 1, results, "", "");
// did we get one ? // did we get one ?
if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) { if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) {

View File

@@ -530,16 +530,16 @@ AddIntervalDialog::createClicked()
} }
if (methodPeakPower->isChecked()) { if (methodPeakPower->isChecked()) {
findPeaks(context, byTime, ride, RideFile::watts, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Power",""); findPeaks(context, byTime, ride, Specification(), RideFile::watts, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Power","");
} }
else if (methodPeakSpeed->isChecked()) { else if (methodPeakSpeed->isChecked()) {
findPeaks(context, byTime, ride, RideFile::kph, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Speed",""); findPeaks(context, byTime, ride, Specification(), RideFile::kph, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Speed","");
} }
else if (methodPeakPace->isChecked()) { else if (methodPeakPace->isChecked()) {
findPeaks(context, byTime, ride, RideFile::kph, RideFile::pace, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Pace", ""); findPeaks(context, byTime, ride, Specification(), RideFile::kph, RideFile::pace, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak Pace", "");
} }
else if (methodHeartRate->isChecked()) { else if (methodHeartRate->isChecked()) {
findPeaks(context, byTime, ride, RideFile::hr, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak HR", ""); findPeaks(context, byTime, ride, Specification(), RideFile::hr, RideFile::original, (byTime?windowSizeSecs:windowSizeMeters), maxIntervals, results, "Peak HR", "");
} }
} }
@@ -827,21 +827,21 @@ AddIntervalDialog::findPeakPowerStandard(Context *context, const RideFile *ride,
{ {
QString prefix = tr("Peak"); QString prefix = tr("Peak");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 5, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 5, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 10, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 10, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 20, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 20, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 30, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 30, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 60, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 60, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 120, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 120, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 300, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 300, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 600, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 600, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 1200, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1200, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 1800, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1800, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 3600, 1, results, prefix, ""); findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 3600, 1, results, prefix, "");
} }
void void
AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ride, AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ride, Specification spec,
RideFile::SeriesType series, RideFile::Conversion conversion, double windowSize, RideFile::SeriesType series, RideFile::Conversion conversion, double windowSize,
int maxIntervals, QList<AddedInterval> &results, QString prefixe, QString overideName) int maxIntervals, QList<AddedInterval> &results, QString prefixe, QString overideName)
{ {
@@ -857,7 +857,10 @@ AddIntervalDialog::findPeaks(Context *context, bool typeTime, const RideFile *ri
if (!typeTime && windowSize > ride->dataPoints().last()->km*1000) return; if (!typeTime && windowSize > ride->dataPoints().last()->km*1000) return;
// We're looking for intervals with durations in [windowSizeSecs, windowSizeSecs + secsDelta). // We're looking for intervals with durations in [windowSizeSecs, windowSizeSecs + secsDelta).
foreach (const RideFilePoint *point, ride->dataPoints()) { RideFileIterator it(const_cast<RideFile*>(ride), spec);
while (it.hasNext()) {
struct RideFilePoint *point = it.next();
// Discard points until interval duration is < windowSizeSecs + secsDelta. // Discard points until interval duration is < windowSizeSecs + secsDelta.
while ((typeTime && !window.empty() && intervalDuration(window.first(), point, ride) >= windowSize + secsDelta) || while ((typeTime && !window.empty() && intervalDuration(window.first(), point, ride) >= windowSize + secsDelta) ||
(!typeTime && window.length()>1 && intervalDistance(window.at(1), point, ride) >= windowSize)) { (!typeTime && window.length()>1 && intervalDistance(window.at(1), point, ride) >= windowSize)) {

View File

@@ -52,7 +52,7 @@ class AddIntervalDialog : public QDialog
static void findPeakPowerStandard(Context *context, const RideFile *ride, QList<AddedInterval> &results); static void findPeakPowerStandard(Context *context, const RideFile *ride, QList<AddedInterval> &results);
static void findPeaks(Context *context, bool typeTime, const RideFile *ride, RideFile::SeriesType series, static void findPeaks(Context *context, bool typeTime, const RideFile *ride, Specification spec, RideFile::SeriesType series,
RideFile::Conversion conversion, double windowSizeSecs, RideFile::Conversion conversion, double windowSizeSecs,
int maxIntervals, QList<AddedInterval> &results, QString prefixe, QString overideName); int maxIntervals, QList<AddedInterval> &results, QString prefixe, QString overideName);

View File

@@ -18,7 +18,7 @@
*/ */
#include "RideMetric.h" #include "RideMetric.h"
#include "BestIntervalDialog.h" #include "AddIntervalDialog.h"
#include "RideItem.h" #include "RideItem.h"
#include "Context.h" #include "Context.h"
#include "Athlete.h" #include "Athlete.h"
@@ -64,8 +64,8 @@ class PeakPace : public RideMetric {
return; return;
} }
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results); AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::kph, RideFile::original, secs, 1, results, "", "");
if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 36) pace = 60.0 / results.first().avg; if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 36) pace = 60.0 / results.first().avg;
else pace = 0.0; else pace = 0.0;
@@ -377,8 +377,8 @@ class PeakPaceSwim : public RideMetric {
return; return;
} }
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results); AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::kph, RideFile::original, secs, 1, results, "", "");
if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 9) pace = 6.0 / results.first().avg; if (results.count() > 0 && results.first().avg > 0 && results.first().avg < 9) pace = 6.0 / results.first().avg;
else pace = 0.0; else pace = 0.0;
setValue(pace); setValue(pace);

View File

@@ -18,7 +18,7 @@
#include "RideMetric.h" #include "RideMetric.h"
#include "RideItem.h" #include "RideItem.h"
#include "BestIntervalDialog.h" #include "AddIntervalDialog.h"
#include "Context.h" #include "Context.h"
#include "Athlete.h" #include "Athlete.h"
#include "Specification.h" #include "Specification.h"
@@ -287,8 +287,8 @@ class PeakPower : public RideMetric {
return; return;
} }
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results); AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", "");
if (results.count() > 0 && results.first().avg < 3000) watts = results.first().avg; if (results.count() > 0 && results.first().avg < 3000) watts = results.first().avg;
else watts = 0.0; else watts = 0.0;
@@ -593,8 +593,8 @@ class PeakPowerHr : public RideMetric {
} }
// find peak power interval // find peak power interval
QList<BestIntervalDialog::BestInterval> results; QList<AddIntervalDialog::AddedInterval> results;
BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results); AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", "");
// work out average hr during that interval // work out average hr during that interval
if (results.count() > 0) { if (results.count() > 0) {

View File

@@ -17,7 +17,7 @@
*/ */
#include "RideMetric.h" #include "RideMetric.h"
#include "BestIntervalDialog.h" #include "AddIntervalDialog.h"
#include "RideItem.h" #include "RideItem.h"
#include "Zones.h" #include "Zones.h"
#include "Context.h" #include "Context.h"
@@ -88,9 +88,8 @@ class PeakWPK : public RideMetric {
} }
weight = item->ride()->getWeight(); weight = item->ride()->getWeight();
//weight = ride->getTag("Weight", appsettings->cvalue(GC_WEIGHT, "75.0").toString()).toDouble(); // default to 75kg QList<AddIntervalDialog::AddedInterval> results;
QList<BestIntervalDialog::BestInterval> results; AddIntervalDialog::findPeaks(item->context, true, item->ride(), spec, RideFile::watts, RideFile::original, secs, 1, results, "", "");
BestIntervalDialog::findBests(item->ride(), spec, secs, 1, results);
if (results.count() > 0 && results.first().avg < 3000) wpk = results.first().avg / weight; if (results.count() > 0 && results.first().avg < 3000) wpk = results.first().avg / weight;
else wpk = 0.0; else wpk = 0.0;
setValue(wpk); setValue(wpk);

View File

@@ -661,7 +661,7 @@ HEADERS += Gui/AboutDialog.h Gui/AddIntervalDialog.h Gui/AnalysisSidebar.h Gui/C
Gui/GcWindowRegistry.h Gui/GenerateHeatMapDialog.h Gui/GProgressDialog.h Gui/HelpWhatsThis.h Gui/HelpWindow.h \ Gui/GcWindowRegistry.h Gui/GenerateHeatMapDialog.h Gui/GProgressDialog.h Gui/HelpWhatsThis.h Gui/HelpWindow.h \
Gui/IntervalTreeView.h Gui/LTMSidebar.h Gui/MainWindow.h Gui/NewCyclistDialog.h Gui/Pages.h Gui/RideNavigator.h Gui/RideNavigatorProxy.h \ Gui/IntervalTreeView.h Gui/LTMSidebar.h Gui/MainWindow.h Gui/NewCyclistDialog.h Gui/Pages.h Gui/RideNavigator.h Gui/RideNavigatorProxy.h \
Gui/SaveDialogs.h Gui/SearchBox.h Gui/SearchFilterBox.h Gui/SolveCPDialog.h Gui/Tab.h Gui/TabView.h Gui/ToolsRhoEstimator.h \ Gui/SaveDialogs.h Gui/SearchBox.h Gui/SearchFilterBox.h Gui/SolveCPDialog.h Gui/Tab.h Gui/TabView.h Gui/ToolsRhoEstimator.h \
Gui/Views.h Gui/BatchExportDialog.h Gui/DownloadRideDialog.h Gui/ManualRideDialog.h Gui/BestIntervalDialog.h \ Gui/Views.h Gui/BatchExportDialog.h Gui/DownloadRideDialog.h Gui/ManualRideDialog.h \
Gui/MergeActivityWizard.h Gui/RideImportWizard.h Gui/SplitActivityWizard.h Gui/SolverDisplay.h Gui/MergeActivityWizard.h Gui/RideImportWizard.h Gui/SplitActivityWizard.h Gui/SolverDisplay.h
# metrics and models # metrics and models
@@ -744,7 +744,7 @@ SOURCES += Gui/AboutDialog.cpp Gui/AddIntervalDialog.cpp Gui/AnalysisSidebar.cpp
Gui/GcWindowRegistry.cpp Gui/GenerateHeatMapDialog.cpp Gui/GProgressDialog.cpp Gui/HelpWhatsThis.cpp Gui/HelpWindow.cpp \ Gui/GcWindowRegistry.cpp Gui/GenerateHeatMapDialog.cpp Gui/GProgressDialog.cpp Gui/HelpWhatsThis.cpp Gui/HelpWindow.cpp \
Gui/IntervalTreeView.cpp Gui/LTMSidebar.cpp Gui/MainWindow.cpp Gui/NewCyclistDialog.cpp Gui/Pages.cpp Gui/RideNavigator.cpp Gui/SaveDialogs.cpp \ Gui/IntervalTreeView.cpp Gui/LTMSidebar.cpp Gui/MainWindow.cpp Gui/NewCyclistDialog.cpp Gui/Pages.cpp Gui/RideNavigator.cpp Gui/SaveDialogs.cpp \
Gui/SearchBox.cpp Gui/SearchFilterBox.cpp Gui/SolveCPDialog.cpp Gui/Tab.cpp Gui/TabView.cpp Gui/ToolsRhoEstimator.cpp Gui/Views.cpp \ Gui/SearchBox.cpp Gui/SearchFilterBox.cpp Gui/SolveCPDialog.cpp Gui/Tab.cpp Gui/TabView.cpp Gui/ToolsRhoEstimator.cpp Gui/Views.cpp \
Gui/BatchExportDialog.cpp Gui/DownloadRideDialog.cpp Gui/ManualRideDialog.cpp Gui/BestIntervalDialog.cpp Gui/EditUserMetricDialog.cpp \ Gui/BatchExportDialog.cpp Gui/DownloadRideDialog.cpp Gui/ManualRideDialog.cpp Gui/EditUserMetricDialog.cpp \
Gui/MergeActivityWizard.cpp Gui/RideImportWizard.cpp Gui/SplitActivityWizard.cpp Gui/SolverDisplay.cpp Gui/MergeActivityWizard.cpp Gui/RideImportWizard.cpp Gui/SplitActivityWizard.cpp Gui/SolverDisplay.cpp
## Models and Metrics ## Models and Metrics