new widget grouped meter graphs pandora_enterprise#8620

This commit is contained in:
Daniel Barbero 2022-10-10 11:20:03 +02:00
parent 836cef7830
commit ce823dca38
6 changed files with 104 additions and 16 deletions

View File

@ -3487,12 +3487,13 @@ function agents_get_agent_custom_field($agent_id, $custom_field_name)
/** /**
* Unverified documentation. * Unverified documentation.
* *
* @param integer $id_group Module group. * @param integer $id_group Module group.
* @param array $id_agents Array of agent ids. * @param array $id_agents Array of agent ids.
* @param boolean $selection Show common (false) or all modules (true). * @param boolean $selection Show common (false) or all modules (true).
* @param boolean $return Return (false) or dump to output (true). * @param boolean $return Return (false) or dump to output (true).
* @param boolean $index_by_name Use module name as key. * @param boolean $index_by_name Use module name as key.
* @param boolean $pure_return Return as retrieved from DB. * @param boolean $pure_return Return as retrieved from DB.
* @param boolean $notStringModules Not string modules.
* *
* @return array With modules or null if error. * @return array With modules or null if error.
*/ */
@ -3502,7 +3503,8 @@ function select_modules_for_agent_group(
$selection, $selection,
$return=true, $return=true,
$index_by_name=false, $index_by_name=false,
$pure_return=false $pure_return=false,
$notStringModules=false
) { ) {
global $config; global $config;
$agents = (empty($id_agents)) ? [] : implode(',', $id_agents); $agents = (empty($id_agents)) ? [] : implode(',', $id_agents);
@ -3510,6 +3512,7 @@ function select_modules_for_agent_group(
$filter_agent_group = ''; $filter_agent_group = '';
$filter_group = ''; $filter_group = '';
$filter_agent = ''; $filter_agent = '';
$filter_not_string_modules = '';
$selection_filter = ''; $selection_filter = '';
$sql_conditions_tags = ''; $sql_conditions_tags = '';
$sql_tags_inner = ''; $sql_tags_inner = '';
@ -3524,6 +3527,23 @@ function select_modules_for_agent_group(
$filter_agent = ' AND tagente.id_agente IN ('.$agents.')'; $filter_agent = ' AND tagente.id_agente IN ('.$agents.')';
} }
if ($notStringModules === true) {
$filter_not_string_modules = sprintf(
' AND (tagente_modulo.id_tipo_modulo <> %d AND
tagente_modulo.id_tipo_modulo <> %d AND
tagente_modulo.id_tipo_modulo <> %d AND
tagente_modulo.id_tipo_modulo <> %d AND
tagente_modulo.id_tipo_modulo <> %d AND
tagente_modulo.id_tipo_modulo <> %d)',
MODULE_TYPE_GENERIC_DATA_STRING,
MODULE_TYPE_REMOTE_TCP_STRING,
MODULE_TYPE_REMOTE_SNMP_STRING,
MODULE_TYPE_ASYNC_STRING,
MODULE_TYPE_WEB_CONTENT_STRING,
MODULE_TYPE_REMOTE_CMD_STRING
);
}
if (!users_can_manage_group_all('AR')) { if (!users_can_manage_group_all('AR')) {
$group_string = implode(',', $groups); $group_string = implode(',', $groups);
$filter_agent_group = " AND ( $filter_agent_group = " AND (
@ -3567,6 +3587,7 @@ function select_modules_for_agent_group(
$filter_agent_group $filter_agent_group
$filter_group $filter_group
$filter_agent $filter_agent
$filter_not_string_modules
$sql_conditions_tags $sql_conditions_tags
) x ) x
GROUP BY nombre GROUP BY nombre

View File

@ -5608,7 +5608,9 @@ function html_print_input($data, $wrapper='div', $input_only=false)
0, 0,
$data['agent_ids'], $data['agent_ids'],
$data['selectionModules'], $data['selectionModules'],
true true,
false,
(isset($data['notStringModules']) === true && $data['notStringModules'] === true) ? true : false
); );
} }

View File

@ -3607,8 +3607,26 @@ function modules_get_agentmodule_mininterval_no_async($id_agent)
} }
function get_modules_agents($id_module_group, $id_agents, $selection, $select_mode=true, $useName=false) /**
{ * Get modules agents.
*
* @param integer $id_module_group ID module group.
* @param array $id_agents Array agents.
* @param boolean $selection Selection.
* @param boolean $select_mode Mode.
* @param boolean $useName Use name.
* @param boolean $notStringModules Not string modules.
*
* @return array Modules for this agents.
*/
function get_modules_agents(
$id_module_group,
$id_agents,
$selection,
$select_mode=true,
$useName=false,
$notStringModules=false
) {
if ((bool) is_metaconsole() === true) { if ((bool) is_metaconsole() === true) {
if ($select_mode === true) { if ($select_mode === true) {
$agents = array_reduce( $agents = array_reduce(
@ -3657,7 +3675,8 @@ function get_modules_agents($id_module_group, $id_agents, $selection, $select_mo
$selection, $selection,
false, false,
false, false,
true true,
$notStringModules
); );
metaconsole_restore_db(); metaconsole_restore_db();
@ -3744,7 +3763,10 @@ function get_modules_agents($id_module_group, $id_agents, $selection, $select_mo
$id_module_group, $id_module_group,
$id_agents, $id_agents,
$selection, $selection,
false false,
false,
false,
$notStringModules
); );
} }

View File

@ -1536,3 +1536,18 @@ function loadSliceWidget(settings) {
} }
}); });
} }
// eslint-disable-next-line no-unused-vars
function showManualThresholds(element) {
$("#min_warning").val(null);
$("#max_warning").val(null);
$("#min_critical").val(null);
$("#max_critical").val(null);
if ($(element).is(":checked") === true) {
$(".dashboard-input-threshold-warning").removeClass("invisible_important");
$(".dashboard-input-threshold-critical").removeClass("invisible_important");
} else {
$(".dashboard-input-threshold-warning").addClass("invisible_important");
$(".dashboard-input-threshold-critical").addClass("invisible_important");
}
}

