From a433a78a4cd0bb3cdbfcf9828f83725ff2ecd630 Mon Sep 17 00:00:00 2001 From: miguel angel rasteu Date: Thu, 7 Sep 2023 10:44:46 +0200 Subject: [PATCH] #Fix graph --- pandora_console/include/functions_graph.php | 8 ++- pandora_console/include/functions_html.php | 2 + .../include/functions_reporting.php | 37 ++++++++++-- .../include/functions_reporting_html.php | 19 ++++-- .../operation/reporting/reporting_viewer.php | 60 +++++++++++++------ 5 files changed, 97 insertions(+), 29 deletions(-) diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 6fa1e2a8d5..141f6385fd 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -1577,10 +1577,16 @@ function graphic_combined_module( $server_name = metaconsole_get_server_by_id($modules[0]['server']); } + if (isset($params_combined['custom_period']) !== false && $params_combined['custom_period'] !== false) { + $period = $params_combined['custom_period']; + } else { + $period = $params['period']; + } + if ($params_combined['projection']) { $output_projection = forecast_projection_graph( $module_list[0], - $params['period'], + $period, $params_combined['projection'], false, false, diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 3d8eb231b9..4cacb0218d 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -7266,6 +7266,8 @@ function html_print_select_date_range( $date_init = date('Y/m/d', strtotime($date_end.' -1 days')); } + $date_init = date('Y/m/d', strtotime($date_init)); + if ($time_init === '') { $time_init = date('H:i:s'); } diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index c01e44157a..ee1f04b952 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -159,7 +159,10 @@ function reporting_make_reporting_data( $force_width_chart=null, $force_height_chart=null, $pdf=false, - $from_template=false + $from_template=false, + $filter_type='', + $custom_date_end='', + $custom_period=false ) { global $config; @@ -194,8 +197,7 @@ function reporting_make_reporting_data( if (empty($contents)) { return reporting_check_structure_report($report); - } - + }; $metaconsole_on = is_metaconsole(); $index_content = 0; @@ -562,7 +564,10 @@ function reporting_make_reporting_data( $type, $force_width_chart, $force_height_chart, - $pdf + $pdf, + $filter_type, + $custom_date_end, + $custom_period ); break; @@ -6804,7 +6809,10 @@ function reporting_projection_graph( $type='dinamic', $force_width_chart=null, $force_height_chart=null, - $pdf=false + $pdf=false, + $filter_type='', + $custom_date_end='', + $custom_period=false ) { global $config; @@ -6870,6 +6878,7 @@ function reporting_projection_graph( $return['agent_name_db'] = $agent_name_db; $return['agent_name'] = $agent_name; $return['module_name'] = $module_name; + $return['datetime'] = $report['datetime']; set_time_limit(500); @@ -6890,8 +6899,24 @@ function reporting_projection_graph( 'return_img_base_64' => true, ]; + $top_n_value = $content['top_n_value']; + if ($filter_type === 'this_week') { + $current_date = date('Y/m/d H:i:s'); + $monday = date('Y/m/d H:i:s', strtotime('last monday')); + $sunday = date('Y/m/d H:i:s', strtotime($monday.' +6 days')); + $top_n_value = (strtotime($sunday) - strtotime($current_date)); + } else if ($filter_type === 'this_month') { + $current_date = date('Y/m/d H:i:s'); + $last_of_month = date('Y/m/d', strtotime('last day of this month')); + $top_n_value = (strtotime($last_of_month) - strtotime($current_date)); + } else if ($filter_type === 'chose_range') { + $current_date = date('Y/m/d H:i:s'); + $top_n_value = (strtotime($custom_date_end) - strtotime($current_date)); + } + $params_combined = [ - 'projection' => $content['top_n_value'], + 'projection' => $top_n_value, + 'custom_period' => $custom_period, ]; if ($pdf === true) { diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index eb7c555fb9..e1c506cf83 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -119,10 +119,15 @@ function reporting_html_header( } -function html_do_report_info($report) +function html_do_report_info($report, $custom_date_end=false, $custom_period=false) { global $config; + if ($custom_period !== false && $custom_date_end !== false) { + $report['datetime'] = strtotime($custom_date_end); + $report['period'] = $custom_period; + } + if ($config['style'] === 'pandora_black' && !is_metaconsole()) { $background_color = '#222'; } else { @@ -170,10 +175,10 @@ function html_do_report_info($report) * * @return array */ -function reporting_html_print_report($report, $mini=false, $report_info=1) +function reporting_html_print_report($report, $mini=false, $report_info=1, $custom_date_end=false, $custom_period=false) { if ($report_info == 1) { - html_do_report_info($report); + html_do_report_info($report, $custom_date_end, $custom_period); } foreach ($report['contents'] as $key => $item) { @@ -226,6 +231,12 @@ function reporting_html_print_report($report, $mini=false, $report_info=1) $label = ''; } + if ($custom_date_end !== false) { + $to = strtotime($custom_date_end); + } else { + $to = $item['date']['to']; + } + reporting_html_header( $table, $mini, @@ -234,7 +245,7 @@ function reporting_html_print_report($report, $mini=false, $report_info=1) $item['date']['period'], $item['date']['date'], $item['date']['from'], - $item['date']['to'], + $to, $label ); diff --git a/pandora_console/operation/reporting/reporting_viewer.php b/pandora_console/operation/reporting/reporting_viewer.php index 78f9126122..e9430b8eca 100755 --- a/pandora_console/operation/reporting/reporting_viewer.php +++ b/pandora_console/operation/reporting/reporting_viewer.php @@ -60,12 +60,29 @@ $datetime_end = strtotime($date_end.' '.$time_end); $custom_date = get_parameter('custom_date', 0); $date = get_parameter('date', SECONDS_1DAY); $date_text = get_parameter('date_text', SECONDS_1DAY); -if ($custom_date === '1') { - if ($datetime_init >= $datetime_end) { - $datetime_init = $date_init_less; - } - $period = ($datetime_end - $datetime_init); +$custom_date_end = ''; +$filter_type = ''; +$custom_period = false; +if ($custom_date === '1') { + if ($date === 'chose_range') { + $date_init = get_parameter('date_init', 0); + $date_init = explode(' ', $date_init); + $date_init = $date_init[0]; + $date_init .= ' '.get_parameter('time_init', '00:00:00'); + $custom_date_end = get_parameter('date_end', 0); + $custom_date_end .= ' '.get_parameter('time_end', '00:00:00'); + $date_end = date('Y/m/d H:i:s'); + $period = (strtotime($date_end) - strtotime($date_init)); + $custom_period = (strtotime($custom_date_end) - strtotime($date_init)); + $filter_type = 'chose_range'; + } else { + if ($datetime_init >= $datetime_end) { + $datetime_init = $date_init_less; + } + + $period = ($datetime_end - $datetime_init); + } } else if ($custom_date === '2') { $date_units = get_parameter('date_units'); $date_end = date('Y/m/d H:i:s'); @@ -73,16 +90,18 @@ if ($custom_date === '1') { $period = (strtotime($date_end) - strtotime($date_start)); } else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) { if ($date === 'this_week') { - $monday = date('Y/m/d', strtotime('last monday')); - - $sunday = date('Y/m/d', strtotime($monday.' +6 days')); - $period = (strtotime($sunday) - strtotime($monday)); - $date_init = $monday; - $date_end = $sunday; + // Last monday. + $date_init = date('Y/m/d H:i:s', strtotime('last monday')); + // $date_end = date('Y/m/d H:i:s', strtotime($date_init.' +6 days')); + $date_end = date('Y/m/d H:i:s'); + $period = (strtotime($date_end) - strtotime($date_init)); + $filter_type = 'this_week'; } else if ($date === 'this_month') { - $date_end = date('Y/m/d', strtotime('last day of this month')); + // $date_end = date('Y/m/d', strtotime('last day of this month')); + $date_end = date('Y/m/d H:i:s'); $first_of_month = date('Y/m/d', strtotime('first day of this month')); $period = (strtotime($date_end) - strtotime($first_of_month)); + $filter_type = 'this_month'; } else if ($date === 'past_month') { $date_end = date('Y/m/d', strtotime('last day of previous month')); $first_of_month = date('Y/m/d', strtotime('first day of previous month')); @@ -265,10 +284,8 @@ ui_print_standard_header( // ------------------------ INIT FORM ----------------------------------- $table2 = new stdClass(); $table2->id = 'controls_table'; -$table2->size[2] = '50%'; -$table2->size[3] = '50%'; -$table2->style[0] = 'text-align:center'; -$table2->style[1] = 'text-align:center'; +$table2->size[2] = '20%'; +$table2->style[3] = 'position:absolute; left: auto'; $table2->styleTable = 'border:none'; if (defined('METACONSOLE')) { @@ -353,13 +370,20 @@ $report = reporting_make_reporting_data( $date_end, $time, $period, - 'dinamic' + 'dinamic', + null, + null, + false, + false, + $filter_type, + $custom_date_end, + $custom_period ); for ($i = 0; $i < count($report['contents']); $i++) { $report['contents'][$i]['description'] = str_replace(' ', '
', $report['contents'][$i]['description']); } -reporting_html_print_report($report, false, $config['custom_report_info']); +reporting_html_print_report($report, false, $config['custom_report_info'], $custom_date_end, $custom_period); echo '
';