From 42ad13f848b3fa4f51d3333991b230eadb9965ab Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Thu, 19 Jun 2014 21:25:58 +0100 Subject: [PATCH] DataFilter handle metadata numerics .. code assumed numeric fields always metrics when they could also be metadata. .. this also fixes checkbox tests too --- src/DataFilter.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/DataFilter.cpp b/src/DataFilter.cpp index 9da059cd0..1bfcc59e6 100644 --- a/src/DataFilter.cpp +++ b/src/DataFilter.cpp @@ -392,8 +392,14 @@ double Leaf::eval(DataFilter *df, Leaf *leaf, SummaryMetrics m, QString f) QString rename; // get symbol value if ((lhsisNumber = df->lookupType.value(*(leaf->lvalue.l->lvalue.n))) == true) { - // numeric - lhsdouble = m.getForSymbol(rename=df->lookupMap.value(*(leaf->lvalue.l->lvalue.n),"")); + + // check metadata string to number first ... + QString meta = m.getText(rename=df->lookupMap.value(*(leaf->lvalue.l->lvalue.n),""), "unknown"); + if (meta == "unknown") + lhsdouble = m.getForSymbol(rename=df->lookupMap.value(*(leaf->lvalue.l->lvalue.n),"")); + else + lhsdouble = meta.toDouble(); + //qDebug()<<"symbol" << *(leaf->lvalue.l->lvalue.n) << "is" << lhsdouble << "via" << rename; } else { // string @@ -437,7 +443,11 @@ double Leaf::eval(DataFilter *df, Leaf *leaf, SummaryMetrics m, QString f) // get symbol value if ((rhsisNumber=df->lookupType.value(*(leaf->rvalue.l->lvalue.n))) == true) { // numeric - rhsdouble = m.getForSymbol(rename=df->lookupMap.value(*(leaf->rvalue.l->lvalue.n),"")); + QString meta = m.getText(rename=df->lookupMap.value(*(leaf->rvalue.l->lvalue.n),""), "unknown"); + if (meta == "unknown") + rhsdouble = m.getForSymbol(rename=df->lookupMap.value(*(leaf->rvalue.l->lvalue.n),"")); + else + rhsdouble = meta.toDouble(); //qDebug()<<"symbol" << *(leaf->rvalue.l->lvalue.n) << "is" << rhsdouble << "via" << rename; } else { // string