From 700f5d989ad4dc314a9465b9c90267c3d3449c3b Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Sun, 14 Apr 2013 18:10:12 -0300 Subject: [PATCH] Use Distance as a PMC metric Fixes #570 --- src/LTMPlot.cpp | 8 ++++ src/LTMTool.cpp | 76 ++++++++++++++++++++++++++++++++ src/PerformanceManagerWindow.cpp | 1 + 3 files changed, 85 insertions(+) diff --git a/src/LTMPlot.cpp b/src/LTMPlot.cpp index e3310b62c..1fe25a4b2 100644 --- a/src/LTMPlot.cpp +++ b/src/LTMPlot.cpp @@ -955,6 +955,8 @@ LTMPlot::createPMCCurveData(LTMSettings *settings, MetricDetail metricDetail, scoreType = "trimp_points"; } else if (metricDetail.symbol.startsWith("work")) { scoreType = "total_work"; + } else if (metricDetail.symbol.startsWith("distance")) { + scoreType = "total_distance"; } // create the Stress Calculation List @@ -1004,6 +1006,12 @@ LTMPlot::createPMCCurveData(LTMSettings *settings, MetricDetail metricDetail, add.setForSymbol("work_sb", sc->getSBvalues()[i]); add.setForSymbol("work_sr", sc->getSRvalues()[i]); add.setForSymbol("work_lr", sc->getLRvalues()[i]); + } else if (scoreType == "total_distance") { + add.setForSymbol("distance_lts", sc->getLTSvalues()[i]); + add.setForSymbol("distance_sts", sc->getSTSvalues()[i]); + add.setForSymbol("distance_sb", sc->getSBvalues()[i]); + add.setForSymbol("distance_sr", sc->getSRvalues()[i]); + add.setForSymbol("distance_lr", sc->getLRvalues()[i]); } add.setForSymbol("workout_time", 1.0); // averaging is per day customData << add; diff --git a/src/LTMTool.cpp b/src/LTMTool.cpp index 537636d43..54f38932b 100644 --- a/src/LTMTool.cpp +++ b/src/LTMTool.cpp @@ -395,6 +395,82 @@ LTMTool::LTMTool(MainWindow *parent, const QDir &home, bool multi) : QWidget(par workLTR.uunits = tr("Ramp"); metrics.append(workLTR); + // total distance + MetricDetail distanceLTS; + distanceLTS.type = METRIC_PM; + distanceLTS.symbol = "distance_lts"; + distanceLTS.metric = NULL; // not a factory metric + distanceLTS.penColor = QColor(Qt::blue); + distanceLTS.curveStyle = QwtPlotCurve::Lines; + distanceLTS.symbolStyle = QwtSymbol::NoSymbol; + distanceLTS.smooth = false; + distanceLTS.trend = false; + distanceLTS.topN = 5; + distanceLTS.uname = distanceLTS.name = tr("Distance (km|mi) Long Term Stress"); + distanceLTS.units = "Stress (km|mi)"; + distanceLTS.uunits = tr("Stress (km|mi)"); + metrics.append(distanceLTS); + + MetricDetail distanceSTS; + distanceSTS.type = METRIC_PM; + distanceSTS.symbol = "distance_sts"; + distanceSTS.metric = NULL; // not a factory metric + distanceSTS.penColor = QColor(Qt::magenta); + distanceSTS.curveStyle = QwtPlotCurve::Lines; + distanceSTS.symbolStyle = QwtSymbol::NoSymbol; + distanceSTS.smooth = false; + distanceSTS.trend = false; + distanceSTS.topN = 5; + distanceSTS.uname = distanceSTS.name = tr("Distance (km|mi) Short Term Stress"); + distanceSTS.units = "Stress (km|mi)"; + distanceSTS.uunits = tr("Stress (km|mi)"); + metrics.append(distanceSTS); + + MetricDetail distanceSB; + distanceSB.type = METRIC_PM; + distanceSB.symbol = "distance_sb"; + distanceSB.metric = NULL; // not a factory metric + distanceSB.penColor = QColor(Qt::yellow); + distanceSB.curveStyle = QwtPlotCurve::Steps; + distanceSB.symbolStyle = QwtSymbol::NoSymbol; + distanceSB.smooth = false; + distanceSB.trend = false; + distanceSB.topN = 1; + distanceSB.uname = distanceSB.name = tr("Distance (km|mi) Stress Balance"); + distanceSB.units = "Stress Balance"; + distanceSB.uunits = tr("Stress Balance"); + metrics.append(distanceSB); + + MetricDetail distanceSTR; + distanceSTR.type = METRIC_PM; + distanceSTR.symbol = "distance_sr"; + distanceSTR.metric = NULL; // not a factory metric + distanceSTR.penColor = QColor(Qt::darkGreen); + distanceSTR.curveStyle = QwtPlotCurve::Steps; + distanceSTR.symbolStyle = QwtSymbol::NoSymbol; + distanceSTR.smooth = false; + distanceSTR.trend = false; + distanceSTR.topN = 1; + distanceSTR.uname = distanceSTR.name = tr("Distance (km|mi) STS Ramp"); + distanceSTR.units = "Ramp"; + distanceSTR.uunits = tr("Ramp"); + metrics.append(distanceSTR); + + MetricDetail distanceLTR; + distanceLTR.type = METRIC_PM; + distanceLTR.symbol = "distance_lr"; + distanceLTR.metric = NULL; // not a factory metric + distanceLTR.penColor = QColor(Qt::darkBlue); + distanceLTR.curveStyle = QwtPlotCurve::Steps; + distanceLTR.symbolStyle = QwtSymbol::NoSymbol; + distanceLTR.smooth = false; + distanceLTR.trend = false; + distanceLTR.topN = 1; + distanceLTR.uname = distanceLTR.name = tr("Distance (km|mi) LTS Ramp"); + distanceLTR.units = "Ramp"; + distanceLTR.uunits = tr("Ramp"); + metrics.append(distanceLTR); + // COGGAN LTS MetricDetail cogganCTL; cogganCTL.type = METRIC_PM; diff --git a/src/PerformanceManagerWindow.cpp b/src/PerformanceManagerWindow.cpp index 324cda809..5b828159b 100644 --- a/src/PerformanceManagerWindow.cpp +++ b/src/PerformanceManagerWindow.cpp @@ -57,6 +57,7 @@ PerformanceManagerWindow::PerformanceManagerWindow(MainWindow *mainWindow) : metricCombo->addItem(tr("Use TRIMP 100"), "trimp_100_points"); metricCombo->addItem(tr("Use Trimp Zonal"), "trimp_zonal_points"); metricCombo->addItem(tr("Use Work (Kj)"), "total_work"); + metricCombo->addItem(tr("Use Distance (km/mi)"), "total_distance"); QString metricName = appsettings->value(this, GC_PERF_MAN_METRIC, "skiba_bike_score").toString(); for (int i = 0; i < metricCombo->count(); ++i) {