/**
* @module Renderer
* @author Eric Udlis
*/
const { constants: CONSTANTS } = require('./config');
/**
* @constructor
* @description Represents a single renderer of tables
*/
module.exports = function Renderer() { // eslint-disable-line
let self = this;
this.counter = false;
this.subCounter = false;
this.interval = CONSTANTS.renderInterval;
this.run = false;
this.lastRecievedTime = null;
this.newCache = {};
this.oldCache = {};
this.runCommand = () => {
DATA_INTERFACING.packetHandler.emit('renderData');
};
this.startRenderer = () => {
self.run = true;
self.render();
};
this.stopRenderer = () => {
self.run = false;
clearTimeout(self.counter);
clearTimeout(self.subCounter);
};
this.setInterval = (newTime) => {
this.interval = newTime;
this.stopRenderer();
this.startRenderer();
};
this.render = () => {
if (self.run) {
self.counter = setTimeout(function run() {
self.runCommand();
self.subCounter = setTimeout(run, self.interval);
}, self.interval);
}
};
};