-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
46 lines (37 loc) · 1.53 KB
/
server.js
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
const csv = require('csvtojson')
const express = require('express')
const util = require('util')
const port = process.env.PORT || 37037
const title = 'Corona-Fallzahlen im Landkreis Göttingen'
const gemeinden = require('./gemeinden.json')
const app = express()
app.set('view engine', 'html')
app.engine('html', require('ejs').renderFile)
app.get('/', (req, res) => res.render('index.html'))
app.use(express.static('docs'))
app.get('/kill', (req, res) => process.exit())
const nameIndex = gemeinden.reduce((obj, g) => { obj[g.name]=g; g.zahlen=[]; return obj }, {})
const lkz = nameIndex['Landkreis Göttingen'].zahlen = []
csv().fromFile('fallzahlen.csv').then(fallzahlen => {
const latest = fallzahlen.slice(-1)[0]
var datum = new Date(latest.datum)
app.locals = {
gemeinden, title, util, datum, quelle: latest.quelle,
differenzInTagen: (a,b) => (a-b) / (1000 * 60 * 60 * 24),
}
datum = undefined
fallzahlen.forEach(row => {
const region = nameIndex[row.gemeinde]
if (!region) return // filter out "Samtgemeinde Hattorf am Harz und Stadt Herzberg am Harz"
row.datum = new Date(row.datum)
region.zahlen.push(row)
if (datum && datum.getTime() == row.datum.getTime()) {
lkz[lkz.length-1].faelle += 1*row.faelle
lkz[lkz.length-1].infizierte += 1*row.infizierte
} else {
lkz.push({ datum, faelle: 1*row.faelle, infizierte: 1*row.infizierte, gemeinde: "Landkreis Göttingen"})
datum = row.datum
}
})
app.listen(port, () => console.log(`http://localhost:${port}/`))
})