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