blah2/api/maxhold.js
2023-11-17 22:57:32 +10:30

77 lines
1.6 KiB
JavaScript

const http = require('http');
var nCpi = 10;
var map = [];
var maxhold = '';
var timestamp = '';
const options_timestamp = {
host: '127.0.0.1',
path: '/timestamp',
port: 3000
};
const options_map = {
host: '127.0.0.1',
path: '/map',
port: 3000
};
function process(matrixArray) {
const result = [];
for (let i = 0; i < matrixArray[0].length; i++) {
const row = [];
for (let j = 0; j < matrixArray[0][0].length; j++) {
let maxVal = matrixArray[0][i][j];
for (let k = 1; k < matrixArray.length; k++) {
maxVal = Math.max(maxVal, matrixArray[k][i][j]);
}
row.push(maxVal);
}
result.push(row);
}
return result;
}
function update_data() {
// check if timestamp is updated
http.get(options_timestamp, function(res) {
res.setEncoding('utf8');
res.on('data', function (body) {
if (timestamp != body)
{
timestamp = body;
http.get(options_map, function(res) {
let body_map = '';
res.setEncoding('utf8');
res.on('data', (chunk) => {
body_map += chunk;
});
res.on('end', () => {
try {
maxhold = JSON.parse(body_map);
map.push(maxhold.data);
if (map.length > nCpi) {
map.shift();
}
maxhold.data = process(map);
} catch (e) {
console.error(e.message);
}
});
});
}
});
});
};
setInterval(update_data, 100);
function get_data() {
return maxhold;
};
module.exports.get_data = get_data;