Add ATL, CTL, TSB aliases to DataFilter

.. for sts(TSS), lts(TSS) and sb(TSS)
This commit is contained in:
Mark Liversedge
2014-12-21 19:01:02 +00:00
parent b272ee63d8
commit 01a6499fb0

View File

@@ -88,6 +88,14 @@ void Leaf::print(Leaf *leaf, int level)
}
}
static bool isCoggan(QString symbol)
{
if (!symbol.compare("ctl", Qt::CaseInsensitive)) return true;
if (!symbol.compare("tsb", Qt::CaseInsensitive)) return true;
if (!symbol.compare("atl", Qt::CaseInsensitive)) return true;
return false;
}
bool Leaf::isNumber(DataFilter *df, Leaf *leaf)
{
switch(leaf->type) {
@@ -98,6 +106,7 @@ bool Leaf::isNumber(DataFilter *df, Leaf *leaf)
{
QString symbol = *(leaf->lvalue.n);
if (symbol == "isRun") return true;
if (isCoggan(symbol)) return true;
else return df->lookupType.value(symbol, false);
}
break;
@@ -149,7 +158,7 @@ void Leaf::validateFilter(DataFilter *df, Leaf *leaf)
if (lookup == "") {
// isRun isa special, we may add more later (e.g. date)
if (symbol != "isRun")
if (symbol != "isRun" && !isCoggan(symbol))
DataFiltererrors << QString(QObject::tr("%1 is unknown")).arg(symbol);
}
}
@@ -429,6 +438,14 @@ double Leaf::eval(Context *context, DataFilter *df, Leaf *leaf, RideItem *m)
lhsdouble = m->isRun ? 1 : 0;
lhsisNumber = true;
} else if (isCoggan(symbol)) {
// a coggan PMC metric
PMCData *pmcData = context->athlete->getPMCFor("coggan_tss");
if (!symbol.compare("ctl", Qt::CaseInsensitive)) lhsdouble = pmcData->lts(m->dateTime.date());
if (!symbol.compare("atl", Qt::CaseInsensitive)) lhsdouble = pmcData->sts(m->dateTime.date());
if (!symbol.compare("tsb", Qt::CaseInsensitive)) lhsdouble = pmcData->sb(m->dateTime.date());
lhsisNumber = true;
} else if ((lhsisNumber = df->lookupType.value(*(leaf->lvalue.l->lvalue.n))) == true) {
// get symbol value
// check metadata string to number first ...
@@ -486,6 +503,15 @@ double Leaf::eval(Context *context, DataFilter *df, Leaf *leaf, RideItem *m)
rhsdouble = m->isRun ? 1 : 0;
rhsisNumber = true;
} else if (isCoggan(symbol)) {
// a coggan PMC metric
PMCData *pmcData = context->athlete->getPMCFor("coggan_tss");
if (!symbol.compare("ctl", Qt::CaseInsensitive)) rhsdouble = pmcData->lts(m->dateTime.date());
if (!symbol.compare("atl", Qt::CaseInsensitive)) rhsdouble = pmcData->sts(m->dateTime.date());
if (!symbol.compare("tsb", Qt::CaseInsensitive)) rhsdouble = pmcData->sb(m->dateTime.date());
rhsisNumber = true;
// get symbol value
} else if ((rhsisNumber=df->lookupType.value(*(leaf->rvalue.l->lvalue.n))) == true) {
// numeric