-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdashboardRouter.js
71 lines (61 loc) · 2.34 KB
/
dashboardRouter.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
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
var express = require('express');
var database = require('./database.js');
var filterDefaults = require('./config/filterDefaults.js');
var router = express.Router();
var procMap = require('./config/procMap.js');
router.use(express.json());
router.get('/', function(req, res, next) {
req.session.views = req.session.views || 0;
req.session.views++;
res.render('dashboard', {
filterDefaults: filterDefaults,
includeWix: "true",
overviewUpOnStartup: req.session.views > 1 ? "false" : "true"
}, function(err, html) {
if(err) console.log(err);
res.send(html);
})
})
router.get('/:langList/:startDate/:endDate/:hashtags/:usernames', function(req, res, next) {
req.session.views = req.session.views || 0;
req.session.views++;
let changes = Object.fromEntries(Object.entries(req.params).map(([key, val]) => [key, key == "langList" ? val.split(",") : val]));
res.render('dashboard', {
filterDefaults: Object.assign(filterDefaults, changes),
includeWix: req.query.embed ? "false" : "true",
overviewUpOnStartup: req.session.views > 1 ? "false" : "true"
}, function(err, html) {
if (err) console.log(err);
res.send(html);
})
})
router.put('/:langList/:startDate/:endDate/:hashtags/:usernames/:page', function (req, res, next) {
if (req.params.page == 0) database.dePopulateSession(req.sessionID);
var result = Promise.resolve()
.then(_ => database.populateSession(req.sessionID, req.params))
.then(success => res.json({rowsAffected: success}))
.catch(failure => res.send(failure));
});
router.get('/:usernameQuery', function(req, res, next) {
res.setHeader('Content-Type', 'application/json');
database.fetchDbResults('usernames', req.params.usernameQuery)
.then(results => res.json(JSON.stringify(results)))
})
router.get('/:langList/:startDate/:endDate/:hashtags/:usernames/:page/:fetch', function (req, res, next) {
res.setHeader('Content-Type', 'application/json');
(new Promise( (resolve, reject) => {
let proc = procMap[req.params.fetch];
if (!proc) throw new Error('Invalid URL filter fetch parameter.');
resolve(
database.fetchDbResults(proc, req.sessionID)
);
}))
.then(results => {
return res.json(JSON.stringify(results));
})
.catch((error) => {
console.log(error);
return res.json("{'error': 'Invalid filter URL.'}");
});
});
module.exports = router;