Commit 049f21252ac23feb3853cb0d5d92d6527000337f
1 parent
716a880bb4
Exists in
master
dashboard-stocks
Showing 3 changed files with 51 additions and 0 deletions Inline Diff
lib/modem-dashboard/index.js
1 | "use strict"; | 1 | "use strict"; |
2 | 2 | ||
3 | const express = require('express'); | 3 | const express = require('express'); |
4 | const nunjucks = require('nunjucks'); | 4 | const nunjucks = require('nunjucks'); |
5 | 5 | ||
6 | const config = require('komodo-sdk/config'); | 6 | const config = require('komodo-sdk/config'); |
7 | const logger = require('komodo-sdk/logger'); | 7 | const logger = require('komodo-sdk/logger'); |
8 | const matrix = require('komodo-sdk/matrix'); | 8 | const matrix = require('komodo-sdk/matrix'); |
9 | 9 | ||
10 | 10 | ||
11 | const routerSms = require('./router-sms'); | 11 | const routerSms = require('./router-sms'); |
12 | const routerUssd = require('./router-ussd'); | 12 | const routerUssd = require('./router-ussd'); |
13 | const routerStocks = require('./router-stocks'); | ||
13 | 14 | ||
14 | const app = express(); | 15 | const app = express(); |
15 | 16 | ||
16 | app.use(express.static(__dirname + '/public', {maxAge: 24 * 3600 * 1000})); | 17 | app.use(express.static(__dirname + '/public', {maxAge: 24 * 3600 * 1000})); |
17 | 18 | ||
18 | nunjucks.configure(__dirname + '/views', { | 19 | nunjucks.configure(__dirname + '/views', { |
19 | autoescape: true, | 20 | autoescape: true, |
20 | noCache: true, | 21 | noCache: true, |
21 | express: app | 22 | express: app |
22 | }); | 23 | }); |
23 | 24 | ||
24 | function modemSignal(req, res, next) { | 25 | function modemSignal(req, res, next) { |
25 | const signal_strength = matrix && matrix.modem && matrix.modem.signal_strength ? matrix.modem.signal_strength : 0; | 26 | const signal_strength = matrix && matrix.modem && matrix.modem.signal_strength ? matrix.modem.signal_strength : 0; |
26 | res.locals.signal_strength = signal_strength; | 27 | res.locals.signal_strength = signal_strength; |
27 | 28 | ||
28 | if (signal_strength < 2 || !signal_strength) { | 29 | if (signal_strength < 2 || !signal_strength) { |
29 | res.locals.signal_strength_image = 'signal-0.png'; | 30 | res.locals.signal_strength_image = 'signal-0.png'; |
30 | res.locals.signal_strength_title = 'No signal'; | 31 | res.locals.signal_strength_title = 'No signal'; |
31 | } | 32 | } |
32 | else if (signal_strength < 10) { | 33 | else if (signal_strength < 10) { |
33 | res.locals.signal_strength_image = 'signal-1.png'; | 34 | res.locals.signal_strength_image = 'signal-1.png'; |
34 | res.locals.signal_strength_title = 'Marginal'; | 35 | res.locals.signal_strength_title = 'Marginal'; |
35 | } | 36 | } |
36 | else if (signal_strength < 15) { | 37 | else if (signal_strength < 15) { |
37 | res.locals.signal_strength_image = 'signal-2.png'; | 38 | res.locals.signal_strength_image = 'signal-2.png'; |
38 | res.locals.signal_strength_title = 'OK'; | 39 | res.locals.signal_strength_title = 'OK'; |
39 | } | 40 | } |
40 | else if (signal_strength < 20) { | 41 | else if (signal_strength < 20) { |
41 | res.locals.signal_strength_image = 'signal-3.png'; | 42 | res.locals.signal_strength_image = 'signal-3.png'; |
42 | res.locals.signal_strength_title = 'Good'; | 43 | res.locals.signal_strength_title = 'Good'; |
43 | } | 44 | } |
44 | else { | 45 | else { |
45 | res.locals.signal_strength_image = 'signal-4.png'; | 46 | res.locals.signal_strength_image = 'signal-4.png'; |
46 | res.locals.signal_strength_title = 'Excelent'; | 47 | res.locals.signal_strength_title = 'Excelent'; |
47 | } | 48 | } |
48 | 49 | ||
49 | next(); | 50 | next(); |
50 | } | 51 | } |
51 | 52 | ||
52 | app.use(modemSignal); | 53 | app.use(modemSignal); |
53 | 54 | ||
54 | app.get('/', function(req, res, next) { | 55 | app.get('/', function(req, res, next) { |
55 | res.redirect('/sms'); | 56 | res.redirect('/sms'); |
56 | }) | 57 | }) |
57 | 58 | ||
58 | app.use('/sms', routerSms); | 59 | app.use('/sms', routerSms); |
59 | app.use('/ussd', routerUssd); | 60 | app.use('/ussd', routerUssd); |
61 | app.use('/stocks', routerStocks); | ||
60 | 62 | ||
61 | const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765; | 63 | const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765; |
62 | app.listen(modem_dashboard_port, function () { | 64 | app.listen(modem_dashboard_port, function () { |
63 | logger.info('Modem dashboard started', {listen_port: modem_dashboard_port}); | 65 | logger.info('Modem dashboard started', {listen_port: modem_dashboard_port}); |
64 | }); | 66 | }); |
65 | 67 |
lib/modem-dashboard/router-stocks.js
File was created | 1 | "use strict"; | |
2 | |||
3 | const express = require('express'); | ||
4 | const router = express.Router(); | ||
5 | module.exports = router; | ||
6 | |||
7 | const matrix = require('komodo-sdk/matrix'); | ||
8 | |||
9 | function pageIndex(req, res, next) { | ||
10 | let stocks_array; | ||
11 | |||
12 | if (!matrix || !matrix.stock || (typeof matrix.stock !== 'object')) { | ||
13 | stocks_array = null; | ||
14 | } | ||
15 | |||
16 | for (let key in matrix.stock) { | ||
17 | if (matrix.stock.hasOwnProperty(key)) { | ||
18 | stocks_array.push({ | ||
19 | name: key, | ||
20 | balance: matrix.stock[key]; | ||
21 | }); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | res.render( | ||
26 | 'stocks.html', | ||
27 | { | ||
28 | page_title: 'Stock' | ||
29 | stocks_array: stocks_array | ||
30 | } | ||
31 | ); | ||
32 | |||
33 | } | ||
34 | |||
35 | router.get('/', pageIndex); | ||
36 |
lib/modem-dashboard/views/stocks.html
File was created | 1 | {% extends "template.html" %} | |
2 | |||
3 | {% block content %} | ||
4 | |||
5 | <table id="stocks" class="table table-hover table-striped"> | ||
6 | {% for stock in stocks_array %} | ||
7 | <tr> | ||
8 | <td>{{ stock.name }}</td> | ||
9 | <td>{{ stock.balance }}</td> | ||
10 | </tr> | ||
11 | {% endfor %} | ||
12 | </table> | ||
13 | |||
14 | {% endblock %} | ||
15 |