Statistics page, new api calls
This commit is contained in:
parent
f11a580d04
commit
fdd8cf3bdc
|
@ -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
2
app.js
|
@ -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');
|
||||
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
});
|
|
@ -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
|
@ -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>
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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">
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
Loading…
Reference in New Issue