Feature: Add new filter in aget/group events report. Ticket: #4243

This commit is contained in:
m-lopez-f 2016-12-01 16:18:37 +01:00
parent 8593fb1bb5
commit 0976a42098
4 changed files with 94 additions and 20 deletions

View File

@ -100,6 +100,8 @@ $filter_event_no_validated = false;
$filter_event_critical = false;
$filter_event_warning = false;
$filter_event_type = false;
$event_graph_by_agent = false;
$event_graph_by_user_validator = false;
$event_graph_by_criticity = false;
@ -414,6 +416,7 @@ switch ($action) {
$filter_event_validated = $style['filter_event_validated'];
$filter_event_critical = $style['filter_event_critical'];
$filter_event_warning = $style['filter_event_warning'];
$filter_event_type = json_decode($style['filter_event_type'], true);
$event_graph_by_agent = $style['event_graph_by_agent'];
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
@ -430,6 +433,7 @@ switch ($action) {
$filter_event_validated = $style['filter_event_validated'];
$filter_event_critical = $style['filter_event_critical'];
$filter_event_warning = $style['filter_event_warning'];
$filter_event_type = json_decode($style['filter_event_type'], true);
$event_graph_by_agent = $style['event_graph_by_agent'];
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
@ -1303,6 +1307,20 @@ You can of course remove the warnings, that's why we include the source and do n
</td>
</tr>
<tr id="row_event_type" style="" class="datos">
<td style="font-weight:bold;"><?php echo __('Event type'); ?></td>
<td>
<?php
$event_types_select = get_event_types();
html_debug($filter_event_type);
html_print_select ($event_types_select, 'filter_event_type[]',
$filter_event_type, '', __('All'), 'all', false, true,
false, '', false, false, false, false, false, '');
?>
</td>
</tr>
<tr id="row_event_graphs" style="" class="datos">
<td style="font-weight:bold;"><?php echo __('Event graphs'); ?></td>
<td>
@ -1817,7 +1835,6 @@ $(document).ready (function () {
async: false,
timeout: 10000,
success: function (data) {
console.log(data);
switch (data) {
case 'boolean':
case 'sparse':
@ -2328,6 +2345,7 @@ function chooseType() {
$("#row_last_value").hide();
$("#row_filter_search").hide();
$("#row_percentil").hide();
$("#row_event_type").hide();
// SLA list default state
$("#sla_list").hide();
@ -2356,6 +2374,7 @@ function chooseType() {
$("#row_event_graph_by_user").show();
$("#row_event_graph_by_criticity").show();
$("#row_event_graph_by_validated").show();
$("#row_event_type").show();
$("#row_filter_search").show();
break;
@ -2618,6 +2637,7 @@ function chooseType() {
$("#row_event_graph_by_user").show();
$("#row_event_graph_by_criticity").show();
$("#row_event_graph_by_validated").show();
$("#row_event_type").show();
$('#agent_autocomplete').hide();
$('#agent_autocomplete_events').show();

View File

@ -1056,6 +1056,7 @@ switch ($action) {
$filter_event_no_validated = get_parameter('filter_event_no_validated', 0);
$filter_event_critical = get_parameter('filter_event_critical', 0);
$filter_event_warning = get_parameter('filter_event_warning', 0);
$filter_event_type = get_parameter('filter_event_type', '');
$event_graph_by_agent = get_parameter('event_graph_by_agent', 0);
$event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0);
@ -1126,7 +1127,7 @@ switch ($action) {
$style['filter_event_validated'] = $filter_event_validated;
$style['filter_event_critical'] = $filter_event_critical;
$style['filter_event_warning'] = $filter_event_warning;
$style['filter_event_type'] = json_encode($filter_event_type);
$style['event_graph_by_agent'] = $event_graph_by_agent;
$style['event_graph_by_user_validator'] = $event_graph_by_user_validator;
$style['event_graph_by_criticity'] = $event_graph_by_criticity;
@ -1435,6 +1436,7 @@ switch ($action) {
$event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0);
$event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0);
$event_graph_validated_vs_unvalidated = get_parameter('event_graph_validated_vs_unvalidated', 0);
$filter_event_type = get_parameter('filter_event_type', '');
$event_filter_search = get_parameter('filter_search', '');
@ -1443,6 +1445,7 @@ switch ($action) {
$style['filter_event_validated'] = $filter_event_validated;
$style['filter_event_critical'] = $filter_event_critical;
$style['filter_event_warning'] = $filter_event_warning;
$style['filter_event_type'] = json_encode($filter_event_type);
$style['event_graph_by_agent'] = $event_graph_by_agent;
$style['event_graph_by_user_validator'] = $event_graph_by_user_validator;

View File

@ -1187,7 +1187,8 @@ function events_print_type_description ($type, $return = false) {
function events_get_group_events ($id_group, $period, $date,
$filter_event_validated = false, $filter_event_critical = false,
$filter_event_warning = false, $filter_event_no_validated = false,
$filter_event_search = false, $meta = false, $history = false) {
$filter_event_search = false, $meta = false, $history = false,
$filter_event_type = false) {
global $config;
@ -1223,6 +1224,28 @@ function events_get_group_events ($id_group, $period, $date,
' OR id_evento LIKE "%' . io_safe_input($filter_event_search) . '%")';
}
if (!empty($filter_event_type)) {
$sql_where .= ' AND (';
$type = array();
foreach ($filter_event_type as $event_type) {
if ($event_type != "") {
// If normal, warning, could be several (going_up_warning, going_down_warning... too complex
// for the user so for him is presented only "warning, critical and normal"
if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") {
$type[] = " event_type LIKE '%$event_type%' ";
}
else if ($event_type == "not_normal") {
$type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') ";
}
else if ($event_type != "all") {
$type[] = " event_type = '" . $event_type."'";
}
}
}
$sql_where .= implode(' OR ', $type) . ')';
}
$sql_where .= sprintf('
AND id_grupo IN (%s)
AND utimestamp > %d
@ -1308,7 +1331,7 @@ function events_get_group_events_steps ($begin, &$result, $id_group, $period, $d
function events_get_agent ($id_agent, $period, $date = 0,
$filter_event_validated = false, $filter_event_critical = false,
$filter_event_warning = false, $filter_event_no_validated = false,
$history = false) {
$history = false, $filter_event_type = false) {
if (!is_numeric ($date)) {
$date = strtotime ($date);
@ -1345,6 +1368,28 @@ function events_get_agent ($id_agent, $period, $date = 0,
}
}
if (!empty($filter_event_type)) {
$sql_where .= ' AND (';
$type = array();
foreach ($filter_event_type as $event_type) {
if ($event_type != "") {
// If normal, warning, could be several (going_up_warning, going_down_warning... too complex
// for the user so for him is presented only "warning, critical and normal"
if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") {
$type[] = " event_type LIKE '%$event_type%' ";
}
else if ($event_type == "not_normal") {
$type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') ";
}
else if ($event_type != "all") {
$type[] = " event_type = '" . $event_type."'";
}
}
}
$sql_where .= implode(' OR ', $type) . ')';
}
$sql_where .= sprintf(' AND id_agente = %d AND utimestamp > %d
AND utimestamp <= %d ', $id_agent, $datelimit, $date);

View File

@ -1239,24 +1239,26 @@ function reporting_event_report_group($report, $content,
$return["description"] = $content["description"];
$return["date"] = reporting_get_date_text($report, $content);
$event_filter = $content['style'];
$filter_event_no_validated = $content['style']['filter_event_no_validated'];
$filter_event_validated = $content['style']['filter_event_validated'];
$filter_event_critical = $content['style']['filter_event_critical'];
$filter_event_warning = $content['style']['filter_event_warning'];
$filter_event_filter_search = $content['style']['event_filter_search'];
$filter_event_no_validated = $event_filter['filter_event_no_validated'];
$filter_event_validated = $event_filter['filter_event_validated'];
$filter_event_critical = $event_filter['filter_event_critical'];
$filter_event_warning = $event_filter['filter_event_warning'];
$filter_event_filter_search = $event_filter['event_filter_search'];
$filter_event_type = json_decode($event_filter['filter_event_type'],true);
$event_graph_by_agent = $content['style']['event_graph_by_agent'];
$event_graph_by_user_validator = $content['style']['event_graph_by_user_validator'];
$event_graph_by_criticity = $content['style']['event_graph_by_criticity'];
$event_graph_validated_vs_unvalidated = $content['style']['event_graph_validated_vs_unvalidated'];
$event_graph_by_agent = $event_filter['event_graph_by_agent'];
$event_graph_by_user_validator = $event_filter['event_graph_by_user_validator'];
$event_graph_by_criticity = $event_filter['event_graph_by_criticity'];
$event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated'];
$data = reporting_get_group_detailed_event(
$content['id_group'], $content['period'], $report["datetime"],
true, true, $filter_event_validated, $filter_event_critical,
$filter_event_warning, $filter_event_no_validated,
$filter_event_filter_search, 'hash', $history);
$filter_event_filter_search, 'hash', $history, $filter_event_type);
if (empty($data)) {
$return['failed'] = __('No events');
@ -2162,6 +2164,7 @@ function reporting_event_report_agent($report, $content,
$filter_event_validated = $style['filter_event_validated'];
$filter_event_critical = $style['filter_event_critical'];
$filter_event_warning = $style['filter_event_warning'];
$filter_event_type = json_decode($style['filter_event_type'], true);
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
$event_graph_by_criticity = $style['event_graph_by_criticity'];
@ -2177,7 +2180,8 @@ function reporting_event_report_agent($report, $content,
$filter_event_warning,
$filter_event_no_validated,
true,
$history);
$history,
$filter_event_type);
@ -5619,7 +5623,8 @@ function reporting_get_group_detailed_event ($id_group, $period = 0,
$date = 0, $return = false, $html = true,
$filter_event_validated = false, $filter_event_critical = false,
$filter_event_warning = false, $filter_event_no_validated = false,
$filter_event_filter_search = null, $return_type = false, $history = false) {
$filter_event_filter_search = null, $return_type = false,
$history = false, $filter_event_type = false) {
global $config;
@ -5651,7 +5656,7 @@ function reporting_get_group_detailed_event ($id_group, $period = 0,
$events = events_get_group_events($id_group, $period, $date,
$filter_event_validated, $filter_event_critical,
$filter_event_warning, $filter_event_no_validated,
$filter_event_filter_search, false, $history);
$filter_event_filter_search, false, $history, $filter_event_type);
if ($return_type === 'hash') {
return $events;
@ -5847,7 +5852,8 @@ function reporting_get_module_detailed_event ($id_modules, $period = 0,
function reporting_get_agents_detailed_event ($id_agents, $period = 0,
$date = 0, $return = false, $filter_event_validated = false,
$filter_event_critical = false, $filter_event_warning = false,
$filter_event_no_validated = false, $only_data = false, $history = false) {
$filter_event_no_validated = false, $only_data = false,
$history = false, $filter_event_type = false) {
global $config;
@ -5873,8 +5879,8 @@ function reporting_get_agents_detailed_event ($id_agents, $period = 0,
(int)$period,
(int)$date,
$filter_event_validated, $filter_event_critical,
$filter_event_warning, $filter_event_no_validated,
$history);
$filter_event_warning, $filter_event_no_validated,
$history, $filter_event_type);
if (empty($event)) {
$event = array();