From 2b20b7f8eecc130a7a3936553acf4485e1d16b6e Mon Sep 17 00:00:00 2001 From: miguel angel rasteu <miguelangel.rasteu@pandorafms.com> Date: Thu, 27 Jul 2023 10:47:51 +0200 Subject: [PATCH] #11386 Fix modal --- pandora_console/include/ajax/events.php | 22 ++- .../include/javascript/pandora_events.js | 143 +++++++++++++++--- pandora_console/include/styles/pandora.css | 18 +++ pandora_console/operation/events/events.php | 9 +- .../operation/events/sound_events.php | 13 +- 5 files changed, 172 insertions(+), 33 deletions(-) diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index a3c837c47a..bae63b7eb2 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -90,6 +90,8 @@ $get_comments = (bool) get_parameter('get_comments', false); $get_events_fired = (bool) get_parameter('get_events_fired'); $get_id_source_event = get_parameter('get_id_source_event'); $node_id = (int) get_parameter('node_id', 0); +$settings_modal = get_parameter('settings', 0); +$parameters_modal = get_parameter('parameters', 0); if ($get_comments === true) { $event = get_parameter('event', false); @@ -562,8 +564,13 @@ if ($load_filter_modal) { false ); + $action = 'index.php?sec=eventos&sec2=operation/events/events&pure='; + if ($settings_modal !== 0 && $parameters_modal !== 0) { + $action .= '&settings='.$settings_modal.'¶meters='.$parameters_modal; + } + echo '<div id="load-filter-select" class="load-filter-modal">'; - echo '<form method="post" id="form_load_filter" action="index.php?sec=eventos&sec2=operation/events/events&pure=">'; + echo '<form method="post" id="form_load_filter" action="'.$action.'">'; $table = new StdClass; $table->id = 'load_filter_form'; @@ -1003,7 +1010,7 @@ function save_new_filter() { } else { id_filter_save = data; - + $("#info_box").filter(function(i, item) { if ($(item).data('type_info_box') == "success_create_filter") { return true; @@ -2651,23 +2658,24 @@ if ($get_events_fired) { $return[] = array_merge( $event, [ - 'fired' => $event['id_evento'], - 'message' => ui_print_string_substr( + 'fired' => $event['id_evento'], + 'message' => ui_print_string_substr( strip_tags(io_safe_output($event['evento'])), 75, true, '9' ), - 'priority' => ui_print_event_priority($event['criticity'], true, true), - 'type' => events_print_type_img( + 'priority' => ui_print_event_priority($event['criticity'], true, true), + 'type' => events_print_type_img( $event['event_type'], true ), - 'timestamp' => ui_print_timestamp( + 'timestamp' => ui_print_timestamp( $event['timestamp'], true, ['style' => 'font-size: 9pt; letter-spacing: 0.3pt;'] ), + 'event_timestamp' => $event['timestamp'], ] ); } diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index b8d426e8ba..c24f3170e8 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -943,9 +943,44 @@ function process_buffers(buffers) { } } -function openSoundEventsDialog(settings) { - settings = JSON.parse(atob(settings)); +function openSoundEventsDialogModal(settings, dialog_parameters, reload) { + let mode = $("#hidden-mode_alert").val(); + if (reload != false) { + if (mode == 0) { + let filter_id = $("#filter_id option:selected").val(); + let interval = $("#interval option:selected").val(); + let time_sound = $("#time_sound option:selected").val(); + let sound_id = $("#sound_id option:selected").val(); + let parameters = { + filter_id: filter_id, + interval: interval, + time_sound: time_sound, + sound_id: sound_id, + mode: mode + }; + parameters = JSON.stringify(parameters); + parameters = btoa(parameters); + let url = + window.location + "&settings=" + settings + "¶meters=" + parameters; + $(location).attr("href", url); + } else { + let url = window.location + "&settings=" + settings; + $(location).attr("href", url); + } + } else { + openSoundEventsDialog(settings, dialog_parameters, reload); + } +} +function openSoundEventsDialog(settings, dialog_parameters, reload) { + let encode_settings = settings; + if (reload == undefined) { + reload = true; + } + if (dialog_parameters != undefined) { + dialog_parameters = JSON.parse(atob(dialog_parameters)); + } + settings = JSON.parse(atob(settings)); // Check modal exists and is open. if ( $("#modal-sound").hasClass("ui-dialog-content") && @@ -995,6 +1030,9 @@ function openSoundEventsDialog(settings) { // Play Stop. $("#button-start-search").click(function() { + if (reload == true) { + openSoundEventsDialogModal(encode_settings, 0, reload); + } var mode = $("#hidden-mode_alert").val(); var action = false; if (mode == 0) { @@ -1023,6 +1061,22 @@ function openSoundEventsDialog(settings) { action_events_sound(action, settings); }); + if (reload == false && dialog_parameters != undefined) { + if ($("#button-start-search").hasClass("play")) { + $("#filter_id").val(dialog_parameters["filter_id"]); + $("#interval").val(dialog_parameters["interval"]); + $("#time_sound").val(dialog_parameters["time_sound"]); + $("#sound_id").val(dialog_parameters["sound_id"]); + + $("#filter_id").trigger("change"); + $("#interval").trigger("change"); + $("#time_sound").trigger("change"); + $("#sound_id").trigger("change"); + + $("#button-start-search").trigger("click"); + } + } + // Silence Alert. $("#button-no-alerts").click(function() { if ($("#button-no-alerts").hasClass("silence-alerts") === true) { @@ -1192,6 +1246,37 @@ function listen_event_sound(settings) { } function check_event_sound(settings) { + // Update elements time. + $(".elements-discovered-alerts ul li").each(function() { + let element_time = $(this) + .children(".li-hidden") + .val(); + let obj_time = new Date(element_time); + let current_dt = new Date(); + let timestamp = current_dt.getTime() - obj_time.getTime(); + timestamp = timestamp / 1000; + if (timestamp <= 60) { + timestamp = Math.round(timestamp) + " seconds"; + } else if (timestamp <= 3600) { + let minute = Math.floor((timestamp / 60) % 60); + minute = minute < 10 ? "0" + minute : minute; + let second = Math.floor(timestamp % 60); + second = second < 10 ? "0" + second : second; + timestamp = minute + " minutes " + second + " seconds"; + } else { + let hour = Math.floor(timestamp / 3600); + hour = hour < 10 ? "0" + hour : hour; + let minute = Math.floor((timestamp / 60) % 60); + minute = minute < 10 ? "0" + minute : minute; + let second = Math.round(timestamp % 60); + second = second < 10 ? "0" + second : second; + timestamp = hour + " hours " + minute + " minutes " + second + " seconds"; + } + $(this) + .children(".li-time") + .children("span") + .html(timestamp); + }); jQuery.post( settings.url, { @@ -1245,7 +1330,13 @@ function check_event_sound(settings) { "beforeend", '<div class="li-time">' + element.timestamp + "</div>" ); - $("#tabs-sound-modal .elements-discovered-alerts ul").append(li); + li.insertAdjacentHTML( + "beforeend", + '<input type="hidden" value="' + + element.event_timestamp + + '" class="li-hidden"/>' + ); + $("#tabs-sound-modal .elements-discovered-alerts ul").prepend(li); }); // -100 delay sound. @@ -1357,6 +1448,21 @@ function removeElement(name_select, id_modal) { .append(option); }); } +// Define the minimize button functionality; +function hidden_dialog(dialog) { + setTimeout(function() { + $("#modal-sound").css("visibility", "hidden"); + dialog.css("z-index", "-1"); + }, 200); +} + +function show_dialog(dialog) { + setTimeout(function() { + $("#modal-sound").css("visibility", "visible"); + dialog.css("z-index", "1115"); + }, 50); +} + /* ############################################################################# ## @@ -1425,19 +1531,6 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) { .html(" ") .appendTo(disengageButton); - // Define the minimize button functionality; - function hidden_dialog() { - setTimeout(function() { - $("#modal-sound").css("visibility", "hidden"); - dialog.css("z-index", "-1"); - }, 200); - } - function show_dialog() { - setTimeout(function() { - $("#modal-sound").css("visibility", "visible"); - dialog.css("z-index", "1115"); - }, 50); - } minimizeButton.click(function(e) { console.log("here"); if ($("#minimize_arrow_event_sound").hasClass("arrow_menu_up")) { @@ -1470,7 +1563,7 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) { }, 200, "linear", - hidden_dialog() + hidden_dialog(dialog) ); dialog.css({ height: "" }); dialog.animate( @@ -1502,7 +1595,7 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) { }, 200, "linear", - show_dialog() + show_dialog(dialog) ); } }); @@ -1604,3 +1697,17 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) { console.log(e); } }); + +function loadModal() { + const urlSearch = window.location.search; + const urlParams = new URLSearchParams(urlSearch); + if (urlParams.has("settings")) { + let modal_parameters = ""; + if (urlParams.has("parameters")) { + modal_parameters = urlParams.get("parameters"); + } + let settings = urlParams.get("settings"); + openSoundEventsDialogModal(settings, modal_parameters, false); + } +} +window.onload = loadModal; diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 085dd97ebc..d7711fbea8 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -12413,6 +12413,15 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input { border: 0; } +.actions-sound-modal .buttons-sound-modal div.play { + background: url(../../images/play-white.png), transparent !important; + background-repeat: no-repeat !important; + background-position: 20px 5px !important; + color: #ffffff !important; + padding-left: 20px !important; + border: 0 !important; +} + .actions-sound-modal .buttons-sound-modal button.stop, .actions-sound-modal .buttons-sound-modal input[type="button"].stop { background: url(../../images/stop.png), var(--primary-color); @@ -12422,3 +12431,12 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input { padding-left: 20px; border: 0; } + +.actions-sound-modal .buttons-sound-modal div.stop { + background: url(../../images/stop.png), transparent !important; + background-repeat: no-repeat !important; + background-position: 20px 5px !important; + color: #ffffff !important; + padding-left: 20px !important; + border: 0 !important; +} diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 29e186bb63..722fe2b234 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -104,6 +104,9 @@ if (isset($fb64) === true) { ); } +$settings_modal = get_parameter('settings', 0); +$parameters_modal = get_parameter('parameters', 0); + $id_group_filter = get_parameter( 'filter[id_group_filter]', ($filter['id_group_filter'] ?? '') @@ -1625,6 +1628,8 @@ if ($pure) { ] ).'</a>'; + echo '<input type="hidden" id="open_sound_event_modal" value="0" /> '; + // If the user has administrator permission display manage tab. if ($event_w === true || $event_m === true) { // Manage events. @@ -3199,7 +3204,9 @@ $(document).ready( function() { url: '<?php echo ui_get_full_url('ajax.php'); ?>', data: { page: 'include/ajax/events', - load_filter_modal: 1 + load_filter_modal: 1, + settings: '<?php echo $settings_modal; ?>', + parameters: '<?php echo $parameters_modal; ?>', }, success: function (data){ $('#load-modal-filter') diff --git a/pandora_console/operation/events/sound_events.php b/pandora_console/operation/events/sound_events.php index 3de5a574b1..24179733e5 100644 --- a/pandora_console/operation/events/sound_events.php +++ b/pandora_console/operation/events/sound_events.php @@ -291,7 +291,7 @@ $output = '<div id="tabs-sound-modal">'; false, '', [ - 'icon' => 'cog', + 'icon' => 'play', 'class' => 'mrgn_lft_20px', ], true @@ -357,9 +357,9 @@ function action_events_sound(mode) { // Change mode. $("#hidden-mode_alert").val(1); // Change img button. - $("#button-start-search") - .removeClass("play") - .addClass("stop"); + $("#button-start-search").children("div").removeClass("play") + $("#button-start-search").children("div").addClass("stop"); + // Change value button. $("#button-start-search").val("Stop"); $("#button-start-search > span").text("Stop"); @@ -373,9 +373,8 @@ function action_events_sound(mode) { // Change mode. $("#hidden-mode_alert").val(0); // Change img button. - $("#button-start-search") - .removeClass("stop") - //.addClass("play"); + $("#button-start-search").children("div").removeClass("stop") + $("#button-start-search").children("div").addClass("play") // Change value button. $("#button-start-search").val("Start"); $("#button-start-search > span").text("Start");