onstar2mqtt/src/diagnostic.js

40 lines
1.1 KiB
JavaScript
Raw Normal View History

const _ = require('lodash');
const Measurement = require('./measurement');
class Diagnostic {
constructor(diagResponse) {
this.name = diagResponse.name;
const validEle = _.filter(
diagResponse.diagnosticElement,
d => _.has(d, 'value') && _.has(d, 'unit')
);
this.diagnosticElements = _.map(validEle, e => new DiagnosticElement(e));
}
elementsToString(diag) {
const validEle = _.filter(diag, d => _.has(d, 'value') && _.has(d, 'unit'));
let output = '';
_.forEach(validEle, e => output += ` ${e.name} ${e.value}${e.unit}\n`);
return output;
}
toString() {
let elements = '';
_.forEach(this.diagnosticElements, e => elements += ` ${e.toString()}\n`)
return `${this.name}:\n` + elements;
}
}
class DiagnosticElement {
constructor(ele) {
this.name = ele.name;
this.measurement = new Measurement(ele.value, ele.unit);
}
toString() {
return `${this.name}: ${this.measurement.toString()}`;
}
}
module.exports = { Diagnostic, DiagnosticElement };