wip event view

This commit is contained in:
fbsanchez 2019-06-17 18:33:39 +02:00
parent ab7d72a1c9
commit 457c1c9edf
6 changed files with 158 additions and 94 deletions

View File

@ -287,9 +287,8 @@ function show_filter() {
$("#load-filter-select").dialog({
resizable: true,
draggable: true,
modal: true,
closeOnEscape: true,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
modal: false,
closeOnEscape: true
});
}
@ -487,12 +486,29 @@ if ($save_filter_modal) {
?>
<script type="text/javascript">
function show_save_filter() {
$('#save_filter_row1').show();
$('#save_filter_row2').show();
$('#update_filter_row1').hide();
// Filter save mode selector
$("[name='filter_mode']").click(function() {
if ($(this).val() == 'new') {
$('#save_filter_row1').show();
$('#save_filter_row2').show();
$('#submit-save_filter').show();
$('#update_filter_row1').hide();
}
else {
$('#save_filter_row1').hide();
$('#save_filter_row2').hide();
$('#update_filter_row1').show();
$('#submit-save_filter').hide();
}
});
$("#save-filter-select").dialog({
resizable: true,
draggable: true,
modal: true,
closeOnEscape: true,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
modal: false,
closeOnEscape: true
});
}
@ -1110,7 +1126,7 @@ if ($get_extended_event) {
$childrens_ids
)))
) {
$responses = events_page_responses($event, $childrens_ids);
$responses = events_page_responses($event);
} else {
$responses = '';
}
@ -1147,7 +1163,7 @@ if ($get_extended_event) {
$general = events_page_general($event);
$comments = events_page_comments($event, $childrens_ids);
$comments = events_page_comments($event);
$notifications = '<div id="notification_comment_error" style="display:none">'.ui_print_error_message(__('Error adding comment'), '', true).'</div>';
$notifications .= '<div id="notification_comment_success" style="display:none">'.ui_print_success_message(__('Comment added successfully'), '', true).'</div>';

View File

@ -147,7 +147,7 @@ define('COL_UNKNOWN', '#B2B2B2');
define('COL_DOWNTIME', '#976DB1');
define('COL_IGNORED', '#DDD');
define('COL_ALERTFIRED', '#FFA631');
define('COL_MINOR', '#F099A2');
define('COL_MINOR', '#B2B2B2');
define('COL_MAJOR', '#C97A4A');
define('COL_INFORMATIONAL', '#E4E4E4');
define('COL_MAINTENANCE', '#4a83f3');

View File

@ -492,7 +492,7 @@ function events_get_all(
if (isset($filter['id_agent']) && $filter['id_agent'] > 0) {
$sql_filters[] = sprintf(
' AND id_agente = %d ',
' AND te.id_agente = %d ',
$filter['id_agent']
);
}
@ -4249,34 +4249,49 @@ function events_page_general($event)
/**
* Generate 'comments' page for event viewer.
*
* @param array $event Event.
* @param array $childrens_ids Children ids.
* @param array $event Event.
*
* @return string HTML.
*/
function events_page_comments($event, $childrens_ids=[])
function events_page_comments($event)
{
// Comments.
global $config;
$comments = '';
$comments = $event['user_comment'];
if (isset($event['comments'])) {
$comments = $event['comments'];
}
$table_comments = new stdClass;
$table_comments->width = '100%';
$table_comments->data = [];
$table_comments->head = [];
$table_comments->class = 'table_modal_alternate';
$event_comments = $event['user_comment'];
$event_comments = str_replace(["\n", '&#x0a;'], '<br>', $event_comments);
$comments = str_replace(["\n", '&#x0a;'], '<br>', $comments);
// If comments are not stored in json, the format is old.
$event_comments_array = json_decode($event_comments, true);
// Show the comments more recent first.
if (is_array($event_comments_array)) {
$event_comments_array = array_reverse($event_comments_array);
$comments_array = json_decode(io_safe_output($comments), true);
if (json_last_error() != JSON_ERROR_NONE) {
$comments_array = [
[
'comment' => 'Error retrieving comments',
'action' => 'Internal message',
'id_user' => 'SYSTEM',
'utimestamp' => time(),
],
];
}
if (empty($event_comments_array)) {
// Show the comments more recent first.
if (is_array($comments_array)) {
$comments_array = array_reverse($comments_array);
}
if (empty($comments_array)) {
$comments_format = 'old';
} else {
$comments_format = 'new';
@ -4284,7 +4299,7 @@ function events_page_comments($event, $childrens_ids=[])
switch ($comments_format) {
case 'new':
if (empty($event_comments_array)) {
if (empty($comments_array)) {
$table_comments->style[0] = 'text-align:center;';
$table_comments->colspan[0][0] = 2;
$data = [];
@ -4292,10 +4307,10 @@ function events_page_comments($event, $childrens_ids=[])
$table_comments->data[] = $data;
}
if (isset($event_comments_array) === true
&& is_array($event_comments_array) === true
if (isset($comments_array) === true
&& is_array($comments_array) === true
) {
foreach ($event_comments_array as $c) {
foreach ($comments_array as $c) {
$data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>';
$data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>';
$data[1] = $c['comment'];
@ -4305,7 +4320,7 @@ function events_page_comments($event, $childrens_ids=[])
break;
case 'old':
$comments_array = explode('<br>', $event_comments);
$comments_array = explode('<br>', $comments);
// Split comments and put in table.
$col = 0;

View File

@ -3167,8 +3167,21 @@ function ui_print_datatable(array $parameters)
type: "POST",
dataSrc: function (json) {
if (json.error) {
console.log(error);
alert(error);
console.log(json.error);
$("#error-'.$table_id.'").html(json.error);
$("#error-'.$table_id.'").dialog({
title: "Filter failed",
width: 630,
resizable: true,
draggable: true,
modal: false,
closeOnEscape: true,
buttons: {
"Ok" : function () {
$(this).dialog("close");
}
}
}).parent().addClass("ui-state-error");
} else {';
if (isset($parameters['ajax_postprocess'])) {
$js .= '

View File

@ -515,7 +515,7 @@ function event_change_owner() {
}
// Save a comment into an event
function event_comment() {
function event_comment(e) {
var event_id = $("#hidden-id_event").val();
var comment = $("#textarea_comment").val();
var meta = $("#hidden-meta").val();

View File

@ -115,76 +115,95 @@ if (is_ajax()) {
$length = get_parameter('length', $config['block_size']);
if ($get_events) {
$order = get_datatable_order(true);
try {
ob_start();
$order = get_datatable_order(true);
$events = events_get_all(
[
'te.id_evento',
'te.id_agente',
'te.id_usuario',
'te.id_grupo',
'te.estado',
'te.timestamp',
'te.evento',
'te.utimestamp',
'te.event_type',
'te.id_agentmodule',
'te.id_alert_am',
'te.criticity',
'te.user_comment',
'te.tags',
'te.source',
'te.id_extra',
'te.critical_instructions',
'te.warning_instructions',
'te.unknown_instructions',
'te.owner_user',
'te.ack_utimestamp',
'te.custom_data',
'te.data',
'te.module_status',
'ta.alias as agent_name',
'tg.nombre as group_name',
],
$filter,
// Offset.
$start,
// Limit.
$length,
// Order.
$order['direction'],
// Sort field.
$order['field']
);
$count = events_get_all(
'count',
$filter
);
$events = events_get_all(
[
'te.id_evento',
'te.id_agente',
'te.id_usuario',
'te.id_grupo',
'te.estado',
'te.timestamp',
'te.evento',
'te.utimestamp',
'te.event_type',
'te.id_agentmodule',
'te.id_alert_am',
'te.criticity',
'te.user_comment',
'te.tags',
'te.source',
'te.id_extra',
'te.critical_instructions',
'te.warning_instructions',
'te.unknown_instructions',
'te.owner_user',
'te.ack_utimestamp',
'te.custom_data',
'te.data',
'te.module_status',
'ta.alias as agent_name',
'tg.nombre as group_name',
],
$filter,
// Offset.
$start,
// Limit.
$length,
// Order.
$order['direction'],
// Sort field.
$order['field']
);
$count = events_get_all(
'count',
$filter
);
if ($count !== false) {
$count = $count['0']['nitems'];
}
if ($count !== false) {
$count = $count['0']['nitems'];
}
if ($events) {
$data = array_reduce(
$events,
function ($carry, $item) {
$tmp = (object) $item;
$tmp->evento = io_safe_output($tmp->evento);
$carry[] = $tmp;
return $carry;
}
if ($events) {
$data = array_reduce(
$events,
function ($carry, $item) {
$tmp = (object) $item;
$tmp->evento = io_safe_output($tmp->evento);
$carry[] = $tmp;
return $carry;
}
);
}
// RecordsTotal && recordsfiltered resultados totales.
echo json_encode(
[
'data' => $data,
'recordsTotal' => $count,
'recordsFiltered' => $count,
]
);
$response = ob_get_clean();
} catch (Exception $e) {
echo json_encode(
['error' => $e->getMessage()]
);
}
// RecordsTotal && recordsfiltered resultados totales.
echo json_encode(
[
'data' => $data,
'recordsTotal' => $count,
'recordsFiltered' => $count,
]
);
// If not valid it will throw an exception.
json_decode($response);
if (json_last_error() == JSON_ERROR_NONE) {
// If valid dump.
echo $response;
} else {
echo json_encode(
['error' => $response]
);
}
}
// AJAX section ends.
@ -1279,6 +1298,7 @@ html_print_input_hidden(
echo "<div id='event_details_window'></div>";
echo "<div id='event_response_window'></div>";
echo "<div id='event_response_command_window' title='".__('Parameters')."'></div>";
echo "<div id='error-".$table_id."'></div>";
// Load filter div for dialog.
echo '<div id="load-modal-filter" style="display: none"></div>';
@ -1422,7 +1442,7 @@ function process_datatables_item(item) {
evn += '<div><a href="javascript:" onclick="show_event_dialog(\'';
evn += btoa(JSON.stringify(item))+'\','+$("#group_rep").val()+');">';
// Grouped events.
if(item.event_rep) {
if(item.event_rep && item.event_rep > 1) {
evn += '('+item.event_rep+') ';
}
evn += item.evento+'</a></div>';