diff --git a/utils/lib.js b/utils/lib.js index b2c9e1c..ad6354e 100644 --- a/utils/lib.js +++ b/utils/lib.js @@ -1,2 +1,99 @@ -console.loggerName = 'js.watch'; -console.log('Load lib module'); \ No newline at end of file +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(); + } +} \ No newline at end of file