diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index 939a15b790..f80313287a 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -1455,18 +1455,18 @@ html_print_input_hidden('module_macro_count', $macro_count); $table_new_relations = new stdClass(); $table_new_relations->id = 'module_new_relations'; $table_new_relations->width = '100%'; -$table_new_relations->class = 'no-class filter-table-adv'; +$table_new_relations->class = 'filter-table-adv'; $table_new_relations->data = []; $table_new_relations->style = []; -$table_new_relations->size[0] = '25%'; -$table_new_relations->size[1] = '25%'; -$table_new_relations->size[2] = '25%'; -$table_new_relations->size[3] = '25%'; +$table_new_relations->size[0] = '33%'; +$table_new_relations->size[1] = '33%'; +$table_new_relations->size[2] = '33%'; $params = []; $params['return'] = true; $params['show_helptip'] = true; $params['input_name'] = 'autocomplete_agent_name'; +$params['helptip_text'] = ''; $params['use_hidden_input_idagent'] = true; $params['print_hidden_input_idagent'] = true; $params['hidden_input_idagent_id'] = 'hidden-autocomplete_id_agent'; @@ -1476,15 +1476,15 @@ $table_new_relations->data[0][0] = html_print_label_input_block( ui_print_agent_autocomplete_input($params) ); + $table_new_relations->data[0][1] = html_print_label_input_block( __('Module'), - "
" + '
'.html_print_input_text('', '', '', false, 255, true, true, false, '', 'w100p').'
' ); $array_rel_type = []; $array_rel_type['direct'] = __('Direct'); $array_rel_type['failover'] = __('Failover'); - $table_new_relations->data[0][2] = html_print_label_input_block( __('Rel. type'), html_print_select( @@ -1497,43 +1497,55 @@ $table_new_relations->data[0][2] = html_print_label_input_block( true, false, true, - '' + 'w100p', + false, + 'width:100%' ) ); -$table_new_relations->data[0][3] = html_print_label_input_block( - ' ', - '
'.html_print_button( - __('Add relationship'), - 'add_relation', - false, - 'javascript: add_new_relation();', - [ - 'class' => 'w150px secondary', - 'icon' => 'plus', - ], - true - )."
" +$table_new_relations->data[1][0] = ' '; +$table_new_relations->data[1][1] = ' '; +$table_new_relations->cellstyle[1][2] = 'width:100% !important;'; +$table_new_relations->cellclass[1][2] = 'flex flex-end'; +$table_new_relations->data[1][2] = "
".html_print_button( + __('Add relationship')."
", + 'add_relation', + false, + 'add_new_relation();', + [ + 'class' => 'mini', + 'icon' => 'next', + 'mode' => 'secondary', + 'style' => 'margin-top: 10px; margin-right: 10px', + ], + true ); // Relationship list. $table_relations = new stdClass(); $table_relations->id = 'module_relations'; $table_relations->width = '100%'; -$table_relations->class = 'databox data'; +$table_relations->class = 'info_table'; +$table_relations->styleTable = 'border: none'; $table_relations->head = []; $table_relations->data = []; -$table_relations->rowstyle = []; $table_relations->rowstyle[-1] = 'display: none;'; -$table_relations->style = []; -$table_relations->style[3] = 'width: 10%; text-align: center;'; -$table_relations->style[4] = 'width: 10%; text-align: center;'; $table_relations->head[0] = __('Agent'); $table_relations->head[1] = __('Module'); $table_relations->head[2] = __('Type'); $table_relations->head[3] = __('Changes'); $table_relations->head[4] = __('Delete'); +$table_relations->headclass[0] = 'w20p'; +$table_relations->headclass[1] = 'w20p'; +$table_relations->headclass[2] = 'w20p'; +$table_relations->headclass[3] = 'w20p'; +$table_relations->headclass[4] = 'w20p'; +$table_relations->style[0] = 'width:20%'; +$table_relations->style[1] = 'width:20%'; +$table_relations->style[2] = 'width:20%'; +$table_relations->style[3] = 'width:20%'; +$table_relations->style[4] = 'width:20%'; // Create an invisible row to use their html to add new rows. $table_relations->data[-1][0] = ''; @@ -1565,6 +1577,9 @@ if ($id_agent_module) { $relations_count = 0; foreach ($module_relations as $key => $module_relation) { + // Styles. + $table_relations->cellclass[$relations_count][4] = 'table_action_buttons'; + if ($module_relation['module_a'] == $id_agent_module) { $module_id = $module_relation['module_b']; $agent_id = modules_give_agent_id_from_module_id( @@ -2047,6 +2062,7 @@ function change_modules_autocomplete_input () { else { module_autocomplete.html(error_icon); } + $('#text-autocomplete_module_name').addClass('w90p'); }, error: function (data) { module_autocomplete.removeClass('working'); @@ -2109,15 +2125,15 @@ function add_new_relation () { } var rowHTML = '' + - '' + agent_b_name + '' + - '' + module_b_name + '' + - '' + relation_type + '' + - '' + + '' + agent_b_name + '' + + '' + module_b_name + '' + + '' + relation_type + '' + + '' + '' + ' 'main_menu_icon invert_filter']); ?>' + '' + '' + - '' + + '' + '' + ' 'main_menu_icon invert_filter']); ?>' + '' + diff --git a/pandora_console/godmode/reporting/graph_container.php b/pandora_console/godmode/reporting/graph_container.php index 370285d7bf..0ec7c6b242 100644 --- a/pandora_console/godmode/reporting/graph_container.php +++ b/pandora_console/godmode/reporting/graph_container.php @@ -71,11 +71,11 @@ $max_graph = $config['max_graph_container']; $buttons['graph_list'] = [ 'active' => false, 'text' => ''.html_print_image( - 'images/list.png', + 'images/logs@svg.svg', true, [ 'title' => __('Graph list'), - 'class' => 'invert_filter', + 'class' => 'main_menu_icon invert_filter', ] ).'', ]; diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index 3494ff8f78..68ff0baf8e 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -3557,7 +3557,7 @@ switch ($action) { $buttons = [ 'list_reports' => [ 'active' => false, - 'text' => ''.html_print_image('images/report_list.png', true, ['title' => __('Reports list'), 'class' => 'invert_filter']).'', + 'text' => ''.html_print_image('images/logs@svg.svg', true, ['title' => __('Reports list'), 'class' => 'invert_filter main_menu_icon']).'', ], ]; diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php index a9f28ef4c6..99c121c180 100644 --- a/pandora_console/godmode/users/user_list.php +++ b/pandora_console/godmode/users/user_list.php @@ -1045,20 +1045,6 @@ if ($is_management_allowed === true) { } else { echo ''.__("The current authentication scheme doesn't support creating users on %s", get_product_name()).''; } -} else { - html_print_action_buttons( - html_print_submit_button( - __('Create user'), - 'none', - true, - [ 'icon' => 'wand' ], - true - ), - [ - 'type' => 'form_action', - 'right_content' => $tablePagination, - ], - ); } ?> diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 45ee2efd9c..e4e9dc9937 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -729,7 +729,9 @@ function load_form_filter() { $("#current_filter").text($('#filter_id option:selected').text()); // Search. - dt_events.draw(false); + $("#table_events") + .DataTable() + .draw(false); } $(document).ready (function() { diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 0d5b38f668..434c16a256 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -2566,7 +2566,6 @@ function graphic_agentaccess( } $options = [ - 'width' => 350, 'height' => 125, 'colors' => $colors, 'legend' => ['display' => false], @@ -4809,20 +4808,6 @@ function graph_nodata_image($options) { global $config; - $height = 200; - if (isset($options['height']) === true - && empty($options['height']) === false - ) { - $height = $options['height']; - } - - $width_style = 'width: 200px'; - if (isset($options['width']) === true - && empty($options['width']) === false - ) { - $width_style = 'width:'.$options['width'].'px'; - } - if ($options['base64'] === true) { $dataImg = file_get_contents( $config['homedir'].'/images/image_problem_area_150.png' @@ -4835,7 +4820,7 @@ function graph_nodata_image($options) true, [ 'title' => __('No data'), - 'style' => $width_style, + 'style' => 'width: 200px;', ] ); } diff --git a/pandora_console/include/functions_inventory.php b/pandora_console/include/functions_inventory.php index 050f37fe0a..f15f888bf6 100644 --- a/pandora_console/include/functions_inventory.php +++ b/pandora_console/include/functions_inventory.php @@ -836,13 +836,19 @@ function get_data_basic_info_sql($params, $count=false) $order_condition = sprintf('ORDER BY %s', $params['order']); } + $table = 'tagente'; + if (is_metaconsole() === true) { + $table = 'tmetaconsole_agent'; + } + $sql = sprintf( 'SELECT %s - FROM tagente + FROM %s %s %s %s', $fields, + $table, $where, $order_condition, $limit_condition diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index 2a52aed31b..3bf0799599 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -81,6 +81,12 @@ function menu_print_menu(&$menu) $sec2 = 'godmode/setup/setup§ion=gis'; } else if ($sec2 === 'enterprise/godmode/agentes/agent_autoconfiguration.definition') { $sec2 = 'enterprise/godmode/agentes/agent_autoconfiguration'; + } else if ($sec2 === 'enterprise/godmode/reporting/graph_template_list') { + $sec2 = 'godmode/reporting/graphs'; + } else if ($sec2 === 'enterprise/godmode/reporting/graph_template_wizard') { + $sec2 = 'godmode/reporting/graphs'; + } else if ($sec2 === 'godmode/reporting/graph_container') { + $sec2 = 'godmode/reporting/graphs'; } else if ($sec2 === 'operation/gis_maps/render_view') { $map_id = (int) get_parameter('map_id'); if (empty($map_id) === false) { diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 6b6815b755..385db94ef8 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -4577,3 +4577,81 @@ function getStatuses() 'normal', ]; } + + +function policies_type_modules_availables(string $sec2): array +{ + $network_available = db_get_sql( + 'SELECT count(*) + FROM tserver + WHERE server_type = '.SERVER_TYPE_NETWORK + ); + $wmi_available = db_get_sql( + 'SELECT count(*) + FROM tserver + WHERE server_type = '.SERVER_TYPE_WMI + ); + $plugin_available = db_get_sql( + 'SELECT count(*) + FROM tserver + WHERE server_type = '.SERVER_TYPE_PLUGIN + ); + $prediction_available = db_get_sql( + 'SELECT count(*) + FROM tserver + WHERE server_type = '.SERVER_TYPE_PREDICTION + ); + $web_available = db_get_sql( + 'SELECT count(*) + FROM tserver + WHERE server_type = '.SERVER_TYPE_WEB + ); + + if (is_metaconsole()) { + $network_available = 1; + $wmi_available = 1; + $plugin_available = 1; + $prediction_available = 1; + } + + $modules = []; + $modules['dataserver'] = __('Create a new data server module'); + if ($network_available) { + $modules['networkserver'] = __('Create a new network server module'); + } + + if ($plugin_available) { + $modules['pluginserver'] = __('Create a new plugin server module'); + } + + if ($wmi_available) { + $modules['wmiserver'] = __('Create a new WMI server module'); + } + + if ($prediction_available) { + $modules['predictionserver'] = __('Create a new prediction server module'); + } + + if (is_metaconsole() === true || $web_available >= '1') { + $modules['webserver'] = __('Create a new web Server module'); + } + + if (enterprise_installed() === true) { + enterprise_include('godmode/agentes/module_manager.php'); + set_enterprise_module_types($modules); + } + + if (strstr($sec2, 'enterprise/godmode/policies/policies') !== false) { + // It is unset because the policies haven't a table tmodule_synth and the + // some part of code to apply this kind of modules in policy agents. + // But in the future maybe will be good to make this feature, but remember + // the modules to show in syntetic module policy form must be the policy + // modules from the same policy. + unset($modules['predictionserver']); + if (enterprise_installed() === true) { + unset($modules['webux']); + } + } + + return $modules; +} diff --git a/pandora_console/include/functions_treeview.php b/pandora_console/include/functions_treeview.php index 0b212eb8aa..e598037684 100755 --- a/pandora_console/include/functions_treeview.php +++ b/pandora_console/include/functions_treeview.php @@ -921,7 +921,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false) false, '', 'white-box-content mrgn_top_0 mrgn_btn_0px border-bottom-gray', - 'white_table_flex' + 'white_table_flex margin-bottom-20' ); if (empty($server_data) === false && is_metaconsole() === true) { @@ -951,7 +951,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false) type: 'hidden', id: 'graph-counter', value: 1 - }).appendTo('#container'); + }).appendTo('body'); if ($('#graph-counter').val() == 1) { diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index 8eebebe339..2f88d2d86f 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -3760,7 +3760,7 @@ function ui_print_datatable(array $parameters) // Base table. $table = ''; $table .= ''; @@ -4027,6 +4027,7 @@ function ui_print_datatable(array $parameters) $(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_length")); $(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dt-buttons")); $(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_filter")); + $("div.spinner-fixed").hide(); }, columns: ['; @@ -4070,6 +4071,15 @@ function ui_print_datatable(array $parameters) } $js .= '});'; + $js .= ' + $(function() { + $(document).on("preInit.dt", function (ev, settings) { + // $("table#'.$table_id.'").hide(); + $("div.dataTables_length").hide(); + $("div.dt-buttons").hide(); + }); + }); + '; $js .= ''; @@ -4078,9 +4088,11 @@ function ui_print_datatable(array $parameters) $info_msg_arr['message'] = $emptyTable; $info_msg_arr['div_class'] = 'info_box_container invisible_important datatable-msg-info-'.$table_id; + $spinner = '
'; + $info_msg = '
'.ui_print_info_message($info_msg_arr).'
'; $err_msg = '
'; - $output = $info_msg.$err_msg.$filter.$extra.$table.$js; + $output = $info_msg.$err_msg.$filter.$extra.$spinner.$table.$js; if (is_ajax() === false) { ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_css_file('tables'); diff --git a/pandora_console/include/javascript/tree/TreeController.js b/pandora_console/include/javascript/tree/TreeController.js index 5282cf58e4..368ebd69a9 100644 --- a/pandora_console/include/javascript/tree/TreeController.js +++ b/pandora_console/include/javascript/tree/TreeController.js @@ -652,13 +652,10 @@ var TreeController = { typeof element.icon != "undefined" && element.icon.length > 0 ) { - console.log("a"); - console.log(controller); $content.append( '
label, -div.filter_input_little > label { - width: 10em; -} - form.flex-row > ul, form.flex-row > ul > li, form.flex-row > .box-shadow.white_table_graph { @@ -504,7 +499,7 @@ div.multi-response-buttons { } .events-refr { - width: 350px; + width: 300px; display: flex; align-items: center; flex-direction: row-reverse; @@ -529,3 +524,29 @@ td#save_filter_form-0-1 > input[type="radio"] { .module-search > input[type="text"] { margin-bottom: 6px; } + +div.agent-min-w100p > span { + width: 400px; +} + +.events-pure { + display: block; + position: initial; + border-radius: 0px; +} + +.events-pure > .white_table_graph_header { + height: 45px; +} + +div.menu_tab_pure { + margin-top: 0px !important; +} + +div#main_pure:has(.events-pure) { + width: 99%; +} + +.margn-b-50px { + margin-bottom: 50px !important; +} diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 346e4c26c3..7d4ebc1e6c 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -11743,6 +11743,70 @@ div.relative > div > div#ui-datepicker-div { width: 400px; } +#module_relations > thead > tr { + border: none !important; + border-bottom: 1px solid #e2e2e2 !important; +} + span.help_icon_15px > img { height: 15px !important; } + +.select2-dropdown { + z-index: 1116 !important; +} + +/* ==== Spinner ==== */ +.spinner-fixed { + position: fixed; + left: 50%; + bottom: 50%; + z-index: 1; + width: 100px; + height: 100px; + border-radius: 100%; + background: linear-gradient(#82b92e, #c1ccdc); + animation: animate 1.2s linear infinite; + margin: auto; + margin-bottom: 40px; +} +.spinner-fixed span { + position: absolute; + width: 100%; + height: 100%; + border-radius: 100%; + background: linear-gradient(#82b92e, #c1ccdc); +} +.spinner-fixed span:nth-child(1) { + filter: blur(4px); +} +.spinner-fixed span:nth-child(2) { + filter: blur(8px); +} +.spinner-fixed span:nth-child(3) { + filter: blur(12px); +} +.spinner-fixed span:nth-child(4) { + filter: blur(16px); +} +.spinner-fixed:after { + content: ""; + position: absolute; + top: 10px; + left: 10px; + right: 10px; + bottom: 10px; + /* background: transparent; */ + background: #f1f1f1; + border: solid #fff 10px; + border-radius: 50%; +} + +@keyframes animate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php index ec9e330d18..fda858cbc6 100755 --- a/pandora_console/operation/agentes/alerts_status.php +++ b/pandora_console/operation/agentes/alerts_status.php @@ -276,8 +276,8 @@ if ((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) che ['text' => 'Module'], ['text' => 'Template'], [ - 'title' => __('Actions'), - 'text' => __('Actions'), + 'title' => __('Action'), + 'text' => __('Action'), 'style' => 'min-width: 15%;', ], ['text' => 'Last fired'], @@ -288,7 +288,7 @@ if ((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) che $columns, ['agent_module_name'], ['template_name'], - ['actions'], + ['action'], ['last_fired'], ['status'] ); @@ -326,14 +326,14 @@ if (is_metaconsole() === true) { 1, 2, 3, - 7, + -1, ]; } else { $no_sortable_columns = [ 0, 1, 2, - 6, + -1, ]; } } diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 3ec49048d2..12b3471241 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -1376,7 +1376,7 @@ if ($pure) { // Floating menu - Start. echo '
'; - echo '