Implemented all-in-row data for grouped general report

This commit is contained in:
alejandro-campos 2020-07-02 17:00:19 +02:00
parent 9e939f1979
commit 5b884e714b
2 changed files with 198 additions and 99 deletions

View File

@ -7506,40 +7506,57 @@ function reporting_general($report, $content)
if ($content['period'] == 0) {
$data_res[$index] = modules_get_last_value($row['id_agent_module']);
} else {
if (is_numeric($type_mod) && !$is_string[$index]) {
switch ($row['operation']) {
case 'sum':
$data_res[$index] = reporting_get_agentmodule_data_sum(
$row['id_agent_module'],
$content['period'],
$report['datetime']
);
break;
$data_sum = reporting_get_agentmodule_data_sum(
$row['id_agent_module'],
$content['period'],
$report['datetime']
);
case 'max':
$data_res[$index] = reporting_get_agentmodule_data_max(
$row['id_agent_module'],
$content['period']
);
break;
$data_max = reporting_get_agentmodule_data_max(
$row['id_agent_module'],
$content['period']
);
case 'min':
$data_res[$index] = reporting_get_agentmodule_data_min(
$row['id_agent_module'],
$content['period']
);
break;
$data_min = reporting_get_agentmodule_data_min(
$row['id_agent_module'],
$content['period']
);
case 'avg':
default:
$data_res[$index] = reporting_get_agentmodule_data_average(
$row['id_agent_module'],
$content['period']
);
break;
}
$data_avg = reporting_get_agentmodule_data_average(
$row['id_agent_module'],
$content['period']
);
if ($content['style']['show_in_same_row'] && $content['group_by_agent'] == REPORT_GENERAL_NOT_GROUP_BY_AGENT) {
$data_res[$index] = [
$data_avg,
$data_max,
$data_min,
$data_sum,
];
} else {
$data_res[$index] = $type_mod;
if (is_numeric($type_mod) && !$is_string[$index]) {
switch ($row['operation']) {
case 'sum':
$data_res[$index] = $data_sum;
break;
case 'max':
$data_res[$index] = $data_max;
break;
case 'min':
$data_res[$index] = $data_min;
break;
case 'avg':
default:
$data_res[$index] = $data_avg;
break;
}
} else {
$data_res[$index] = $type_mod;
}
}
}
@ -7581,44 +7598,89 @@ function reporting_general($report, $content)
break;
}
// Calculate the avg, min and max
if (is_numeric($data_res[$index]) && !$is_string[$index]) {
$change_min = false;
if (is_null($return['min']['value'])) {
$change_min = true;
} else {
if ($return['min']['value'] > $data_res[$index]) {
if ($content['style']['show_in_same_row']) {
foreach ($data_res[$index] as $val) {
// Calculate the avg, min and max
if (is_numeric($val)) {
$change_min = false;
if (is_null($return['min']['value'])) {
$change_min = true;
} else {
if ($return['min']['value'] > $val) {
$change_min = true;
}
}
if ($change_min) {
$return['min']['value'] = $val;
$return['min']['formated_value'] = format_for_graph($val, 2, '.', ',', $divisor, $unit);
$return['min']['agent'] = $ag_name;
$return['min']['module'] = $mod_name;
}
$change_max = false;
if (is_null($return['max']['value'])) {
$change_max = true;
} else {
if ($return['max']['value'] < $val) {
$change_max = true;
}
}
if ($change_max) {
$return['max']['value'] = $val;
$return['max']['formated_value'] = format_for_graph($val, 2, '.', ',', $divisor, $unit);
$return['max']['agent'] = $ag_name;
$return['max']['module'] = $mod_name;
}
if ($i == 0) {
$return['avg_value'] = $val;
} else {
$return['avg_value'] = ((($return['avg_value'] * $i) / ($i + 1)) + ($val / ($i + 1)));
}
}
}
} else {
// Calculate the avg, min and max
if (is_numeric($data_res[$index]) && !$is_string[$index]) {
$change_min = false;
if (is_null($return['min']['value'])) {
$change_min = true;
} else {
if ($return['min']['value'] > $data_res[$index]) {
$change_min = true;
}
}
}
if ($change_min) {
$return['min']['value'] = $data_res[$index];
$return['min']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['min']['agent'] = $ag_name;
$return['min']['module'] = $mod_name;
}
if ($change_min) {
$return['min']['value'] = $data_res[$index];
$return['min']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['min']['agent'] = $ag_name;
$return['min']['module'] = $mod_name;
}
$change_max = false;
if (is_null($return['max']['value'])) {
$change_max = true;
} else {
if ($return['max']['value'] < $data_res[$index]) {
$change_max = false;
if (is_null($return['max']['value'])) {
$change_max = true;
} else {
if ($return['max']['value'] < $data_res[$index]) {
$change_max = true;
}
}
}
if ($change_max) {
$return['max']['value'] = $data_res[$index];
$return['max']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['max']['agent'] = $ag_name;
$return['max']['module'] = $mod_name;
}
if ($change_max) {
$return['max']['value'] = $data_res[$index];
$return['max']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['max']['agent'] = $ag_name;
$return['max']['module'] = $mod_name;
}
if ($i == 0) {
$return['avg_value'] = $data_res[$index];
} else {
$return['avg_value'] = ((($return['avg_value'] * $i) / ($i + 1)) + ($data_res[$index] / ($i + 1)));
if ($i == 0) {
$return['avg_value'] = $data_res[$index];
} else {
$return['avg_value'] = ((($return['avg_value'] * $i) / ($i + 1)) + ($data_res[$index] / ($i + 1)));
}
}
}
@ -7693,50 +7755,87 @@ function reporting_general($report, $content)
$data['id_module_type'] = $id_module_types[$i];
$data['operator'] = '';
if ($content['period'] != 0) {
switch ($operations[$i]) {
case 'sum':
$data['operator'] = __('Summatory');
break;
if ($content['style']['show_in_same_row']) {
$data['operator'] = 'all';
} else {
switch ($operations[$i]) {
case 'sum':
$data['operator'] = __('Summatory');
break;
case 'min':
$data['operator'] = __('Minimum');
break;
case 'min':
$data['operator'] = __('Minimum');
break;
case 'max':
$data['operator'] = __('Maximum');
break;
case 'max':
$data['operator'] = __('Maximum');
break;
case 'avg':
default:
$data['operator'] = __('Rate');
break;
case 'avg':
default:
$data['operator'] = __('Rate');
break;
}
}
}
if ($d === false) {
$data['value'] = null;
} else {
switch ($config['dbtype']) {
case 'mysql':
case 'postgresql':
break;
if ($content['style']['show_in_same_row']) {
foreach ($d as $val) {
if ($val === false) {
$data['value'][] = null;
} else {
switch ($config['dbtype']) {
case 'mysql':
case 'postgresql':
break;
case 'oracle':
if (preg_match('/[0-9]+,[0-9]E+[+-][0-9]+/', $d)) {
$d = oracle_format_float_to_php($d);
case 'oracle':
if (preg_match('/[0-9]+,[0-9]E+[+-][0-9]+/', $val)) {
$val = oracle_format_float_to_php($val);
}
break;
}
break;
$divisor = get_data_multiplier($units[$i]);
if (!is_numeric($val) || $is_string[$i]) {
$data['value'][] = $val;
// to see the chains on the table
$data['formated_value'][] = $val;
} else {
$data['value'][] = $val;
$data['formated_value'][] = format_for_graph($val, 2, '.', ',', $divisor, $units[$i]);
}
}
}
$divisor = get_data_multiplier($units[$i]);
if (!is_numeric($d) || $is_string[$i]) {
$data['value'] = $d;
// to see the chains on the table
$data['formated_value'] = $d;
} else {
if ($d === false) {
$data['value'] = null;
} else {
$data['value'] = $d;
$data['formated_value'] = format_for_graph($d, 2, '.', ',', $divisor, $units[$i]);
switch ($config['dbtype']) {
case 'mysql':
case 'postgresql':
break;
case 'oracle':
if (preg_match('/[0-9]+,[0-9]E+[+-][0-9]+/', $d)) {
$d = oracle_format_float_to_php($d);
}
break;
}
$divisor = get_data_multiplier($units[$i]);
if (!is_numeric($d) || $is_string[$i]) {
$data['value'] = $d;
// to see the chains on the table
$data['formated_value'] = $d;
} else {
$data['value'] = $d;
$data['formated_value'] = format_for_graph($d, 2, '.', ',', $divisor, $units[$i]);
}
}
}

View File

@ -3928,10 +3928,10 @@ function reporting_html_general($table, $item, $pdf=0)
$table1->data[] = [
agents_get_alias($id_agent),
modules_get_agentmodule_name($id_module),
$row2['Rate'],
$row2['Maximum'],
$row2['Minimum'],
$row2['Summatory'],
$row2['all'][0],
$row2['all'][1],
$row2['all'][2],
$row2['all'][3],
];
}
}
@ -4014,7 +4014,7 @@ function reporting_html_general($table, $item, $pdf=0)
$table_summary->data[0][0] = $item['min']['agent'].' - '.$item['min']['module'].str_repeat('&nbsp;', 20).$item['min']['formated_value'];
$table_summary->data[0][1] = '';
$table_summary->data[0][2] = format_for_graph($item['avg_value'], 2);
$table_summary->data[0][2] = $item['avg_value'];
$table_summary->data[0][3] = $item['max']['agent'].' - '.$item['max']['module'].str_repeat('&nbsp;', 20).$item['max']['formated_value'];
$table_summary->data[0][4] = '';