mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 08:08:42 +00:00
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:
@@ -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) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user