Merge branch 'ent-9162-10821-modificar-columnas-widget-eventos' into 'develop'

Ent 9162 10821 modificar columnas widget eventos

See merge request artica/pandorafms!5843
This commit is contained in:
Matias Didier 2023-07-06 08:35:35 +00:00
commit add65eca5d
5 changed files with 307 additions and 5 deletions

View File

@ -1833,7 +1833,6 @@ if (is_metaconsole() === false) {
});
$("#button-uptbutton").click (function () {
console.log('aaaaaaaaaaaaa');
if($("#autorefresh_list option").length > 0) {
$('#autorefresh_list option').prop('selected', true);
}

View File

@ -768,7 +768,8 @@ function html_print_select(
$select2_enable=true,
$select2_multiple_enable=false,
$select2_multiple_enable_all=false,
$form=''
$form='',
$order=false,
) {
$output = "\n";
@ -805,6 +806,10 @@ function html_print_select(
}
}
if ($multiple === true && $order === true) {
$class .= ' order-arrows';
}
if (!empty($class)) {
$attributes .= ' class="'.$class.'"';
}
@ -1129,6 +1134,49 @@ function html_print_select(
$output .= '</script>';
}
if ($multiple === true && $order === true) {
$output .= '<script>';
$output .= '
if(typeof draggingOption === "undefined") {
let draggingOption = null;
} else {
draggingOption = null;
}
document.getElementById("'.$id.'").addEventListener("mousedown", e => {
if (e.target.tagName === "OPTION") {
draggingOption = e.target;
document.getElementById("'.$id.'").classList.add("dragging");
}
});
document.getElementById("'.$id.'").addEventListener("mousemove", e => {
if (typeof draggingOption !== "undefined") {
if(draggingOption) {
e.preventDefault();
const targetOption = document.elementFromPoint(e.clientX, e.clientY);
if (targetOption && targetOption.tagName === "OPTION") {
const boundingRect = targetOption.getBoundingClientRect();
if (e.clientY < boundingRect.top + boundingRect.height / 2) {
document.getElementById("'.$id.'").insertBefore(draggingOption, targetOption);
} else {
document.getElementById("'.$id.'").insertBefore(draggingOption, targetOption.nextSibling);
}
}
}
}
});
document.getElementById("'.$id.'").addEventListener("mouseup", e => {
if (typeof draggingOption !== "undefined") {
if(draggingOption) {
document.getElementById("'.$id.'").classList.remove("dragging");
draggingOption = null;
}
}
});';
$output .= '</script>';
}
if ($return) {
return $output;
}
@ -5528,7 +5576,9 @@ function html_print_input($data, $wrapper='div', $input_only=false)
((isset($data['truncate_size']) === true) ? $data['truncate_size'] : false),
((isset($data['select2_enable']) === true) ? $data['select2_enable'] : true),
((isset($data['select2_multiple_enable']) === true) ? $data['select2_multiple_enable'] : false),
((isset($data['select2_multiple_enable_all']) === true) ? $data['select2_multiple_enable_all'] : false)
((isset($data['select2_multiple_enable_all']) === true) ? $data['select2_multiple_enable_all'] : false),
((isset($data['form']) === true) ? $data['form'] : ''),
((isset($data['order']) === true) ? $data['order'] : false)
);
break;
@ -6042,6 +6092,94 @@ function html_print_input($data, $wrapper='div', $input_only=false)
// );
break;
case 'select_add_elements':
if (empty($data['selected']) === false) {
foreach ($data['selected'] as $key => $value) {
unset($data['fields'][$key]);
}
}
$output .= '<div>';
$output .= html_print_select(
((isset($data['selected']) === true) ? $data['selected'] : ''),
$data['name'],
'',
((isset($data['script']) === true) ? $data['script'] : ''),
((isset($data['nothing']) === true) ? $data['nothing'] : ''),
((isset($data['nothing_value']) === true) ? $data['nothing_value'] : 0),
((isset($data['return']) === true) ? $data['return'] : false),
((isset($data['multiple']) === true) ? $data['multiple'] : false),
((isset($data['sort']) === true) ? $data['sort'] : true),
((isset($data['class']) === true) ? $data['class'] : ''),
((isset($data['disabled']) === true) ? $data['disabled'] : false),
((isset($data['style']) === true) ? $data['style'] : false),
((isset($data['option_style']) === true) ? $data['option_style'] : false),
((isset($data['size']) === true) ? $data['size'] : false),
((isset($data['modal']) === true) ? $data['modal'] : false),
((isset($data['message']) === true) ? $data['message'] : ''),
((isset($data['select_all']) === true) ? $data['select_all'] : false),
((isset($data['simple_multiple_options']) === true) ? $data['simple_multiple_options'] : false),
((isset($data['required']) === true) ? $data['required'] : false),
((isset($data['truncate_size']) === true) ? $data['truncate_size'] : false),
((isset($data['select2_enable']) === true) ? $data['select2_enable'] : true),
((isset($data['select2_multiple_enable']) === true) ? $data['select2_multiple_enable'] : false),
((isset($data['select2_multiple_enable_all']) === true) ? $data['select2_multiple_enable_all'] : false),
((isset($data['form']) === true) ? $data['form'] : ''),
((isset($data['order']) === true) ? $data['order'] : false)
);
$output .= '<div class="flex justify-content-between mrgn_top_5px">';
$output .= html_print_button(
__('Add'),
'add_column',
false,
'addElement("'.$data['name'].'", "modal_'.$data['name'].'")',
[
'style' => 'max-width: fit-content; min-width: auto; height: 30px; border: 0px;',
'class' => 'sub',
'icon' => 'plus',
],
true,
false,
false,
''
);
$output .= html_print_button(
__('Remove'),
'remove_column',
false,
'removeElement("'.$data['name'].'", "modal_'.$data['name'].'")',
[
'style' => 'max-width: fit-content; min-width: auto; height: 30px; border: 0px;',
'class' => 'sub',
'icon' => 'delete',
],
true,
false,
false,
''
);
$output .= '<div id="modal_'.$data['name'].'" class="modal-select-add-elements" style="display: none;">';
$output .= html_print_select(
$data['fields'],
$data['name'].'_select_modal',
'',
'',
'',
0,
true,
true,
true,
'',
false,
'width: 80%'
);
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
?>
<?php
break;
default:
// Ignore.
break;

View File

@ -1180,3 +1180,52 @@ function getUrlAjax() {
return $("#hidden-ajax_file_sound_console").val();
}
}
function addElement(name_select, id_modal) {
var modal = document.getElementById(id_modal);
var parent = $(modal).parent();
$(modal).dialog({
title: "Choose columns",
width: 330,
buttons: [
{
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-next",
text: "Confirm",
click: function() {
$(modal)
.find("select option:selected")
.each(function(key, option) {
$("select[name='" + name_select + "']").append(option);
});
var clone = $(modal).clone();
$(modal)
.dialog("destroy")
.remove();
$(clone).hide();
$(parent).append(clone);
}
}
],
close: function() {
var clone = $(modal).clone();
$(modal)
.dialog("destroy")
.remove();
$(clone).hide();
$(parent).append(clone);
}
});
}
function removeElement(name_select, id_modal) {
var modal = document.getElementById(id_modal);
$("select[name='" + name_select + "'] option:selected").each(function(
key,
option
) {
$(modal)
.find("select")
.append(option);
});
}

