2012-09-18 Sergio Martin <sergio.martin@artica.es>

* include/functions_graph.php
	include/graphs/functions_flot.php
	include/graphs/flot/pandora.flot.js
	operation/agentes/stat_win.php  
	include/functions_modules.php: Added unknown status
	to graphs and improve some little aesthetic things of
	flot graphs

	* include/functions.php
	include/functions_html.php: Fixed html checkbox issue
	with get_parameter_checkbox function



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6980 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
zarzuelo 2012-09-18 09:02:49 +00:00
parent 12fc75dab4
commit c9237bec28
8 changed files with 117 additions and 30 deletions

View File

@ -1,3 +1,17 @@
2012-09-18 Sergio Martin <sergio.martin@artica.es>
* include/functions_graph.php
include/graphs/functions_flot.php
include/graphs/flot/pandora.flot.js
operation/agentes/stat_win.php
include/functions_modules.php: Added unknown status
to graphs and improve some little aesthetic things of
flot graphs
* include/functions.php
include/functions_html.php: Fixed html checkbox issue
with get_parameter_checkbox function
2012-09-17 Vanessa Gil <vanessa.gil@artica.es>
* operation/events/events_list.php

View File

@ -604,6 +604,30 @@ function get_parameterBetweenListValues ($name, $values, $default) {
return $default;
}
/**
* Get a parameter from a checkbox.
*
* Is checked if the checkbox is sent to fix html bad design
*
* @param string $name key of the parameter in the $_POST or $_GET array
* @param mixed $default default value if the key wasn't found
*
* @return mixed Whatever was in that parameter, cleaned however
*
*/
function get_parameter_checkbox ($name, $default = '') {
$sent = get_parameter($name.'_sent', 0);
// If is not sent, return the default
if(!$sent) {
return $default;
}
// If sent, get parameter normally
return get_parameter($name, 0);
}
/**
* Get a parameter from a request.
*

View File

@ -28,15 +28,21 @@ define("GRAPH_STACKED_LINE", 3);
function grafico_modulo_sparse_data_chart (&$chart, &$chart_data_extra, &$long_index,
$data, $data_i, $previous_data, $resolution, $interval, $period, $datelimit,
$projection, $avg_only = false, $uncompressed_module = false,
$show_events = false, $show_alerts = false, $baseline = false,
$show_events = false, $show_alerts = false, $show_unknown = false, $baseline = false,
$baseline_data = array(), $events = array(), $series_suffix = '') {
global $config;
global $chart_extra_data;
global $series_type;
$flash_chart = $config['flash_charts'];
// Event iterator
$event_i = 0;
// Is unknown flag
$is_unknown = false;
// Calculate chart data
for ($i = 0; $i < $resolution; $i++) {
$timestamp = $datelimit + ($interval * $i);
@ -74,6 +80,8 @@ function grafico_modulo_sparse_data_chart (&$chart, &$chart_data_extra, &$long_i
// Read events and alerts that fall in the current interval
$event_value = 0;
$alert_value = 0;
$unknown_value = 0;
$event_ids = array();
$alert_ids = array();
while (isset ($events[$event_i]) && $events[$event_i]['utimestamp'] >= $timestamp && $events[$event_i]['utimestamp'] <= ($timestamp + $interval)) {
@ -85,8 +93,19 @@ function grafico_modulo_sparse_data_chart (&$chart, &$chart_data_extra, &$long_i
$alert_value++;
$alert_ids[] = $events[$event_i]['id_evento'];
}
if ($show_unknown) {
if($events[$event_i]['event_type'] == 'going_unknown') {
$is_unknown = true;
}
else if(substr ($events[$event_i]['event_type'], 0, 5) == 'going') {
$is_unknown = false;
}
}
$event_i++;
}
if($is_unknown) {
$unknown_value++;
}
if (!$flash_chart) {
// Set the title and time format
@ -137,11 +156,17 @@ function grafico_modulo_sparse_data_chart (&$chart, &$chart_data_extra, &$long_i
$series_type['event'.$series_suffix] = 'points';
}
if($show_alerts) {
$chart[$timestamp]['alert'.$series_suffix] = $alert_value;
$chart[$timestamp]['alert'.$series_suffix] = $alert_value;
$chart[$timestamp]['alert'.$series_suffix] = $alert_value;
$series_type['alert'.$series_suffix] = 'points';
}
if($show_unknown) {
$chart[$timestamp]['unknown'.$series_suffix] = $unknown_value;
$series_type['unknown'.$series_suffix] = 'area';
}
if($is_unknown) {
$total = $interval_max = $interval_min = $previous_data = 0;
}
if ($count > 0) {
if ($avg_only) {
@ -205,7 +230,8 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
$width, $height , $title = '', $unit_name = null,
$show_alerts = false, $avg_only = 0, $date = 0, $unit = '',
$baseline = 0, $return_data = 0, $show_title = true, $projection = false,
$adapt_key = '', $compare = false, $series_suffix = '', $series_suffix_str = '') {
$adapt_key = '', $compare = false, $series_suffix = '', $series_suffix_str = '',
$show_unknown = false) {
global $config;
global $chart;
@ -246,7 +272,7 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
// Get event data (contains alert data too)
$events = array();
if ($show_events == 1 || $show_alerts == 1) {
if ($show_unknown == 1 || $show_events == 1 || $show_alerts == 1) {
$events = db_get_all_rows_filter ('tevento',
array ('id_agentmodule' => $agent_module_id,
"utimestamp > $datelimit",
@ -349,7 +375,7 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
grafico_modulo_sparse_data_chart ($chart, $chart_data_extra, $long_index,
$data, $data_i, $previous_data, $resolution, $interval, $period, $datelimit,
$projection, $avg_only, $uncompressed_module,
$show_events, $show_alerts, $baseline,
$show_events, $show_alerts, $show_unknown, $baseline,
$baseline_data, $events, $series_suffix);
// Return chart data and don't draw
@ -363,13 +389,16 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
$avg_value = round(reporting_get_agentmodule_data_average ($agent_module_id, $period, $date), 2);
// Fix event and alert scale
$event_max = $max_value * 1.15;
$event_max = $max_value * 1.05;
foreach ($chart as $timestamp => $chart_data) {
if ($show_events && $chart_data['event'.$series_suffix] > 0) {
$chart[$timestamp]['event'.$series_suffix] = $event_max * 1.15;
$chart[$timestamp]['event'.$series_suffix] = $event_max * 1.2;
}
if ($show_alerts && $chart_data['alert'] > 0) {
$chart[$timestamp]['alert'.$series_suffix] = $event_max;
$chart[$timestamp]['alert'.$series_suffix] = $event_max * 1.10;
}
if ($show_unknown && $chart_data['unknown'] > 0) {
$chart[$timestamp]['unknown'.$series_suffix] = $event_max * 1.05;
}
}
@ -388,6 +417,9 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
if($show_alerts) {
$color['alert'.$series_suffix] = array('border' => '#ff7f00', 'color' => '#ff7f00', 'alpha' => 50);
}
if($show_unknown) {
$color['unknown'.$series_suffix] = array('border' => '#999999', 'color' => '#999999', 'alpha' => 50);
}
$color['max'.$series_suffix] = array('border' => '#000000', 'color' => $config['graph_color3'], 'alpha' => 50);
$color['sum'.$series_suffix] = array('border' => '#000000', 'color' => $config['graph_color2'], 'alpha' => 50);
$color['min'.$series_suffix] = array('border' => '#000000', 'color' => $config['graph_color1'], 'alpha' => 50);
@ -402,6 +434,10 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
$legend['alert'.$series_suffix] = __('Alerts');
$chart_extra_data['legend_alerts'] = $legend['alert'];
}
if($show_unknown) {
$legend['unknown'.$series_suffix] = __('Unknown').$series_suffix_str;
$chart_extra_data['legend_unknown'] = $legend['unknown'];
}
if (!$avg_only){
$legend['max'.$series_suffix] = __('Max').$series_suffix_str . ' (' .format_for_graph($max_value) . ') ' . $unit;
@ -413,6 +449,7 @@ function grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
if ($baseline) {
$legend['baseline'.$series_suffix] = __('Baseline');
}
}
function grafico_modulo_sparse ($agent_module_id, $period, $show_events,
@ -420,7 +457,7 @@ function grafico_modulo_sparse ($agent_module_id, $period, $show_events,
$show_alerts = false, $avg_only = 0, $pure = false,
$date = 0, $unit = '', $baseline = 0, $return_data = 0,
$show_title = true, $only_image = false, $homeurl = '', $ttl = 1,
$projection = false, $adapt_key = '', $compare = false) {
$projection = false, $adapt_key = '', $compare = false, $show_unknown = false) {
global $config;
global $graphic_type;
@ -442,11 +479,12 @@ function grafico_modulo_sparse ($agent_module_id, $period, $show_events,
$series_suffix = '2';
$series_suffix_str = ' ('.__('Previous').')';
// Build the data of the previous period
grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
$width, $height , $title, $unit_name,
$show_alerts, $avg_only, $date-$period, $unit, $baseline, $return_data,
$show_title, $projection, $adapt_key, $compare,
$series_suffix, $series_suffix_str);
$series_suffix, $series_suffix_str, $show_unknown);
switch($compare) {
case 'separated':
@ -467,7 +505,7 @@ function grafico_modulo_sparse ($agent_module_id, $period, $show_events,
$data_returned = grafico_modulo_sparse_data ($agent_module_id, $period, $show_events,
$width, $height , $title, $unit_name,
$show_alerts, $avg_only, $date, $unit, $baseline,
$return_data, $show_title, $projection, $adapt_key, $compare);
$return_data, $show_title, $projection, $adapt_key, $compare, '', '', $show_unknown);
if ($return_data) {
return $data_returned;
@ -476,6 +514,9 @@ function grafico_modulo_sparse ($agent_module_id, $period, $show_events,
if($compare === 'overlapped') {
$i = 0;
foreach($chart as $k=>$v) {
if(!isset($chart_prev[$i])) {
continue;
}
$chart[$k] = array_merge($v,$chart_prev[$i]);
$i++;
}
@ -2163,7 +2204,7 @@ function grafico_modulo_boolean_data ($agent_module_id, $period, $show_events,
$avg_value = round(reporting_get_agentmodule_data_average ($agent_module_id, $period, $date), 2);
// Fix event and alert scale
$event_max = $max_value * 1.25;
$event_max = $max_value * 1.05;
foreach ($chart as $timestamp => $chart_data) {
if ($show_events) {
if ($chart_data['event'] > 0) {
@ -2651,7 +2692,7 @@ function grafico_modulo_string ($agent_module_id, $period, $show_events,
$unit = modules_get_unit($agent_module_id);
// Fix event and alert scale
$event_max = $max_value * 1.25;
$event_max = $max_value * 1.05;
foreach ($chart as $timestamp => $chart_data) {
if ($chart_data['event'] > 0) {
$chart[$timestamp]['event'] = $event_max;

View File

@ -1230,6 +1230,7 @@ function html_print_checkbox_extended ($name, $value, $checked, $disabled, $scri
*/
function html_print_checkbox ($name, $value, $checked = false, $return = false, $disabled = false, $script = '') {
$output = html_print_checkbox_extended ($name, $value, (bool) $checked, $disabled, $script, '', true);
$output .= html_print_input_hidden($name.'_sent',1,true);
if ($return === false)
echo $output;

View File

@ -1285,18 +1285,16 @@ function modules_get_status($id_agent_module, $db_status, $data, &$status, &$tit
$title = __('NORMAL');
}
elseif ($db_status == 3) {
$status = STATUS_AGENT_DOWN;
$last_status = modules_get_agentmodule_last_status($id_agent_module);
switch($last_status) {
case 0:
$status = STATUS_AGENT_DOWN;
$title = __('UNKNOWN')." - ".__('Last status')." ".__('NORMAL');
break;
case 1:
$status = STATUS_AGENT_DOWN;
$title = __('UNKNOWN')." - ".__('Last status')." ".__('CRITICAL');
break;
case 2:
$status = STATUS_AGENT_DOWN;
$title = __('UNKNOWN')." - ".__('Last status')." ".__('WARNING');
break;
}

View File

@ -744,7 +744,7 @@ function pandoraFlotArea(graph_id, values, labels, labels_long, legend, colors,
$('#timestamp_'+graph_id).text(labels_long[j]);
}
$('#timestamp_'+graph_id).css('top', plot.offset().top);
$('#timestamp_'+graph_id).css('top', plot.offset().top-$('#timestamp_'+graph_id).height()*1.5);
var timesize = $('#timestamp_'+graph_id).width();

View File

@ -116,9 +116,9 @@ function flot_area_graph($chart_data, $width, $height, $color, $legend, $long_in
$return = "<div>";
// Set some containers to legend, graph, timestamp tooltip, etc.
$return .= "<p id='legend_$graph_id' style='font-size:".$font_size."pt'></p>";
$return .= "<div id='timestamp_$graph_id' style='font-size:".$font_size."pt;display:none; position:absolute; background:#fff; border: solid 1px #aaa; padding: 2px; z-index:1000;'></div>";
$return .= "<div id='$graph_id' class='graph $adapt_key' style='width: ".$width."px; height: ".$height."px;'></div>";
$return .= "<div id='overview_$graph_id' style='display:none; margin-left:0px; margin-top:20px; width: ".$width."px; height:50px;'></div>";
$return .= "<div id='timestamp_$graph_id' style='font-size:".$font_size."pt;display:none; position:absolute; background:#fff; border: solid 1px #aaa; padding: 2px'></div>";
if ($water_mark != '') {
$return .= "<div id='watermark_$graph_id' style='display:none; position:absolute;'><img id='watermark_image_$graph_id' src='$water_mark'></div>";

View File

@ -200,7 +200,7 @@ $label = base64_decode(get_parameter('label', ''));
$show_events_graph = get_parameter ("show_events_graph", 0);
$time_compare_separated = get_parameter ("time_compare_separated", 0);
$time_compare_overlapped = get_parameter ("time_compare_overlapped", 0);
$unknown_graph = get_parameter_checkbox ("unknown_graph", 1);
$time_compare = false;
@ -237,7 +237,7 @@ $label = base64_decode(get_parameter('label', ''));
switch ($graph_type) {
case 'boolean':
echo grafico_modulo_boolean ($id, $period, $draw_events, $width, $height,
$label, null, $draw_alerts, $avg_only, false, $date, false, $urlImage, 'adapter_'.$graph_type, $time_compare);
$label, null, $draw_alerts, $avg_only, false, $date, false, $urlImage, 'adapter_'.$graph_type, $time_compare, $unknown_graph);
echo '<br><br><br>';
if ($show_events_graph)
echo graphic_module_events($id, $width, $height, $period, $config['homeurl'] . '/', $zoom, 'adapted_'.$graph_type);
@ -245,7 +245,7 @@ $label = base64_decode(get_parameter('label', ''));
case 'sparse':
echo grafico_modulo_sparse ($id, $period, $draw_events, $width, $height,
$label, null, $draw_alerts, $avg_only, false, $date, '', $baseline,
0, true, false, $urlImage, 1, false, 'adapter_'.$graph_type, $time_compare);
0, true, false, $urlImage, 1, false, 'adapter_'.$graph_type, $time_compare, $unknown_graph);
echo '<br><br><br>';
if ($show_events_graph)
echo graphic_module_events($id, $width, $height, $period, $config['homeurl'] . '/', $zoom, 'adapted_'.$graph_type);
@ -410,6 +410,15 @@ $label = base64_decode(get_parameter('label', ''));
?>
</td>
</tr>
<tr>
<td><?php echo __('Show unknown graph');?></td>
<td>
<?php
html_print_checkbox ("unknown_graph",
1, (bool) $unknown_graph);
?>
</td>
</tr>
<?php
break;
}