Add new input linked visual console

This commit is contained in:
Daniel Barbero Martin 2020-01-07 12:00:39 +01:00
parent 04d39a0f70
commit 4813bef53e
12 changed files with 356 additions and 63 deletions

View File

@ -262,57 +262,7 @@ if ($getVisualConsole === true) {
echo json_encode($result);
return;
} else if ($getAllVisualConsole === true) {
// Extract all VC except own.
$result = db_get_all_rows_filter(
'tlayout',
'id != '.(int) $visualConsole,
[
'id',
'name',
]
);
// Extract all VC for each node.
if (is_metaconsole() === true) {
enterprise_include_once('include/functions_metaconsole.php');
$meta_servers = metaconsole_get_servers();
foreach ($meta_servers as $server) {
if (metaconsole_load_external_db($server) !== NOERR) {
metaconsole_restore_db();
continue;
}
$node_visual_maps = db_get_all_rows_filter(
'tlayout',
[],
[
'id',
'name',
]
);
if (isset($node_visual_maps) === true
&& is_array($node_visual_maps) === true
) {
foreach ($node_visual_maps as $node_visual_map) {
// Add nodeID.
$node_visual_map['nodeId'] = (int) $server['id'];
// Name = vc_name - (node).
$node_visual_map['name'] = $node_visual_map['name'];
$node_visual_map['name'] .= ' - (';
$node_visual_map['name'] .= $server['server_name'].')';
$result[] = $node_visual_map;
}
}
metaconsole_restore_db();
}
}
echo json_encode(io_safe_output($result));
return;
// TODO: Remove.
} else if ($getImagesVisualConsole) {
// TODO: Remove.
} else if ($autocompleteAgentsVisualConsole) {

View File

@ -1912,6 +1912,14 @@ class Item extends CachedModel
break;
case 'general':
$inputs[] = [
'arguments' => [
'type' => 'hidden',
'name' => 'tabGeneral',
'value' => true,
],
];
// Size.
$inputs[] = [
'block_id' => 'size-item',
@ -2100,4 +2108,203 @@ class Item extends CachedModel
}
/**
* Get all VC except own.
*
* @param integer $id Id Visual Console.
*
* @return array Array all VCs.
*/
public function getAllVisualConsole(int $id):array
{
// Extract all VC except own.
$result = db_get_all_rows_filter(
'tlayout',
'id != '.(int) $id,
[
'id',
'name',
]
);
// Extract all VC for each node.
if (is_metaconsole() === true) {
enterprise_include_once('include/functions_metaconsole.php');
$meta_servers = metaconsole_get_servers();
foreach ($meta_servers as $server) {
if (metaconsole_load_external_db($server) !== NOERR) {
metaconsole_restore_db();
continue;
}
$node_visual_maps = db_get_all_rows_filter(
'tlayout',
[],
[
'id',
'name',
]
);
if (isset($node_visual_maps) === true
&& is_array($node_visual_maps) === true
) {
foreach ($node_visual_maps as $node_visual_map) {
// Add nodeID.
$node_visual_map['nodeId'] = (int) $server['id'];
// Name = vc_name - (node).
$node_visual_map['name'] = $node_visual_map['name'];
$node_visual_map['name'] .= ' - (';
$node_visual_map['name'] .= $server['server_name'].')';
$result[] = $node_visual_map;
}
}
metaconsole_restore_db();
}
}
if ($result === false && $result === '') {
$result = [];
}
return $result;
}
/**
* Inputs for Linked Visual Console.
*
* @param array $values Array values item.
*
* @return array Inputs.
*/
public function inputsLinkedVisualConsole(array $values):array
{
// LinkConsoleInputGroup.
$fields = self::getAllVisualConsole($values['vCId']);
\array_unshift($fields, ['id' => 0, 'name' => __('None')]);
$getAllVisualConsoleValue = $values['linkedLayoutId'];
if (\is_metaconsole() === true) {
$getAllVisualConsoleValue = $values['linkedLayoutId'];
$getAllVisualConsoleValue .= '|';
$getAllVisualConsoleValue .= $values['linkedLayoutNodeId'];
}
$inputs[] = [
'label' => __('Linked visual console'),
'arguments' => [
'type' => 'select',
'fields' => $fields,
'name' => 'getAllVisualConsole',
'selected' => $getAllVisualConsoleValue,
'script' => 'linkedVisualConsoleChange()',
'return' => true,
],
];
$inputs[] = [
'arguments' => [
'type' => 'hidden',
'name' => 'linkedLayoutId',
'value' => $values['linkedLayoutId'],
],
];
$inputs[] = [
'arguments' => [
'type' => 'hidden',
'name' => 'linkedLayoutNodeId',
'value' => $values['linkedLayoutNodeId'],
],
];
// Initial hidden.
$hiddenType = true;
$hiddenWeight = true;
$hiddenCritical = true;
$hiddenWarning = true;
if (isset($values['linkedLayoutId']) === true
&& $values['linkedLayoutId'] !== 0
) {
$hiddenType = false;
if ($values['linkedLayoutStatusType'] === 'service') {
$hiddenCritical = false;
$hiddenWarning = false;
}
if ($values['linkedLayoutStatusType'] === 'weight') {
$hiddenWeight = false;
}
}
// Type of the status calculation of the linked visual console.
$fields = [
'default' => __('By default'),
'weight' => __('By status weight'),
'service' => __('By critical elements'),
];
$inputs[] = [
'id' => 'li-linkedLayoutStatusType',
'hidden' => $hiddenType,
'label' => __(
'Type of the status calculation of the linked visual console'
),
'arguments' => [
'type' => 'select',
'fields' => $fields,
'name' => 'linkedLayoutStatusType',
'selected' => $values['linkedLayoutStatusType'],
'script' => 'linkedVisualConsoleTypeChange()',
'return' => true,
],
];
// Linked visual console weight.
$inputs[] = [
'id' => 'li-linkedLayoutStatusTypeWeight',
'hidden' => $hiddenWeight,
'label' => __('Linked visual console weight'),
'arguments' => [
'name' => 'linkedLayoutStatusTypeWeight',
'type' => 'number',
'value' => $values['linkedLayoutStatusTypeWeight'],
'return' => true,
],
];
// Critical weight.
$inputs[] = [
'id' => 'li-linkedLayoutStatusTypeCriticalThreshold',
'hidden' => $hiddenCritical,
'label' => __('Critical weight'),
'arguments' => [
'name' => 'linkedLayoutStatusTypeCriticalThreshold',
'type' => 'number',
'value' => $values['linkedLayoutStatusTypeCriticalThreshold'],
'return' => true,
],
];
// Warning weight.
$inputs[] = [
'id' => 'li-linkedLayoutStatusTypeWarningThreshold',
'hidden' => $hiddenWarning,
'label' => __('Warning weight'),
'arguments' => [
'name' => 'linkedLayoutStatusTypeWarningThreshold',
'type' => 'number',
'value' => $values['linkedLayoutStatusTypeWarningThreshold'],
'return' => true,
],
];
return $inputs;
}
}

