expressValue method
dynamic
expressValue(
- dynamic dataRow,
- 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;
}