Event filters

This commit is contained in:
fbsanchez 2019-06-11 12:58:18 +02:00
parent ef3d299d58
commit 48e6fef0b7
9 changed files with 1194 additions and 742 deletions

View File

@ -26,6 +26,9 @@
* ============================================================================ * ============================================================================
*/ */
// Begin.
global $config;
require_once 'include/functions_events.php'; require_once 'include/functions_events.php';
require_once 'include/functions_agents.php'; require_once 'include/functions_agents.php';
require_once 'include/functions_ui.php'; require_once 'include/functions_ui.php';
@ -35,6 +38,21 @@ require_once 'include/functions.php';
enterprise_include_once('meta/include/functions_events_meta.php'); enterprise_include_once('meta/include/functions_events_meta.php');
enterprise_include_once('include/functions_metaconsole.php'); enterprise_include_once('include/functions_metaconsole.php');
// Check access.
check_login();
if (! check_acl($config['id_user'], 0, 'ER')
&& ! check_acl($config['id_user'], 0, 'EW')
&& ! check_acl($config['id_user'], 0, 'EM')
) {
db_pandora_audit(
'ACL Violation',
'Trying to access event viewer'
);
include 'general/noaccess.php';
return;
}
$get_events_details = (bool) get_parameter('get_events_details'); $get_events_details = (bool) get_parameter('get_events_details');
$get_list_events_agents = (bool) get_parameter('get_list_events_agents'); $get_list_events_agents = (bool) get_parameter('get_list_events_agents');
$get_extended_event = (bool) get_parameter('get_extended_event'); $get_extended_event = (bool) get_parameter('get_extended_event');
@ -55,6 +73,567 @@ $total_events = (bool) get_parameter('total_events');
$total_event_graph = (bool) get_parameter('total_event_graph'); $total_event_graph = (bool) get_parameter('total_event_graph');
$graphic_event_group = (bool) get_parameter('graphic_event_group'); $graphic_event_group = (bool) get_parameter('graphic_event_group');
$get_table_response_command = (bool) get_parameter('get_table_response_command'); $get_table_response_command = (bool) get_parameter('get_table_response_command');
$save_filter_modal = get_parameter('save_filter_modal', 0);
$load_filter_modal = get_parameter('load_filter_modal', 0);
$save_filter = get_parameter('save_filter', 0);
$get_filter_values = get_parameter('get_filter_values', 0);
$update_event_filter = get_parameter('update_event_filter', 0);
$save_event_filter = get_parameter('save_event_filter', 0);
// Saves an event filter.
if ($save_event_filter) {
$values = [];
$values['id_name'] = get_parameter('id_name');
$values['id_group'] = get_parameter('id_group');
$values['event_type'] = get_parameter('event_type');
$values['severity'] = get_parameter('severity');
$values['status'] = get_parameter('status');
$values['search'] = get_parameter('search');
$values['text_agent'] = get_parameter('text_agent');
$values['id_agent'] = get_parameter('id_agent');
$values['id_agent_module'] = get_parameter('id_agent_module');
$values['pagination'] = get_parameter('pagination');
$values['event_view_hr'] = get_parameter('event_view_hr');
$values['id_user_ack'] = get_parameter('id_user_ack');
$values['group_rep'] = get_parameter('group_rep');
$values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([]));
$values['tag_without'] = get_parameter(
'tag_without',
io_json_mb_encode([])
);
$values['filter_only_alert'] = get_parameter('filter_only_alert');
$values['id_group_filter'] = get_parameter('id_group_filter');
$values['date_from'] = get_parameter('date_from');
$values['date_to'] = get_parameter('date_to');
$values['source'] = get_parameter('source');
$values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment');
$exists = (bool) db_get_value_filter(
'id_filter',
'tevent_filter',
$values
);
if ($exists) {
echo 'duplicate';
} else {
$result = db_process_sql_insert('tevent_filter', $values);
if ($result === false) {
echo 'error';
} else {
echo $result;
}
}
}
if ($update_event_filter) {
$values = [];
$id = get_parameter('id');
$values['id_group'] = get_parameter('id_group');
$values['event_type'] = get_parameter('event_type');
$values['severity'] = get_parameter('severity');
$values['status'] = get_parameter('status');
$values['search'] = get_parameter('search');
$values['text_agent'] = get_parameter('text_agent');
$values['id_agent'] = get_parameter('id_agent');
$values['id_agent_module'] = get_parameter('id_agent_module');
$values['pagination'] = get_parameter('pagination');
$values['event_view_hr'] = get_parameter('event_view_hr');
$values['id_user_ack'] = get_parameter('id_user_ack');
$values['group_rep'] = get_parameter('group_rep');
$values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([]));
$values['tag_without'] = get_parameter(
'tag_without',
io_json_mb_encode([])
);
$values['filter_only_alert'] = get_parameter('filter_only_alert');
$values['id_group_filter'] = get_parameter('id_group_filter');
$values['date_from'] = get_parameter('date_from');
$values['date_to'] = get_parameter('date_to');
$values['source'] = get_parameter('source');
$values['id_extra'] = get_parameter('id_extra');
$values['user_comment'] = get_parameter('user_comment');
if (io_safe_output($values['tag_with']) == '["0"]') {
$values['tag_with'] = '[]';
}
if (io_safe_output($values['tag_without']) == '["0"]') {
$values['tag_without'] = '[]';
}
$result = db_process_sql_update(
'tevent_filter',
$values,
['id_filter' => $id]
);
if ($result === false) {
echo 'error';
} else {
echo 'ok';
}
}
// Get db values of a single filter.
if ($get_filter_values) {
$id_filter = get_parameter('id');
$event_filter = events_get_event_filter($id_filter);
$event_filter['search'] = io_safe_output($event_filter['search']);
$event_filter['id_name'] = io_safe_output($event_filter['id_name']);
$event_filter['tag_with'] = base64_encode(
io_safe_output($event_filter['tag_with'])
);
$event_filter['tag_without'] = base64_encode(
io_safe_output($event_filter['tag_without'])
);
echo io_json_mb_encode($event_filter);
}
if ($load_filter_modal) {
$current = get_parameter('current_filter', '');
$filters = events_get_event_filter_select();
$user_groups_array = users_get_groups_for_select(
$config['id_user'],
$access,
true,
true,
false
);
echo '<div id="load-filter-select" class="load-filter-modal">';
$table = new StdClass;
$table->id = 'load_filter_form';
$table->width = '100%';
$table->cellspacing = 4;
$table->cellpadding = 4;
$table->class = 'databox';
if (is_metaconsole()) {
$table->cellspacing = 0;
$table->cellpadding = 0;
$table->class = 'databox filters';
}
$table->styleTable = 'font-weight: bold; color: #555; text-align:left;';
if (!is_metaconsole()) {
$table->style[0] = 'width: 50%; width:50%;';
}
$data = [];
$table->rowid[3] = 'update_filter_row1';
$data[0] = __('Load filter').$jump;
$data[0] .= html_print_select(
$filters,
'filter_id',
$current,
'',
__('None'),
0,
true
);
$data[1] = html_print_submit_button(
__('Load filter'),
'load_filter',
false,
'class="sub upd" onclick="load_form_filter();"',
true
);
$table->data[] = $data;
$table->rowclass[] = '';
html_print_table($table);
echo '</div>';
?>
<script type="text/javascript">
function show_filter() {
$("#load-filter-select").dialog({
resizable: true,
draggable: true,
modal: true,
closeOnEscape: true,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
}
function load_form_filter() {
jQuery.post (
"<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
{
"page" : "include/ajax/events",
"get_filter_values" : 1,
"id" : $('#filter_id').val()
},
function (data) {
jQuery.each (data, function (i, val) {
if (i == 'id_name')
$("#hidden-id_name").val(val);
if (i == 'id_group')
$("#id_group").val(val);
if (i == 'event_type')
$("#event_type").val(val);
if (i == 'severity')
$("#severity").val(val);
if (i == 'status')
$("#status").val(val);
if (i == 'search')
$("#text-search").val(val);
if (i == 'text_agent')
$("#text_id_agent").val(val);
if (i == 'id_agent')
$('input:hidden[name=id_agent]').val(val);
if (i == 'id_agent_module')
$('input:hidden[name=module_search_hidden]').val(val);
if (i == 'pagination')
$("#pagination").val(val);
if (i == 'event_view_hr')
$("#text-event_view_hr").val(val);
if (i == 'id_user_ack')
$("#id_user_ack").val(val);
if (i == 'group_rep')
$("#group_rep").val(val);
if (i == 'tag_with')
$("#hidden-tag_with").val(val);
if (i == 'tag_without')
$("#hidden-tag_without").val(val);
if (i == 'filter_only_alert')
$("#filter_only_alert").val(val);
if (i == 'id_group_filter')
$("#id_group_filter").val(val);
if (i == 'source')
$("#text-source").val(val);
if (i == 'id_extra')
$("#text-id_extra").val(val);
if (i == 'user_comment')
$("#text-user_comment").val(val);
});
reorder_tags_inputs();
// Update the info with the loaded filter
$('#filterid').val($('#filter_id').val());
$('#filter_loaded_span').html($('#filter_loaded_text').html() + ': ' + $("#hidden-id_name").val());
},
"json"
);
// Close dialog.
$("#load-filter-select").dialog('close');
}
$(document).ready (function() {
show_filter();
})
</script>
<?php
return;
}
if ($save_filter_modal) {
echo '<div id="save-filter-select">';
if (check_acl($config['id_user'], 0, 'EW')
|| check_acl($config['id_user'], 0, 'EM')
) {
echo '<div id="#info_box"></div>';
$table = new StdClass;
$table->id = 'save_filter_form';
$table->width = '100%';
$table->cellspacing = 4;
$table->cellpadding = 4;
$table->class = 'databox';
if (is_metaconsole()) {
$table->class = 'databox filters';
$table->cellspacing = 0;
$table->cellpadding = 0;
}
$table->styleTable = 'font-weight: bold; text-align:left;';
if (!is_metaconsole()) {
$table->style[0] = 'width: 50%; width:50%;';
}
$data = [];
$table->rowid[0] = 'update_save_selector';
$data[0] = html_print_radio_button(
'filter_mode',
'new',
'',
true,
true
).__('New filter').'';
$data[1] = html_print_radio_button(
'filter_mode',
'update',
'',
false,
true
).__('Update filter').'';
$table->data[] = $data;
$table->rowclass[] = '';
$data = [];
$table->rowid[1] = 'save_filter_row1';
$data[0] = __('Filter name').$jump;
$data[0] .= html_print_input_text('id_name', '', '', 15, 255, true);
if (is_metaconsole()) {
$data[1] = __('Save in Group').$jump;
} else {
$data[1] = __('Filter group').$jump;
}
$data[1] .= html_print_select(
$user_groups_array,
'id_group_filter',
$id_group_filter,
'',
'',
0,
true,
false,
false,
'w130'
);
$table->data[] = $data;
$table->rowclass[] = '';
$data = [];
$table->rowid[2] = 'save_filter_row2';
$table->data[] = $data;
$table->rowclass[] = '';
$data = [];
$table->rowid[3] = 'update_filter_row1';
$data[0] = __('Overwrite filter').$jump;
// Fix : Only admin user can see filters of group ALL for update.
$_filters_update = events_get_event_filter_select(false);
$data[0] .= html_print_select(
$_filters_update,
'overwrite_filter',
'',
'',
'',
0,
true
);
$data[1] = html_print_submit_button(
__('Update filter'),
'update_filter',
false,
'class="sub upd" onclick="save_update_filter();"',
true
);
$table->data[] = $data;
$table->rowclass[] = '';
html_print_table($table);
echo '<div>';
echo html_print_submit_button(
__('Save filter'),
'save_filter',
false,
'class="sub upd" style="float:right;" onclick="save_new_filter();"',
true
);
echo '</div>';
} else {
include 'general/noaccess.php';
}
echo '</div>';
?>
<script type="text/javascript">
function show_save_filter() {
$("#save-filter-select").dialog({
resizable: true,
draggable: true,
modal: true,
closeOnEscape: true,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
}
function save_new_filter() {
// If the filter name is blank show error
if ($('#text-id_name').val() == '') {
$('#show_filter_error').html("<h3 class='error'><?php echo __('Filter name cannot be left blank'); ?></h3>");
// Close dialog
$('.ui-dialog-titlebar-close').trigger('click');
return false;
}
var id_filter_save;
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
{
"page" : "operation/events/events_list",
"save_event_filter" : 1,
"id_name" : $("#text-id_name").val(),
"id_group" : $("select#id_group").val(),
"event_type" : $("#event_type").val(),
"severity" : $("#severity").val(),
"status" : $("#status").val(),
"search" : $("#text-search").val(),
"text_agent" : $("#text_id_agent").val(),
"id_agent" : $('input:hidden[name=id_agent]').val(),
"id_agent_module" : $('input:hidden[name=module_search_hidden]').val(),
"pagination" : $("#pagination").val(),
"event_view_hr" : $("#text-event_view_hr").val(),
"id_user_ack" : $("#id_user_ack").val(),
"group_rep" : $("#group_rep").val(),
"tag_with": Base64.decode($("#hidden-tag_with").val()),
"tag_without": Base64.decode($("#hidden-tag_without").val()),
"filter_only_alert" : $("#filter_only_alert").val(),
"id_group_filter": $("#id_group_filter").val(),
"date_from": $("#text-date_from").val(),
"date_to": $("#text-date_to").val(),
"source": $("#text-source").val(),
"id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val()
},
function (data) {
$("#info_box").hide();
if (data == 'error') {
$("#info_box").filter(function(i, item) {
if ($(item).data('type_info_box') == "error_create_filter") {
return true;
}
else
return false;
}).show();
}
else if (data == 'duplicate') {
$("#info_box").filter(function(i, item) {
if ($(item).data('type_info_box') == "duplicate_create_filter") {
return true;
}
else
return false;
}).show();
}
else {
id_filter_save = data;
$("#info_box").filter(function(i, item) {
if ($(item).data('type_info_box') == "success_create_filter") {
return true;
}
else
return false;
}).show();
}
// Close dialog.
$("#save-filter-select").dialog('close');
}
);
}
// This updates an event filter
function save_update_filter() {
var id_filter_update = $("#overwrite_filter").val();
var name_filter_update = $("#overwrite_filter option[value='"+id_filter_update+"']").text();
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
{"page" : "operation/events/events_list",
"update_event_filter" : 1,
"id" : $("#overwrite_filter").val(),
"id_group" : $("select#id_group").val(),
"event_type" : $("#event_type").val(),
"severity" : $("#severity").val(),
"status" : $("#status").val(),
"search" : $("#text-search").val(),
"text_agent" : $("#text_id_agent").val(),
"id_agent" : $('input:hidden[name=id_agent]').val(),
"id_agent_module" : $('input:hidden[name=module_search_hidden]').val(),
"pagination" : $("#pagination").val(),
"event_view_hr" : $("#text-event_view_hr").val(),
"id_user_ack" : $("#id_user_ack").val(),
"group_rep" : $("#group_rep").val(),
"tag_with" : Base64.decode($("#hidden-tag_with").val()),
"tag_without" : Base64.decode($("#hidden-tag_without").val()),
"filter_only_alert" : $("#filter_only_alert").val(),
"id_group_filter": $("#id_group_filter").val(),
"date_from": $("#text-date_from").val(),
"date_to": $("#text-date_to").val(),
"source": $("#text-source").val(),
"id_extra": $("#text-id_extra").val(),
"user_comment": $("#text-user_comment").val()
},
function (data) {
$(".info_box").hide();
if (data == 'ok') {
$(".info_box").filter(function(i, item) {
if ($(item).data('type_info_box') == "success_update_filter") {
return true;
}
else
return false;
}).show();
}
else {
$(".info_box").filter(function(i, item) {
if ($(item).data('type_info_box') == "error_create_filter") {
return true;
}
else
return false;
}).show();
}
});
// First remove all options of filters select
$('#filter_id').find('option').remove().end();
// Add 'none' option the first
$('#filter_id').append ($('<option></option>').html ( <?php echo "'".__('none')."'"; ?> ).attr ("value", 0));
// Reload filters select
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
{"page" : "operation/events/events_list",
"get_event_filters" : 1
},
function (data) {
jQuery.each (data, function (i, val) {
s = js_html_entity_decode(val);
if (i == id_filter_update) {
$('#filter_id').append ($('<option selected="selected"></option>').html (s).attr ("value", i));
}
else {
$('#filter_id').append ($('<option></option>').html (s).attr ("value", i));
}
});
},
"json"
);
// Close dialog
$('.ui-dialog-titlebar-close').trigger('click');
// Update the info with the loaded filter
$("#hidden-id_name").val($('#text-id_name').val());
$('#filter_loaded_span').html($('#filter_loaded_text').html() + ': ' + name_filter_update);
return false;
}
$(document).ready(function (){
show_save_filter();
});
</script>
<?php
return;
}
if ($get_event_name) { if ($get_event_name) {
$event_id = get_parameter('event_id'); $event_id = get_parameter('event_id');
@ -418,7 +997,7 @@ if ($get_extended_event) {
} }
// Tabs. // Tabs.
$tabs = "<ul class='events_tabs'>"; $tabs = "<ul class=''>";
$tabs .= "<li><a href='#extended_event_general_page' id='link_general'>".html_print_image('images/lightning_go.png', true).'<span>'.__('General').'</span></a></li>'; $tabs .= "<li><a href='#extended_event_general_page' id='link_general'>".html_print_image('images/lightning_go.png', true).'<span>'.__('General').'</span></a></li>';
if (events_has_extended_info($event['id_evento']) === true) { if (events_has_extended_info($event['id_evento']) === true) {
$tabs .= "<li><a href='#extended_event_related_page' id='link_related'>".html_print_image('images/zoom.png', true).'<span>'.__('Related').'</span></a></li>'; $tabs .= "<li><a href='#extended_event_related_page' id='link_related'>".html_print_image('images/zoom.png', true).'<span>'.__('Related').'</span></a></li>';
@ -443,11 +1022,11 @@ if ($get_extended_event) {
$childrens_ids $childrens_ids
))) )))
) { ) {
$tabs .= "<li><a href='#extended_event_responses_page' id='link_responses'>".html_print_image('images/event_responses_col.png', true)."<span style='position:relative;top:-6px;left:3px;margin-right:10px;'>".__('Responses').'</span></a></li>'; $tabs .= "<li><a href='#extended_event_responses_page' id='link_responses'>".html_print_image('images/event_responses_col.png', true).'<span>'.__('Responses').'</span></a></li>';
} }
if ($event['custom_data'] != '') { if ($event['custom_data'] != '') {
$tabs .= "<li><a href='#extended_event_custom_data_page' id='link_custom_data'>".html_print_image('images/custom_field_col.png', true)."<span style='position:relative;top:-6px;left:3px;margin-right:10px;'>".__('Custom data').'</span></a></li>'; $tabs .= "<li><a href='#extended_event_custom_data_page' id='link_custom_data'>".html_print_image('images/custom_field_col.png', true).'<span>'.__('Custom data').'</span></a></li>';
} }
$tabs .= '</ul>'; $tabs .= '</ul>';