View File

@ -258,6 +258,10 @@ class EventsListWidget extends Widget
$values['tagsId'] = $decoder['tagsId'];
}
if (isset($decoder['columns_events_widget']) === true) {
$values['columns_events_widget'] = $decoder['columns_events_widget'];
}
return $values;
}
@ -269,7 +273,14 @@ class EventsListWidget extends Widget
*/
public function getFormJS(): string
{
return '$( document ).ready(function() {event_widget_options();});';
return '$( document ).ready(function() {
event_widget_options();
$(document).on("mousedown", ".ui-dialog-buttonset button", function(){
if($("#columns_events_widget").length > 0){
$("#columns_events_widget option").prop("selected", true);
}
})
});';
}
@ -471,6 +482,35 @@ class EventsListWidget extends Widget
'nothing_value' => 0,
],
];
if (empty($values['columns_events_widget'][0]) === true) {
$columns_array = explode(',', $config['event_fields']);
} else {
$columns_array = explode(',', $values['columns_events_widget'][0]);
}
$selected = [];
foreach ($columns_array as $key => $value) {
if (empty($value) === false) {
$selected[$value] = $this->getColumnsAvailables()[$value];
}
}
$inputs['inputs']['row2'][] = [
'label' => \__('Columns'),
'arguments' => [
'type' => 'select_add_elements',
'fields' => $this->getColumnsAvailables(),
'class' => 'event-widget-input force-all-values',
'name' => 'columns_events_widget[]',
'selected' => (count($selected) > 0) ? $selected : '',
'return' => true,
'multiple' => true,
'order' => true,
'nothing' => false,
'sort' => false,
'style' => 'width: 93%;',
],
];
return $inputs;
}
@ -495,6 +535,7 @@ class EventsListWidget extends Widget
$values['tagsId'] = \get_parameter_switch('tagsId', []);
$values['groupRecursion'] = \get_parameter_switch('groupRecursion', 0);
$values['customFilter'] = \get_parameter('customFilter', -1);
$values['columns_events_widget'] = \get_parameter('columns_events_widget', []);
return $values;
}
@ -620,7 +661,12 @@ class EventsListWidget extends Widget
'class' => 'table_action_buttons w120px',
],
];
$fields = explode(',', $config['event_fields']);
if (empty($this->values['columns_events_widget'][0]) === true) {
$fields = explode(',', $config['event_fields']);
} else {
$fields = explode(',', $this->values['columns_events_widget'][0]);
}
// Always check something is shown.
if (empty($fields) === true) {
@ -750,4 +796,43 @@ class EventsListWidget extends Widget
}
/**
* Return array with all columns availables for select.
*
* @return array All columns availables.
*/
public function getColumnsAvailables()
{
return [
'id_evento' => __('Event Id'),
'evento' => __('Event Name'),
'id_agente' => __('Agent ID'),
'agent_name' => __('Agent Name'),
'direccion' => __('Agent IP'),
'id_usuario' => __('User'),
'id_grupo' => __('Group'),
'estado' => __('Status'),
'timestamp' => __('Timestamp'),
'event_type' => __('Event Type'),
'id_agentmodule' => __('Module Name'),
'id_alert_am' => __('Alert'),
'criticity' => __('Severity'),
'user_comment' => __('Comment'),
'tags' => __('Tags'),
'source' => __('Source'),
'id_extra' => __('Extra Id'),
'owner_user' => __('Owner'),
'ack_utimestamp' => __('ACK Timestamp'),
'instructions' => __('Instructions'),
'server_name' => __('Server Name'),
'data' => __('Data'),
'module_status' => __('Module Status'),
'mini_severity' => __('Severity mini'),
'module_custom_id' => __('Module custom ID'),
'custom_data' => __('Custom data'),
];
}
}

View File

@ -8384,6 +8384,11 @@ div.graph div.legend table {
justify-content: end;
}
.justify-content-between {
-ms-flex-pack: justify;
justify-content: space-between;
}
.span_priority {
width: 20px;
height: 10px;
@ -11911,6 +11916,32 @@ span.help_icon_15px > img {
height: 65px !important;
margin-top: 10px;
}
.order-arrows option {
position: relative;
}
.order-arrows option::before {
opacity: 0.5;
content: " ";
right: 19px;
top: 5px;
background-image: url(../../images/darrowup.png);
position: absolute;
width: 8px;
height: 9px;
background-position: center;
}
.order-arrows option::after {
opacity: 0.5;
content: " ";
right: 19px;
bottom: 6px;
background-image: url(../../images/darrowdown.png);
position: absolute;
width: 8px;
height: 9px;
background-position: center;
}
/* ==== Spinner ==== */
.spinner-fixed {