View File

@ -254,7 +254,13 @@ final class DonutGraph extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -230,7 +230,13 @@ final class EventsHistory extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup.
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -492,7 +492,13 @@ final class Group extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -163,7 +163,13 @@ final class Icon extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -466,7 +466,13 @@ final class ModuleGraph extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -576,7 +576,13 @@ final class Percentile extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -369,7 +369,13 @@ final class SimpleValue extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -307,7 +307,13 @@ final class StaticGraph extends Item
],
];
// TODO:XXXX LinkConsoleInputGroup
// Inputs LinkedVisualConsole.
$inputsLinkedVisualConsole = self::inputsLinkedVisualConsole(
$values
);
foreach ($inputsLinkedVisualConsole as $key => $value) {
$inputs[] = $value;
}
}
return $inputs;

View File

@ -44,7 +44,6 @@ class View extends \HTML
public function loadTabs()
{
$type = (int) \get_parameter('type', 0);
hd($type, true);
$itemId = (int) \get_parameter('itemId', 0);
$vCId = (int) \get_parameter('vCId', 0);
// TODO:XXX;
@ -159,9 +158,12 @@ class View extends \HTML
$values = $item->toArray();
} else {
$values['type'] = $type;
$values['isLinkEnabled'] = true;
$values['isOnTop'] = true;
}
$values['tabSelected'] = $tabSelected;
$values['vCId'] = $vCId;
// Retrieve inputs.
$inputs = $itemClass::getFormInputs($values);
@ -193,6 +195,59 @@ class View extends \HTML
$('#MGcustomGraph').show();
}
}";
$jsforms .= 'function linkedVisualConsoleChange(){
$("#li-linkedLayoutStatusType").removeClass("hidden");
if ($("#getAllVisualConsole :selected").val() != 0) {
$("#li-linkedLayoutStatusType").show();
} else {
$("#li-linkedLayoutStatusType").hide();
$("#li-linkedLayoutStatusTypeWeight").removeClass("hidden");
$("#li-linkedLayoutStatusTypeCriticalThreshold")
.removeClass("hidden");
$("#li-linkedLayoutStatusTypeWarningThreshold")
.removeClass("hidden");
$("#li-linkedLayoutStatusTypeCriticalThreshold").hide();
$("#li-linkedLayoutStatusTypeWarningThreshold").hide();
$("#li-linkedLayoutStatusTypeWeight").hide();
}
var linkedLayoutExtract = $("#getAllVisualConsole :selected")
.val()
.split("|");
var linkedLayoutNodeId = 0;
var linkedLayoutId = 0;
if (linkedLayoutExtract instanceof Array) {
linkedLayoutId = (linkedLayoutExtract[0]) ? linkedLayoutExtract[0] : 0;
linkedLayoutNodeId = (linkedLayoutExtract[1]) ? linkedLayoutExtract[1] : 0;
}
$("#hidden-linkedLayoutId").val(linkedLayoutId);
$("#hidden-linkedLayoutNodeId").val(linkedLayoutNodeId);
}';
$jsforms .= 'function linkedVisualConsoleTypeChange(){
$("#li-linkedLayoutStatusTypeWeight").removeClass("hidden");
$("#li-linkedLayoutStatusTypeCriticalThreshold")
.removeClass("hidden");
$("#li-linkedLayoutStatusTypeWarningThreshold")
.removeClass("hidden");
if ($("#linkedLayoutStatusType :selected").val() == "service") {
$("#li-linkedLayoutStatusTypeCriticalThreshold").show();
$("#li-linkedLayoutStatusTypeWarningThreshold").show();
$("#li-linkedLayoutStatusTypeWeight").hide();
} else if ($("#linkedLayoutStatusType :selected").val() == "weight") {
$("#li-linkedLayoutStatusTypeCriticalThreshold").hide();
$("#li-linkedLayoutStatusTypeWarningThreshold").hide();
$("#li-linkedLayoutStatusTypeWeight").show();
} else {
$("#li-linkedLayoutStatusTypeCriticalThreshold").hide();
$("#li-linkedLayoutStatusTypeWarningThreshold").hide();
$("#li-linkedLayoutStatusTypeWeight").hide();
}
}';
$jsforms .= '</script>';
return $form.$jsforms;
@ -222,12 +277,22 @@ class View extends \HTML
$data['label'] = \get_parameter('label');
// Page general for each item.
$tabGeneral = (bool) \get_parameter('tabGeneral', false);
$data['width'] = \get_parameter('width');
$data['height'] = \get_parameter('height');
$data['x'] = \get_parameter('x');
$data['y'] = \get_parameter('y');
$data['isLinkEnabled'] = \get_parameter_switch('isLinkEnabled', 0);
$data['isOnTop'] = \get_parameter_switch('isOnTop', 0);
if ($tabGeneral === true) {
$data['isLinkEnabled'] = \get_parameter_switch('isLinkEnabled');
$data['isOnTop'] = \get_parameter_switch('isOnTop');
} else {
if ($itemId === 0) {
$data['isLinkEnabled'] = true;
$data['isOnTop'] = true;
}
}
$data['parentId'] = \get_parameter('parentId');
$data['aclGroupId'] = \get_parameter('aclGroupId');
$data['cacheExpiration_select'] = \get_parameter(
@ -239,6 +304,29 @@ class View extends \HTML
'cacheExpiration_units'
);
// Linked other VC.
$data['linkedLayoutId'] = \get_parameter(
'linkedLayoutId',
0
);
$data['linkedLayoutNodeId'] = \get_parameter(
'linkedLayoutNodeId',
0
);
$data['linkedLayoutStatusType'] = \get_parameter(
'linkedLayoutStatusType',
'default'
);
$data['linkedLayoutStatusTypeWeight'] = \get_parameter(
'linkedLayoutStatusTypeWeight'
);
$data['linkedLayoutStatusTypeCriticalThreshold'] = \get_parameter(
'linkedLayoutStatusTypeCriticalThreshold'
);
$data['linkedLayoutStatusTypeWarningThreshold'] = \get_parameter(
'linkedLayoutStatusTypeWarningThreshold'
);
// Page specific data for each item.
switch ($type) {
case STATIC_GRAPH:

View File

@ -477,7 +477,7 @@ export class LinkConsoleInputGroup extends InputGroup<
// Create Principal element label - select.
const linkConsoleLabel = document.createElement("label");
linkConsoleLabel.textContent = t("Linked visual console ");
linkConsoleLabel.textContent = t("Linked visual console");
// Create element Spinner.
const spinner = fontAwesomeIcon(faCircleNotch, t("Spinner"), {