View File

@ -2847,7 +2847,7 @@ class NetworkMap
__('Node Details'), __('Node Details'),
'', '',
false, false,
false true
); );
$output .= '</div>'; $output .= '</div>';

View File

@ -393,6 +393,7 @@ function events_get_all(
} }
$tgrupo_join = 'LEFT'; $tgrupo_join = 'LEFT';
$tgrupo_join_filters = [];
if (isset($filter['id_group_filter']) && $filter['id_group_filter'] > 0) { if (isset($filter['id_group_filter']) && $filter['id_group_filter'] > 0) {
$tgrupo_join = 'INNER'; $tgrupo_join = 'INNER';
$tgrupo_join_filters[] = sprintf( $tgrupo_join_filters[] = sprintf(
@ -405,8 +406,21 @@ function events_get_all(
db_process_sql('SET group_concat_max_len = 9999999'); db_process_sql('SET group_concat_max_len = 9999999');
$event_lj = events_get_secondary_groups_left_join($table); $event_lj = events_get_secondary_groups_left_join($table);
$group_selects = '';
if ($group_by != '') {
if ($fields['0'] != 'count') {
$group_selects = ',GROUP_CONCAT(DISTINCT user_comment SEPARATOR "<br>") AS user_comment,
GROUP_CONCAT(DISTINCT id_evento SEPARATOR ",") AS similar_ids,
COUNT(id_evento) AS event_rep, MAX(utimestamp) AS timestamp_rep,
MIN(utimestamp) AS timestamp_rep_min';
unset($fields[array_search('te.user_comment', $fields)]);
}
}
$sql = sprintf( $sql = sprintf(
'SELECT %s 'SELECT %s
%s
FROM %s FROM %s
%s %s
%s JOIN tagente ta %s JOIN tagente ta
@ -422,6 +436,7 @@ function events_get_all(
%s %s
', ',
join(',', $fields), join(',', $fields),
$group_selects,
$tevento, $tevento,
$event_lj, $event_lj,
$tagente_join, $tagente_join,

View File

@ -2801,8 +2801,18 @@ function ui_progress(
* 'column2', * 'column2',
* ... * ...
* ], * ],
* 'no_sortable_columns' => [ indexes ] 1,2... -1 etc. Avoid sorting.
* 'form' => [ * 'form' => [
* 'html' => 'html code' a directly defined inputs in HTML. * 'html' => 'html code' a directly defined inputs in HTML.
* 'extra_buttons' => [
* [
* 'id' => button id,
* 'class' => button class,
* 'style' => button style,
* 'text' => button text,
* 'onclick' => button onclick,
* ]
* ],
* 'search_button_class' => search button class. * 'search_button_class' => search button class.
* 'class' => form class. * 'class' => form class.
* 'id' => form id. * 'id' => form id.
@ -2850,6 +2860,11 @@ function ui_print_datatable(array $parameters)
$parameters['default_pagination'] = $config['block_size']; $parameters['default_pagination'] = $config['block_size'];
} }
$no_sortable_columns = [];
if (isset($parameters['no_sortable_columns'])) {
$no_sortable_columns = json_encode($parameters['no_sortable_columns']);
}
if (!is_array($parameters['order'])) { if (!is_array($parameters['order'])) {
$order = '0, "asc"'; $order = '0, "asc"';
} else { } else {
@ -2877,7 +2892,7 @@ function ui_print_datatable(array $parameters)
$parameters['ajax_data'] = ''; $parameters['ajax_data'] = '';
} }
$search_button_class = 'sub search'; $search_button_class = 'sub filter';
if (isset($parameters['search_button_class'])) { if (isset($parameters['search_button_class'])) {
$search_button_class = $parameters['search_button_class']; $search_button_class = $parameters['search_button_class'];
} }
@ -2977,8 +2992,19 @@ function ui_print_datatable(array $parameters)
$filter .= '</li>'; $filter .= '</li>';
} }
// Search button.
$filter .= '<li>'; $filter .= '<li>';
if (is_array($parameters['form']['extra_buttons'])) {
foreach ($parameters['form']['extra_buttons'] as $button) {
$filter .= '<button id="'.$button['id'].'" ';
$filter .= ' class="'.$button['class'].'" ';
$filter .= ' style="'.$button['style'].'" ';
$filter .= ' onclick="'.$button['onclick'].'" >';
$filter .= $button['text'];
$filter .= '</button>';
}
}
// Search button.
$filter .= '<input type="submit" class="'.$search_button_class.'" '; $filter .= '<input type="submit" class="'.$search_button_class.'" ';
$filter .= ' id="'.$form_id.'_search_bt" value="'.__('Filter').'"/>'; $filter .= ' id="'.$form_id.'_search_bt" value="'.__('Filter').'"/>';
$filter .= '</li>'; $filter .= '</li>';
@ -3078,7 +3104,9 @@ function ui_print_datatable(array $parameters)
if (isset($parameters['ajax_postprocess'])) { if (isset($parameters['ajax_postprocess'])) {
$js .= ' $js .= '
if (json.data) { if (json.data) {
json.data.forEach('.$parameters['ajax_postprocess'].'); json.data.forEach(function(item) {
'.$parameters['ajax_postprocess'].'
});
} else { } else {
json.data = {}; json.data = {};
}'; }';
@ -3110,7 +3138,8 @@ function ui_print_datatable(array $parameters)
} }
}, },
"columnDefs": [ "columnDefs": [
{ className: "no-class", targets: "_all" } { className: "no-class", targets: "_all" },
{ bSortable: false, targets: '.$no_sortable_columns.' }
], ],
columns: ['; columns: [';

View File

@ -56,8 +56,8 @@ function show_event_dialog(event_id, group_rep, dialog_page, result) {
opacity: 0.5, opacity: 0.5,
background: "black" background: "black"
}, },
width: 725, width: 850,
height: 530 height: 750
}) })
.show(); .show();

