-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
90 lines (74 loc) · 2.31 KB
/
server.js
File metadata and controls
90 lines (74 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Node Express Server
const express = require('express');
const port = 3000;
const app = express();
const path = require('path');
const fs = require('fs');
const csv = require('csv-parse');
const datetime = require('node-datetime');
const net = require('net');
// Express sever endpoints
// Static assets
app.use(express.static(path.join(__dirname, 'public')));
// Html page
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
// Database endpoints
// Temporary storage of queued values for frontend (passed from DB)
var speeds_queued={times:[], speeds:[]};
var last_state = {time:0, speed:0};
var csvdata = [];
var parser = csv();
fs.createReadStream('data.csv')
.pipe(csv())
.on('data', (row) => {
csvdata.push(row);
})
.on('end', () => {
console.log('CSV file successfully processed');
console.log("csvdata length = " + csvdata.length);
var test = datetime.create(csvdata[1][1]);
console.log(test);
});
//Init
speeds_queued.times.push(1);
speeds_queued.speeds.push(60);
speed_delta = 0;
var dt = datetime.create();
// Returns any initial data for the graph as desired
app.get('/speed', (req, res) => {
res.send({"labels":speeds_queued.times,"data": speeds_queued.speeds});
});
// Gets called incrementally by the frontend and returns the next value
app.get('/speed_latest', (req,res)=> {
if(speeds_queued.times.length > 0) {
last_state.time = speeds_queued.times.shift();
last_state.speed = speeds_queued.speeds.shift();
res.send({"labels":[last_state.time],"data":[last_state.speed]});
// Fake generation of more data
if (last_state.time <= csvdata.length){
speeds_queued.times.push(last_state.time + 1);
} else{
speeds_queued.times.push(1);
}
if (speeds_queued.times < 1){
speeds_queued.speeds.push(0);
} else{
var currentrow = csvdata[speeds_queued.times[speeds_queued.times.length-1]];
var pastrow = csvdata[speeds_queued.times[speeds_queued.times.length-2]];
}
if (last_state.speed < 30) {
speed_delta = 2}
if (last_state.speed > 60) {
speed_delta = -2
} else {
speed_delta = Math.round(Math.random()*4) - 2;
}
speeds_queued.speeds.push(last_state.speed + speed_delta);
} else {
res.send({"labels":[],"data":[]});
}
})
// Set the port and launch the server
app.listen(port);