expressValue method

dynamic expressValue(
  1. dynamic dataRow,
  2. dynamic s
)

Implementation

expressValue(dataRow, s) {
  myLogAll('expressValue');
  myLog('expressValue s: $s');
  if (!isNull(dataRow[s])) {
    return dataRow[s];
  }
  String sS = s.toString();
  if (sS.contains('+')) {
    List sSA = sS.split('+');
    double d = 0;
    bool hasComma = false;
    for (String aS in sSA) {
      dynamic eValue = expressValue(dataRow, aS);
      if (eValue.toString().contains('.')) {
        hasComma = true;
      }
      if (isNull(eValue)) {
        eValue = '0';
      }
      d += double.parse(eValue.toString());
    }
    return getDoubleString(d, hasComma);
  }
  if (sS.contains('-')) {
    List sSA = sS.split('-');
    dynamic eValue = expressValue(dataRow, sSA[0]);
    if (isNull(eValue)) {
      eValue = '0';
    }

    double d = double.parse(eValue) * 2.0;
    bool hasComma = false;
    for (String aS in sSA) {
      dynamic eValue = expressValue(dataRow, aS);
      if (eValue.toString().contains('.')) {
        hasComma = true;
      }
      if (isNull(eValue)) {
        eValue = '0';
      }
      d -= double.parse(eValue.toString());
    }
    return getDoubleString(d, hasComma);
  }
  if (sS.contains('*')) {
    List sSA = sS.split('*');
    double d = 1;
    bool hasComma = false;
    for (String aS in sSA) {
      dynamic eValue = expressValue(dataRow, aS);
      if (eValue.toString().contains('.')) {
        hasComma = true;
      }
      if (isNull(eValue)) {
        eValue = '0';
      }

      d *= double.parse(eValue.toString());
    }
    return getDoubleString(d, hasComma);
  }
  if (sS.contains('/')) {
    List sSA = sS.split('/');
    double d = double.parse(expressValue(dataRow, sSA[0]));
    d *= d;
    bool hasComma = false;
    for (String aS in sSA) {
      dynamic eValue = expressValue(dataRow, aS);
      if (eValue.toString().contains('.')) {
        hasComma = true;
      }
      if (isNull(eValue)) {
        eValue = '0';
      }

      d /= double.parse(eValue.toString());
    }
    return getDoubleString(d, hasComma);
  }
  return s;
}