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 "Settings.h"
#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 "WPrime.h" // for matches
@@ -844,8 +844,8 @@ RideItem::updateIntervals()
for(int i=0; durations[i] != 0; i++) {
// go hunting for best peak
QList<BestIntervalDialog::BestInterval> results;
BestIntervalDialog::findBests(f, Specification(), durations[i], 1, results);
QList<AddIntervalDialog::AddedInterval> results;
AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::watts, RideFile::original, durations[i], 1, results, "", "");
// did we get one ?
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++) {
// go hunting for best peak
QList<BestIntervalDialog::BestInterval> results;
BestIntervalDialog::findBestsKPH(f, Specification(), durations[i], 1, results);
QList<AddIntervalDialog::AddedInterval> results;
AddIntervalDialog::findPeaks(context, true, f, Specification(), RideFile::kph, RideFile::original, durations[i], 1, results, "", "");
// did we get one ?
if (results.count() > 0 && results[0].avg > 0 && results[0].stop > 0) {

View File

@@ -530,16 +530,16 @@ AddIntervalDialog::createClicked()
}
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()) {
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()) {
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()) {
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");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 5, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 10, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 20, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 30, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 60, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 120, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 300, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 600, 1, results, prefix, "");
findPeaks(context, true, ride, RideFile::watts, RideFile::original, 1200, 1, results, prefix, "");
findPeaks(context, true, ride, 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, 5, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 10, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 20, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 30, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 60, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 120, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 300, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 600, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1200, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 1800, 1, results, prefix, "");
findPeaks(context, true, ride, Specification(), RideFile::watts, RideFile::original, 3600, 1, results, prefix, "");
}
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,
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;
// 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.
while ((typeTime && !window.empty() && intervalDuration(window.first(), point, ride) >= windowSize + secsDelta) ||
(!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 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,
int maxIntervals, QList<AddedInterval> &results, QString prefixe, QString overideName);

View File

@@ -18,7 +18,7 @@
*/
#include "RideMetric.h"
#include "BestIntervalDialog.h"
#include "AddIntervalDialog.h"
#include "RideItem.h"
#include "Context.h"
#include "Athlete.h"
@@ -64,8 +64,8 @@ class PeakPace : public RideMetric {
return;
}
QList<BestIntervalDialog::BestInterval> results;
BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results);
QList<AddIntervalDialog::AddedInterval> 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;
else pace = 0.0;
@@ -377,8 +377,8 @@ class PeakPaceSwim : public RideMetric {
return;
}
QList<BestIntervalDialog::BestInterval> results;
BestIntervalDialog::findBestsKPH(item->ride(), spec, secs, 1, results);
QList<AddIntervalDialog::AddedInterval> 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;
else pace = 0.0;
setValue(pace);

View File

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

View File

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