Add ResponseIndex and EfficiencyFactor

modified:   src/BikeScore.cpp
	modified:   src/Coggan.cpp
	modified:   src/DBAccess.cpp
This commit is contained in:
Damien
2011-12-17 18:08:53 +01:00
committed by Mark Liversedge
parent ae1f80dd35
commit ddd5528294
3 changed files with 77 additions and 3 deletions

View File

@@ -205,7 +205,39 @@ class BikeScore : public RideMetric {
RideMetric *clone() const { return new BikeScore(*this); }
};
static bool addAllFour() {
class ResponseIndex : public RideMetric {
double ri;
public:
ResponseIndex() : ri(0.0)
{
setSymbol("skiba_response_index");
setName(tr("Response Index"));
setType(RideMetric::Average);
setMetricUnits(tr(""));
setImperialUnits(tr(""));
setPrecision(3);
}
void compute(const RideFile *, const Zones *, int,
const HrZones *, int,
const QHash<QString,RideMetric*> &deps,
const MainWindow *) {
assert(deps.contains("skiba_xpower"));
assert(deps.contains("average_hr"));
XPower *xp = dynamic_cast<XPower*>(deps.value("skiba_xpower"));
assert(xp);
RideMetric *ah = dynamic_cast<RideMetric*>(deps.value("average_hr"));
assert(ah);
ri = xp->value(true) / ah->value(true);
setValue(ri);
}
RideMetric *clone() const { return new ResponseIndex(*this); }
};
static bool addAllFive() {
RideMetricFactory::instance().addMetric(XPower());
QVector<QString> deps;
deps.append("skiba_xpower");
@@ -216,8 +248,12 @@ static bool addAllFour() {
deps.append("skiba_xpower");
deps.append("average_power");
RideMetricFactory::instance().addMetric(VariabilityIndex(), &deps);
deps.clear();
deps.append("skiba_xpower");
deps.append("average_hr");
RideMetricFactory::instance().addMetric(ResponseIndex(), &deps);
return true;
}
static bool allFourAdded = addAllFour();
static bool allFiveAdded = addAllFive();

View File

@@ -185,6 +185,38 @@ class TSS : public RideMetric {
RideMetric *clone() const { return new TSS(*this); }
};
class EfficiencyFactor : public RideMetric {
double ef;
public:
EfficiencyFactor() : ef(0.0)
{
setSymbol("friel_efficiency_factor");
setName(tr("EF"));
setType(RideMetric::Average);
setMetricUnits(tr(""));
setImperialUnits(tr(""));
setPrecision(3);
}
void compute(const RideFile *, const Zones *, int,
const HrZones *, int,
const QHash<QString,RideMetric*> &deps,
const MainWindow *) {
assert(deps.contains("coggan_np"));
assert(deps.contains("average_hr"));
NP *np = dynamic_cast<NP*>(deps.value("coggan_np"));
assert(np);
RideMetric *ah = dynamic_cast<RideMetric*>(deps.value("average_hr"));
assert(ah);
ef = np->value(true) / ah->value(true);
setValue(ef);
}
RideMetric *clone() const { return new EfficiencyFactor(*this); }
};
static bool addAllCoggan() {
RideMetricFactory::instance().addMetric(NP());
QVector<QString> deps;
@@ -196,6 +228,10 @@ static bool addAllCoggan() {
deps.append("coggan_np");
deps.append("average_power");
RideMetricFactory::instance().addMetric(VI(), &deps);
deps.clear();
deps.append("coggan_np");
deps.append("average_hr");
RideMetricFactory::instance().addMetric(EfficiencyFactor(), &deps);
return true;
}

View File

@@ -44,12 +44,14 @@
// Revision History
// Rev Date Who What Changed
//-----------------------------------------------------------------------
// 29 5th Sep 2011 Mark Liversedge Added color to the ride fields
// 30 8th Sep 2011 Mark Liversedge Metadata 'data' field for data present string
// 31 22 Nov 2011 Mark Liversedge Added Average WPK metric
// 32 9th Dec 2011 Damien Grauser Temperature data flag (metadata field 'Data')
// 33 17 Dec 2011 Damien Grauser Added ResponseIndex and EfficiencyFactor
static int DBSchemaVersion = 32;
static int DBSchemaVersion = 33;
DBAccess::DBAccess(MainWindow* main, QDir home) : main(main), home(home)
{