View File

@ -12,7 +12,7 @@ div.criticity {
} }
div.mini-criticity { div.mini-criticity {
width: 5px; width: 10px;
height: 3em; height: 3em;
padding: 0; padding: 0;
margin: 0; margin: 0;
@ -184,3 +184,117 @@ fieldset {
border: none; border: none;
margin-top: -2em; margin-top: -2em;
} }
/* Image open dialog in group events by agents*/
#open_agent_groups {
cursor: pointer;
}
.table_modal_alternate {
border-spacing: 0px;
text-align: left;
}
/* Modal window - Show More */
table.table_modal_alternate tr:nth-child(odd) td {
background-color: #ffffff;
}
table.table_modal_alternate tr:nth-child(even) td {
background-color: #f9f9f9;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
}
table.table_modal_alternate tr td {
height: 33px;
max-height: 33px;
min-height: 33px;
}
table.table_modal_alternate tr td:first-child {
width: 35%;
font-weight: bold;
padding-left: 20px;
}
ul.events_tabs {
background: #ffffff;
border: 0px;
display: flex;
justify-content: space-between;
padding: 0px;
}
ul.events_tabs:before,
ul.events_tabs:after {
content: none;
}
ul.events_tabs > li {
margin: 0;
width: 100%;
text-align: center;
float: none;
outline-width: 0;
}
ul.events_tabs > li.ui-state-default {
background: #fff;
border: none;
border-bottom: 2px solid #cacaca;
}
ul.events_tabs > li a {
text-align: center;
float: none;
padding: 8px;
display: block;
}
ul.events_tabs > li span {
position: relative;
top: -6px;
left: 5px;
margin-right: 10px;
}
ul.events_tabs > li.ui-tabs-active {
border: none;
}
ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header {
background: none;
margin: 0;
margin-bottom: -1px;
border: none;
}
ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header
li {
padding: 0.5em;
}
ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header
li
> a {
display: flex;
align-items: center;
flex-direction: row;
}
ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header
li
> a
> img {
margin-right: 0.3em;
}
li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab {
border-bottom: 1px solid #ccc;
}
li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab.ui-tabs-active.ui-state-active {
border-bottom: 1px solid #fff;
}
div.extended_event_pages.ui-tabs-panel.ui-corner-bottom.ui-widget-content {
border-top: 1px solid #a9a9a9;
}

