diff --git a/pandora_console/include/class/NetworkMap.class.php b/pandora_console/include/class/NetworkMap.class.php
index 4656ad39f4..7829610a60 100644
--- a/pandora_console/include/class/NetworkMap.class.php
+++ b/pandora_console/include/class/NetworkMap.class.php
@@ -1727,7 +1727,10 @@ class NetworkMap
$item['image_height'] = 0;
if (empty($node['style']['image']) === false) {
$item['image_url'] = ui_get_full_url(
- $node['style']['image']
+ $node['style']['image'],
+ false,
+ false,
+ false
);
$image_size = getimagesize(
$config['homedir'].'/'.$node['style']['image']
@@ -3391,7 +3394,7 @@ class NetworkMap
&& isset($this->useTooltipster)
&& $this->useTooltipster == true
) {
- $output .= '';
$output .= '';
+ $output .= '';
+
if (isset($this->map['__simulated']) === false) {
// Load context menu if manageable networkmap.
- $output .= '';
+ $output .= '';
}
- $output .= '';
+ $output .= '';
// Open networkconsole_id div.
$output .= '
$server) {
+ $connection = metaconsole_get_connection($server);
+ if (metaconsole_connect($connection) != NOERR) {
+ continue;
+ }
+
+ $tmp_maps = db_get_all_rows_filter('tmap', $where);
+ if ($tmp_maps !== false) {
+ foreach ($tmp_maps as $g) {
+ $g['id_t'] = $g['id'];
+ $g['id'] = $connection['id'].'_'.$g['id'];
+ $g['name'] = $g['name'].' ('.$connection['server_name'].')';
+ $networkmaps_raw[] = $g;
+ }
+ }
+
+ metaconsole_restore_db();
+ }
+ } else {
+ $networkmaps_raw = db_get_all_rows_filter('tmap', $where);
+ }
+
if (empty($networkmaps_raw)) {
return [];
}
diff --git a/pandora_console/include/graphs/functions_d3.php b/pandora_console/include/graphs/functions_d3.php
index fc7dab4d7f..abba81ea72 100644
--- a/pandora_console/include/graphs/functions_d3.php
+++ b/pandora_console/include/graphs/functions_d3.php
@@ -22,15 +22,30 @@ function include_javascript_d3($return=false)
$is_include_javascript = true;
$output .= '';
$output .= '';
$output .= '';
}
diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js
index 14a9461998..a322dbe4d7 100644
--- a/pandora_console/include/javascript/pandora_dashboards.js
+++ b/pandora_console/include/javascript/pandora_dashboards.js
@@ -782,7 +782,8 @@ function dashboardLoadNetworkMap(settings) {
auth_class: settings.auth_class,
auth_hash: settings.auth_hash,
id_user: settings.id_user,
- ignore_acl: 1
+ ignore_acl: 1,
+ node: settings.node
},
dataType: "html",
success: function(data) {
diff --git a/pandora_console/include/lib/Dashboard/Widgets/network_map.php b/pandora_console/include/lib/Dashboard/Widgets/network_map.php
index 2856ba2d08..4733bd73b6 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/network_map.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/network_map.php
@@ -203,6 +203,10 @@ class NetworkMapWidget extends Widget
$values['networkmapId'] = $decoder['networkmaps'];
}
+ if (isset($decoder['node']) === true) {
+ $values['node'] = $decoder['node'];
+ }
+
if (isset($decoder['networkmapId']) === true) {
$values['networkmapId'] = $decoder['networkmapId'];
}
@@ -268,14 +272,44 @@ class NetworkMapWidget extends Widget
$return_all_group = true;
}
+ // Selected.
+ $selected = $values['networkmapId'];
+ if ((bool) is_metaconsole() === true) {
+ $selected = $values['node'].'_'.$values['networkmapId'];
+ } else {
+ $selected = $values['networkmapId'];
+ }
+
// Map.
- $fields = \networkmap_get_networkmaps(null, null, true, false, $return_all_group);
+ $fields = \networkmap_get_networkmaps(
+ null,
+ null,
+ true,
+ false,
+ $return_all_group
+ );
- // If currently selected networkmap is not included in fields array (it belongs to a group over which user has no permissions), then add it to fields array.
- if ($values['networkmapId'] !== null && !array_key_exists($values['networkmapId'], $fields)) {
- $selected_networkmap = db_get_row('tmap', 'id', $values['networkmapId']);
+ // If currently selected networkmap is not included in fields array
+ // (it belongs to a group over which user has no permissions), then add
+ // it to fields array.
+ if ($values['networkmapId'] !== null
+ && array_key_exists($selected, $fields) === false
+ ) {
+ if ((bool) is_metaconsole() === true) {
+ metaconsole_connect(null, $values['nodeId']);
+ }
- $fields[$values['networkmapId']] = $selected_networkmap;
+ $selected_networkmap = db_get_value(
+ 'id',
+ 'tmap',
+ $values['networkmapId']
+ );
+
+ $fields[$selected] = $selected_networkmap;
+
+ if ((bool) is_metaconsole() === true) {
+ metaconsole_restore_db();
+ }
}
$inputs[] = [
@@ -358,7 +392,18 @@ class NetworkMapWidget extends Widget
// Retrieve global - common inputs.
$values = parent::getPost();
- $values['networkmapId'] = \get_parameter('networkmapId', 0);
+ $nmId = \get_parameter('networkmapId', null);
+
+ if ($nmId !== null) {
+ if ((bool) is_metaconsole() === true) {
+ $mc_stuff = explode('_', $nmId);
+ $values['node'] = $mc_stuff[0];
+ $values['networkmapId'] = $mc_stuff[1];
+ } else {
+ $values['networkmapId'] = $nmId;
+ }
+ }
+
$values['xOffset'] = \get_parameter('xOffset', 0);
$values['yOffset'] = \get_parameter('yOffset', 0);
$values['zoomLevel'] = (float) \get_parameter('zoomLevel', 0.5);
@@ -382,8 +427,9 @@ class NetworkMapWidget extends Widget
$x_offset = $this->values['xOffset'];
$y_offset = $this->values['yOffset'];
$zoom_dash = $this->values['zoomLevel'];
+ $node = ($this->values['node'] ?? '');
- $hash = md5($config['dbpass'].$id_networkmap.$config['id_user']);
+ $hash = md5($config['dbpass'].$id_networkmap.$config['id_user'].$node);
$style = 'width:'.$size['width'].'px; height:'.$size['height'].'px;';
$id = 'body_cell-'.$this->cellId;
@@ -401,6 +447,7 @@ class NetworkMapWidget extends Widget
'id_user' => $config['id_user'],
'auth_class' => 'PandoraFMS\Dashboard\Manager',
'auth_hash' => Manager::generatePublicHash(),
+ 'node' => $node,
]
);
diff --git a/pandora_console/include/styles/meta_dashboards.css b/pandora_console/include/styles/meta_dashboards.css
index c04ed2137b..1b24b3bce5 100644
--- a/pandora_console/include/styles/meta_dashboards.css
+++ b/pandora_console/include/styles/meta_dashboards.css
@@ -2,3 +2,23 @@ div#page {
width: 90% !important;
margin: 0 auto;
}
+
+.networkconsole {
+ height: 100%;
+}
+
+.networkconsole svg {
+ height: 100%;
+}
+.minimap {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ border: 1px solid #bbbbbb;
+}
+.holding_networkmap {
+ display: none;
+ position: absolute;
+ right: 50px;
+ top: 20px;
+}
diff --git a/pandora_console/operation/dashboard/dashboard.php b/pandora_console/operation/dashboard/dashboard.php
index 4408c83d9c..3b081cfc7a 100644
--- a/pandora_console/operation/dashboard/dashboard.php
+++ b/pandora_console/operation/dashboard/dashboard.php
@@ -34,7 +34,7 @@ require $config['homedir'].'/vendor/autoload.php';
use PandoraFMS\Dashboard\Manager;
if ((bool) is_metaconsole() === true) {
- ui_require_css_file('meta_dashboards.css');
+ ui_require_css_file('meta_dashboards');
}
$ajaxPage = 'operation/dashboard/dashboard';