Commit 727904ec246f1de212c7e1f9fc42d2f64ae4fcda

Authored by Adhidarma Hadiwinoto
1 parent f410645402
Exists in master

template

Showing 2 changed files with 19 additions and 1 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 const routerStocks = require('./router-stocks');
14 14
15 const app = express(); 15 const app = express();
16 16
17 app.use(express.static(__dirname + '/public', {maxAge: 24 * 3600 * 1000})); 17 app.use(express.static(__dirname + '/public', {maxAge: 24 * 3600 * 1000}));
18 18
19 nunjucks.configure(__dirname + '/views', { 19 nunjucks.configure(__dirname + '/views', {
20 autoescape: true, 20 autoescape: true,
21 noCache: true, 21 noCache: true,
22 express: app 22 express: app
23 }); 23 });
24 24
25 app.use(function(req, res, next) {
26 res.locals.site_name = config.handler_name;
27 })
28
25 function modemSignal(req, res, next) { 29 function modemSignal(req, res, next) {
26 const signal_strength = matrix && matrix.modem && matrix.modem.signal_strength ? matrix.modem.signal_strength : 0; 30 const signal_strength = matrix && matrix.modem && matrix.modem.signal_strength ? matrix.modem.signal_strength : 0;
27 res.locals.signal_strength = signal_strength; 31 res.locals.signal_strength = signal_strength;
28 32
29 if (signal_strength < 2 || !signal_strength) { 33 if (signal_strength < 2 || !signal_strength) {
30 res.locals.signal_strength_image = 'signal-0.png'; 34 res.locals.signal_strength_image = 'signal-0.png';
31 res.locals.signal_strength_title = 'No signal'; 35 res.locals.signal_strength_title = 'No signal';
32 } 36 }
33 else if (signal_strength < 10) { 37 else if (signal_strength < 10) {
34 res.locals.signal_strength_image = 'signal-1.png'; 38 res.locals.signal_strength_image = 'signal-1.png';
35 res.locals.signal_strength_title = 'Marginal'; 39 res.locals.signal_strength_title = 'Marginal';
36 } 40 }
37 else if (signal_strength < 15) { 41 else if (signal_strength < 15) {
38 res.locals.signal_strength_image = 'signal-2.png'; 42 res.locals.signal_strength_image = 'signal-2.png';
39 res.locals.signal_strength_title = 'OK'; 43 res.locals.signal_strength_title = 'OK';
40 } 44 }
41 else if (signal_strength < 20) { 45 else if (signal_strength < 20) {
42 res.locals.signal_strength_image = 'signal-3.png'; 46 res.locals.signal_strength_image = 'signal-3.png';
43 res.locals.signal_strength_title = 'Good'; 47 res.locals.signal_strength_title = 'Good';
44 } 48 }
45 else { 49 else {
46 res.locals.signal_strength_image = 'signal-4.png'; 50 res.locals.signal_strength_image = 'signal-4.png';
47 res.locals.signal_strength_title = 'Excelent'; 51 res.locals.signal_strength_title = 'Excelent';
48 } 52 }
49 53
50 next(); 54 next();
51 } 55 }
52 56
53 app.use(modemSignal); 57 app.use(modemSignal);
54 58
55 app.get('/', function(req, res, next) { 59 app.get('/', function(req, res, next) {
56 res.redirect('/sms'); 60 res.redirect('/sms');
57 }) 61 })
58 62
59 app.use('/sms', routerSms); 63 app.use('/sms', routerSms);
60 app.use('/ussd', routerUssd); 64 app.use('/ussd', routerUssd);
61 app.use('/stocks', routerStocks); 65 app.use('/stocks', routerStocks);
62 66
63 const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765; 67 const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765;
64 app.listen(modem_dashboard_port, function () { 68 app.listen(modem_dashboard_port, function () {
65 logger.info('Modem dashboard started', {listen_port: modem_dashboard_port}); 69 logger.info('Modem dashboard started', {listen_port: modem_dashboard_port});
66 }); 70 });
67 71
lib/modem-dashboard/views/template.html
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html lang="en"> 2 <html lang="en">
3 <head> 3 <head>
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
8 8
9 <meta name="description" content=""> 9 <meta name="description" content="">
10 <meta name="author" content=""> 10 <meta name="author" content="">
11 <link rel="icon" href="/favicon.ico"> 11 <link rel="icon" href="/favicon.ico">
12 12
13 <title> 13 <title>
14 {% if page_title %} 14 {% if page_title %}
15 {{ page_title }} 15 {{ page_title }}
16 - 16 -
17 {% endif %} 17 {% endif %}
18
18 Modem Dashboard 19 Modem Dashboard
20
21 {% if site_name %}
22 -
23 {{ site_name }}
24 {% endif %}
25
19 </title> 26 </title>
20 27
21 <!-- Latest compiled and minified CSS --> 28 <!-- Latest compiled and minified CSS -->
22 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 29 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
23 30
24 <!-- Optional theme --> 31 <!-- Optional theme -->
25 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 32 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
26 33
27 34
28 35
29 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 36 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
30 <link href="/ie10-viewport-bug-workaround.css" rel="stylesheet"> 37 <link href="/ie10-viewport-bug-workaround.css" rel="stylesheet">
31 38
32 <!-- Custom styles for this template --> 39 <!-- Custom styles for this template -->
33 <link href="starter-template.css" rel="stylesheet"> 40 <link href="starter-template.css" rel="stylesheet">
34 41
35 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 42 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
36 <!--[if lt IE 9]> 43 <!--[if lt IE 9]>
37 <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> 44 <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
38 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 45 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
39 <![endif]--> 46 <![endif]-->
40 47
41 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 48 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
42 49
43 {% block head %} 50 {% block head %}
44 {% endblock %} 51 {% endblock %}
45 </head> 52 </head>
46 53
47 <body> 54 <body>
48 55
49 <nav class="navbar navbar-inverse navbar-fixed-top"> 56 <nav class="navbar navbar-inverse navbar-fixed-top">
50 <div class="container"> 57 <div class="container">
51 <div class="navbar-header"> 58 <div class="navbar-header">
52 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 59 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
53 <span class="sr-only">Toggle navigation</span> 60 <span class="sr-only">Toggle navigation</span>
54 <span class="icon-bar"></span> 61 <span class="icon-bar"></span>
55 <span class="icon-bar"></span> 62 <span class="icon-bar"></span>
56 <span class="icon-bar"></span> 63 <span class="icon-bar"></span>
57 </button> 64 </button>
58 <a class="navbar-brand" href="/">Modem Dashboard</a> 65 <a class="navbar-brand" href="/">
66 {% if site_name %}
67 {{ site_name}}
68 {% else %}
69 Modem Dashboard
70 {% endif %}
71 </a>
59 </div> 72 </div>
60 <div id="navbar" class="collapse navbar-collapse"> 73 <div id="navbar" class="collapse navbar-collapse">
61 <ul class="nav navbar-nav"> 74 <ul class="nav navbar-nav">
62 <li><a href="/sms">SMS</a></li> 75 <li><a href="/sms">SMS</a></li>
63 <li><a href="/ussd">USSD</a></li> 76 <li><a href="/ussd">USSD</a></li>
77 <li><a href="/stocks">Stok</a></li>
64 </ul> 78 </ul>
65 </div><!--/.nav-collapse --> 79 </div><!--/.nav-collapse -->
66 </div> 80 </div>
67 </nav> 81 </nav>
68 82
69 <div class="container"> 83 <div class="container">
70 84
71 <div class="starter-template"> 85 <div class="starter-template">
72 86
73 <div style="text-align: right;"> 87 <div style="text-align: right;">
74 <img src="/img/{{ signal_strength_image }}" alt="Signal: {{ signal_strength_title }}" title="Signal: {{ signal_strength_title }} ({{ signal_strength }})"> 88 <img src="/img/{{ signal_strength_image }}" alt="Signal: {{ signal_strength_title }}" title="Signal: {{ signal_strength_title }} ({{ signal_strength }})">
75 </div> 89 </div>
76 90
77 {% if page_title%} 91 {% if page_title%}
78 <h1> {{ page_title }} </h1> 92 <h1> {{ page_title }} </h1>
79 {% endif %} 93 {% endif %}
80 94
81 {% block content %} 95 {% block content %}
82 96
83 &nbsp; 97 &nbsp;
84 98
85 {% endblock %} 99 {% endblock %}
86 100
87 </div> 101 </div>
88 102
89 </div><!-- /.container --> 103 </div><!-- /.container -->
90 104
91 105
92 <!-- Bootstrap core JavaScript 106 <!-- Bootstrap core JavaScript
93 ================================================== --> 107 ================================================== -->
94 <!-- Placed at the end of the document so the pages load faster --> 108 <!-- Placed at the end of the document so the pages load faster -->
95 <script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script> 109 <script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
96 <!-- Latest compiled and minified JavaScript --> 110 <!-- Latest compiled and minified JavaScript -->
97 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 111 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
98 112
99 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 113 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
100 <script src="/ie10-viewport-bug-workaround.js"></script> 114 <script src="/ie10-viewport-bug-workaround.js"></script>
101 </body> 115 </body>
102 </html> 116 </html>
103 117