View File

@ -88,8 +88,7 @@
background-image: url(../images/ui-icons_444444_256x240.png); background-image: url(../images/ui-icons_444444_256x240.png);
} }
.ui-widget-content { .ui-widget-content {
background: #ffffff url(../images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% background: #fff;
repeat-x;
} }
.ui-state-default, .ui-state-default,
.ui-widget-content .ui-state-default, .ui-widget-content .ui-state-default,
@ -97,8 +96,7 @@
margin-top: 3px; margin-top: 3px;
border: 1px solid #d3d3d3; border: 1px solid #d3d3d3;
border-bottom: 0; border-bottom: 0;
background: #e6e6e6 url(../images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% background: #e6e6e6;
repeat-x;
font-weight: normal; font-weight: normal;
color: #555555; color: #555555;
} }
@ -139,7 +137,7 @@
} }
.ui-dialog .ui-widget-header { .ui-dialog .ui-widget-header {
background-color: #82b92e; background-color: #82b92e;
margin: -1px; margin: -1px -1px 0px -1px;
} }
.ui_tpicker_hour, .ui_tpicker_hour,
.ui_tpicker_minute, .ui_tpicker_minute,
@ -213,8 +211,7 @@ a.ui-button:active,
.ui-widget-header .ui-state-hover { .ui-widget-header .ui-state-hover {
border: 1px solid #999999; border: 1px solid #999999;
border-bottom: 0; border-bottom: 0;
background: #dadada url(../images/ui-bg_glass_75_dadada_1x400.png) 50% 50% background: #dadada;
repeat-x;
} }
.ui-state-active, .ui-state-active,
@ -222,8 +219,7 @@ a.ui-button:active,
.ui-widget-header .ui-state-active { .ui-widget-header .ui-state-active {
border: 1px solid #aaaaaa; border: 1px solid #aaaaaa;
border-bottom: 0; border-bottom: 0;
background: #ffffff url(../images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% background: #ffffff;
repeat-x;
font-weight: normal; font-weight: normal;
color: #212121; color: #212121;
} }

