103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
console.loggerName = 'js.lib';
 | 
						|
console.log('Load lib module');
 | 
						|
 | 
						|
 | 
						|
function compare(a, b, operator) {
 | 
						|
    // Hint: a = currentState, b = targetState
 | 
						|
    let logMsg = '';
 | 
						|
    let returnValue = undefined;
 | 
						|
    try {
 | 
						|
        logMsg = `Quantity comparison of ${a}, ${b} with operator ${operator}`;
 | 
						|
        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;
 | 
						|
            default:
 | 
						|
                console.error(`${operator} is no valid operator`);
 | 
						|
                return;
 | 
						|
        }
 | 
						|
    } catch(e) {
 | 
						|
        logMsg = `Standard comparison of ${a}, ${b} with operator ${operator}`;
 | 
						|
        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;
 | 
						|
        }        
 | 
						|
    }
 | 
						|
 | 
						|
    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
 | 
						|
}; |