diff --git a/pandora_console/extensions/module_groups.php b/pandora_console/extensions/module_groups.php
index 9a4f66935c..c617d6425e 100644
--- a/pandora_console/extensions/module_groups.php
+++ b/pandora_console/extensions/module_groups.php
@@ -17,103 +17,21 @@
global $config;
-if (is_ajax ()) {
- check_login ();
-
- require_once('include/functions_agents.php');
-
- $get_info_alert_module_group = (bool)get_parameter('get_info_alert_module_group');
- $module_group = (int)get_parameter('module_group');
- $id_agent_group = (int)get_parameter('id_agent_group');
-
- $data = false;
- if ($get_info_alert_module_group) {
- $agents = agents_get_group_agents($id_agent_group);
- if (!empty($agents)) {
- $alerts = agents_get_alerts_simple(array_keys($agents));
- foreach ($alerts as $alert) {
- $module = db_get_row_filter('tagente_modulo', array('id_agente_modulo' => $alert['id_agent_module']));
- if ($module_group == $module['id_module_group']) {
- if ($alert["times_fired"] > 0) {
- $data = true;
- echo '' . __('Number fired of alerts').': ' . $alert["times_fired"] . '
';
- $agent = db_get_row('tagente', 'id_agente', $module['id_agente']);
- echo '' . __('Agent').': ';
- echo io_safe_output($agent['nombre']) . '
';
- echo '' . __('Module') . ': ';
- echo io_safe_output($module['nombre']) . '
';
- $template = db_get_row('talert_templates', 'id' , $alert['id_alert_template']);
- echo '' . __('Alert template') . ': ';
- echo io_safe_output($template['name']) . '
';
-
- // This prevent from templates without predefined actions
- if (empty($template['id_alert_action']))
- $template_id_alert_action = "''";
- else
- $template_id_alert_action = $template['id_alert_action'];
-
- // True if the alert only has the default template action
- $default_action = false;
- // Try to get actions for the current alert
- $sql = 'SELECT t2.name
- FROM talert_template_module_actions t1
- INNER JOIN talert_actions t2
- INNER JOIN talert_template_modules t3
- ON t3.id = t1.id_alert_template_module
- AND t1.id_alert_action = t2.id
- WHERE (t3.id_alert_template = ' . $template['id'] . ' AND
- t3.id_agent_module = ' . $module['id_agente_modulo'] . ');';
-
- $actions = db_get_all_rows_sql($sql);
-
- // If this alert doesn't have actions try to get default action from template
- if ($actions === false) {
- $sql = 'SELECT name
- FROM talert_actions
- WHERE (id = ' . $template_id_alert_action . ');';
-
- $default_action = true;
-
- $actions = db_get_all_rows_sql($sql);
- }
-
- if ($actions === false) {
- $actions = array();
- }
-
- echo '' . __('Actions') . ': ' . '
';
- echo '
- ' . $alinkStart . $count . $alinkEnd . '
');
- }
- array_push($tableData,$row);
- }
- $table->data = $tableData;
- echo "";
- echo "
";
- echo "" . __('Legend') . " |
";
- echo " | " . __("Orange cell when the module group and agent have at least one alarm fired.") . " |
";
- echo " | " . __("Red cell when the module group and agent have at least one module in critical status and the others in any status") . " |
";
- echo " | " . __("Yellow cell when the module group and agent have at least one in warning status and the others in grey or green status") . " |
";
- echo " | " . __("Green cell when the module group and agent have all modules in OK status") . " |
";
- echo " | " . __("Grey cell when the module group and agent have at least one in unknown status and the others in green status") . " |
";
- echo " | " .__("Blue cell when the module group and agent have all modules in not init status.") . " |
";
- echo "
";
+ if(count($array_for_defect) > 0){
+ $table = new StdClass();
+ $table->style[0] = 'color: #ffffff; background-color: #373737; font-weight: bolder; padding-right: 10px; min-width: 230px;';
+ $table->width = '100%';
+
+ $head[0] = __('Groups');
+ $headstyle[0] = "width: 20%; font-weight: bolder;";
+ foreach ($array_module_group as $key => $value) {
+ $headstyle[] = "min-width: 60px;max-width: 5%;text-align:center; color: #ffffff; background-color: #373737; font-weight: bolder;";
+ $head[] = ui_print_truncate_text($value, GENERIC_SIZE_TEXT, true, true, true, '…', 'color:#FFF');
+ }
+
+ $i = 0;
+ foreach ($array_for_defect as $key => $value) {
+ $deep = groups_get_group_deep($key);
+ $data[$i][0] = $deep . ui_print_truncate_text($value['data']['name'], GENERIC_SIZE_TEXT, true, true, true, '…', 'color:#FFF');
+ $j = 1;
+ if(isset($array_data[$key])){
+ foreach ($value['gm'] as $k => $v) {
+ if(isset($array_data[$key][$k])){
+ $send_tooltip = json_encode($array_data[$key][$k]);
+ $rel = "ajax.php?page=extensions/module_groups&get_info_alert_module_group=1&send_tooltip=" . $send_tooltip;
+ $url = "index.php?sec=estado&sec2=operation/agentes/status_monitor&status=-1&ag_group=" . $key . "&modulegroup=" . $k;
+
+ if ($array_data[$key][$k]['alerts_module_count'] != 0) {
+ $color = '#FFA631'; //Orange when the cell for this model group and agent has at least one alert fired.
+ }
+ else if ($array_data[$key][$k]['critical_module_count'] != 0) {
+ $color = '#FC4444'; //Red when the cell for this model group and agent has at least one module in critical state and the rest in any state.
+ }
+ elseif ($array_data[$key][$k]['warning_module_count'] != 0) {
+ $color = '#FAD403'; //Yellow when the cell for this model group and agent has at least one in warning state and the rest in green state.
+ }
+ elseif ($array_data[$key][$k]['unknown_module_count'] != 0) {
+ $color = '#B2B2B2 '; //Grey when the cell for this model group and agent has at least one module in unknown state and the rest in any state.
+ }
+ elseif ($array_data[$key][$k]['normal_module_count'] != 0) {
+ $color = '#80BA27'; //Green when the cell for this model group and agent has OK state all modules.
+ }
+ elseif ($array_data[$key][$k]['notInit_module_count'] != 0) {
+ $color = '#5BB6E5'; // Blue when the cell for this module group and all modules have not init value.
+ }
+
+ $data[$i][$j] ="
";
+ }
+ else{
+ $data[$i][$j] ="
";
+ $data[$i][$j] .= 0;
+ $data[$i][$j] .= "
";
+ }
+ $j++;
+ }
+ }
+ else{
+ foreach ($value['gm'] as $k => $v) {
+ $data[$i][$j] ="
";
+ $data[$i][$j] .= 0;
+ $data[$i][$j] .= "
";
+ $j++;
+ }
+ }
+ $i++;
+ }
+
+ $table->head = $head;
+ $table->headstyle = $headstyle;
+ $table->data = $data;
+
+ ui_pagination($counter);
+
+ echo "
";
+ html_print_table($table);
echo "
";
+
+ ui_pagination($counter);
+
+ echo "
";
+ echo "
";
+ echo "" . __('Legend') . " |
";
+ echo " | " . __("Orange cell when the module group and agent have at least one alarm fired.") . " |
";
+ echo " | " . __("Red cell when the module group and agent have at least one module in critical status and the others in any status") . " |
";
+ echo " | " . __("Yellow cell when the module group and agent have at least one in warning status and the others in grey or green status") . " |
";
+ echo " | " . __("Grey cell when the module group and agent have at least one in unknown status and the others in green status") . " |
";
+ echo " | " . __("Green cell when the module group and agent have all modules in OK status") . " |
";
+ echo " | " .__("Blue cell when the module group and agent have all modules in not init status.") . " |
";
+ echo "
";
+ echo "
";
+
}
else {
- echo "
".__('There are no defined groups or module groups')."
";
+ ui_print_info_message ( array('no_close'=>true, 'message'=> __("This table shows in columns the modules group and in rows agents group. The cell shows all modules") ));
+ ui_print_info_message ( array('no_close'=>true, 'message'=> __('There are no defined groups or module groups') ));
}
-
+
ui_require_css_file('cluetip');
ui_require_jquery_file('cluetip');
?>
@@ -292,7 +270,8 @@ function mainModuleGroups() {
$("a.info_cell").cluetip ({
arrows: true,
attribute: 'rel',
- cluetipClass: 'default'
+ cluetipClass: 'default',
+ width: '200px'
});
});
diff --git a/pandora_console/include/class/TreeGroup.class.php b/pandora_console/include/class/TreeGroup.class.php
index af5542e396..ced6b8d442 100644
--- a/pandora_console/include/class/TreeGroup.class.php
+++ b/pandora_console/include/class/TreeGroup.class.php
@@ -20,6 +20,7 @@ require_once($config['homedir']."/include/class/Tree.class.php");
class TreeGroup extends Tree {
protected $propagateCounters = true;
+ protected $displayAllGroups = false;
public function __construct($type, $rootType = '', $id = -1, $rootID = -1, $serverID = false, $childrenMethod = "on_demand", $access = 'AR') {
@@ -44,6 +45,10 @@ class TreeGroup extends Tree {
$this->propagateCounters = (bool)$value;
}
+ public function setDisplayAllGroups($value) {
+ $this->displayAllGroups = (bool)$value;
+ }
+
protected function getData() {
if ($this->id == -1) {
$this->getFirstLevel();
@@ -132,12 +137,13 @@ class TreeGroup extends Tree {
return !$group['have_parent'];
});
// Propagate child counters to her parents
+
if ($this->propagateCounters) {
TreeGroup::processCounters($groups);
// Filter groups and eliminates the reference to empty groups
- $groups = TreeGroup::deleteEmptyGroups($groups);
+ $groups = $this->deleteEmptyGroups($groups);
} else {
- $groups = TreeGroup::deleteEmptyGroupsNotPropagate($groups);
+ $groups = $this->deleteEmptyGroupsNotPropagate($groups);
}
usort($groups, array("Tree", "cmpSortNames"));
@@ -345,7 +351,8 @@ class TreeGroup extends Tree {
*
* @return new_groups A new groups structure without empty groups
*/
- protected static function deleteEmptyGroups ($groups) {
+ protected function deleteEmptyGroups ($groups) {
+ if($this->displayAllGroups) return $groups;
$new_groups = array();
foreach ($groups as $group) {
// If a group is empty, do not add to new_groups.
@@ -354,7 +361,7 @@ class TreeGroup extends Tree {
}
// Tray to remove the children groups
if (!empty($group['children'])) {
- $children = TreeGroup::deleteEmptyGroups ($group['children']);
+ $children = $this->deleteEmptyGroups ($group['children']);
if (empty($children)) unset($group['children']);
else $group['children'] = $children;
}
@@ -363,12 +370,13 @@ class TreeGroup extends Tree {
return $new_groups;
}
- protected static function deleteEmptyGroupsNotPropagate ($groups) {
+ protected function deleteEmptyGroupsNotPropagate ($groups) {
+ if($this->displayAllGroups) return $groups;
$new_groups = array();
foreach ($groups as $group) {
// Tray to remove the children groups
if (!empty($group['children'])) {
- $children = TreeGroup::deleteEmptyGroupsNotPropagate ($group['children']);
+ $children = $this->deleteEmptyGroupsNotPropagate ($group['children']);
if (empty($children)) {
unset($group['children']);
// If a group is empty, do not add to new_groups.
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 8cdfa3a9e7..2184bd4a7a 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -4726,3 +4726,23 @@ a.up_arrow {
tr:last-child > td > a.down_arrow, tr:first-child > td > a.up_arrow {
visibility: hidden;
}
+
+.tooltip_counters h3{
+ font-size: 12pt;
+ padding-bottom: 10px !important;
+ text-align: center;
+}
+
+.tooltip_counters li{
+ font-size: 8pt;
+ margin: 2px;
+ margin-left: 5px;
+
+}
+.tooltip_counters li div{
+ width: 12px;
+ height: 12px;
+ border-radius: 3px;
+ float: left;
+ margin-right: 5px;
+}
\ No newline at end of file