From c03ac82eee56d88f93f81dc8356d5b550f175fe5 Mon Sep 17 00:00:00 2001 From: alexhigh Date: Tue, 5 Aug 2014 13:09:46 +0000 Subject: [PATCH] 2014-08-05 Alejandro Gallardo * general/main_menu.php: Fixed the menu position when it's fixed and the header's not. * include/functions_graph.php, include/graphs/pandora.d3.js: Added colors to the elements depending on their status on the functions 'sunburst' and 'graph_monitor_wheel'. * include/styles/pandora.css: Fixed the z-index of the shortcut bar. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@10382 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 13 ++ pandora_console/general/main_menu.php | 11 ++ pandora_console/include/functions_graph.php | 171 +++++++++++++++++-- pandora_console/include/graphs/pandora.d3.js | 2 +- pandora_console/include/styles/pandora.css | 2 +- 5 files changed, 185 insertions(+), 14 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 21d413619f..6abc15812a 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,16 @@ +2014-08-05 Alejandro Gallardo + + * general/main_menu.php: Fixed the menu position when + it's fixed and the header's not. + + * include/functions_graph.php, + include/graphs/pandora.d3.js: Added colors to the elements + depending on their status on the functions 'sunburst' and + 'graph_monitor_wheel'. + + * include/styles/pandora.css: Fixed the z-index of the + shortcut bar. + 2014-08-04 Alejandro Gallardo * general/header.php: Now the header can be configured diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index 60fc7296fd..2fffaec35c 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -63,6 +63,7 @@ ui_require_jquery_file ('cookie'); var autohidden_menu = ; var fixed_menu = ; +var fixed_header = ; var menuState = $.cookie(btoa('pandora_menu_state')); if (!menuState) { @@ -133,6 +134,16 @@ $(document).ready( function() { }) .children('div') .css('margin-bottom', $('div#head').innerHeight() + 'px'); + + if (!fixed_header) { + $(window).scroll(function () { + if ($(this).scrollTop() <= $('div#head').innerHeight()) { + $('div#menu').css('top', $('div#head').innerHeight() - $(this).scrollTop() + 'px' ); + } else { + $('div#menu').css('top', '0'); + } + }); + } } if (autohidden_menu) { diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index c65fc622f6..342ce20e17 100755 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -4097,6 +4097,7 @@ function graph_monitor_wheel ($width = 500, $height = 600) { include_once ($config['homedir'] . "/include/functions_users.php"); include_once ($config['homedir'] . "/include/functions_groups.php"); include_once ($config['homedir'] . "/include/functions_agents.php"); + include_once ($config['homedir'] . "/include/functions_modules.php"); $graph_data = array(); @@ -4126,21 +4127,22 @@ function graph_monitor_wheel ($width = 500, $height = 600) { $module_groups = modules_get_modulegroups(); $module_groups[0] = __('Not assigned'); - $modules = agents_get_modules(array_keys($agents), $fields); + $modules = agents_get_modules(array_keys($agents), '*'); $data_agents = array(); if (!empty($modules)) { foreach ($modules as $key => $module) { - $module_id = $module['id_agente_modulo']; - $agent_id = $module['id_agente']; - $module_group_id = $module['id_module_group']; + $module_id = (int) $module['id_agente_modulo']; + $agent_id = (int) $module['id_agente']; + $module_group_id = (int) $module['id_module_group']; $module_name = $module['nombre']; + $module_status = modules_get_agentmodule_status($module_id); if (!isset($data_agents[$agent_id])) { $data_agents[$agent_id] = array(); $data_agents[$agent_id]['id'] = $agent_id; $data_agents[$agent_id]['name'] = $agents[$agent_id]['nombre']; - $data_agents[$agent_id]['group'] = $agents[$agent_id]['id_grupo']; + $data_agents[$agent_id]['group'] = (int) $agents[$agent_id]['id_grupo']; $data_agents[$agent_id]['type'] = 'agent'; $data_agents[$agent_id]['size'] = 30; $data_agents[$agent_id]['children'] = array(); @@ -4148,6 +4150,15 @@ function graph_monitor_wheel ($width = 500, $height = 600) { $tooltip_content = __('Agent') . ": " . $data_agents[$agent_id]['name'] . ""; $data_agents[$agent_id]['tooltip_content'] = $tooltip_content; + $data_agents[$agent_id]['modules_critical'] = 0; + $data_agents[$agent_id]['modules_warning'] = 0; + $data_agents[$agent_id]['modules_normal'] = 0; + $data_agents[$agent_id]['modules_not_init'] = 0; + $data_agents[$agent_id]['modules_not_normal'] = 0; + $data_agents[$agent_id]['modules_unknown'] = 0; + + $data_agents[$agent_id]['color'] = COL_UNKNOWN; + unset($agents[$agent_id]); } if (!isset($data_agents[$agent_id]['children'][$module_group_id])) { @@ -4160,6 +4171,89 @@ function graph_monitor_wheel ($width = 500, $height = 600) { $tooltip_content = __('Module group') . ": " . $module_groups[$module_group_id] . ""; $data_agents[$agent_id]['children'][$module_group_id]['tooltip_content'] = $tooltip_content; + + $data_agents[$agent_id]['children'][$module_group_id]['modules_critical'] = 0; + $data_agents[$agent_id]['children'][$module_group_id]['modules_warning'] = 0; + $data_agents[$agent_id]['children'][$module_group_id]['modules_normal'] = 0; + $data_agents[$agent_id]['children'][$module_group_id]['modules_not_init'] = 0; + $data_agents[$agent_id]['children'][$module_group_id]['modules_not_normal'] = 0; + $data_agents[$agent_id]['children'][$module_group_id]['modules_unknown'] = 0; + + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_UNKNOWN; + } + + switch ($module_status) { + case AGENT_MODULE_STATUS_CRITICAL_BAD: + case AGENT_MODULE_STATUS_CRITICAL_ALERT: + $data_agents[$agent_id]['modules_critical']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_critical']++; + break; + + case AGENT_MODULE_STATUS_WARNING: + case AGENT_MODULE_STATUS_WARNING_ALERT: + $data_agents[$agent_id]['modules_warning']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_warning']++; + break; + + case AGENT_MODULE_STATUS_NORMAL: + case AGENT_MODULE_STATUS_NORMAL_ALERT: + $data_agents[$agent_id]['modules_normal']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_normal']++; + break; + + case AGENT_MODULE_STATUS_NOT_INIT: + $data_agents[$agent_id]['modules_not_init']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_not_init']++; + break; + + case AGENT_MODULE_STATUS_NOT_NORMAL: + $data_agents[$agent_id]['modules_not_normal']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_not_normal']++; + break; + + case AGENT_MODULE_STATUS_NO_DATA: + case AGENT_MODULE_STATUS_UNKNOWN: + $data_agents[$agent_id]['modules_unknown']++; + $data_agents[$agent_id]['children'][$module_group_id]['modules_unknown']++; + break; + } + + if ($data_agents[$agent_id]['modules_critical'] > 0) { + $data_agents[$agent_id]['color'] = COL_CRITICAL; + } + else if ($data_agents[$agent_id]['modules_warning'] > 0) { + $data_agents[$agent_id]['color'] = COL_WARNING; + } + else if ($data_agents[$agent_id]['modules_not_normal'] > 0) { + $data_agents[$agent_id]['color'] = COL_WARNING; + } + else if ($data_agents[$agent_id]['modules_unknown'] > 0) { + $data_agents[$agent_id]['color'] = COL_UNKNOWN; + } + else if ($data_agents[$agent_id]['modules_normal'] > 0) { + $data_agents[$agent_id]['color'] = COL_NORMAL; + } + else { + $data_agents[$agent_id]['color'] = COL_NOTINIT; + } + + if ($data_agents[$agent_id]['children'][$module_group_id]['modules_critical'] > 0) { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_CRITICAL; + } + else if ($data_agents[$agent_id]['children'][$module_group_id]['modules_warning'] > 0) { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_WARNING; + } + else if ($data_agents[$agent_id]['children'][$module_group_id]['modules_not_normal'] > 0) { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_WARNING; + } + else if ($data_agents[$agent_id]['children'][$module_group_id]['modules_unknown'] > 0) { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_UNKNOWN; + } + else if ($data_agents[$agent_id]['children'][$module_group_id]['modules_normal'] > 0) { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_NORMAL; + } + else { + $data_agents[$agent_id]['children'][$module_group_id]['color'] = COL_NOTINIT; } $data_module = array(); @@ -4171,6 +4265,37 @@ function graph_monitor_wheel ($width = 500, $height = 600) { $tooltip_content = __('Module') . ": " . $module_name . ""; $data_module['tooltip_content'] = $tooltip_content; + switch ($module_status) { + case AGENT_MODULE_STATUS_CRITICAL_BAD: + case AGENT_MODULE_STATUS_CRITICAL_ALERT: + $data_module['color'] = COL_CRITICAL; + break; + + case AGENT_MODULE_STATUS_WARNING: + case AGENT_MODULE_STATUS_WARNING_ALERT: + $data_module['color'] = COL_WARNING; + break; + + case AGENT_MODULE_STATUS_NORMAL: + case AGENT_MODULE_STATUS_NORMAL_ALERT: + $data_module['color'] = COL_NORMAL; + break; + + case AGENT_MODULE_STATUS_NOT_INIT: + $data_module['color'] = COL_NOTINIT; + break; + + case AGENT_MODULE_STATUS_NOT_NORMAL: + $data_module['color'] = COL_WARNING; + break; + + case AGENT_MODULE_STATUS_NO_DATA: + case AGENT_MODULE_STATUS_UNKNOWN: + default: + $data_module['color'] = COL_UNKNOWN; + break; + } + $data_agents[$agent_id]['children'][$module_group_id]['children'][] = $data_module; unset($modules[$module_id]); @@ -4179,9 +4304,10 @@ function graph_monitor_wheel ($width = 500, $height = 600) { foreach ($agents as $id => $agent) { if (!isset($data_agents[$id])) { $data_agents[$id] = array(); - $data_agents[$id]['id'] = $id; - $data_agents[$id]['name'] = $agent['name']; + $data_agents[$id]['id'] = (int) $id; + $data_agents[$id]['name'] = $agent['nombre']; $data_agents[$id]['type'] = 'agent'; + $data_agents[$id]['color'] = COL_NOTINIT; } } $agents = null; @@ -4195,13 +4321,34 @@ function graph_monitor_wheel ($width = 500, $height = 600) { foreach ($groups as $id => $group) { $group_aux = array(); - $group_aux['id'] = $id; + $group_aux['id'] = (int) $id; $group_aux['name'] = $group['nombre']; - $group_aux['parent'] = $group['parent']; + $group_aux['parent'] = (int) $group['parent']; $group_aux['type'] = 'group'; $group_aux['size'] = 100; + $group_aux['status'] = groups_get_status($id); - $tooltip_content = __('Group') . ": " . $group_aux['name'] . ""; + switch ($group_aux['status']) { + case AGENT_STATUS_CRITICAL: + $group_aux['color'] = COL_CRITICAL; + break; + + case AGENT_STATUS_WARNING: + case AGENT_STATUS_ALERT_FIRED: + $group_aux['color'] = COL_WARNING; + break; + + case AGENT_STATUS_NORMAL: + $group_aux['color'] = COL_NORMAL; + break; + + case AGENT_STATUS_UNKNOWN: + default: + $group_aux['color'] = COL_UNKNOWN; + break; + } + + $tooltip_content = html_print_image("images/groups_small/" . $group['icon'] . ".png", true) . " " . __('Group') . ": " . $group_aux['name'] . ""; $group_aux['tooltip_content'] = $tooltip_content; if (!isset($group['children'])) @@ -4209,7 +4356,7 @@ function graph_monitor_wheel ($width = 500, $height = 600) { if (!empty($group['children'])) $group_aux['children'] = iterate_group_array($group['children']); - $agents = extract_agents_with_group_id($data_agents, $id); + $agents = extract_agents_with_group_id($data_agents, (int) $id); if (!empty($agents)) $group_aux['children'] = array_merge($group_aux['children'], $agents); @@ -4235,7 +4382,7 @@ function graph_monitor_wheel ($width = 500, $height = 600) { } $graph_data = array('name' => __('Main node'), 'children' => iterate_group_array($data_groups, $data_agents)); - + if (empty($graph_data['children'])) return fs_error_image(); diff --git a/pandora_console/include/graphs/pandora.d3.js b/pandora_console/include/graphs/pandora.d3.js index 392cc30760..f4b9cb7175 100644 --- a/pandora_console/include/graphs/pandora.d3.js +++ b/pandora_console/include/graphs/pandora.d3.js @@ -715,7 +715,7 @@ function sunburst (recipient, data, width, height) { .data(partition.nodes(data)) .enter().append("path") .attr("d", arc) - .style("fill", function(d) { return color((d.children ? d : d.parent).name); }) + .style("fill", function(d) { return d.color ? d3.rgb(d.color) : color((d.children ? d : d.parent).name); }) .on("click", click) .on("mouseover", over_user) .on("mouseout", out_user) diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index f907901ae3..30e7400ff2 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -2667,7 +2667,7 @@ td.empty_field { margin: 0px !important; bottom: 0px; left: 0px; - z-index: 1020; + z-index: 9001; } #shortcut_bar {