diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php index 3759256968..24ac906ebe 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php @@ -144,13 +144,16 @@ final class Group extends Item global $config; include_once $config['homedir'].'/include/functions_groups.php'; include_once $config['homedir'].'/include/functions_visual_map.php'; + include_once $config['homedir'].'/include/functions_ui.php'; // Get the status img src. $groupId = static::extractGroupId($data); $status = \groups_get_status($groupId); - $data['statusImageSrc'] = \visual_map_get_image_status_element( - $data, - $status + $data['statusImageSrc'] = \ui_get_full_url( + \visual_map_get_image_status_element( + $data, + $status + ) ); return $data; diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Icon.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Icon.php index 0b8f2c4115..5d9814af64 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/Icon.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Icon.php @@ -33,11 +33,38 @@ final class Icon extends Item { $return = parent::decode($data); $return['type'] = ICON; - $return['imageSrc'] = $this->extractImageSrc($data); + $return['image'] = static::extractImage($data); + $return['imageSrc'] = static::extractImageSrc($data); return $return; } + /** + * Extract a image value. + * + * @param array $data Unknown input data structure. + * + * @return mixed String representing the image url (not empty) or null. + * + * @throws \InvalidArgumentException When a valid image can't be found. + */ + private static function extractImage(array $data) + { + $image = static::notEmptyStringOr( + static::issetInArray($data, ['image']), + null + ); + + if ($image === null) { + throw new \InvalidArgumentException( + 'the image property is required and should be a non empty string' + ); + } + + return $image; + } + + /** * Extract a image src value. * @@ -47,20 +74,49 @@ final class Icon extends Item * * @throws \InvalidArgumentException When a valid image src can't be found. */ - private function extractImageSrc(array $data) + private static function extractImageSrc(array $data) { - $imageSrc = static::notEmptyStringOr( - static::issetInArray($data, ['imageSrc', 'image']), + return static::notEmptyStringOr( + static::issetInArray($data, ['imageSrc']), null ); + } - if ($imageSrc === null || \strlen($imageSrc) === 0) { - throw new \InvalidArgumentException( - 'the image src property is required and should be a non empty string' - ); - } - return 'images/console/icons/'.$imageSrc.'.png'; + // 'images/console/icons/'.$imageSrc.'.png' + + + /** + * Fetch a vc item data structure from the database using a filter. + * + * @param array $filter Filter of the Visual Console Item. + * + * @return array The Visual Console Item data structure stored into the DB. + * @throws \InvalidArgumentException When an agent Id cannot be found. + * + * @override Item::fetchDataFromDB. + */ + protected static function fetchDataFromDB(array $filter): array + { + // Due to this DB call, this function cannot be unit tested without + // a proper mock. + $data = parent::fetchDataFromDB($filter); + + /* + * Retrieve extra data. + */ + + // Load side libraries. + global $config; + include_once $config['homedir'].'/include/functions_ui.php'; + include_once $config['homedir'].'/include/functions_visual_map.php'; + + // Get the img src. + $data['imageSrc'] = \ui_get_full_url( + \visual_map_get_image_status_element($data) + ); + + return $data; } diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/StaticGraph.php b/pandora_console/include/rest-api/models/VisualConsole/Items/StaticGraph.php index 65aaac3d6a..8611b14ce9 100644 --- a/pandora_console/include/rest-api/models/VisualConsole/Items/StaticGraph.php +++ b/pandora_console/include/rest-api/models/VisualConsole/Items/StaticGraph.php @@ -149,6 +149,7 @@ final class StaticGraph extends Item // Load side libraries. global $config; + include_once $config['homedir'].'/include/functions_ui.php'; include_once $config['homedir'].'/include/functions_visual_map.php'; // Get the linked module Id. @@ -176,17 +177,15 @@ final class StaticGraph extends Item } // Get the img src. - $data['statusImageSrc'] = \visual_map_get_image_status_element($data); + $data['statusImageSrc'] = \ui_get_full_url( + \visual_map_get_image_status_element($data) + ); // Get last value. if (isset($data['show_last_value']) && $data['show_last_value'] !== 2) { $img_style_title = ''; - $unit_text = \trim( - \io_safe_output( - \modules_get_unit($moduleId) - ) - ); + $unit_text = \trim(\io_safe_output(\modules_get_unit($moduleId))); $value = \modules_get_last_value($moduleId); diff --git a/pandora_console/operation/visual_console/public_view.php b/pandora_console/operation/visual_console/public_view.php index 82024c3025..86f291f91c 100644 --- a/pandora_console/operation/visual_console/public_view.php +++ b/pandora_console/operation/visual_console/public_view.php @@ -77,36 +77,6 @@ try { $visualConsoleData = $visualConsole->toArray(); $visualConsoleName = $visualConsoleData['name']; -// TODO: Extract to a function. -$baseUrl = ui_get_full_url(false, false, false, false); -$vcClientPath = 'include/visual-console-client'; -$dir = $config['homedir'].'/'.$vcClientPath; -if (is_dir($dir)) { - $dh = opendir($dir); - if ($dh) { - while (($file = readdir($dh)) !== false) { - if ($file === '.' || $file === '..') { - continue; - } - - preg_match('/.*.js$/', $file, $match, PREG_OFFSET_CAPTURE); - if (empty($match) === false) { - $url = $baseUrl.$vcClientPath.'/'.$match[0][0]; - echo ''; - continue; - } - - preg_match('/.*.css$/', $file, $match, PREG_OFFSET_CAPTURE); - if (empty($match) === false) { - $url = $baseUrl.$vcClientPath.'/'.$match[0][0]; - echo ''; - } - } - - closedir($dh); - } -} - echo '
'; // Floating menu - Start. @@ -141,6 +111,7 @@ echo ''; $visualConsoleItems = VisualConsole::getItemsFromDB($visualConsoleId); ui_require_javascript_file('pandora_visual_console'); +visual_map_load_client_resources(); ?>