View File

@ -253,6 +253,10 @@ class GroupedMeterGraphs extends Widget
$values['formatData'] = $decoder['formatData']; $values['formatData'] = $decoder['formatData'];
} }
if (isset($decoder['manualThresholds']) === true) {
$values['manualThresholds'] = $decoder['manualThresholds'];
}
$values['label'] = 'module'; $values['label'] = 'module';
if (isset($decoder['label']) === true) { if (isset($decoder['label']) === true) {
$values['label'] = $decoder['label']; $values['label'] = $decoder['label'];
@ -377,8 +381,25 @@ class GroupedMeterGraphs extends Widget
]; ];
// Format Data.
$inputs['inputs']['row1'][] = [ $inputs['inputs']['row1'][] = [
'class' => 'dashboard-input-threshold', 'label' => __('Manual thresholds'),
'arguments' => [
'name' => 'manualThresholds',
'id' => 'manualThresholds',
'type' => 'switch',
'value' => $values['manualThresholds'],
'onchange' => 'showManualThresholds(this)',
],
];
$class_invisible = '';
if ((bool) $values['manualThresholds'] !== true) {
$class_invisible = 'invisible_important';
}
$inputs['inputs']['row1'][] = [
'class' => 'dashboard-input-threshold dashboard-input-threshold-warning '.$class_invisible,
'direct' => 1, 'direct' => 1,
'block_content' => [ 'block_content' => [
[ [
@ -407,7 +428,7 @@ class GroupedMeterGraphs extends Widget
]; ];
$inputs['inputs']['row1'][] = [ $inputs['inputs']['row1'][] = [
'class' => 'dashboard-input-threshold', 'class' => 'dashboard-input-threshold dashboard-input-threshold-critical '.$class_invisible,
'direct' => 1, 'direct' => 1,
'block_content' => [ 'block_content' => [
[ [
@ -464,6 +485,7 @@ class GroupedMeterGraphs extends Widget
'selectionModulesNameId' => 'selectionGroupedMeterGraphs', 'selectionModulesNameId' => 'selectionGroupedMeterGraphs',
'modules_ids' => $values['moduleGroupedMeterGraphs'], 'modules_ids' => $values['moduleGroupedMeterGraphs'],
'modules_name' => 'moduleGroupedMeterGraphs[]', 'modules_name' => 'moduleGroupedMeterGraphs[]',
'notStringModules' => true,
], ],
]; ];
@ -522,6 +544,7 @@ class GroupedMeterGraphs extends Widget
$values['min_value'] = \get_parameter('min_value', null); $values['min_value'] = \get_parameter('min_value', null);
$values['max_value'] = \get_parameter('max_value', null); $values['max_value'] = \get_parameter('max_value', null);
$values['manualThresholds'] = \get_parameter_switch('manualThresholds', 0);
$values['min_critical'] = \get_parameter('min_critical', null); $values['min_critical'] = \get_parameter('min_critical', null);
$values['max_critical'] = \get_parameter('max_critical', null); $values['max_critical'] = \get_parameter('max_critical', null);
$values['min_warning'] = \get_parameter('min_warning', null); $values['min_warning'] = \get_parameter('min_warning', null);
@ -792,7 +815,7 @@ class GroupedMeterGraphs extends Widget
); );
} }
$module_data = $this->getBoxPercentageMaths($max, $min, $data['data']); $module_data = $this->getBoxPercentageMaths($max, $min, (float) $data['data']);
$output = ''; $output = '';
$output .= '<div class="container-info-module-meter">'; $output .= '<div class="container-info-module-meter">';
@ -954,6 +977,10 @@ class GroupedMeterGraphs extends Widget
float $min, float $min,
float $value float $value
):float { ):float {
if ($min === 0.00 && $max === 0.00) {
return 0;
}
return (((($value - $min) / ($max - $min))) * $this->boxNumber); return (((($value - $min) / ($max - $min))) * $this->boxNumber);
} }
@ -1021,7 +1048,7 @@ class GroupedMeterGraphs extends Widget
{ {
$size = [ $size = [
'width' => (is_metaconsole() === true) ? 1000 : 900, 'width' => (is_metaconsole() === true) ? 1000 : 900,
'height' => 480, 'height' => 550,
]; ];
return $size; return $size;

View File

@ -683,6 +683,7 @@ form.modal-dashboard
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 98%; width: 98%;
margin-top: 10px;
} }
.container-grouped-meter .container-info-module-meter { .container-grouped-meter .container-info-module-meter {
display: flex; display: flex;