diff --git a/src/DataFilter.cpp b/src/DataFilter.cpp index 2270e1328..a0403f82d 100644 --- a/src/DataFilter.cpp +++ b/src/DataFilter.cpp @@ -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