Statistics page, new api calls

This commit is contained in:
Akkadius 2017-09-15 04:40:28 -05:00
parent f11a580d04
commit fdd8cf3bdc
11 changed files with 146 additions and 12 deletions

24
api/get_vendor_count.js Normal file
View File

@ -0,0 +1,24 @@
var express = require('express');
var router = express.Router();
var fs = require('fs');
router.get('/', function(req, res, next) {
var stat_data = {};
var count = 0;
for (var key in dhcp_lease_data) {
if((typeof dhcp_lease_data[key].mac_oui_vendor !== "undefined" ? dhcp_lease_data[key].mac_oui_vendor : 'Misc') == "")
continue;
if(typeof stat_data[(typeof dhcp_lease_data[key].mac_oui_vendor !== "undefined" ? dhcp_lease_data[key].mac_oui_vendor : 'Misc')] === "undefined")
stat_data[(typeof dhcp_lease_data[key].mac_oui_vendor !== "undefined" ? dhcp_lease_data[key].mac_oui_vendor : 'Misc')] = 0;
stat_data[(typeof dhcp_lease_data[key].mac_oui_vendor !== "undefined" && dhcp_lease_data[key].mac_oui_vendor != "" ? dhcp_lease_data[key].mac_oui_vendor : 'Misc')]++;
}
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(stat_data));
});
module.exports = router;

2
app.js
View File

@ -31,6 +31,7 @@ if(glass_config.ip_ranges_to_allow != "") {
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));
app.use('/get_stats', require('./routes/get_stats'));
app.use('/dhcp_statistics', require('./routes/dhcp_statistics_page'));
app.use('/dhcp_leases', require('./routes/dhcp_leases'));
app.use('/dhcp_log', require('./routes/dhcp_log'));
app.use('/dhcp_config', require('./routes/dhcp_config'));
@ -47,6 +48,7 @@ app.use('/glass_settings_save', require('./routes/glass_settings_save'));
/* API Routes */
app.use('/api/get_active_leases/', require('./api/get_active_leases'));
app.use('/api/get_subnet_details/', require('./api/get_subnet_details'));
app.use('/api/get_vendor_count/', require('./api/get_vendor_count'));
app.set('view engine', 'html');

View File

@ -132,3 +132,14 @@ function change_favicon(img) {
favicon.setAttribute('type', 'image/png');
favicon.setAttribute('href', img);
}
$(document).on("click",".option_data",function() {
var lease = $(this).attr("lease");
if ( $("#" + lease).is(":visible") ) {
$("#" + lease).hide();
$(this).text('Show');
} else if ( $("#" + lease).is(":hidden") ) {
$("#" + lease).show();
$(this).text('Hide');
}
});

View File

@ -0,0 +1,2 @@
.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,3 @@
<div class="card">
<div class="header">
<h2>Active Leases</h2>
@ -34,17 +33,6 @@
"pageLength": 100,
"aaSorting": []
});
$(document).on("click",".option_data",function() {
var lease = $(this).attr("lease");
if ( $("#" + lease).is(":visible") ) {
$("#" + lease).hide();
$(this).text('Show');
} else if ( $("#" + lease).is(":hidden") ) {
$("#" + lease).show();
$(this).text('Hide');
}
});
</script>

View File

@ -0,0 +1,70 @@
<div class="row clearfix">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="card">
<div class="header">
<h2>Vendor List Count</h2>
<ul class="header-dropdown m-r--5">
</ul>
</div>
<div class="body">
<table id="device_list_table" class="table table-bordered table-striped table-hover js-basic-example dataTable dashboard-task-infos">
<thead>
<tr>
<th>Vendor</th>
<th>Count</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<!-- #END# Area Chart -->
<!-- Device Chart -->
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="card">
<div class="header">
<h2>Device Chart</h2>
</div>
<div class="body">
<div id="device_chart" class="graph">
<table class="display"></table>
</div>
</div>
</div>
</div>
<!-- #END# Donut Chart -->
</div>
<script type="text/javascript">
var chart_data = [];
$.getJSON( "/api/get_vendor_count", function( data ) {
$.each(data, function(k, v) {
if(v >= 3)
chart_data.push({"label": k, "value": v});
$('#device_list_table > tbody:last-child').append('<tr><td>' + k + '</td><td>' + v.toLocaleString('en') + '</td></tr>');
});
Morris.Donut({
element: "device_chart",
data: chart_data,
colors: ['rgb(233, 30, 99)', 'rgb(0, 188, 212)', 'rgb(255, 152, 0)', 'rgb(0, 150, 136)'],
formatter: function (y) {
return y.toLocaleString('en')
}
});
device_list = $('#device_list_table').DataTable({
dom: 'tip',
responsive: true,
"pageLength": 20,
"aaSorting": [],
"order": [[ 1, "desc" ]]
});
});
</script>

View File

@ -21,6 +21,9 @@
<!-- Animation Css -->
<link href="assets/plugins/animate-css/animate.css" rel="stylesheet" />
<!-- Morris Css -->
<link href="assets/plugins/morris/morris.css" rel="stylesheet" />
<!-- Custom Css -->
<link href="assets/css/style.css" rel="stylesheet">
@ -84,6 +87,12 @@
<span>Home</span>
</a>
</li>
<li>
<a href="/dhcp_statistics" pjax="1">
<i class="material-icons">pie_chart</i>
<span>Statistics</span>
</a>
</li>
<li>
<a href="/dhcp_leases" pjax="1">
<i class="material-icons">layers</i>
@ -185,6 +194,10 @@
<script src="assets/plugins/jquery-datatable/skin/bootstrap/js/dataTables.bootstrap.js"></script>
<script src="assets/plugins/jquery-datatable/extensions/export/dataTables.buttons.min.js"></script>
<!-- Morris Chart -->
<script src="assets/plugins/raphael/raphael.min.js"></script>
<script src="assets/plugins/morris/morris.min.js"></script>
<section class="content">
<div class="container-fluid">
<div class="block-header">

View File

@ -42,6 +42,7 @@ router.get('/', function(req, res, next) {
if(count >= 1000){
break;
}
}
table_data = template_render.set_template_variable(dhcp_leases, "table_data", table_data);

View File

@ -0,0 +1,13 @@
var express = require('express');
var router = express.Router();
var fs = require('fs');
var template_render = require('../lib/render_template.js');
router.get('/', function(req, res, next) {
dhcp_leases = template_render.get_template("dhcp_statistics_page");
// dhcp_leases = template_render.set_template_variable(dhcp_leases, "table_data", table_data);
res.send(template_render.get_index_template(dhcp_leases, req.url));
});
module.exports = router;