2015-04-12 01:10:48 +02:00
< ? php
/*
* LibreNMS
*
* Copyright ( c ) 2015 Søren Friis Rosiak < sorenrosiak @ gmail . com >
* This program is free software : you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation , either version 3 of the License , or ( at your
* option ) any later version . Please see LICENSE . txt at the top level of
* the source code distribution for details .
*/
$pagetitle [] = " Alert Stats " ;
if ( isset ( $device [ 'device_id' ]) && $device [ 'device_id' ] > 0 ) {
$sql = " AND alert_log.device_id=? " ;
$param = array (
$device [ 'device_id' ]
);
}
if ( $_SESSION [ 'userlevel' ] >= '5' ) {
2015-04-15 12:35:20 +01:00
$query = " SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.rule_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id $sql GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity " ;
2015-04-12 01:10:48 +02:00
}
if ( $_SESSION [ 'userlevel' ] < '5' ) {
2015-04-15 12:35:20 +01:00
$query = " SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules,devices_perms WHERE alert_log.rule_id=alert_rules.id $sql AND alert_log.device_id = devices_perms.device_id AND devices_perms.user_id = " . $_SESSION [ 'user_id' ] . " GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity " ;
2015-04-12 01:10:48 +02:00
}
?>
< script src = " js/vis.min.js " ></ script >
< div id = " visualization " ></ div >
< script type = " text/javascript " >
var container = document . getElementById ( 'visualization' );
< ? php
$groups = array ();
$max_count = 0 ;
foreach ( dbFetchRows ( $query , $param ) as $return_value ) {
$date = $return_value [ 'Date' ];
$count = $return_value [ 'totalCount' ];
if ( $count > $max_count ) {
$max_count = $count ;
}
$severity = $return_value [ 'Severity' ];
$data [] = array (
'x' => $date ,
'y' => $count ,
'group' => $severity
);
if ( ! in_array ( $severity , $groups )) {
array_push ( $groups , $severity );
}
}
$graph_data = _json_encode ( $data );
?>
var groups = new vis . DataSet ();
< ? php
foreach ( $groups as $group ) {
echo " groups.add( { id: ' $group ', content: ' $group ' }) \n " ;
}
?>
var items =
< ? php
echo $graph_data ; ?>
;
var dataset = new vis . DataSet ( items );
var options = {
style : 'bar' ,
barChart : { width : 50 , align : 'right' , handleOverlap : 'sideBySide' }, // align: left, center, right
drawPoints : false ,
legend : { left : { position : " bottom-left " }},
dataAxis : {
icons : true ,
showMajorLabels : true ,
showMinorLabels : true ,
customRange : {
left : {
min : 0 , max : < ? php
echo $max_count ; ?>
}
}
},
zoomMin : 2073600000 , //24hrs
zoomMax : < ? php
$first_date = reset ( $data );
$last_date = end ( $data );
$milisec_diff = abs ( strtotime ( $first_date [ x ]) - strtotime ( $last_date [ x ])) * 1000 ;
echo $milisec_diff ;
?> ,
orientation : 'top'
};
var graph2d = new vis . Graph2d ( container , items , groups , options );
2015-04-15 12:35:20 +01:00
</ script >