console.loggerName = 'js.lib'; console.log('Load lib module'); function compare(a, b, operator) { // Hint: a = currentState, b = targetState let logMsg = a + ', ' + b + ' with operator ' + operator; let returnValue = undefined; try { logMsg = 'Quantity comparison of ' + logMsg; switch (operator) { case '==': returnValue = a.equal(b); break; case '!=': returnValue = !a.equal(b); break; case '<' : returnValue = a.lessThan(b); break; case '<=': returnValue = a.lessThanOrEqual(b); break; case '>' : returnValue = a.greaterThan(b); break; case '>=': returnValue = a.greaterThanOrEqual(b); break; } } catch(e) { logMsg = 'Standard comparison of ' + logMsg; switch (operator) { case '==': returnValue = (a == b); break; case '!=': returnValue = !(a == b); break; case '<' : returnValue = (a < b); break; case '<=': returnValue = (a <= b); break; case '>' : returnValue = (a > b); break; case '>=': returnValue = (a >= b); break; } } if (returnValue == undefined) { console.error('No valid operator provided'); } else { console.debug(logMsg); } return returnValue; } function convertValue(value) { console.debug('Converting value ' + value + ' of type ' + typeof value); if(typeof value === 'string') { if(value.includes(' ')) { let logMsg = ''; let returnValue; try { logMsg = 'Quantity: ' + value; returnValue = Quantity(value); } catch(e) { logMsg = 'Not a Quantity but has a space, leaving as a string: ' + value; returnValue = value; } finally { console.debug(logMsg); return returnValue; } } else if(!isNaN(value)) { console.debug('Number: ' + value) return Number.parseFloat(value); } else if(value == 'UnDefType' || value == 'NULL' || value == 'UNDEF') { console.debug('UnDefType: ' + value); return 'UnDefType'; } console.debug('String: ' + value); return value; } else if(value instanceof DecimalType || value instanceof PercentType) { console.debug('DecimalType or PercentType: ' + value); return value.floatValue(); } else if(value instanceof QuantityType) { console.debug('QuantityType: ' + value); return Quantity(value); } else { console.debug('String: ' + value); return value.toString(); } } module.exports = { compare, convertValue };