diff --git a/pandora_console/godmode/wizards/HostDevices.class.php b/pandora_console/godmode/wizards/HostDevices.class.php index 36e7df0b21..d00f1282f0 100755 --- a/pandora_console/godmode/wizards/HostDevices.class.php +++ b/pandora_console/godmode/wizards/HostDevices.class.php @@ -941,6 +941,7 @@ class HostDevices extends Wizard 'return' => true, 'class' => 'discovery_list_input', 'simple_multiple_options' => true, + 'required' => true, ] ); @@ -1001,6 +1002,7 @@ class HostDevices extends Wizard $("#text-interval_text").val(10); $("#hidden-interval").val('.$interval.'); $("#interval_units").val('.$unit.'); + $("#interval_units").trigger("change"); } }).change(); diff --git a/pandora_console/include/class/CustomNetScan.class.php b/pandora_console/include/class/CustomNetScan.class.php index bb0b420f1e..f6af0ded74 100644 --- a/pandora_console/include/class/CustomNetScan.class.php +++ b/pandora_console/include/class/CustomNetScan.class.php @@ -594,6 +594,7 @@ class CustomNetScan extends Wizard $("#text-interval_text").val(10); $("#hidden-interval").val('.$interval.'); $("#interval_units").val('.$unit.'); + $("#interval_units").trigger("change"); } }).change(); '; diff --git a/pandora_console/include/class/NetworkMap.class.php b/pandora_console/include/class/NetworkMap.class.php index 051d5d603a..08efce8282 100644 --- a/pandora_console/include/class/NetworkMap.class.php +++ b/pandora_console/include/class/NetworkMap.class.php @@ -2799,7 +2799,6 @@ class NetworkMap $output .= "var add_node_menu = '".__('Add node')."';\n"; $output .= "var set_center_menu = '".__('Set center')."';\n"; $output .= "var refresh_menu = '".__('Refresh')."';\n"; - $output .= "var refresh_holding_area_menu = '".__('Refresh Holding area')."';\n"; $output .= "var ok_button = '".__('Proceed')."';\n"; $output .= "var message_to_confirm = '".__('Resetting the map will delete all customizations you have done, including manual relationships between elements, new items, etc.')."';\n"; $output .= "var warning_message = '".__('WARNING')."';\n"; @@ -3504,6 +3503,10 @@ class NetworkMap $output .= ' style="width: '.$this->mapOptions['width'].'px; height: '.$this->mapOptions['height'].'px;position: relative; overflow: hidden; background: #FAFAFA">'; } + $output .= ''; + $output .= '
'; $output .= ' 0], - ['id' => $node['id_db']] - ); - $return['state'] = ''; } } diff --git a/pandora_console/include/javascript/functions_pandora_networkmap.js b/pandora_console/include/javascript/functions_pandora_networkmap.js index 7895db95f8..726980a827 100644 --- a/pandora_console/include/javascript/functions_pandora_networkmap.js +++ b/pandora_console/include/javascript/functions_pandora_networkmap.js @@ -2098,15 +2098,9 @@ function show_menu(item, data) { icon: "refresh", disabled: false, callback: function(key, options) { - update_networkmap(); - } - }; - items_list["refresh_holding_area"] = { - name: refresh_holding_area_menu, - icon: "refresh_holding_area", - disabled: false, - callback: function(key, options) { - refresh_holding_area(); + refresh(); + // refresh_holding_area(); + // update_networkmap(); } }; items_list["restart_map"] = { @@ -2466,6 +2460,58 @@ function refresh_holding_area() { }); } +function refresh() { + $("#spinner_networkmap").css("display", "flex"); + var holding_pos_x = d3.select("#holding_area_" + networkmap_id).attr("x"); + var holding_pos_y = d3.select("#holding_area_" + networkmap_id).attr("y"); + + var pos_x = parseInt(holding_pos_x) + parseInt(node_radius); + var pos_y = parseInt(holding_pos_y) + parseInt(node_radius); + + var params = []; + params.push("refresh_holding_area=1"); + params.push("id=" + networkmap_id); + params.push("x=" + pos_x); + params.push("y=" + pos_y); + params.push("page=operation/agentes/pandora_networkmap.view"); + $.ajax({ + data: { + page: "operation/agentes/pandora_networkmap.view", + refresh_holding_area: 1, + id: networkmap_id, + x: pos_x, + y: pos_y + }, + dataType: "json", + type: "POST", + url: window.base_url_homedir + "/ajax.php", + success: function(data) { + if (data["correct"]) { + const array_nodes = data["holding_area"]["nodes"]; + let array_links = data["holding_area"]["links"]; + jQuery.each(graph.links, function(j, g_link) { + for (var i = 0; i < array_links.length; i++) { + if (g_link["id_db"] == array_links[i]["id_db"]) { + array_links.splice(i, 1); + } + } + }); + + if (array_nodes.length === 0 && array_links.length === 0) { + update_networkmap(); + $("#spinner_networkmap").css("display", "none"); + } else { + console.log("hay algun nodo o link nuevo, toca repintar mapa"); + // crear una funcion donde se llame a graphviz y se reciban las nuevas posiciones, pero sin borrar links. + } + } + }, + error: function(e) { + $("#spinner_networkmap").css("display", "none"); + } + }); +} + function restart_map() { $( "
data['kval'][0] = __('Default ideal node separation'); $table->data['kval'][1] = html_print_input_text('kval', $kval, '', 5, 10, true, $disabled_source, false, $itemClass).ui_print_help_tip(__('Only fdp. Default ideal node separation in the layout. By default 0.3'), true); + $table->data['refresh'][0] = __('Refresh'); + $table->data['refresh'][1] = html_print_extended_select_for_time( + 'refresh_time', + $refresh_time, + '', + '', + '0', + false, + true, + false, + false + ); + echo '
'; html_print_table($table); @@ -628,9 +644,9 @@ $(document).ready(function() { event.preventDefault(); } -}); - + }); + $("#refresh_units").trigger("change"); }); diff --git a/pandora_console/operation/agentes/pandora_networkmap.php b/pandora_console/operation/agentes/pandora_networkmap.php index c5e34743d4..9c57ad033f 100644 --- a/pandora_console/operation/agentes/pandora_networkmap.php +++ b/pandora_console/operation/agentes/pandora_networkmap.php @@ -288,6 +288,8 @@ if ($new_networkmap || $save_networkmap) { $mindist = get_parameter('mindist', '1.0'); $kval = get_parameter('kval', '0.3'); + $refresh_time = get_parameter('refresh_time', '300'); + $values = []; $values['name'] = $name; $values['id_group'] = $id_group; @@ -297,6 +299,7 @@ if ($new_networkmap || $save_networkmap) { $values['id_user'] = $config['id_user']; $values['description'] = $description; $values['id_group_map'] = $id_group_map; + $values['refresh_time'] = $refresh_time; switch ($method) { case 'twopi': @@ -473,6 +476,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) { $offset_y = get_parameter('pos_y', 0); $scale_z = get_parameter('scale_z', 0.5); + $refresh_time = get_parameter('refresh_time', '300'); + $values = []; $values['name'] = $name; $values['id_group'] = $id_group; @@ -481,6 +486,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) { $description = get_parameter('description', ''); $values['description'] = $description; + $values['refresh_time'] = $refresh_time; + $dont_show_subgroups = (int) get_parameter('dont_show_subgroups', 0); $node_radius = (int) get_parameter('node_radius', 40); $row = db_get_row('tmap', 'id', $id); diff --git a/pandora_console/operation/agentes/pandora_networkmap.view.php b/pandora_console/operation/agentes/pandora_networkmap.view.php index dc8194887f..48b35f595c 100644 --- a/pandora_console/operation/agentes/pandora_networkmap.view.php +++ b/pandora_console/operation/agentes/pandora_networkmap.view.php @@ -76,6 +76,7 @@ if (is_ajax() === true) { $get_networkmap_from_fictional = (bool) get_parameter('get_networkmap_from_fictional', false); $get_reset_map_form = (bool) get_parameter('get_reset_map_form', false); $reset_map = (bool) get_parameter('reset_map', false); + $refresh_map = (bool) get_parameter('refresh_map', false); if ($get_reset_map_form) { $map_id = get_parameter('map_id'); @@ -937,6 +938,7 @@ if (is_ajax() === true) { } if ($refresh_holding_area) { + ob_start(); $networkmap_id = (int) get_parameter('id', 0); $x = (int) get_parameter('x', 666); $y = (int) get_parameter('y', 666); @@ -944,12 +946,11 @@ if (is_ajax() === true) { $return['correct'] = false; $return['holding_area'] = []; - // ACL for the network map + // ACL for the network map. $id_group = db_get_value('id_group', 'tmap', 'id', $networkmap_id); // $networkmap_read = check_acl ($config['id_user'], $id_group, "MR"); $networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); - if (!$networkmap_write && !$networkmap_manage) { db_pandora_audit( AUDIT_LOG_ACL_VIOLATION, @@ -966,6 +967,8 @@ if (is_ajax() === true) { $return['holding_area'] = $data; } + ob_end_clean(); + echo json_encode($return); return; diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index dc47b032af..de31d335b4 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -2317,6 +2317,7 @@ CREATE TABLE IF NOT EXISTS `tmap` ( `generated` INT UNSIGNED NOT NULL DEFAULT 0, `filter` TEXT, `id_group_map` INT UNSIGNED NOT NULL DEFAULT 0, + `refresh_time` INT UNSIGNED NOT NULL DEFAULT 300, PRIMARY KEY(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;