View File

@ -517,6 +517,9 @@ select:-internal-list-box {
.padding-6 { .padding-6 {
padding: 6em; padding: 6em;
} }
.margin-right-2 {
margin-right: 2em;
}
.no-border { .no-border {
border: none; border: none;
} }
@ -544,6 +547,12 @@ select:-internal-list-box {
.td-bg-white td { .td-bg-white td {
background: #fff; background: #fff;
} }
.float-left {
float: left;
}
.float-right {
float: right;
}
div#page { div#page {
background: #fbfbfb; background: #fbfbfb;
@ -632,6 +641,7 @@ p.center {
} }
/* --- Botones --- */ /* --- Botones --- */
button.sub,
input.sub { input.sub {
font-weight: normal; font-weight: normal;
-moz-border-radius: 2px; -moz-border-radius: 2px;
@ -645,10 +655,24 @@ input.sub {
padding-bottom: 10px; padding-bottom: 10px;
padding-top: 10px; padding-top: 10px;
padding-left: 15px; padding-left: 15px;
border-color: #888; border: 1px solid #888;
font-family: "lato", "Open Sans", sans-serif; font-family: "lato", "Open Sans", sans-serif;
cursor: pointer;
} }
button.sub:hover,
input.sub:hover {
border: 1px solid #333;
}
button.sub:active,
input.sub:active {
border: 1px solid #000;
color: #333;
background-color: #e1e1e1;
}
button.sub[disabled],
input.sub[disabled] { input.sub[disabled] {
color: #b4b4b4; color: #b4b4b4;
background-color: #f3f3f3; background-color: #f3f3f3;
@ -1519,6 +1543,24 @@ div#logo_text3 {
text-align: right; text-align: right;
} }
button.next,
button.upd,
button.ok,
button.wand,
button.delete,
button.cog,
button.target,
button.search,
button.copy,
button.add,
button.graph,
button.percentile,
button.binary,
button.camera,
button.config,
button.filter,
button.cancel,
button.default,
input.next, input.next,
input.upd, input.upd,
input.ok, input.ok,
@ -1534,6 +1576,7 @@ input.percentile,
input.binary, input.binary,
input.camera, input.camera,
input.config, input.config,
input.filter,
input.cancel, input.cancel,
input.default, input.default,
input.filter, input.filter,
@ -1542,75 +1585,99 @@ input.spinn {
padding-right: 30px; padding-right: 30px;
} }
button.next,
input.next { input.next {
background-image: url(../../images/input_go.png); background-image: url(../../images/input_go.png);
} }
button.upd,
input.upd { input.upd {
background-image: url(../../images/input_update.png); background-image: url(../../images/input_update.png);
} }
button.wand,
input.wand { input.wand {
background-image: url(../../images/input_wand.png); background-image: url(../../images/input_wand.png);
} }
button.wand:disabled,
input.wand:disabled { input.wand:disabled {
background-image: url(../../images/input_wand.disabled.png); background-image: url(../../images/input_wand.disabled.png);
} }
button.search,
input.search { input.search {
background-image: url(../../images/input_zoom.png); background-image: url(../../images/input_zoom.png);
} }
button.search:disabled,
input.search:disabled { input.search:disabled {
background-image: url(../../images/input_zoom.disabled.png); background-image: url(../../images/input_zoom.disabled.png);
} }
button.ok,
input.ok { input.ok {
background-image: url(../../images/input_tick.png); background-image: url(../../images/input_tick.png);
} }
button.ok:disabled,
input.ok:disabled { input.ok:disabled {
background-image: url(../../images/input_tick.disabled.png); background-image: url(../../images/input_tick.disabled.png);
} }
button.add,
input.add { input.add {
background-image: url(../../images/input_add.png); background-image: url(../../images/input_add.png);
} }
button.add:disabled,
input.add:disabled { input.add:disabled {
background-image: url(../../images/input_add.disabled.png); background-image: url(../../images/input_add.disabled.png);
} }
button.cancel,
input.cancel { input.cancel {
background-image: url(../../images/input_cross.png); background-image: url(../../images/input_cross.png);
} }
button.cancel:disabled,
input.cancel:disabled { input.cancel:disabled {
background-image: url(../../images/input_cross.disabled.png); background-image: url(../../images/input_cross.disabled.png);
} }
button.delete,
input.delete { input.delete {
background-image: url(../../images/input_delete.png); background-image: url(../../images/input_delete.png);
} }
button.delete:disabled,
input.delete:disabled { input.delete:disabled {
background-image: url(../../images/input_delete.disabled.png); background-image: url(../../images/input_delete.disabled.png);
} }
button.cog,
input.cog { input.cog {
background-image: url(../../images/input_cog.png); background-image: url(../../images/input_cog.png);
} }
button.cog:disabled,
input.cog:disabled { input.cog:disabled {
background-image: url(../../images/input_cog.disabled.png); background-image: url(../../images/input_cog.disabled.png);
} }
button.config,
input.config { input.config {
background-image: url(../../images/input_config.png); background-image: url(../../images/input_config.png);
} }
button.config:disabled,
input.config:disabled { input.config:disabled {
background-image: url(../../images/input_config.disabled.png); background-image: url(../../images/input_config.disabled.png);
} }
button.filter,
input.filter { input.filter {
background-image: url(../../images/input_filter.png); background-image: url(../../images/input_filter.png);
} }
button.filter:disabled,
input.filter:disabled { input.filter:disabled {
background-image: url(../../images/input_filter.disabled.png); background-image: url(../../images/input_filter.disabled.png);
} }
button.pdf,
input.pdf { input.pdf {
background-image: url(../../images/input_pdf.png); background-image: url(../../images/input_pdf.png);
} }
button.pdf:disabled,
input.pdf:disabled { input.pdf:disabled {
background-image: url(../../images/input_pdf.disabled.png); background-image: url(../../images/input_pdf.disabled.png);
} }
button.camera,
input.camera { input.camera {
background-image: url(../../images/input_camera.png); background-image: url(../../images/input_camera.png);
} }
button.spinn,
input.spinn { input.spinn {
background-image: url(../../images/spinner_green.gif); background-image: url(../../images/spinner_green.gif);
} }
@ -3491,90 +3558,6 @@ div.simple_value > a > span.text p {
white-space: pre; white-space: pre;
} }
/*
* ---------------------------------------------------------------------
* - EVENTS -
* ---------------------------------------------------------------------
*/
/* Image open dialog in group events by agents*/
#open_agent_groups {
cursor: pointer;
}
.table_modal_alternate {
border-spacing: 0px;
text-align: left;
}
/* Modal window - Show More */
table.table_modal_alternate tr:nth-child(odd) td {
background-color: #ffffff;
}
table.table_modal_alternate tr:nth-child(even) td {
background-color: #f9f9f9;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
}
table.table_modal_alternate tr td {
height: 33px;
max-height: 33px;
min-height: 33px;
}
table.table_modal_alternate tr td:first-child {
width: 35%;
font-weight: bold;
padding-left: 20px;
}
ul.events_tabs {
background: #ffffff;
border: 0px;
display: flex;
justify-content: space-between;
padding: 0px;
}
ul.events_tabs:before,
ul.events_tabs:after {
content: none;
}
ul.events_tabs > li {
margin: 0;
width: 100%;
text-align: center;
float: none;
outline-width: 0;
}
ul.events_tabs > li.ui-state-default {
background: #fff;
border: none;
border-bottom: 2px solid #cacaca;
}
ul.events_tabs > li a {
text-align: center;
float: none;
padding: 8px;
display: block;
}
ul.events_tabs > li span {
position: relative;
top: -6px;
left: 5px;
margin-right: 10px;
}
ul.events_tabs > li.ui-tabs-active {
border-bottom: 2px solid #82b92e;
border-top: 2px solid #82b92e;
}
/* /*
* --------------------------------------------------------------------- * ---------------------------------------------------------------------
* - modal window and edit user - * - modal window and edit user -

File diff suppressed because it is too large Load Diff