h.last_time_up OR h.last_time_up IS NULL)
+ LEFT JOIN `:dbstg`.mod_open_tickets_data tickets_data
+ ON tickets_data.ticket_id = tickets.ticket_id
+ WHERE r.resource_id IN ({$bindQuery})
+ AND tickets.timestamp IS NOT NULL;
+ SQL;
+
+ $statement = $this->db->prepare($this->translateDbName($request));
+ $statement->bindValue(':macroName', $macroName, \PDO::PARAM_STR);
+
+ foreach ($bindValues as $key => $value) {
+ $statement->bindValue($key, $value, \PDO::PARAM_INT);
+ }
+
+ $statement->setFetchMode(\PDO::FETCH_ASSOC);
+ $statement->execute();
+
+ $tickets = [];
+ while (($record = $statement->fetch(\PDO::FETCH_ASSOC)) !== false) {
+ /**
+ * @var _TicketData $record
+ */
+ $tickets[(int) $record['resource_id']] = [
+ 'id' => (int) $record['ticket_value'],
+ 'subject' => $record['subject'],
+ 'created_at' => (new \DateTimeImmutable())->setTimestamp((int) $record['timestamp'])
+ ];
+ }
+
+ return $tickets;
+ }
+
+ /**
+ * Get the name of the macro configured for the given rule ID.
+ *
+ * @param int $ruleId
+ *
+ * @return string
+ */
+ private function getMacroNameFromRuleId(int $ruleId): ?string
+ {
+ $request = <<<'SQL'
+ SELECT `value` FROM `:db`.mod_open_tickets_form_value WHERE rule_id = :ruleId AND uniq_id = 'macro_ticket_id';
+ SQL;
+
+ $statement = $this->db->prepare($this->translateDbName($request));
+ $statement->bindValue(':ruleId', $ruleId, \PDO::PARAM_INT);
+ $statement->setFetchMode(\PDO::FETCH_ASSOC);
+ $statement->execute();
+
+ /** @var string|null|false $result */
+ $result = $statement->fetchColumn();
+
+ return $result !== false ? $result : null;
+ }
+}
diff --git a/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Application/UseCase/FindProviders/FindProvidersTest.php b/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Application/UseCase/FindProviders/FindProvidersTest.php
new file mode 100644
index 0000000000..79ba03ed70
--- /dev/null
+++ b/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Application/UseCase/FindProviders/FindProvidersTest.php
@@ -0,0 +1,125 @@
+useCase = new FindProviders(
+ contact: $this->contact = $this->createMock(ContactInterface::class),
+ requestParameters: $this->requestParameters = $this->createMock(RequestParametersInterface::class),
+ repository: $this->repository = $this->createMock(ReadProviderRepositoryInterface::class)
+ );
+
+ $this->presenter = new FindProvidersPresenterStub($this->createMock(PresenterFormatterInterface::class));
+});
+
+it('should present a Forbidden response when user does not have sufficient rights (missing page access)', function (): void {
+ $this->contact
+ ->expects($this->once())
+ ->method('hasTopologyRole')
+ ->willReturn(false);
+
+ ($this->useCase)($this->presenter);
+
+ expect($this->presenter->response)
+ ->toBeInstanceOf(ForbiddenResponse::class)
+ ->and($this->presenter->response->getMessage())
+ ->toBe(ProviderException::listingNotAllowed()->getMessage());
+});
+
+it('should present an ErrorResponse when an exception occurs for ticket provider search', function (): void {
+ $this->contact
+ ->expects($this->once())
+ ->method('hasTopologyRole')
+ ->willReturn(true);
+
+ $exception = new \Exception();
+ $this->repository
+ ->expects($this->once())
+ ->method('findAll')
+ ->willThrowException($exception);
+
+ ($this->useCase)($this->presenter);
+ expect($this->presenter->response)
+ ->toBeInstanceOf(ErrorResponse::class)
+ ->and($this->presenter->response->getMessage())
+ ->toBe(ProviderException::errorWhileListingProviders()->getMessage());
+});
+
+it('should present an ErrorResponse when an error occurs concerning the request parameters', function (): void {
+ $this->contact
+ ->expects($this->once())
+ ->method('hasTopologyRole')
+ ->willReturn(true);
+
+ $this->repository
+ ->expects($this->once())
+ ->method('findAll')
+ ->willThrowException(new RequestParametersTranslatorException());
+
+ ($this->useCase)($this->presenter);
+ expect($this->presenter->response)
+ ->toBeInstanceOf(ErrorResponse::class);
+});
+
+it('should present a FindProvidersResponse when everything goes well', function (): void {
+ $this->contact
+ ->expects($this->once())
+ ->method('hasTopologyRole')
+ ->willReturn(true);
+
+ $provider = new Provider(
+ id: 1,
+ name: 'glpi',
+ type: ProviderType::GlpiRestApi,
+ isActivated: true
+ );
+
+ $this->repository
+ ->expects($this->once())
+ ->method('findAll')
+ ->willReturn([$provider]);
+
+ ($this->useCase)($this->presenter);
+ $response = $this->presenter->response;
+ expect($response)
+ ->toBeInstanceOf(FindProvidersResponse::class)
+ ->and($response->providers[0]->id)->toBe($provider->getId())
+ ->and($response->providers[0]->name)->toBe($provider->getName())
+ ->and($response->providers[0]->type)->toBe($provider->getType())
+ ->and($response->providers[0]->isActivated)->toBe($provider->isActivated());
+});
diff --git a/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Infrastructure/API/FindProviders/FindProvidersPresenterStub.php b/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Infrastructure/API/FindProviders/FindProvidersPresenterStub.php
new file mode 100644
index 0000000000..45c4efa3dc
--- /dev/null
+++ b/centreon-open-tickets/tests/php/CentreonOpenTickets/Providers/Infrastructure/API/FindProviders/FindProvidersPresenterStub.php
@@ -0,0 +1,42 @@
+response = $response;
+ }
+}
diff --git a/centreon-open-tickets/widgets/open-tickets/configs.xml b/centreon-open-tickets/widgets/open-tickets/configs.xml
index 8ccf27aa90..5df64c42dd 100644
--- a/centreon-open-tickets/widgets/open-tickets/configs.xml
+++ b/centreon-open-tickets/widgets/open-tickets/configs.xml
@@ -4,7 +4,7 @@
contact@centreon.com
http://www.centreon.com
This widget is associated to the Open Tickets Module and allows for selecting hosts or services events for which to create tickets in your favorite ITSM tools. This widget can also list already created tickets with their ID and datetime.
- 24.05.0
+ 24.07.0
centreon, widget, tickets
./widgets/open-tickets/resources/centreon-logo.png
diff --git a/centreon-open-tickets/widgets/open-tickets/src/index.php b/centreon-open-tickets/widgets/open-tickets/src/index.php
index 55358d4e18..7dcfbdb522 100644
--- a/centreon-open-tickets/widgets/open-tickets/src/index.php
+++ b/centreon-open-tickets/widgets/open-tickets/src/index.php
@@ -568,6 +568,20 @@
);
$data[$row['host_id'] . "_" . $row['service_id']]['ticket_subject'] = $row['service_ticket_subject'];
}
+
+ $kernel = \App\Kernel::createForWeb();
+ $resourceController = $kernel->getContainer()->get(
+ \Centreon\Application\Controller\MonitoringResourceController::class
+ );
+
+ $data[$row['host_id'] . '_' . $row['service_id']]['h_details_uri'] = $useDeprecatedPages
+ ? '../../main.php?p=0202&o=hd&host_name=' . $row['hostname']
+ : $resourceController->buildHostDetailsUri($row['host_id']);
+
+ $data[$row['host_id'] . '_' . $row['service_id']]['s_details_uri'] = $useDeprecatedPages
+ ? '../../main.php?p=0202&o=hd&host_name=' . $row['hostname']
+ . '&service_description=' . $row['description']
+ : $resourceController->buildServiceDetailsUri($row['host_id'], $row['service_id']);
}
$template->assign('widgetId', $widgetId);
diff --git a/centreon-open-tickets/widgets/open-tickets/src/templates/table.ihtml b/centreon-open-tickets/widgets/open-tickets/src/templates/table.ihtml
index 8b26fb5811..47ca54c135 100644
--- a/centreon-open-tickets/widgets/open-tickets/src/templates/table.ihtml
+++ b/centreon-open-tickets/widgets/open-tickets/src/templates/table.ihtml
@@ -49,7 +49,7 @@
{/if}
- {$elem.hostname}
+ {$elem.hostname}
@@ -79,7 +79,7 @@
{if $preferences.display_status == 0}
{/if}
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/conf.php b/centreon-open-tickets/www/modules/centreon-open-tickets/conf.php
index b18bfabcbc..b3154570ea 100644
--- a/centreon-open-tickets/www/modules/centreon-open-tickets/conf.php
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/conf.php
@@ -22,7 +22,7 @@
$module_conf['centreon-open-tickets']["rname"] = "Centreon Open Tickets";
$module_conf['centreon-open-tickets']["name"] = "centreon-open-tickets";
-$module_conf['centreon-open-tickets']["mod_release"] = "24.05.0";
+$module_conf['centreon-open-tickets']["mod_release"] = "24.09.0";
$module_conf['centreon-open-tickets']["infos"] = "Centreon Open Tickets is a community module developed to " .
"create tickets to your favorite ITSM tools using API.
@@ -37,7 +37,7 @@
$module_conf['centreon-open-tickets']["is_removeable"] = "1";
$module_conf['centreon-open-tickets']["author"] = "Centreon";
$module_conf['centreon-open-tickets']["stability"] = "stable";
-$module_conf['centreon-open-tickets']["last_update"] = "2024-04-12";
+$module_conf['centreon-open-tickets']["last_update"] = "2024-08-27";
$module_conf['centreon-open-tickets']["release_note"] =
"https://docs.centreon.com/23.10/en/releases/centreon-os-extensions.html";
$module_conf['centreon-open-tickets']["images"] = [
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/php/clear_cache.php b/centreon-open-tickets/www/modules/centreon-open-tickets/php/clear_cache.php
new file mode 100644
index 0000000000..b4888ca7bb
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/php/clear_cache.php
@@ -0,0 +1,64 @@
+fetch();
+ $messages = explode("\n", $rawMessage);
+ $filteredMessages = [];
+ foreach ($messages as $rawMessage) {
+ if (!empty(trim($rawMessage))) {
+ $filteredMessages[] = $rawMessage;
+ }
+ }
+ if (!empty($filteredMessages)) {
+ if (substr(strtolower($filteredMessages[0]), 0, 2) === 'in') {
+ array_shift($filteredMessages);
+ }
+ return implode('
', $filteredMessages);
+ }
+ return null;
+};
+
+if (!class_exists(Application::class)) {
+ throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
+}
+
+require _CENTREON_PATH_ . '/config/bootstrap.php';
+$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
+$application = new Application($kernel);
+$application->setAutoExit(false);
+
+$consoleOutput = new BufferedOutput();
+$consoleOutput->setVerbosity(OutputInterface::VERBOSITY_QUIET | OutputInterface::OUTPUT_RAW);
+$input = new ArgvInput(['', 'cache:clear']);
+
+$code = $application->run($input, $consoleOutput);
+if (!is_null($message = $extractErrorMessage($consoleOutput))) {
+ throw new \Exception($message);
+}
+
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/php/generate_routes.php b/centreon-open-tickets/www/modules/centreon-open-tickets/php/generate_routes.php
new file mode 100644
index 0000000000..b0b685c0f6
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/php/generate_routes.php
@@ -0,0 +1,34 @@
+ $host_problems,
'service_problems' => $service_problems,
'ticket_value' => $ticketId,
- 'subject' => $ticketArguments[self::ARG_TITLE],
+ 'subject' => $ticketArguments[$this->internal_arg_name[self::ARG_TITLE]],
'data_type' => self::DATA_TYPE_JSON,
'data' => json_encode($ticketArguments)
));
diff --git a/centreon-gorgone/.veracode-exclusions b/centreon-open-tickets/www/modules/centreon-open-tickets/routes/CentreonOpenTickets.yaml
similarity index 100%
rename from centreon-gorgone/.veracode-exclusions
rename to centreon-open-tickets/www/modules/centreon-open-tickets/routes/CentreonOpenTickets.yaml
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/routes/CentreonOpenTickets.yaml.wait b/centreon-open-tickets/www/modules/centreon-open-tickets/routes/CentreonOpenTickets.yaml.wait
new file mode 100644
index 0000000000..3ea8d0bc46
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/routes/CentreonOpenTickets.yaml.wait
@@ -0,0 +1,6 @@
+FindProviders:
+ methods: GET
+ path: /providers
+ controller: 'CentreonOpenTickets\Providers\Infrastructure\API\FindProviders\FindProvidersController'
+ condition: "request.attributes.get('version') >= 24.04"
+
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/sql/install.sql b/centreon-open-tickets/www/modules/centreon-open-tickets/sql/install.sql
index 4a226f8bb7..e7c144cc8e 100644
--- a/centreon-open-tickets/www/modules/centreon-open-tickets/sql/install.sql
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/sql/install.sql
@@ -5,6 +5,10 @@
INSERT INTO `topology` (`topology_id`, `topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`) VALUES
(NULL, 'Open Tickets', '604', NULL, NULL, '8', NULL, NULL, '0', '1', '1'),
(NULL, 'Rules', '604', '60420', '10', '8', './modules/centreon-open-tickets/views/rules/index.php', NULL, NULL, '1', '1');
+
+INSERT INTO `topology` (`topology_name`, `topology_parent`, `topology_page`, `topology_url`, `topology_show`, `readonly`)
+VALUES ('Submit Ticket', 604, 60421, './modules/centreon-open-tickets/views/rules/submitTicket/action.php', '0', '0');
+
INSERT INTO `topology_JS` (`id_page`, `PathName_js`) VALUES ('60420', './modules/centreon-open-tickets/lib/jquery.sheepItPlugin.js');
INSERT INTO `topology_JS` (`id_page`, `PathName_js`) VALUES ('60420', './modules/centreon-open-tickets/lib/jquery.serialize-object.min.js');
INSERT INTO `topology_JS` (`id_page`, `PathName_js`) VALUES ('60420', './modules/centreon-open-tickets/lib/doClone.js');
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/sql/uninstall.sql b/centreon-open-tickets/www/modules/centreon-open-tickets/sql/uninstall.sql
index 26b592ee33..853ecec2bb 100644
--- a/centreon-open-tickets/www/modules/centreon-open-tickets/sql/uninstall.sql
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/sql/uninstall.sql
@@ -14,3 +14,4 @@ DELETE FROM topology WHERE topology_page = '20320' AND topology_name = 'Ticket L
DELETE FROM topology_JS WHERE id_page = '20320';
DELETE FROM widget_parameters_field_type WHERE ft_typename = 'openTicketsRule';
+DELETE FROM `topology` WHERE topology_page = 60421;
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/upgrade/24.09.0/php/upgrade.php b/centreon-open-tickets/www/modules/centreon-open-tickets/upgrade/24.09.0/php/upgrade.php
new file mode 100644
index 0000000000..28430e99c0
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/upgrade/24.09.0/php/upgrade.php
@@ -0,0 +1,79 @@
+query('SELECT 1 FROM topology WHERE topology_page = 60421');
+ if ((bool) $statement->fetchColumn() === false) {
+ $pearDB->query(
+ <<<'SQL'
+ INSERT INTO topology
+ (
+ topology_name,
+ topology_parent,
+ topology_page,
+ topology_url,
+ topology_show,
+ readonly
+ ) VALUES (
+ 'Submit Ticket',
+ 604,
+ 60421,
+ './modules/centreon-open-tickets/views/rules/submitTicket/action.php',
+ '0',
+ '0'
+ )
+ SQL
+ );
+ }
+};
+
+try {
+ if (! $pearDB->inTransaction()) {
+ $pearDB->beginTransaction();
+ }
+ $insertSubmitTicketTopology($pearDB);
+ $pearDB->commit();
+} catch (Exception $e) {
+ if ($pearDB->inTransaction()) {
+ $pearDB->rollBack();
+ }
+
+ $centreonLog->insertLog(
+ 4,
+ $versionOfTheUpgrade . $errorMessage
+ . ' - Code : ' . (int) $e->getCode()
+ . ' - Error : ' . $e->getMessage()
+ . ' - Trace : ' . $e->getTraceAsString()
+ );
+
+ throw new Exception($versionOfTheUpgrade . $errorMessage, (int) $e->getCode(), $e);
+}
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/closeTicket/action.php b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/closeTicket/action.php
new file mode 100644
index 0000000000..4c518e3504
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/closeTicket/action.php
@@ -0,0 +1,110 @@
+ 1, 'msg' => 'Invalid session'];
+ header('Content-type: text/plain');
+ echo json_encode($resultat);
+
+ exit;
+}
+
+$centreon_bg = new CentreonXMLBGRequest($dependencyInjector, session_id(), 1, 1, 0, 1);
+$db = $dependencyInjector['configuration_db'];
+$rule = new Centreon_OpenTickets_Rule($db);
+
+$data = isset($_POST['data']) ? json_decode($_POST['data'], true) : null;
+
+if ($data === null) {
+ $resultat = ['code' => 1, 'msg' => 'POST data key missing'];
+ header('Content-type: text/plain');
+ echo json_encode($resultat);
+
+ exit;
+}
+
+if (
+ ! isset($data['rule_id'])
+ || ! is_int($data['rule_id'])
+) {
+ $resultat = ['code' => 1, 'msg' => 'Rule ID should be provided as an integer'];
+ header('Content-type: text/plain');
+ echo json_encode($resultat);
+
+ exit;
+}
+
+$ruleInformation = $rule->getAliasAndProviderId($data['rule_id']);
+
+if (
+ ! isset($data['selection'])
+ || ! isSelectionValid($data['selection'])
+) {
+ $resultat = ['code' => 1, 'msg' => 'Resource selection not provided or not well formatted'];
+ header('Content-type: text/plain');
+ echo json_encode($resultat);
+
+ exit;
+}
+
+// re-create payload sent from the widget directly from this file
+$get_information = [
+ 'action' => 'close-ticket',
+ 'rule_id' => $data['rule_id'],
+ 'provider_id' => $ruleInformation['provider_id'],
+ 'form' => [
+ 'rule_id' => $data['rule_id'],
+ 'provider_id' => $ruleInformation['provider_id'],
+ 'selection' => $data['selection'],
+ ],
+];
+
+require_once __DIR__ . '/../ajax/actions/closeTicket.php';
+
+header('Content-type: text/plain');
+echo json_encode($resultat);
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/action.php b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/action.php
new file mode 100644
index 0000000000..7df8032d3a
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/action.php
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+query('SELECT rule_id, alias, provider_id FROM mod_open_tickets_rule');
+
+ while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
+ $rules[$row['rule_id']] = $row;
+ }
+
+ $uniqId = uniqid();
+
+ $title = $cmd === SERVICE_OPEN_TICKET_COMMAND_ID
+ ? _('Open Service Ticket')
+ : _('Open Host Ticket');
+
+ $result = null;
+
+ if (isset($_GET['rule_id'])) {
+ $selection = $_GET['selection'] ?? $_GET['host_id'] . ';' . $_GET['service_id'];
+ $result = $rule->getFormatPopupProvider(
+ $_GET['rule_id'],
+ [
+ 'title' => $title,
+ 'user' => [
+ 'name' => $centreon->user->name,
+ 'alias' => $centreon->user->alias,
+ 'email' => $centreon->user->email,
+ ],
+ ],
+ 0,
+ $uniqId,
+ $_GET['cmd'],
+ $selection
+ );
+ }
+
+ $path = $centreon_path . 'www/widgets/open-tickets/src/';
+ $template = new Smarty();
+ $template = initSmartyTplForPopup($path . 'templates/', $template, './', $centreon_path);
+
+ if (isset($_GET['rule_id'])) {
+ $template->assign('provider_id', $rules[$_GET['rule_id']]['provider_id']);
+ $template->assign('rule_id', $_GET['rule_id']);
+ $template->assign('widgetId', 0);
+ $template->assign('uniqId', $uniqId);
+ $template->assign('title', $title);
+ $template->assign('cmd', $cmd);
+ $template->assign('selection', $selection);
+ $template->assign('continue', (! is_null($result) && isset($result['format_popup'])) ? 0 : 1);
+ $template->assign(
+ 'attach_files_enable',
+ (! is_null($result)
+ && isset($result['attach_files_enable'])
+ && $result['attach_files_enable'] === 'yes'
+ ) ? 1 : 0
+ );
+
+ $template->assign(
+ 'formatPopupProvider',
+ (! is_null($result)
+ && isset($result['format_popup'])
+ ) ? $result['format_popup'] : ''
+ );
+
+ $template->assign('submitLabel', _('Open'));
+ } else {
+ $template->assign('rules', $rules);
+ $template->assign('submitRule', _('Select'));
+ }
+
+ $template->display(__DIR__ . '/submitTicket.ihtml');
+}
+
+try {
+ if (! isset($_SESSION['centreon']) || ! isset($_GET['cmd'])) {
+ throw new Exception('Missing data');
+ }
+ $db = new CentreonDB();
+ if (CentreonSession::checkSession(session_id(), $db) === 0) {
+ throw new Exception('Invalid session');
+ }
+ /** @var Centreon $centreon */
+ $centreon = $_SESSION['centreon'];
+ $oreon = $centreon->user;
+
+ $cmd = filter_input(INPUT_GET, 'cmd', FILTER_VALIDATE_INT, ['options' => ['default' => 0]]);
+
+ $widgetId = filter_input(INPUT_GET, 'widgetId', FILTER_VALIDATE_INT, ['options' => ['default' => 0]]);
+ $selections = explode(',', $_REQUEST['selection']);
+
+ $widgetObj = new CentreonWidget($centreon, $db);
+ $preferences = $widgetObj->getWidgetPreferences($widgetId);
+
+ $rule = new Centreon_OpenTickets_Rule($db);
+
+ if (
+ $cmd === SERVICE_OPEN_TICKET_COMMAND_ID
+ || $cmd === HOST_OPEN_TICKET_COMMAND_ID
+ ) {
+ format_popup();
+ } else {
+ throw new Exception('Unhandled data provided for cmd parameter');
+ }
+} catch (Exception $e) {
+ echo $e->getMessage() . '
';
+}
+?>
diff --git a/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/submitTicket.ihtml b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/submitTicket.ihtml
new file mode 100644
index 0000000000..024340fb5f
--- /dev/null
+++ b/centreon-open-tickets/www/modules/centreon-open-tickets/views/rules/submitTicket/submitTicket.ihtml
@@ -0,0 +1,190 @@
+
+{if $attach_files_enable}
+
+{/if}
+
+{literal}
+
+{/literal}
diff --git a/centreon/.eslintignore b/centreon/.eslintignore
deleted file mode 100644
index 3cd4c7c663..0000000000
--- a/centreon/.eslintignore
+++ /dev/null
@@ -1,2 +0,0 @@
-**/*{.,-}min.js
-**/mockServiceWorker.js
\ No newline at end of file
diff --git a/centreon/.eslintrc.js b/centreon/.eslintrc.js
deleted file mode 100644
index 03ed239de2..0000000000
--- a/centreon/.eslintrc.js
+++ /dev/null
@@ -1,14 +0,0 @@
-module.exports = {
- extends: './packages/js-config/eslint/react/typescript.eslintrc.js',
- settings: {
- 'import/resolver': {
- alias: {
- extensions: ['.js', '.jsx', '.ts', '.tsx']
- },
- node: {
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
- moduleDirectory: ['node_modules', '.']
- }
- }
- }
-};
diff --git a/centreon/bin/centreon b/centreon/bin/centreon
index d2420bca2a..6388b65a94 100755
--- a/centreon/bin/centreon
+++ b/centreon/bin/centreon
@@ -99,12 +99,12 @@ require_once _CENTREON_ETC_ . "/centreon.conf.php";
require_once _CLAPI_CLASS_ . "/centreonAPI.class.php";
require_once _CLAPI_CLASS_ . "/centreonUtils.class.php";
-$dbConfig['host'] = $conf_centreon['hostCentreon'];
-$dbConfig['username'] = $conf_centreon['user'];
-$dbConfig['password'] = $conf_centreon['password'];
-$dbConfig['dbname'] = $conf_centreon['db'];
-if (isset($conf_centreon['port'])) {
- $dbConfig['port'] = $conf_centreon['port'];
+$dbConfig['host'] = hostCentreon;
+$dbConfig['username'] = user;
+$dbConfig['password'] = password;
+$dbConfig['dbname'] = db;
+if (defined('port')) {
+ $dbConfig['port'] = port;
} elseif ($p = strstr($dbConfig['host'], ':')) {
$p = substr($p, 1);
if (is_numeric($p)) {
diff --git a/centreon/bin/migrateCredentials.php b/centreon/bin/migrateCredentials.php
new file mode 100644
index 0000000000..18af960308
--- /dev/null
+++ b/centreon/bin/migrateCredentials.php
@@ -0,0 +1,84 @@
+getMessage() . PHP_EOL);
+}
+
+/**
+ * Migrate database credentials into the vault and update configuration files.
+ *
+ * This is handle outside of Symfony Command as this should be executed as root.
+ *
+ * @throws Throwable
+ */
+function migrateAndUpdateDatabaseCredentials(): void {
+ $kernel = Kernel::createForWeb();
+ $readVaultConfigurationRepository = $kernel->getContainer()->get(
+ ReadVaultConfigurationRepositoryInterface::class
+ );
+ $vaultConfiguration = $readVaultConfigurationRepository->find();
+
+ if ($vaultConfiguration === null) {
+ throw new Exception('No vault configured');
+ }
+
+ echo('Migration of database credentials' . PHP_EOL);
+ /** @var WriteVaultRepositoryInterface $writeVaultRepository */
+ $writeVaultRepository = $kernel->getContainer()->get(WriteVaultRepositoryInterface::class);
+ $writeVaultRepository->setCustomPath(AbstractVaultRepository::DATABASE_VAULT_PATH);
+ $vaultPaths = migrateDatabaseCredentialsToVault($writeVaultRepository);
+ if (! empty($vaultPaths)) {
+ updateConfigFilesWithVaultPath($vaultPaths);
+ }
+ echo('Migration of database credentials completed' . PHP_EOL);
+}
+
+/**
+ * Execute Symfony command to migrate web and modules credentials.
+ *
+ * @throws ProcessFailedException
+ */
+function migrateApplicationCredentials(): void
+{
+ echo('Migration of application credentials' . PHP_EOL);
+ $process = Process::fromShellCommandline(
+ 'sudo -u apache php ' . _CENTREON_PATH_ . '/bin/console list vault:migrate-credentials'
+ );
+ $process->setWorkingDirectory(_CENTREON_PATH_);
+ $process->mustRun();
+
+ preg_match_all('/\S*vault:migrate-credentials:\S*/', $process->getOutput(), $matches);
+ foreach ($matches[0] as $migrationCommand) {
+ $process = Process::fromShellCommandline(
+ 'sudo -u apache php ' . _CENTREON_PATH_ . '/bin/console ' . $migrationCommand
+ );
+ $process->setWorkingDirectory(_CENTREON_PATH_);
+ $process->mustRun(function ($type, $buffer): void {
+ if (Process::ERR === $type) {
+ echo 'ERROR: ' . $buffer . PHP_EOL;
+ } else {
+ echo $buffer;
+ }
+ });
+ }
+ echo('Migration of application credentials completed' . PHP_EOL);
+}
diff --git a/centreon/biome.json b/centreon/biome.json
new file mode 100644
index 0000000000..2786660a6d
--- /dev/null
+++ b/centreon/biome.json
@@ -0,0 +1,6 @@
+{
+ "extends": ["./packages/js-config/biome/base.json"],
+ "files": {
+ "ignore": ["**/*{.,-}min.js", "**/mockServiceWorker.js", "**/initPendo.js"]
+ }
+}
diff --git a/centreon/check-centreon-gpg-key.sh b/centreon/check-centreon-gpg-key.sh
index 196c746ed9..65488d9e83 100644
--- a/centreon/check-centreon-gpg-key.sh
+++ b/centreon/check-centreon-gpg-key.sh
@@ -17,7 +17,7 @@ fi
OLDKEY_NAME="gpg-pubkey-8a7652bc-4cb6f1f6"
OLDKEY_ID="1024D/8A7652BC"
-NEWKEY_NAME="gpg-pubkey-3fc49c1b-6166eb52"
+NEWKEY_NAME="gpg-pubkey-3fc49c1b-651d4c25"
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep -q "${OLDKEY_NAME}"
diff --git a/centreon/composer.json b/centreon/composer.json
index 1b3aa1d777..4aab25230d 100644
--- a/centreon/composer.json
+++ b/centreon/composer.json
@@ -91,7 +91,8 @@
"onelogin/php-saml": "^4.1",
"symfony/uid": "6.4.*",
"symfony/mime": "6.4.*",
- "monolog/monolog": "^3.3"
+ "monolog/monolog": "^3.3",
+ "symfony/security-core": "6.4.*"
},
"autoload": {
"psr-4": {
diff --git a/centreon/composer.lock b/centreon/composer.lock
index 364c581b24..0ac7b14982 100644
--- a/centreon/composer.lock
+++ b/centreon/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ccc6b3097d589620480b46a5c1a1dcf8",
+ "content-hash": "e2de73fccafa394ceb7ef7dcf886f1e5",
"packages": [
{
"name": "beberlei/assert",
@@ -601,28 +601,29 @@
},
{
"name": "friendsofsymfony/rest-bundle",
- "version": "3.6.0",
+ "version": "3.7.1",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git",
- "reference": "e01be8113d4451adb3cbb29d7d2cc96bbc698179"
+ "reference": "db7d9a17da2bcae1bb8e2d7ff320ef3915903373"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/e01be8113d4451adb3cbb29d7d2cc96bbc698179",
- "reference": "e01be8113d4451adb3cbb29d7d2cc96bbc698179",
+ "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/db7d9a17da2bcae1bb8e2d7ff320ef3915903373",
+ "reference": "db7d9a17da2bcae1bb8e2d7ff320ef3915903373",
"shasum": ""
},
"require": {
- "php": "^7.2|^8.0",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/framework-bundle": "^4.4.1|^5.0|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/routing": "^5.4|^6.0",
- "symfony/security-core": "^5.4|^6.0",
+ "php": "^7.4|^8.0",
+ "symfony/config": "^5.4|^6.4|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.4|^7.0",
+ "symfony/deprecation-contracts": "^2.1|^3.0",
+ "symfony/event-dispatcher": "^5.4|^6.4|^7.0",
+ "symfony/framework-bundle": "^5.4|^6.4|^7.0",
+ "symfony/http-foundation": "^5.4|^6.4|^7.0",
+ "symfony/http-kernel": "^5.4|^6.4|^7.0",
+ "symfony/routing": "^5.4|^6.4|^7.0",
+ "symfony/security-core": "^5.4|^6.4|^7.0",
"willdurand/jsonp-callback-validator": "^1.0|^2.0",
"willdurand/negotiation": "^2.0|^3.0"
},
@@ -633,32 +634,32 @@
"sensio/framework-extra-bundle": "<6.1"
},
"require-dev": {
- "doctrine/annotations": "^1.13.2|^2.0 ",
- "friendsofphp/php-cs-fixer": "^3.0",
+ "doctrine/annotations": "^1.13.2|^2.0",
+ "friendsofphp/php-cs-fixer": "^3.43",
"jms/serializer": "^1.13|^2.0|^3.0",
"jms/serializer-bundle": "^2.4.3|^3.0.1|^4.0|^5.0",
"psr/http-message": "^1.0",
"psr/log": "^1.0|^2.0|^3.0",
"sensio/framework-extra-bundle": "^6.1",
- "symfony/asset": "^5.4|^6.0",
- "symfony/browser-kit": "^5.4|^6.0",
- "symfony/css-selector": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/form": "^5.4|^6.0",
- "symfony/mime": "^5.4|^6.0",
- "symfony/phpunit-bridge": "^5.4|^6.0",
- "symfony/security-bundle": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0",
- "symfony/twig-bundle": "^5.4|^6.0",
- "symfony/validator": "^5.4|^6.0",
- "symfony/web-profiler-bundle": "^5.4|^6.0",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/asset": "^5.4|^6.4|^7.0",
+ "symfony/browser-kit": "^5.4|^6.4|^7.0",
+ "symfony/css-selector": "^5.4|^6.4|^7.0",
+ "symfony/expression-language": "^5.4|^6.4|^7.0",
+ "symfony/form": "^5.4|^6.4|^7.0",
+ "symfony/mime": "^5.4|^6.4|^7.0",
+ "symfony/phpunit-bridge": "^7.0.1",
+ "symfony/security-bundle": "^5.4|^6.4|^7.0",
+ "symfony/serializer": "^5.4|^6.4|^7.0",
+ "symfony/twig-bundle": "^5.4|^6.4|^7.0",
+ "symfony/validator": "^5.4|^6.4|^7.0",
+ "symfony/web-profiler-bundle": "^5.4|^6.4|^7.0",
+ "symfony/yaml": "^5.4|^6.4|^7.0"
},
"suggest": {
- "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ^2.0|^3.0",
- "sensio/framework-extra-bundle": "Add support for the request body converter and the view response listener, requires ^3.0",
- "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ^2.7|^3.0",
- "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ^2.7|^3.0"
+ "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended",
+ "sensio/framework-extra-bundle": "Add support for the request body converter and the view response listener, not supported with Symfony >=7.0",
+ "symfony/serializer": "Add support for basic serialization capabilities and xml decoding",
+ "symfony/validator": "Add support for validation capabilities in the ParamFetcher"
},
"type": "symfony-bundle",
"extra": {
@@ -700,9 +701,9 @@
],
"support": {
"issues": "https://github.com/FriendsOfSymfony/FOSRestBundle/issues",
- "source": "https://github.com/FriendsOfSymfony/FOSRestBundle/tree/3.6.0"
+ "source": "https://github.com/FriendsOfSymfony/FOSRestBundle/tree/3.7.1"
},
- "time": "2023-09-27T11:41:02+00:00"
+ "time": "2024-04-12T22:57:10+00:00"
},
{
"name": "jms/metadata",
@@ -958,12 +959,12 @@
"version": "v5.2.13",
"source": {
"type": "git",
- "url": "https://github.com/justinrainbow/json-schema.git",
+ "url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "fbbe7e5d79f618997bc3332a6f49246036c45793"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
+ "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
"reference": "fbbe7e5d79f618997bc3332a6f49246036c45793",
"shasum": ""
},
@@ -1018,23 +1019,23 @@
"schema"
],
"support": {
- "issues": "https://github.com/justinrainbow/json-schema/issues",
- "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13"
+ "issues": "https://github.com/jsonrainbow/json-schema/issues",
+ "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13"
},
"time": "2023-09-26T02:20:38+00:00"
},
{
"name": "monolog/monolog",
- "version": "3.5.0",
+ "version": "3.6.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448"
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
"shasum": ""
},
"require": {
@@ -1057,7 +1058,7 @@
"phpstan/phpstan": "^1.9",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-strict-rules": "^1.4",
- "phpunit/phpunit": "^10.1",
+ "phpunit/phpunit": "^10.5.17",
"predis/predis": "^1.1 || ^2",
"ruflin/elastica": "^7",
"symfony/mailer": "^5.4 || ^6",
@@ -1110,7 +1111,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.5.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
},
"funding": [
{
@@ -1122,7 +1123,7 @@
"type": "tidelift"
}
],
- "time": "2023-10-27T15:32:31+00:00"
+ "time": "2024-04-12T21:02:21+00:00"
},
{
"name": "nelmio/cors-bundle",
@@ -1246,21 +1247,21 @@
},
{
"name": "onelogin/php-saml",
- "version": "4.1.0",
+ "version": "4.2.0",
"source": {
"type": "git",
- "url": "https://github.com/onelogin/php-saml.git",
- "reference": "b22a57ebd13e838b90df5d3346090bc37056409d"
+ "url": "https://github.com/SAML-Toolkits/php-saml.git",
+ "reference": "d3b5172f137db2f412239432d77253ceaaa1e939"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/onelogin/php-saml/zipball/b22a57ebd13e838b90df5d3346090bc37056409d",
- "reference": "b22a57ebd13e838b90df5d3346090bc37056409d",
+ "url": "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/d3b5172f137db2f412239432d77253ceaaa1e939",
+ "reference": "d3b5172f137db2f412239432d77253ceaaa1e939",
"shasum": ""
},
"require": {
"php": ">=7.3",
- "robrichards/xmlseclibs": ">=3.1.1"
+ "robrichards/xmlseclibs": "^3.1"
},
"require-dev": {
"pdepend/pdepend": "^2.8.0",
@@ -1286,19 +1287,27 @@
"license": [
"MIT"
],
- "description": "OneLogin PHP SAML Toolkit",
- "homepage": "https://developers.onelogin.com/saml/php",
+ "description": "PHP SAML Toolkit",
+ "homepage": "https://github.com/SAML-Toolkits/php-saml",
"keywords": [
+ "Federation",
"SAML2",
- "onelogin",
+ "SSO",
+ "identity",
"saml"
],
"support": {
- "email": "sixto.garcia@onelogin.com",
- "issues": "https://github.com/onelogin/php-saml/issues",
- "source": "https://github.com/onelogin/php-saml/"
+ "email": "sixto.martin.garcia@gmail.com",
+ "issues": "https://github.com/onelogin/SAML-Toolkits/issues",
+ "source": "https://github.com/onelogin/SAML-Toolkits/"
},
- "time": "2022-07-15T20:44:36+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/SAML-Toolkits",
+ "type": "github"
+ }
+ ],
+ "time": "2024-05-30T15:10:40+00:00"
},
{
"name": "openpsa/quickform",
@@ -1407,12 +1416,12 @@
"source": {
"type": "git",
"url": "https://github.com/pear/pear-core-minimal.git",
- "reference": "d457b5c93e5001fbf4b5726d21038266e029e3be"
+ "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/d457b5c93e5001fbf4b5726d21038266e029e3be",
- "reference": "d457b5c93e5001fbf4b5726d21038266e029e3be",
+ "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/ce0adade8b97561656ace07cdaac4751c271ea8c",
+ "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c",
"shasum": ""
},
"require": {
@@ -1425,9 +1434,9 @@
},
"type": "library",
"autoload": {
- "psr-0": {
- "": "src/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"include-path": [
@@ -1448,7 +1457,7 @@
"issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR",
"source": "https://github.com/pear/pear-core-minimal"
},
- "time": "2024-03-09T19:38:40+00:00"
+ "time": "2024-03-16T18:41:45+00:00"
},
{
"name": "pear/pear_exception",
@@ -1564,28 +1573,35 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
+ "version": "5.4.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^1.1",
"ext-filter": "*",
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
+ "phpdocumentor/type-resolver": "^1.7",
+ "phpstan/phpdoc-parser": "^1.7",
"webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
+ "mockery/mockery": "~1.3.5",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^5.13"
},
"type": "library",
"extra": {
@@ -1609,15 +1625,15 @@
},
{
"name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "email": "opensource@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1"
},
- "time": "2021-10-19T17:43:47+00:00"
+ "time": "2024-05-21T05:55:05+00:00"
},
{
"name": "phpdocumentor/type-resolver",
@@ -1679,16 +1695,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.26.0",
+ "version": "1.29.1",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "231e3186624c03d7e7c890ec662b81e6b0405227"
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227",
- "reference": "231e3186624c03d7e7c890ec662b81e6b0405227",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
"shasum": ""
},
"require": {
@@ -1720,9 +1736,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
},
- "time": "2024-02-23T16:05:55+00:00"
+ "time": "2024-05-31T08:52:43+00:00"
},
{
"name": "pimple/pimple",
@@ -2200,16 +2216,16 @@
},
{
"name": "smarty/smarty",
- "version": "v4.4.1",
+ "version": "v4.5.3",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
- "reference": "f4152e9b814ae2369b6e4935c05e1e0c3654318d"
+ "reference": "9fc96a13dbaf546c3d7bcf95466726578cd4e0fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/smarty-php/smarty/zipball/f4152e9b814ae2369b6e4935c05e1e0c3654318d",
- "reference": "f4152e9b814ae2369b6e4935c05e1e0c3654318d",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/9fc96a13dbaf546c3d7bcf95466726578cd4e0fa",
+ "reference": "9fc96a13dbaf546c3d7bcf95466726578cd4e0fa",
"shasum": ""
},
"require": {
@@ -2260,22 +2276,22 @@
"support": {
"forum": "https://github.com/smarty-php/smarty/discussions",
"issues": "https://github.com/smarty-php/smarty/issues",
- "source": "https://github.com/smarty-php/smarty/tree/v4.4.1"
+ "source": "https://github.com/smarty-php/smarty/tree/v4.5.3"
},
- "time": "2024-02-26T13:58:37+00:00"
+ "time": "2024-05-28T21:46:01+00:00"
},
{
"name": "symfony/cache",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "0ef36534694c572ff526d91c7181f3edede176e7"
+ "reference": "287142df5579ce223c485b3872df3efae8390984"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/0ef36534694c572ff526d91c7181f3edede176e7",
- "reference": "0ef36534694c572ff526d91c7181f3edede176e7",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/287142df5579ce223c485b3872df3efae8390984",
+ "reference": "287142df5579ce223c485b3872df3efae8390984",
"shasum": ""
},
"require": {
@@ -2342,7 +2358,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.4.4"
+ "source": "https://github.com/symfony/cache/tree/v6.4.8"
},
"funding": [
{
@@ -2358,20 +2374,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "1d74b127da04ffa87aa940abe15446fa89653778"
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778",
- "reference": "1d74b127da04ffa87aa940abe15446fa89653778",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
"shasum": ""
},
"require": {
@@ -2381,7 +2397,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2418,7 +2434,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -2434,20 +2450,20 @@
"type": "tidelift"
}
],
- "time": "2023-09-25T12:52:38+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/clock",
- "version": "v6.4.5",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "ecba44be4def12cd71e0460b956ab7e51a2c980e"
+ "reference": "7a4840efd17135cbd547e41ec49fb910ed4f8b98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/ecba44be4def12cd71e0460b956ab7e51a2c980e",
- "reference": "ecba44be4def12cd71e0460b956ab7e51a2c980e",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/7a4840efd17135cbd547e41ec49fb910ed4f8b98",
+ "reference": "7a4840efd17135cbd547e41ec49fb910ed4f8b98",
"shasum": ""
},
"require": {
@@ -2492,7 +2508,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v6.4.5"
+ "source": "https://github.com/symfony/clock/tree/v6.4.8"
},
"funding": [
{
@@ -2508,20 +2524,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-01T14:02:27+00:00"
+ "time": "2024-05-31T14:51:39+00:00"
},
{
"name": "symfony/config",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "6ea4affc27f2086c9d16b92ab5429ce1e3c38047"
+ "reference": "12e7e52515ce37191b193cf3365903c4f3951e35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/6ea4affc27f2086c9d16b92ab5429ce1e3c38047",
- "reference": "6ea4affc27f2086c9d16b92ab5429ce1e3c38047",
+ "url": "https://api.github.com/repos/symfony/config/zipball/12e7e52515ce37191b193cf3365903c4f3951e35",
+ "reference": "12e7e52515ce37191b193cf3365903c4f3951e35",
"shasum": ""
},
"require": {
@@ -2567,7 +2583,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v6.4.4"
+ "source": "https://github.com/symfony/config/tree/v6.4.8"
},
"funding": [
{
@@ -2583,20 +2599,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-26T07:52:26+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/console",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0d9e4eb5ad413075624378f474c4167ea202de78"
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78",
- "reference": "0d9e4eb5ad413075624378f474c4167ea202de78",
+ "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91",
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91",
"shasum": ""
},
"require": {
@@ -2661,7 +2677,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.4"
+ "source": "https://github.com/symfony/console/tree/v6.4.8"
},
"funding": [
{
@@ -2677,20 +2693,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "6236e5e843cb763e9d0f74245678b994afea5363"
+ "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6236e5e843cb763e9d0f74245678b994afea5363",
- "reference": "6236e5e843cb763e9d0f74245678b994afea5363",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d3b618176e8c3a9e5772151c51eba0c52a0c771c",
+ "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c",
"shasum": ""
},
"require": {
@@ -2742,7 +2758,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v6.4.4"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.4.8"
},
"funding": [
{
@@ -2758,20 +2774,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
@@ -2780,7 +2796,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2809,7 +2825,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -2825,20 +2841,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "f6f0a3dd102915b4c5bfdf4f4e3139a8cbf477a0"
+ "reference": "55aefa0029adff89ecffdb560820e945c7983f06"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/f6f0a3dd102915b4c5bfdf4f4e3139a8cbf477a0",
- "reference": "f6f0a3dd102915b4c5bfdf4f4e3139a8cbf477a0",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/55aefa0029adff89ecffdb560820e945c7983f06",
+ "reference": "55aefa0029adff89ecffdb560820e945c7983f06",
"shasum": ""
},
"require": {
@@ -2883,7 +2899,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v6.4.4"
+ "source": "https://github.com/symfony/dotenv/tree/v6.4.8"
},
"funding": [
{
@@ -2899,20 +2915,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-08T17:53:17+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "c725219bdf2afc59423c32793d5019d2a904e13a"
+ "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a",
- "reference": "c725219bdf2afc59423c32793d5019d2a904e13a",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc",
+ "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc",
"shasum": ""
},
"require": {
@@ -2958,7 +2974,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v6.4.4"
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.8"
},
"funding": [
{
@@ -2974,20 +2990,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef"
+ "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef",
- "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b",
+ "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b",
"shasum": ""
},
"require": {
@@ -3038,7 +3054,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8"
},
"funding": [
{
@@ -3054,20 +3070,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.4.0",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+ "reference": "4e64b49bf370ade88e567de29465762e316e4224"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224",
+ "reference": "4e64b49bf370ade88e567de29465762e316e4224",
"shasum": ""
},
"require": {
@@ -3114,7 +3130,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2"
},
"funding": [
{
@@ -3130,20 +3146,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-01-23T14:51:35+00:00"
},
{
"name": "symfony/expression-language",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/expression-language.git",
- "reference": "b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4"
+ "reference": "0b63cb437741a42104d3ccc9bf60bbd8e1acbd2a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/expression-language/zipball/b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4",
- "reference": "b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/0b63cb437741a42104d3ccc9bf60bbd8e1acbd2a",
+ "reference": "0b63cb437741a42104d3ccc9bf60bbd8e1acbd2a",
"shasum": ""
},
"require": {
@@ -3178,7 +3194,7 @@
"description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/expression-language/tree/v6.4.3"
+ "source": "https://github.com/symfony/expression-language/tree/v6.4.8"
},
"funding": [
{
@@ -3194,20 +3210,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb"
+ "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
- "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3",
+ "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3",
"shasum": ""
},
"require": {
@@ -3215,6 +3231,9 @@
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
+ "require-dev": {
+ "symfony/process": "^5.4|^6.4|^7.0"
+ },
"type": "library",
"autoload": {
"psr-4": {
@@ -3241,7 +3260,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.4.3"
+ "source": "https://github.com/symfony/filesystem/tree/v6.4.8"
},
"funding": [
{
@@ -3257,20 +3276,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.4.0",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "11d736e97f116ac375a81f96e662911a34cd50ce"
+ "reference": "3ef977a43883215d560a2cecb82ec8e62131471c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce",
- "reference": "11d736e97f116ac375a81f96e662911a34cd50ce",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c",
+ "reference": "3ef977a43883215d560a2cecb82ec8e62131471c",
"shasum": ""
},
"require": {
@@ -3305,7 +3324,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.4.0"
+ "source": "https://github.com/symfony/finder/tree/v6.4.8"
},
"funding": [
{
@@ -3321,7 +3340,7 @@
"type": "tidelift"
}
],
- "time": "2023-10-31T17:30:12+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/flex",
@@ -3390,16 +3409,16 @@
},
{
"name": "symfony/framework-bundle",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "c76d3881596860ead95f5444a5ce4414447f0067"
+ "reference": "7c7739f87f1a8be1c2f5e7d28addfe763a917acb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c76d3881596860ead95f5444a5ce4414447f0067",
- "reference": "c76d3881596860ead95f5444a5ce4414447f0067",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/7c7739f87f1a8be1c2f5e7d28addfe763a917acb",
+ "reference": "7c7739f87f1a8be1c2f5e7d28addfe763a917acb",
"shasum": ""
},
"require": {
@@ -3518,7 +3537,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v6.4.4"
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.4.8"
},
"funding": [
{
@@ -3534,27 +3553,27 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T22:50:59+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/http-client",
- "version": "v6.4.5",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7"
+ "reference": "61faba993e620fc22d4f0ab3b6bcf8fbb0d44b05"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/f3c86a60a3615f466333a11fd42010d4382a82c7",
- "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/61faba993e620fc22d4f0ab3b6bcf8fbb0d44b05",
+ "reference": "61faba993e620fc22d4f0ab3b6bcf8fbb0d44b05",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "^3",
+ "symfony/http-client-contracts": "^3.4.1",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
@@ -3572,7 +3591,7 @@
"amphp/http-client": "^4.2.1",
"amphp/http-tunnel": "^1.0",
"amphp/socket": "^1.1",
- "guzzlehttp/promises": "^1.4",
+ "guzzlehttp/promises": "^1.4|^2.0",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0",
@@ -3611,7 +3630,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v6.4.5"
+ "source": "https://github.com/symfony/http-client/tree/v6.4.8"
},
"funding": [
{
@@ -3627,20 +3646,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-02T12:45:30+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "1ee70e699b41909c209a0c930f11034b93578654"
+ "reference": "20414d96f391677bf80078aa55baece78b82647d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654",
- "reference": "1ee70e699b41909c209a0c930f11034b93578654",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d",
+ "reference": "20414d96f391677bf80078aa55baece78b82647d",
"shasum": ""
},
"require": {
@@ -3649,7 +3668,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -3689,7 +3708,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -3705,20 +3724,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-30T20:28:31+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304"
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304",
- "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947",
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947",
"shasum": ""
},
"require": {
@@ -3766,7 +3785,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.4.4"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.8"
},
"funding": [
{
@@ -3782,20 +3801,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-08T15:01:18+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.4.5",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "f6947cb939d8efee137797382cb4db1af653ef75"
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6947cb939d8efee137797382cb4db1af653ef75",
- "reference": "f6947cb939d8efee137797382cb4db1af653ef75",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
"shasum": ""
},
"require": {
@@ -3850,6 +3869,7 @@
"symfony/translation-contracts": "^2.5|^3",
"symfony/uid": "^5.4|^6.0|^7.0",
"symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.4|^7.0",
"symfony/var-exporter": "^6.2|^7.0",
"twig/twig": "^2.13|^3.0.4"
},
@@ -3879,7 +3899,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v6.4.5"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.8"
},
"funding": [
{
@@ -3895,20 +3915,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-04T21:00:47+00:00"
+ "time": "2024-06-02T16:06:25+00:00"
},
{
"name": "symfony/lock",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/lock.git",
- "reference": "1cabf3cc775b1aa6008ebd471fa773444af4e956"
+ "reference": "1387f50285c23607467c1f05b258bde65f1ab276"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/lock/zipball/1cabf3cc775b1aa6008ebd471fa773444af4e956",
- "reference": "1cabf3cc775b1aa6008ebd471fa773444af4e956",
+ "url": "https://api.github.com/repos/symfony/lock/zipball/1387f50285c23607467c1f05b258bde65f1ab276",
+ "reference": "1387f50285c23607467c1f05b258bde65f1ab276",
"shasum": ""
},
"require": {
@@ -3958,7 +3978,7 @@
"semaphore"
],
"support": {
- "source": "https://github.com/symfony/lock/tree/v6.4.3"
+ "source": "https://github.com/symfony/lock/tree/v6.4.8"
},
"funding": [
{
@@ -3974,20 +3994,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/maker-bundle",
- "version": "v1.56.0",
+ "version": "v1.60.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
- "reference": "bbb7949ae048363df7c8439abeddef8befd155ce"
+ "reference": "c305a02a22974670f359d4274c9431e1a191f559"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/bbb7949ae048363df7c8439abeddef8befd155ce",
- "reference": "bbb7949ae048363df7c8439abeddef8befd155ce",
+ "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c305a02a22974670f359d4274c9431e1a191f559",
+ "reference": "c305a02a22974670f359d4274c9431e1a191f559",
"shasum": ""
},
"require": {
@@ -4050,7 +4070,7 @@
],
"support": {
"issues": "https://github.com/symfony/maker-bundle/issues",
- "source": "https://github.com/symfony/maker-bundle/tree/v1.56.0"
+ "source": "https://github.com/symfony/maker-bundle/tree/v1.60.0"
},
"funding": [
{
@@ -4066,20 +4086,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-04T13:36:45+00:00"
+ "time": "2024-06-10T06:03:18+00:00"
},
{
"name": "symfony/mime",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "5017e0a9398c77090b7694be46f20eb796262a34"
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34",
- "reference": "5017e0a9398c77090b7694be46f20eb796262a34",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33",
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33",
"shasum": ""
},
"require": {
@@ -4100,6 +4120,7 @@
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.4|^7.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
"symfony/property-info": "^5.4|^6.0|^7.0",
"symfony/serializer": "^6.3.2|^7.0"
@@ -4134,7 +4155,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.4.3"
+ "source": "https://github.com/symfony/mime/tree/v6.4.8"
},
"funding": [
{
@@ -4150,20 +4171,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-30T08:32:12+00:00"
+ "time": "2024-06-01T07:50:16+00:00"
},
{
"name": "symfony/monolog-bridge",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bridge.git",
- "reference": "db7468152b27242f1a4d10fabe278a2cfaa4eac0"
+ "reference": "0fbee64913b1c595e7650a1919ba3edba8d49ea7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/db7468152b27242f1a4d10fabe278a2cfaa4eac0",
- "reference": "db7468152b27242f1a4d10fabe278a2cfaa4eac0",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/0fbee64913b1c595e7650a1919ba3edba8d49ea7",
+ "reference": "0fbee64913b1c595e7650a1919ba3edba8d49ea7",
"shasum": ""
},
"require": {
@@ -4213,7 +4234,7 @@
"description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.4"
+ "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.8"
},
"funding": [
{
@@ -4229,7 +4250,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-01T11:49:25+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/monolog-bundle",
@@ -4314,16 +4335,16 @@
},
{
"name": "symfony/options-resolver",
- "version": "v6.4.0",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "22301f0e7fdeaacc14318928612dee79be99860e"
+ "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e",
- "reference": "22301f0e7fdeaacc14318928612dee79be99860e",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b",
+ "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b",
"shasum": ""
},
"require": {
@@ -4361,7 +4382,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.4.0"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.4.8"
},
"funding": [
{
@@ -4377,20 +4398,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-08T10:16:24+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/password-hasher",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/password-hasher.git",
- "reference": "114788555e6d768d25fffdbae618cee48cbcd112"
+ "reference": "90ebbe946e5d64a5fad9ac9427e335045cf2bd31"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/password-hasher/zipball/114788555e6d768d25fffdbae618cee48cbcd112",
- "reference": "114788555e6d768d25fffdbae618cee48cbcd112",
+ "url": "https://api.github.com/repos/symfony/password-hasher/zipball/90ebbe946e5d64a5fad9ac9427e335045cf2bd31",
+ "reference": "90ebbe946e5d64a5fad9ac9427e335045cf2bd31",
"shasum": ""
},
"require": {
@@ -4433,7 +4454,7 @@
"password"
],
"support": {
- "source": "https://github.com/symfony/password-hasher/tree/v6.4.4"
+ "source": "https://github.com/symfony/password-hasher/tree/v6.4.8"
},
"funding": [
{
@@ -4449,7 +4470,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-12T11:14:32+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
@@ -5085,16 +5106,16 @@
},
{
"name": "symfony/process",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "710e27879e9be3395de2b98da3f52a946039f297"
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297",
- "reference": "710e27879e9be3395de2b98da3f52a946039f297",
+ "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5",
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5",
"shasum": ""
},
"require": {
@@ -5126,7 +5147,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v6.4.4"
+ "source": "https://github.com/symfony/process/tree/v6.4.8"
},
"funding": [
{
@@ -5142,20 +5163,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-20T12:31:00+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/property-access",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "c0664db266024013e31446dd690b6bfcf218ad93"
+ "reference": "e4d9b00983612f9c0013ca37c61affdba2dd975a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/c0664db266024013e31446dd690b6bfcf218ad93",
- "reference": "c0664db266024013e31446dd690b6bfcf218ad93",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/e4d9b00983612f9c0013ca37c61affdba2dd975a",
+ "reference": "e4d9b00983612f9c0013ca37c61affdba2dd975a",
"shasum": ""
},
"require": {
@@ -5203,7 +5224,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v6.4.4"
+ "source": "https://github.com/symfony/property-access/tree/v6.4.8"
},
"funding": [
{
@@ -5219,20 +5240,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-16T13:31:43+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/property-info",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "e96d740ab5ac39aa530c8eaa0720ea8169118e26"
+ "reference": "7f544bc6ceb1a6a2283c7af8e8621262c43b7ede"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/e96d740ab5ac39aa530c8eaa0720ea8169118e26",
- "reference": "e96d740ab5ac39aa530c8eaa0720ea8169118e26",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/7f544bc6ceb1a6a2283c7af8e8621262c43b7ede",
+ "reference": "7f544bc6ceb1a6a2283c7af8e8621262c43b7ede",
"shasum": ""
},
"require": {
@@ -5286,7 +5307,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v6.4.3"
+ "source": "https://github.com/symfony/property-info/tree/v6.4.8"
},
"funding": [
{
@@ -5302,20 +5323,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/routing",
- "version": "v6.4.5",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4"
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/7fe30068e207d9c31c0138501ab40358eb2d49a4",
- "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
"shasum": ""
},
"require": {
@@ -5369,7 +5390,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.4.5"
+ "source": "https://github.com/symfony/routing/tree/v6.4.8"
},
"funding": [
{
@@ -5385,20 +5406,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-27T12:33:30+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/security-bundle",
- "version": "v6.4.5",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
- "reference": "b7825ec970f51fcc4982397856405728544df9ce"
+ "reference": "dfb286069b0332e1f1c21962133d17c0fbc1e5e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b7825ec970f51fcc4982397856405728544df9ce",
- "reference": "b7825ec970f51fcc4982397856405728544df9ce",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/dfb286069b0332e1f1c21962133d17c0fbc1e5e7",
+ "reference": "dfb286069b0332e1f1c21962133d17c0fbc1e5e7",
"shasum": ""
},
"require": {
@@ -5481,7 +5502,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-bundle/tree/v6.4.5"
+ "source": "https://github.com/symfony/security-bundle/tree/v6.4.8"
},
"funding": [
{
@@ -5497,20 +5518,20 @@
"type": "tidelift"
}
],
- "time": "2024-03-02T12:45:30+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/security-core",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "bb10f630cf5b1819ff80aa3ad57a09c61268fc48"
+ "reference": "5fc7850ada5e8e03d78c1739c82c64d5e2f7d495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/bb10f630cf5b1819ff80aa3ad57a09c61268fc48",
- "reference": "bb10f630cf5b1819ff80aa3ad57a09c61268fc48",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/5fc7850ada5e8e03d78c1739c82c64d5e2f7d495",
+ "reference": "5fc7850ada5e8e03d78c1739c82c64d5e2f7d495",
"shasum": ""
},
"require": {
@@ -5567,7 +5588,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v6.4.3"
+ "source": "https://github.com/symfony/security-core/tree/v6.4.8"
},
"funding": [
{
@@ -5583,20 +5604,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/security-csrf",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-csrf.git",
- "reference": "e10257dd26f965d75e96bbfc27e46efd943f3010"
+ "reference": "f46ab02b76311087873257071559edcaf6d7ab99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-csrf/zipball/e10257dd26f965d75e96bbfc27e46efd943f3010",
- "reference": "e10257dd26f965d75e96bbfc27e46efd943f3010",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/f46ab02b76311087873257071559edcaf6d7ab99",
+ "reference": "f46ab02b76311087873257071559edcaf6d7ab99",
"shasum": ""
},
"require": {
@@ -5635,7 +5656,7 @@
"description": "Symfony Security Component - CSRF Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-csrf/tree/v6.4.3"
+ "source": "https://github.com/symfony/security-csrf/tree/v6.4.8"
},
"funding": [
{
@@ -5651,20 +5672,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/security-http",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
- "reference": "bf7548976c19ce751c95a3d012d0dcd27409e506"
+ "reference": "fb82ddec887dc67f3bcf4d6df3cb8efd529be104"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-http/zipball/bf7548976c19ce751c95a3d012d0dcd27409e506",
- "reference": "bf7548976c19ce751c95a3d012d0dcd27409e506",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/fb82ddec887dc67f3bcf4d6df3cb8efd529be104",
+ "reference": "fb82ddec887dc67f3bcf4d6df3cb8efd529be104",
"shasum": ""
},
"require": {
@@ -5723,7 +5744,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-http/tree/v6.4.4"
+ "source": "https://github.com/symfony/security-http/tree/v6.4.8"
},
"funding": [
{
@@ -5739,20 +5760,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-26T07:52:26+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/serializer",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "88da7f8fe03c5f4c2a69da907f1de03fab2e6872"
+ "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/88da7f8fe03c5f4c2a69da907f1de03fab2e6872",
- "reference": "88da7f8fe03c5f4c2a69da907f1de03fab2e6872",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c",
+ "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c",
"shasum": ""
},
"require": {
@@ -5821,7 +5842,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v6.4.4"
+ "source": "https://github.com/symfony/serializer/tree/v6.4.8"
},
"funding": [
{
@@ -5837,25 +5858,26 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.4.1",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "psr/container": "^1.1|^2.0"
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -5863,7 +5885,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5903,7 +5925,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -5919,20 +5941,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-26T14:02:43+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/string",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9"
+ "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
- "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
+ "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d",
+ "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d",
"shasum": ""
},
"require": {
@@ -5989,7 +6011,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.4.4"
+ "source": "https://github.com/symfony/string/tree/v6.4.8"
},
"funding": [
{
@@ -6005,20 +6027,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-01T13:16:41+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e"
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e",
- "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a",
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a",
"shasum": ""
},
"require": {
@@ -6084,7 +6106,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.4.4"
+ "source": "https://github.com/symfony/translation/tree/v6.4.8"
},
"funding": [
{
@@ -6100,20 +6122,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-20T13:16:58+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.4.1",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "06450585bf65e978026bda220cdebca3f867fde7"
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7",
- "reference": "06450585bf65e978026bda220cdebca3f867fde7",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
"shasum": ""
},
"require": {
@@ -6122,7 +6144,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6162,7 +6184,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -6178,20 +6200,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-26T14:02:43+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/uid",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0"
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0",
- "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
"shasum": ""
},
"require": {
@@ -6236,7 +6258,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v6.4.3"
+ "source": "https://github.com/symfony/uid/tree/v6.4.8"
},
"funding": [
{
@@ -6252,20 +6274,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/validator",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "1cf92edc9a94d16275efef949fa6748d11cc8f47"
+ "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/1cf92edc9a94d16275efef949fa6748d11cc8f47",
- "reference": "1cf92edc9a94d16275efef949fa6748d11cc8f47",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/dab2781371d54c86f6b25623ab16abb2dde2870c",
+ "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c",
"shasum": ""
},
"require": {
@@ -6312,7 +6334,8 @@
"Symfony\\Component\\Validator\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Tests/",
+ "/Resources/bin/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -6332,7 +6355,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.4.4"
+ "source": "https://github.com/symfony/validator/tree/v6.4.8"
},
"funding": [
{
@@ -6348,20 +6371,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-06-02T15:48:50+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "b439823f04c98b84d4366c79507e9da6230944b1"
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1",
- "reference": "b439823f04c98b84d4366c79507e9da6230944b1",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
"shasum": ""
},
"require": {
@@ -6417,7 +6440,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.4.4"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.8"
},
"funding": [
{
@@ -6433,20 +6456,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-15T11:23:52+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b"
+ "reference": "792ca836f99b340f2e9ca9497c7953948c49a504"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b",
- "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/792ca836f99b340f2e9ca9497c7953948c49a504",
+ "reference": "792ca836f99b340f2e9ca9497c7953948c49a504",
"shasum": ""
},
"require": {
@@ -6454,6 +6477,8 @@
"symfony/deprecation-contracts": "^2.5|^3"
},
"require-dev": {
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
@@ -6492,7 +6517,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v6.4.4"
+ "source": "https://github.com/symfony/var-exporter/tree/v6.4.8"
},
"funding": [
{
@@ -6508,20 +6533,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-26T08:37:45+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/yaml",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "d75715985f0f94f978e3a8fa42533e10db921b90"
+ "reference": "52903de178d542850f6f341ba92995d3d63e60c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90",
- "reference": "d75715985f0f94f978e3a8fa42533e10db921b90",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9",
+ "reference": "52903de178d542850f6f341ba92995d3d63e60c9",
"shasum": ""
},
"require": {
@@ -6564,7 +6589,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.3"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.8"
},
"funding": [
{
@@ -6580,7 +6605,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "webmozart/assert",
@@ -7083,12 +7108,12 @@
"source": {
"type": "git",
"url": "https://github.com/centreon/centreon-test-lib.git",
- "reference": "d686936d55f7d2d20ee3ebcece13c12c6e6001db"
+ "reference": "67cb5c7117a04459c48453edb98413fda6a7183a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/centreon/centreon-test-lib/zipball/d686936d55f7d2d20ee3ebcece13c12c6e6001db",
- "reference": "d686936d55f7d2d20ee3ebcece13c12c6e6001db",
+ "url": "https://api.github.com/repos/centreon/centreon-test-lib/zipball/67cb5c7117a04459c48453edb98413fda6a7183a",
+ "reference": "67cb5c7117a04459c48453edb98413fda6a7183a",
"shasum": ""
},
"require": {
@@ -7138,20 +7163,84 @@
"issues": "https://github.com/centreon/centreon-test-lib/issues",
"source": "https://github.com/centreon/centreon-test-lib/tree/master"
},
- "time": "2024-06-03T09:51:01+00:00"
+ "time": "2024-08-30T15:03:34+00:00"
+ },
+ {
+ "name": "clue/ndjson-react",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/clue/reactphp-ndjson.git",
+ "reference": "392dc165fce93b5bb5c637b67e59619223c931b0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0",
+ "reference": "392dc165fce93b5bb5c637b67e59619223c931b0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3",
+ "react/stream": "^1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35",
+ "react/event-loop": "^1.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Clue\\React\\NDJson\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering"
+ }
+ ],
+ "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.",
+ "homepage": "https://github.com/clue/reactphp-ndjson",
+ "keywords": [
+ "NDJSON",
+ "json",
+ "jsonlines",
+ "newline",
+ "reactphp",
+ "streaming"
+ ],
+ "support": {
+ "issues": "https://github.com/clue/reactphp-ndjson/issues",
+ "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://clue.engineering/support",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/clue",
+ "type": "github"
+ }
+ ],
+ "time": "2022-12-23T10:58:28+00:00"
},
{
"name": "composer/pcre",
- "version": "3.1.2",
+ "version": "3.1.4",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace"
+ "reference": "04229f163664973f68f38f6f73d917799168ef24"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/4775f35b2d70865807c89d32c8e7385b86eb0ace",
- "reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24",
+ "reference": "04229f163664973f68f38f6f73d917799168ef24",
"shasum": ""
},
"require": {
@@ -7193,7 +7282,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.2"
+ "source": "https://github.com/composer/pcre/tree/3.1.4"
},
"funding": [
{
@@ -7209,7 +7298,7 @@
"type": "tidelift"
}
],
- "time": "2024-03-07T15:38:35+00:00"
+ "time": "2024-05-27T13:40:54+00:00"
},
{
"name": "composer/semver",
@@ -7294,16 +7383,16 @@
},
{
"name": "composer/xdebug-handler",
- "version": "3.0.3",
+ "version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef",
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef",
"shasum": ""
},
"require": {
@@ -7314,7 +7403,7 @@
"require-dev": {
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^6.0"
+ "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
},
"type": "library",
"autoload": {
@@ -7338,9 +7427,9 @@
"performance"
],
"support": {
- "irc": "irc://irc.freenode.org/composer",
+ "irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
},
"funding": [
{
@@ -7356,7 +7445,115 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T21:32:43+00:00"
+ "time": "2024-05-06T16:37:16+00:00"
+ },
+ {
+ "name": "evenement/evenement",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/igorw/evenement.git",
+ "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc",
+ "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9 || ^6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Evenement\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ }
+ ],
+ "description": "Événement is a very simple event dispatching library for PHP",
+ "keywords": [
+ "event-dispatcher",
+ "event-emitter"
+ ],
+ "support": {
+ "issues": "https://github.com/igorw/evenement/issues",
+ "source": "https://github.com/igorw/evenement/tree/v3.0.2"
+ },
+ "time": "2023-08-08T05:53:35+00:00"
+ },
+ {
+ "name": "fidry/cpu-core-counter",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theofidry/cpu-core-counter.git",
+ "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
+ "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "fidry/makefile": "^0.2.0",
+ "fidry/php-cs-fixer-config": "^1.1.2",
+ "phpstan/extension-installer": "^1.2.0",
+ "phpstan/phpstan": "^1.9.2",
+ "phpstan/phpstan-deprecation-rules": "^1.0.0",
+ "phpstan/phpstan-phpunit": "^1.2.2",
+ "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpunit/phpunit": "^8.5.31 || ^9.5.26",
+ "webmozarts/strict-phpunit": "^7.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Fidry\\CpuCoreCounter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Théo FIDRY",
+ "email": "theo.fidry@gmail.com"
+ }
+ ],
+ "description": "Tiny utility to get the number of CPU cores.",
+ "keywords": [
+ "CPU",
+ "core"
+ ],
+ "support": {
+ "issues": "https://github.com/theofidry/cpu-core-counter/issues",
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theofidry",
+ "type": "github"
+ }
+ ],
+ "time": "2024-02-07T09:43:46+00:00"
},
{
"name": "filp/whoops",
@@ -7562,25 +7759,32 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.51.0",
+ "version": "v3.58.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "127fa74f010da99053e3f5b62672615b72dd6efd"
+ "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/127fa74f010da99053e3f5b62672615b72dd6efd",
- "reference": "127fa74f010da99053e3f5b62672615b72dd6efd",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff",
+ "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff",
"shasum": ""
},
"require": {
+ "clue/ndjson-react": "^1.0",
"composer/semver": "^3.4",
"composer/xdebug-handler": "^3.0.3",
"ext-filter": "*",
"ext-json": "*",
"ext-tokenizer": "*",
+ "fidry/cpu-core-counter": "^1.0",
"php": "^7.4 || ^8.0",
+ "react/child-process": "^0.6.5",
+ "react/event-loop": "^1.0",
+ "react/promise": "^2.0 || ^3.0",
+ "react/socket": "^1.0",
+ "react/stream": "^1.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0",
"symfony/console": "^5.4 || ^6.0 || ^7.0",
"symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
@@ -7595,6 +7799,7 @@
},
"require-dev": {
"facile-it/paraunit": "^1.3 || ^2.0",
+ "infection/infection": "^0.27.11",
"justinrainbow/json-schema": "^5.2",
"keradus/cli-executor": "^2.1",
"mikey179/vfsstream": "^1.6.11",
@@ -7642,7 +7847,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.51.0"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1"
},
"funding": [
{
@@ -7650,7 +7855,7 @@
"type": "github"
}
],
- "time": "2024-02-28T19:50:06+00:00"
+ "time": "2024-05-29T16:39:07+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -7979,16 +8184,16 @@
},
{
"name": "instaclick/php-webdriver",
- "version": "1.4.18",
+ "version": "1.4.19",
"source": {
"type": "git",
"url": "https://github.com/instaclick/php-webdriver.git",
- "reference": "a61a8459f86c79dd1f19934ea3929804f2e41f8c"
+ "reference": "3b2a2ddc4e0a690cc691d7e5952964cc4b9538b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/a61a8459f86c79dd1f19934ea3929804f2e41f8c",
- "reference": "a61a8459f86c79dd1f19934ea3929804f2e41f8c",
+ "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/3b2a2ddc4e0a690cc691d7e5952964cc4b9538b1",
+ "reference": "3b2a2ddc4e0a690cc691d7e5952964cc4b9538b1",
"shasum": ""
},
"require": {
@@ -8036,9 +8241,9 @@
],
"support": {
"issues": "https://github.com/instaclick/php-webdriver/issues",
- "source": "https://github.com/instaclick/php-webdriver/tree/1.4.18"
+ "source": "https://github.com/instaclick/php-webdriver/tree/1.4.19"
},
- "time": "2023-12-08T07:11:19+00:00"
+ "time": "2024-03-19T01:58:53+00:00"
},
{
"name": "league/openapi-psr7-validator",
@@ -8274,16 +8479,16 @@
},
{
"name": "masterminds/html5",
- "version": "2.8.1",
+ "version": "2.9.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf"
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf",
- "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
"shasum": ""
},
"require": {
@@ -8291,7 +8496,7 @@
"php": ">=5.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8"
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9"
},
"type": "library",
"extra": {
@@ -8335,9 +8540,9 @@
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
- "source": "https://github.com/Masterminds/html5-php/tree/2.8.1"
+ "source": "https://github.com/Masterminds/html5-php/tree/2.9.0"
},
- "time": "2023-05-10T11:58:31+00:00"
+ "time": "2024-03-31T07:05:07+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -8971,16 +9176,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.10.62",
+ "version": "1.10.67",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9"
+ "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd5c8a1660ed3540b211407c77abf4af193a6af9",
- "reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493",
+ "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493",
"shasum": ""
},
"require": {
@@ -9023,13 +9228,9 @@
{
"url": "https://github.com/phpstan",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
}
],
- "time": "2024-03-13T12:27:20+00:00"
+ "time": "2024-04-16T07:22:02+00:00"
},
{
"name": "phpstan/phpstan-beberlei-assert",
@@ -9402,16 +9603,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.17",
+ "version": "9.6.19",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd"
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd",
- "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
"shasum": ""
},
"require": {
@@ -9485,7 +9686,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
},
"funding": [
{
@@ -9501,7 +9702,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-23T13:14:51+00:00"
+ "time": "2024-04-05T04:35:58+00:00"
},
{
"name": "psr/http-client",
@@ -9557,20 +9758,20 @@
},
{
"name": "psr/http-factory",
- "version": "1.0.2",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
- "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
- "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
+ "php": ">=7.1",
"psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
@@ -9594,7 +9795,7 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
@@ -9606,9 +9807,9 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ "source": "https://github.com/php-fig/http-factory"
},
- "time": "2023-04-10T20:10:41+00:00"
+ "time": "2024-04-15T12:06:14+00:00"
},
{
"name": "psr/http-message",
@@ -9820,18 +10021,548 @@
},
"time": "2019-03-08T08:55:37+00:00"
},
+ {
+ "name": "react/cache",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/cache.git",
+ "reference": "d47c472b64aa5608225f47965a484b75c7817d5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b",
+ "reference": "d47c472b64aa5608225f47965a484b75c7817d5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "react/promise": "^3.0 || ^2.0 || ^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "Async, Promise-based cache interface for ReactPHP",
+ "keywords": [
+ "cache",
+ "caching",
+ "promise",
+ "reactphp"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/cache/issues",
+ "source": "https://github.com/reactphp/cache/tree/v1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2022-11-30T15:59:55+00:00"
+ },
+ {
+ "name": "react/child-process",
+ "version": "v0.6.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/child-process.git",
+ "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
+ "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
+ "shasum": ""
+ },
+ "require": {
+ "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
+ "php": ">=5.3.0",
+ "react/event-loop": "^1.2",
+ "react/stream": "^1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
+ "react/socket": "^1.8",
+ "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\ChildProcess\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "Event-driven library for executing child processes with ReactPHP.",
+ "keywords": [
+ "event-driven",
+ "process",
+ "reactphp"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/child-process/issues",
+ "source": "https://github.com/reactphp/child-process/tree/v0.6.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/WyriHaximus",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/clue",
+ "type": "github"
+ }
+ ],
+ "time": "2022-09-16T13:41:56+00:00"
+ },
+ {
+ "name": "react/dns",
+ "version": "v1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/dns.git",
+ "reference": "c134600642fa615b46b41237ef243daa65bb64ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/dns/zipball/c134600642fa615b46b41237ef243daa65bb64ec",
+ "reference": "c134600642fa615b46b41237ef243daa65bb64ec",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "react/cache": "^1.0 || ^0.6 || ^0.5",
+ "react/event-loop": "^1.2",
+ "react/promise": "^3.0 || ^2.7 || ^1.2.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
+ "react/async": "^4 || ^3 || ^2",
+ "react/promise-timer": "^1.9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\Dns\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "Async DNS resolver for ReactPHP",
+ "keywords": [
+ "async",
+ "dns",
+ "dns-resolver",
+ "reactphp"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/dns/issues",
+ "source": "https://github.com/reactphp/dns/tree/v1.12.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2023-11-29T12:41:06+00:00"
+ },
+ {
+ "name": "react/event-loop",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/event-loop.git",
+ "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
+ "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
+ },
+ "suggest": {
+ "ext-pcntl": "For signal handling support when using the StreamSelectLoop"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\EventLoop\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
+ "keywords": [
+ "asynchronous",
+ "event-loop"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/event-loop/issues",
+ "source": "https://github.com/reactphp/event-loop/tree/v1.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2023-11-13T13:48:05+00:00"
+ },
+ {
+ "name": "react/promise",
+ "version": "v3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/promise.git",
+ "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63",
+ "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "1.10.39 || 1.4.10",
+ "phpunit/phpunit": "^9.6 || ^7.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "React\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "A lightweight implementation of CommonJS Promises/A for PHP",
+ "keywords": [
+ "promise",
+ "promises"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/promise/issues",
+ "source": "https://github.com/reactphp/promise/tree/v3.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2024-05-24T10:39:05+00:00"
+ },
+ {
+ "name": "react/socket",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/socket.git",
+ "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038",
+ "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038",
+ "shasum": ""
+ },
+ "require": {
+ "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
+ "php": ">=5.3.0",
+ "react/dns": "^1.11",
+ "react/event-loop": "^1.2",
+ "react/promise": "^3 || ^2.6 || ^1.2.1",
+ "react/stream": "^1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
+ "react/async": "^4 || ^3 || ^2",
+ "react/promise-stream": "^1.4",
+ "react/promise-timer": "^1.10"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\Socket\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
+ "keywords": [
+ "Connection",
+ "Socket",
+ "async",
+ "reactphp",
+ "stream"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/socket/issues",
+ "source": "https://github.com/reactphp/socket/tree/v1.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2023-12-15T11:02:10+00:00"
+ },
+ {
+ "name": "react/stream",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/reactphp/stream.git",
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d",
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d",
+ "shasum": ""
+ },
+ "require": {
+ "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
+ "php": ">=5.3.8",
+ "react/event-loop": "^1.2"
+ },
+ "require-dev": {
+ "clue/stream-filter": "~1.2",
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "React\\Stream\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Jan Sorgalla",
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
+ }
+ ],
+ "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
+ "keywords": [
+ "event-driven",
+ "io",
+ "non-blocking",
+ "pipe",
+ "reactphp",
+ "readable",
+ "stream",
+ "writable"
+ ],
+ "support": {
+ "issues": "https://github.com/reactphp/stream/issues",
+ "source": "https://github.com/reactphp/stream/tree/v1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2024-06-11T12:45:25+00:00"
+ },
{
"name": "rector/rector",
- "version": "1.0.2",
+ "version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11"
+ "reference": "73eb63e4f9011dba6b7c66c3262543014e352f34"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/7596fa6da06c6a20c012efe6bb3d9188a9113b11",
- "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/73eb63e4f9011dba6b7c66c3262543014e352f34",
+ "reference": "73eb63e4f9011dba6b7c66c3262543014e352f34",
"shasum": ""
},
"require": {
@@ -9844,6 +10575,9 @@
"rector/rector-phpunit": "*",
"rector/rector-symfony": "*"
},
+ "suggest": {
+ "ext-dom": "To manipulate phpunit.xml via the custom-rule command"
+ },
"bin": [
"bin/rector"
],
@@ -9866,7 +10600,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/1.0.2"
+ "source": "https://github.com/rectorphp/rector/tree/1.0.5"
},
"funding": [
{
@@ -9874,7 +10608,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:32:31+00:00"
+ "time": "2024-05-10T05:31:15+00:00"
},
{
"name": "respect/stringifier",
@@ -9932,16 +10666,16 @@
},
{
"name": "respect/validation",
- "version": "2.3.4",
+ "version": "2.3.7",
"source": {
"type": "git",
"url": "https://github.com/Respect/Validation.git",
- "reference": "788939e35909cbc3dcd72202d616e04dd553b572"
+ "reference": "967f7b6cc71e3728bb0f766cc1aea0604b2955aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Respect/Validation/zipball/788939e35909cbc3dcd72202d616e04dd553b572",
- "reference": "788939e35909cbc3dcd72202d616e04dd553b572",
+ "url": "https://api.github.com/repos/Respect/Validation/zipball/967f7b6cc71e3728bb0f766cc1aea0604b2955aa",
+ "reference": "967f7b6cc71e3728bb0f766cc1aea0604b2955aa",
"shasum": ""
},
"require": {
@@ -9994,9 +10728,9 @@
],
"support": {
"issues": "https://github.com/Respect/Validation/issues",
- "source": "https://github.com/Respect/Validation/tree/2.3.4"
+ "source": "https://github.com/Respect/Validation/tree/2.3.7"
},
- "time": "2024-03-11T21:14:03+00:00"
+ "time": "2024-04-13T09:45:55+00:00"
},
{
"name": "riverline/multipart-parser",
@@ -10056,16 +10790,16 @@
},
{
"name": "robertfausk/mink-panther-driver",
- "version": "v1.1.0",
+ "version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/robertfausk/mink-panther-driver.git",
- "reference": "2a4067d419655eda0604ac4085916a7c42b3b904"
+ "reference": "52aa735bc0cf05f5fd9406f4da56136b00b9c5cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/robertfausk/mink-panther-driver/zipball/2a4067d419655eda0604ac4085916a7c42b3b904",
- "reference": "2a4067d419655eda0604ac4085916a7c42b3b904",
+ "url": "https://api.github.com/repos/robertfausk/mink-panther-driver/zipball/52aa735bc0cf05f5fd9406f4da56136b00b9c5cb",
+ "reference": "52aa735bc0cf05f5fd9406f4da56136b00b9c5cb",
"shasum": ""
},
"require": {
@@ -10087,7 +10821,7 @@
"type": "mink-driver",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-main": "1.1.x-dev"
}
},
"autoload": {
@@ -10120,9 +10854,9 @@
],
"support": {
"issues": "https://github.com/robertfausk/mink-panther-driver/issues",
- "source": "https://github.com/robertfausk/mink-panther-driver/tree/v1.1.0"
+ "source": "https://github.com/robertfausk/mink-panther-driver/tree/v1.1.1"
},
- "time": "2022-07-25T16:04:56+00:00"
+ "time": "2024-04-18T10:43:40+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -10926,16 +11660,16 @@
},
{
"name": "sebastian/resource-operations",
- "version": "3.0.3",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
"shasum": ""
},
"require": {
@@ -10947,7 +11681,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -10968,8 +11702,7 @@
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
},
"funding": [
{
@@ -10977,8 +11710,7 @@
"type": "github"
}
],
- "abandoned": true,
- "time": "2020-09-28T06:45:17+00:00"
+ "time": "2024-03-14T16:00:52+00:00"
},
{
"name": "sebastian/type",
@@ -11161,16 +11893,16 @@
},
{
"name": "symfony/browser-kit",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e"
+ "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/495ffa2e6d17e199213f93768efa01af32bbf70e",
- "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/62ab90b92066ef6cce5e79365625b4b1432464c8",
+ "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8",
"shasum": ""
},
"require": {
@@ -11209,7 +11941,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v6.4.3"
+ "source": "https://github.com/symfony/browser-kit/tree/v6.4.8"
},
"funding": [
{
@@ -11225,20 +11957,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229"
+ "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229",
- "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/4b61b02fe15db48e3687ce1c45ea385d1780fe08",
+ "reference": "4b61b02fe15db48e3687ce1c45ea385d1780fe08",
"shasum": ""
},
"require": {
@@ -11274,7 +12006,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.4.3"
+ "source": "https://github.com/symfony/css-selector/tree/v6.4.8"
},
"funding": [
{
@@ -11290,20 +12022,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:51:35+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531"
+ "reference": "105b56a0305d219349edeb60a800082eca864e4b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531",
- "reference": "f0e7ec3fa17000e2d0cb4557b4b47c88a6a63531",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/105b56a0305d219349edeb60a800082eca864e4b",
+ "reference": "105b56a0305d219349edeb60a800082eca864e4b",
"shasum": ""
},
"require": {
@@ -11341,7 +12073,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v6.4.4"
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.4.8"
},
"funding": [
{
@@ -11357,7 +12089,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-07T09:17:57+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/panther",
@@ -11450,16 +12182,16 @@
},
{
"name": "symfony/phpunit-bridge",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
- "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222"
+ "reference": "937f47cc64922f283bb0c474f33415bba0a9fc0d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/16ed5bdfd18e14fc7de347c8688e8ac479284222",
- "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/937f47cc64922f283bb0c474f33415bba0a9fc0d",
+ "reference": "937f47cc64922f283bb0c474f33415bba0a9fc0d",
"shasum": ""
},
"require": {
@@ -11491,7 +12223,8 @@
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Tests/",
+ "/bin/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -11511,7 +12244,7 @@
"description": "Provides utilities for PHPUnit, especially user deprecation notices management",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.4"
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.8"
},
"funding": [
{
@@ -11527,7 +12260,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-08T14:08:19+00:00"
+ "time": "2024-06-02T15:48:50+00:00"
},
{
"name": "symfony/polyfill-php81",
@@ -11607,16 +12340,16 @@
},
{
"name": "symfony/stopwatch",
- "version": "v6.4.3",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1"
+ "reference": "63e069eb616049632cde9674c46957819454b8aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1",
- "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/63e069eb616049632cde9674c46957819454b8aa",
+ "reference": "63e069eb616049632cde9674c46957819454b8aa",
"shasum": ""
},
"require": {
@@ -11649,7 +12382,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v6.4.3"
+ "source": "https://github.com/symfony/stopwatch/tree/v6.4.8"
},
"funding": [
{
@@ -11665,20 +12398,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T14:35:58+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "256f330026d1c97187b61aa5c29e529499877f13"
+ "reference": "57de1b7d7499053a2c5beb9344751e8bfd332649"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/256f330026d1c97187b61aa5c29e529499877f13",
- "reference": "256f330026d1c97187b61aa5c29e529499877f13",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/57de1b7d7499053a2c5beb9344751e8bfd332649",
+ "reference": "57de1b7d7499053a2c5beb9344751e8bfd332649",
"shasum": ""
},
"require": {
@@ -11758,7 +12491,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.4.4"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.4.8"
},
"funding": [
{
@@ -11774,20 +12507,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-15T11:26:02+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "f60ba43a09d88395d05797af982588b57331ff4d"
+ "reference": "ef17bc8fc2cb2376b235cd1b98f0275a78c5ba65"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f60ba43a09d88395d05797af982588b57331ff4d",
- "reference": "f60ba43a09d88395d05797af982588b57331ff4d",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ef17bc8fc2cb2376b235cd1b98f0275a78c5ba65",
+ "reference": "ef17bc8fc2cb2376b235cd1b98f0275a78c5ba65",
"shasum": ""
},
"require": {
@@ -11842,7 +12575,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v6.4.4"
+ "source": "https://github.com/symfony/twig-bundle/tree/v6.4.8"
},
"funding": [
{
@@ -11858,20 +12591,20 @@
"type": "tidelift"
}
],
- "time": "2024-02-15T11:23:52+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v6.4.4",
+ "version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "a69d7124bfb2e15638ba0a1be94f0845d8d05ee4"
+ "reference": "bcc806d1360991de3bf78ac5ca0202db85de9bfc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a69d7124bfb2e15638ba0a1be94f0845d8d05ee4",
- "reference": "a69d7124bfb2e15638ba0a1be94f0845d8d05ee4",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/bcc806d1360991de3bf78ac5ca0202db85de9bfc",
+ "reference": "bcc806d1360991de3bf78ac5ca0202db85de9bfc",
"shasum": ""
},
"require": {
@@ -11924,7 +12657,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.4"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.8"
},
"funding": [
{
@@ -11940,7 +12673,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-22T20:27:10+00:00"
+ "time": "2024-05-31T14:49:08+00:00"
},
{
"name": "theseer/tokenizer",
@@ -11994,30 +12727,37 @@
},
{
"name": "twig/twig",
- "version": "v3.8.0",
+ "version": "v3.10.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
+ "reference": "67f29781ffafa520b0bbfbd8384674b42db04572"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
- "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572",
+ "reference": "67f29781ffafa520b0bbfbd8384674b42db04572",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php80": "^1.22"
},
"require-dev": {
"psr/container": "^1.0|^2.0",
- "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
+ "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"type": "library",
"autoload": {
+ "files": [
+ "src/Resources/core.php",
+ "src/Resources/debug.php",
+ "src/Resources/escaper.php",
+ "src/Resources/string_loader.php"
+ ],
"psr-4": {
"Twig\\": "src/"
}
@@ -12050,7 +12790,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.8.0"
+ "source": "https://github.com/twigphp/Twig/tree/v3.10.3"
},
"funding": [
{
@@ -12062,20 +12802,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-21T18:54:41+00:00"
+ "time": "2024-05-16T10:04:27+00:00"
},
{
"name": "zircote/swagger-php",
- "version": "4.8.5",
+ "version": "4.10.0",
"source": {
"type": "git",
"url": "https://github.com/zircote/swagger-php.git",
- "reference": "038da8ad219f1e9c3f82c5d84c47da3b6f35039c"
+ "reference": "2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zircote/swagger-php/zipball/038da8ad219f1e9c3f82c5d84c47da3b6f35039c",
- "reference": "038da8ad219f1e9c3f82c5d84c47da3b6f35039c",
+ "url": "https://api.github.com/repos/zircote/swagger-php/zipball/2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56",
+ "reference": "2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56",
"shasum": ""
},
"require": {
@@ -12141,9 +12881,9 @@
],
"support": {
"issues": "https://github.com/zircote/swagger-php/issues",
- "source": "https://github.com/zircote/swagger-php/tree/4.8.5"
+ "source": "https://github.com/zircote/swagger-php/tree/4.10.0"
},
- "time": "2024-03-07T23:56:26+00:00"
+ "time": "2024-06-06T22:42:02+00:00"
}
],
"aliases": [],
@@ -12165,5 +12905,5 @@
"platform-overrides": {
"php": "8.1"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/centreon/config/centreon.config.php.template b/centreon/config/centreon.config.php.template
index e55a5b1b3b..ba1021de63 100644
--- a/centreon/config/centreon.config.php.template
+++ b/centreon/config/centreon.config.php.template
@@ -19,6 +19,13 @@
*
*/
+require_once __DIR__ . '/../vendor/autoload.php';
+
+use Core\Security\Vault\Domain\Model\VaultConfiguration;
+use Security\Encryption;
+use Symfony\Component\Dotenv\Dotenv;
+use Symfony\Component\HttpClient\CurlHttpClient;
+
// Define constants
$constants = [
'_CENTREON_PATH_' => realpath(__DIR__ . '/..') . '/',
@@ -30,6 +37,67 @@ $constants = [
'_CENTREON_MARIA_DB_MIN_VERSION_' => '10.5',
];
+$createVaultConfiguration = function(): VaultConfiguration
+{
+ $vaultConfigurationInformation = json_decode(file_get_contents(_CENTREON_VARLIB_ . '/vault/vault.json'), true);
+ $encryptionManager = new Encryption();
+ (new Dotenv())->bootEnv('/usr/share/centreon/.env');
+ $encryptionManager->setFirstKey($_ENV["APP_SECRET"]);
+ return new VaultConfiguration(
+ encryption: $encryptionManager,
+ name: $vaultConfigurationInformation['name'],
+ address: $vaultConfigurationInformation['url'],
+ port: (int)$vaultConfigurationInformation['port'],
+ rootPath: $vaultConfigurationInformation['root_path'],
+ encryptedRoleId: $vaultConfigurationInformation['role_id'],
+ encryptedSecretId: $vaultConfigurationInformation['secret_id'],
+ salt: $vaultConfigurationInformation['salt']
+ );
+};
+
+$authenticateToVault = function(
+ CurlHttpClient $httpClient,
+ VaultConfiguration $vaultConfiguration
+): string {
+ $url = 'https://' . $vaultConfiguration->getAddress() . ':'
+ . $vaultConfiguration->getPort() . '/v1/auth/approle/login';
+ $body = [
+ 'role_id' => $vaultConfiguration->getRoleId(),
+ 'secret_id' => $vaultConfiguration->getSecretId(),
+ ];
+ $loginResponse = $httpClient->request('POST', $url, ['json' => $body]);
+ $content = json_decode($loginResponse->getContent(), true);
+ if (! isset($content['auth']['client_token'])) {
+ error_log($url . ' Unable to retrieve client token from Vault');
+
+ throw new \Exception('Unable to authenticate to Vault');
+ }
+
+ return $content['auth']['client_token'];
+};
+
+$retrieveDatabaseCredentialsFromVault = function(
+ string $token,
+ string $vaultPath,
+ CurlHttpClient $httpClient,
+ VaultConfiguration $vaultConfiguration
+): array {
+ $databaseCredentialsUrl = 'https://' . $vaultConfiguration->getAddress() . ':'
+ . $vaultConfiguration->getPort() . '/v1/' . $vaultPath;
+ $credentialsResponse = $httpClient->request('GET', $databaseCredentialsUrl, ['headers' => ['X-Vault-Token' => $token]]);
+ $credentialContent = json_decode($credentialsResponse->getContent(), true);
+ if (! isset($credentialContent['data']['data']['_DBUSERNAME'], $credentialContent['data']['data']['_DBPASSWORD'])) {
+ error_log('Unable to retrieve database credentials from Vault');
+
+ throw new \Exception('Unable to retrieve database credentials from Vault');
+ }
+
+ return [
+ 'username' => $credentialContent['data']['data']['_DBUSERNAME'],
+ 'password' => $credentialContent['data']['data']['_DBPASSWORD']
+ ];
+};
+
foreach ($constants as $name => $value) {
if (!defined($name)) {
define($name, $value);
@@ -47,6 +115,29 @@ if (file_exists(_CENTREON_ETC_ . '/centreon.conf.php')) {
define('hostCentstorage', $conf_centreon['hostCentstorage']);
}
+
+ if (
+ ! defined('user')
+ && ! defined('password')
+ && file_exists(_CENTREON_VARLIB_ . '/vault/vault.json')
+ && str_starts_with($conf_centreon['user'], 'secret::')
+ && str_starts_with($conf_centreon['password'], 'secret::')
+ ) {
+ try {
+ $vaultConfiguration = $createVaultConfiguration();
+ $httpClient = new CurlHttpClient();
+ $token = $authenticateToVault($httpClient, $vaultConfiguration);
+ $databaseVaultPathPart = explode("::", $conf_centreon['user']);
+ array_pop($databaseVaultPathPart);
+ $vaultPath = end($databaseVaultPathPart);
+ $credentialContent = $retrieveDatabaseCredentialsFromVault($token, $vaultPath, $httpClient, $vaultConfiguration);
+ $conf_centreon['user'] = $credentialContent['username'];
+ $conf_centreon['password'] = $credentialContent['password'];
+ } catch (\Throwable $ex) {
+ error_log((string) $ex);
+ }
+ }
+
if (!defined('user')) {
define('user', $conf_centreon['user']);
}
diff --git a/centreon/config/features.json b/centreon/config/features.json
index c716b5c1b1..170a1ced01 100644
--- a/centreon/config/features.json
+++ b/centreon/config/features.json
@@ -1,11 +1,10 @@
{
"notification": 2,
- "dashboard": 3,
"map_visx_viewer": 0,
"vault": 0,
+ "vault_broker": 0,
+ "vault_gorgone": 0,
"ad_exclusion_periods": 0,
- "resource_status_tree_view": 3,
- "resource_status_filter_revamp": 3,
"resource_access_management": 2,
- "dashboard_playlist": 3
+ "resources_table_widget_open_tickets": 0
}
diff --git a/centreon/config/packages/Centreon.yaml b/centreon/config/packages/Centreon.yaml
index 30536bb3d2..60be43b7de 100644
--- a/centreon/config/packages/Centreon.yaml
+++ b/centreon/config/packages/Centreon.yaml
@@ -38,17 +38,22 @@ services:
- '../../src/Core/Media/*'
- '../../src/Core/Command/*'
- '../../src/Core/ResourceAccess/*'
+ - '../../src/Core/TimePeriod/*'
- '../../src/Core/Service/*'
- '../../src/Core/HostGroup/*'
- '../../src/Core/ServiceGroup/*'
- '../../src/Core/Host/*'
- '../../src/Core/Broker/*'
+ - '../../src/Core/AdditionalConnectorConfiguration/*'
+ - '../../src/Core/Security/Vault/*'
bind:
$isCloudPlatform: '%env(bool:IS_CLOUD_PLATFORM)%'
Logger:
class: Centreon\Domain\Log\Logger
+
+
Core\Common\Infrastructure\FeatureFlags:
arguments: ['%env(bool:IS_CLOUD_PLATFORM)%', '%env(file:resolve:FILE_FEATURE_FLAGS)%']
public: true
@@ -89,11 +94,14 @@ services:
arguments: ['%env(APP_SECRET)%']
public: true
- Core\Security\Vault\Application\Repository\WriteVaultConfigurationRepositoryInterface:
- class: Core\Security\Vault\Infrastructure\Repository\FsWriteVaultConfigurationRepository
+
+ Core\Common\Application\Repository\WriteVaultRepositoryInterface:
+ class: Core\Common\Infrastructure\Repository\WriteVaultRepository
+ public: true
+
+ Core\Common\Application\Repository\ReadVaultRepositoryInterface:
+ class: Core\Common\Infrastructure\Repository\ReadVaultRepository
public: true
- arguments:
- $configurationFile: '%vault_conf_path%'
# JSON Validator
Centreon\Domain\Service\JsonValidator\Interfaces\JsonValidatorInterface:
@@ -162,8 +170,8 @@ services:
class: Centreon\Infrastructure\MonitoringServer\Repository\MonitoringServerConfigurationRepositoryApi
public: true
calls:
- - method: setTimeout
- arguments: ['%curl.timeout%']
+ - method: setTimeout
+ arguments: ['%curl.timeout%']
# Platform topology register server
Centreon\Domain\PlatformTopology\Interfaces\PlatformTopologyServiceInterface:
@@ -303,11 +311,6 @@ services:
arguments: ['%centreon_var_lib%', '%centreon_install_path%']
public: true
- Core\Security\Vault\Application\Repository\ReadVaultConfigurationRepositoryInterface:
- class: Core\Security\Vault\Infrastructure\Repository\FsReadVaultConfigurationRepository
- public: true
- arguments:
- $configurationFile: '%vault_conf_path%'
# Monitoring resources
@@ -320,10 +323,8 @@ services:
tags: ['monitoring.resource.acl']
Core\Security\ProviderConfiguration\Application\Repository\ReadProviderConfigurationsRepositoryInterface:
tags: ['authentication.provider.repositories']
- Core\Security\ProviderConfiguration\Application\UseCase\FindProviderConfigurations\ProviderResponse\ProviderResponseInterface:
- tags: ['authentication.provider.responses']
- Core\Security\ProviderConfiguration\Infrastructure\Api\FindProviderConfigurations\ProviderPresenter\ProviderPresenterInterface:
- tags: ['authentication.provider.presenters']
+ Core\Security\ProviderConfiguration\Application\UseCase\FindProviderConfigurations\ProviderConfigurationDtoFactoryInterface:
+ tags: ['authentication.provider.response.factories']
Core\Platform\Application\Validator\RequirementValidatorInterface:
tags: ['platform.requirement.validators']
Core\Platform\Infrastructure\Validator\RequirementValidators\DatabaseRequirementValidatorInterface:
@@ -336,19 +337,20 @@ services:
tags: ['dashboard.playlist.widget.data.providers']
Symfony\Component\Console\Command\Command:
tags: ['script.command']
+ Core\Resources\Infrastructure\Repository\ExtraDataProviders\ExtraDataProviderInterface:
+ tags: ['monitoring.resource.extra.providers']
+ Core\Resources\Infrastructure\API\ExtraDataNormalizer\ExtraDataNormalizerInterface:
+ tags: ['monitoring.resource.extra.normalizers']
Core\Common\Infrastructure\CommandInitializer:
class: Core\Common\Infrastructure\CommandInitializer
public: true
arguments:
- - !tagged_iterator script.command
+ - !tagged_iterator script.command
Core\Security\ProviderConfiguration\Application\UseCase\FindProviderConfigurations\FindProviderConfigurations:
arguments:
- - !tagged_iterator 'authentication.provider.responses'
-
- Core\Security\ProviderConfiguration\Infrastructure\Api\FindProviderConfigurations\FindProviderConfigurationsPresenter:
- arguments: [!tagged_iterator 'authentication.provider.presenters']
+ - !tagged_iterator 'authentication.provider.response.factories'
Core\Infrastructure\RealTime\Hypermedia\HypermediaCreator:
class: Core\Infrastructure\RealTime\Hypermedia\HypermediaCreator
@@ -451,6 +453,8 @@ services:
Security\Domain\Authentication\Interfaces\OpenIdProviderInterface:
class: Core\Security\Authentication\Domain\Provider\OpenIdProvider
+ bind:
+ $isCloudPlatform: '%env(bool:IS_CLOUD_PLATFORM)%'
tags: ['authentication.providers']
Security\Domain\Authentication\Interfaces\WebSSOProviderInterface:
diff --git a/centreon/config/packages/framework.yaml b/centreon/config/packages/framework.yaml
index e105d26d2d..d5356ce92c 100644
--- a/centreon/config/packages/framework.yaml
+++ b/centreon/config/packages/framework.yaml
@@ -15,3 +15,10 @@ framework:
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
+
+ serializer:
+ enabled: true
+ name_converter: 'serializer.name_converter.camel_case_to_snake_case'
+ mapping:
+ paths:
+ - '%kernel.project_dir%/config/symfony_serializer'
diff --git a/centreon/config/packages/validator.yaml b/centreon/config/packages/validator.yaml
index 876384c785..bbd2e443f3 100644
--- a/centreon/config/packages/validator.yaml
+++ b/centreon/config/packages/validator.yaml
@@ -1,6 +1,6 @@
framework:
validation:
enabled: true
- enable_annotations: false
+ enable_annotations: true
email_validation_mode: html5
diff --git a/centreon/config/services.yaml b/centreon/config/services.yaml
index c3168976f3..6f358ae30e 100644
--- a/centreon/config/services.yaml
+++ b/centreon/config/services.yaml
@@ -7,7 +7,7 @@
parameters:
locale: en
api.header: "Api-Version"
- api.version.latest: "24.04"
+ api.version.latest: "24.09"
database_host: "%env(hostCentreon)%"
database_port: "%env(port)%"
database_db: "%env(db)%"
@@ -18,7 +18,7 @@ parameters:
validation_path: "%env(_CENTREON_PATH_)%config/packages/validator"
centreon_path: "%env(_CENTREON_PATH_)%"
centreon_etc_path: "%env(_CENTREON_ETC_)%"
- vault_conf_path: "%centreon_var_lib%/vault/vault.yaml"
+ vault_conf_path: "%centreon_var_lib%/vault/vault.json"
centreon_install_path: "%centreon_path%/www/install"
translation_path: "%centreon_path%/www/locale"
log_path: "%env(_CENTREON_LOG_)%"
@@ -105,6 +105,23 @@ services:
$resourceTypes: !tagged_iterator 'monitoring.resource.type'
$sqlRequestTranslator: '@sqlRequestTranslator'
$resourceACLProviders: !tagged_iterator 'monitoring.resource.acl'
+ $extraDataProviders: !tagged_iterator 'monitoring.resource.extra.providers'
+
+ Core\Resources\Application\UseCase\FindResources\FindResources:
+ arguments:
+ $extraDataProviders: !tagged_iterator 'monitoring.resource.extra.providers'
+
+ Core\Resources\Application\UseCase\FindResourcesByParent\FindResourcesByParent:
+ arguments:
+ $extraDataProviders: !tagged_iterator 'monitoring.resource.extra.providers'
+
+ Core\Resources\Infrastructure\API\FindResources\FindResourcesPresenter:
+ arguments:
+ $extraDataNormalizers: !tagged_iterator 'monitoring.resource.extra.normalizers'
+
+ Core\Resources\Infrastructure\API\FindResourcesByParent\FindResourcesByParentPresenter:
+ arguments:
+ $extraDataNormalizers: !tagged_iterator 'monitoring.resource.extra.normalizers'
Centreon\Application\Controller\MonitoringResourceController:
arguments:
diff --git a/centreon/config/symfony_serializer/TimePeriod/Day.yaml b/centreon/config/symfony_serializer/TimePeriod/Day.yaml
new file mode 100644
index 0000000000..c2d74e453a
--- /dev/null
+++ b/centreon/config/symfony_serializer/TimePeriod/Day.yaml
@@ -0,0 +1,6 @@
+Core\TimePeriod\Domain\Model\Day:
+ attributes:
+ day:
+ groups: ['TimePeriod:Read']
+ timeRange:
+ groups: ['TimePeriod:Read']
diff --git a/centreon/config/symfony_serializer/TimePeriod/ExtraTimePeriod.yaml b/centreon/config/symfony_serializer/TimePeriod/ExtraTimePeriod.yaml
new file mode 100644
index 0000000000..666a3d3385
--- /dev/null
+++ b/centreon/config/symfony_serializer/TimePeriod/ExtraTimePeriod.yaml
@@ -0,0 +1,8 @@
+Core\TimePeriod\Domain\Model\ExtraTimePeriod:
+ attributes:
+ id:
+ groups: ['TimePeriod:Read']
+ day_range:
+ groups: ['TimePeriod:Read']
+ time_range:
+ groups: ['TimePeriod:Read']
diff --git a/centreon/config/symfony_serializer/TimePeriod/Template.yaml b/centreon/config/symfony_serializer/TimePeriod/Template.yaml
new file mode 100644
index 0000000000..b0b2efe525
--- /dev/null
+++ b/centreon/config/symfony_serializer/TimePeriod/Template.yaml
@@ -0,0 +1,6 @@
+Core\TimePeriod\Domain\Model\Template:
+ attributes:
+ id:
+ groups: ['TimePeriod:Read']
+ alias:
+ groups: ['TimePeriod:Read']
diff --git a/centreon/config/symfony_serializer/TimePeriod/TimePeriod.yaml b/centreon/config/symfony_serializer/TimePeriod/TimePeriod.yaml
new file mode 100644
index 0000000000..3d49264e5d
--- /dev/null
+++ b/centreon/config/symfony_serializer/TimePeriod/TimePeriod.yaml
@@ -0,0 +1,17 @@
+Core\TimePeriod\Domain\Model\TimePeriod:
+ attributes:
+ id:
+ groups: ['TimePeriod:Read']
+ name:
+ groups: ['TimePeriod:Read']
+ alias:
+ groups: ['TimePeriod:Read']
+ days:
+ groups: ['TimePeriod:Read']
+ templates:
+ groups: ['TimePeriod:Read']
+ extraTimePeriods:
+ serialized_name: 'exceptions'
+ groups: ['TimePeriod:Read']
+
+
diff --git a/centreon/cron/outdated-token-removal.php b/centreon/cron/outdated-token-removal.php
index 7b274fee24..9805513f30 100644
--- a/centreon/cron/outdated-token-removal.php
+++ b/centreon/cron/outdated-token-removal.php
@@ -35,12 +35,12 @@
$pearDB = new CentreonDB();
$pearDB->beginTransaction();
- try {
- deleteExpiredProviderRefreshTokens($centreonLog, $pearDB);
- deleteExpiredProviderTokens($centreonLog, $pearDB);
- deleteExpiredSessions($centreonLog, $pearDB);
+try {
+ deleteExpiredProviderRefreshTokens($centreonLog, $pearDB);
+ deleteExpiredProviderTokens($centreonLog, $pearDB);
+ deleteExpiredSessions($centreonLog, $pearDB);
- $pearDB->commit();
+ $pearDB->commit();
} catch (\Throwable) {
$pearDB->rollBack();
$centreonLog->insertLog(
diff --git a/centreon/cypress/fixtures/ACC/additionalConnector.json b/centreon/cypress/fixtures/ACC/additionalConnector.json
new file mode 100644
index 0000000000..f7c9154614
--- /dev/null
+++ b/centreon/cypress/fixtures/ACC/additionalConnector.json
@@ -0,0 +1,31 @@
+{
+ "id": 1,
+ "type": "vmware_v6",
+ "name": "VMWare1",
+ "description": "Description for VMWare1",
+ "pollers": [
+ {"id": 101, "name": "Poller1"},
+ {"id": 102, "name": "Poller2"}
+ ],
+ "parameters": {
+ "port": 443,
+ "vcenters": [
+ {
+ "name": "vCenter1",
+ "url": "https://vcenter1.example.com/sdk",
+ "username": "user1",
+ "password": "password1"
+ },
+ {
+ "name": "vCenter2",
+ "url": "192.0.0.1",
+ "username": "user2",
+ "password": "password2"
+ }
+ ]
+ },
+ "created_by": {"id": 1, "name": "Alice"},
+ "created_at": "2024-07-23T10:00:00Z",
+ "updated_by": {"id": 2, "name": "Bob"},
+ "updated_at": "2024-07-23T10:30:00Z"
+}
diff --git a/centreon/cypress/fixtures/ACC/additionalConnectors.json b/centreon/cypress/fixtures/ACC/additionalConnectors.json
new file mode 100644
index 0000000000..e7fb9cb128
--- /dev/null
+++ b/centreon/cypress/fixtures/ACC/additionalConnectors.json
@@ -0,0 +1,112 @@
+{
+ "result": [
+ {
+ "id": 1,
+ "type": "vmware_v6",
+ "name": "VMWare1",
+ "description": "Description for VMWare1",
+ "created_by": {"id": 1, "name": "Alice"},
+ "created_at": "2024-07-23T10:00:00Z",
+ "updated_by": {"id": 2, "name": "Bob"},
+ "updated_at": "2024-07-23T10:30:00Z"
+ },
+ {
+ "id": 2,
+ "type": "vmware_v6",
+ "name": "VMWare2",
+ "description": "Description for VMWare2",
+ "created_by": {"id": 3, "name": "Charlie"},
+ "created_at": "2024-07-22T11:00:00Z",
+ "updated_by": {"id": 4, "name": "Diana"},
+ "updated_at": "2024-07-22T11:30:00Z"
+ },
+ {
+ "id": 3,
+ "type": "vmware_v6",
+ "name": "VMWare3",
+ "description": "Description for VMWare3",
+ "created_by": {"id": 5, "name": "Eve"},
+ "created_at": "2024-07-21T12:00:00Z",
+ "updated_by": {"id": 6, "name": "Frank"},
+ "updated_at": "2024-07-21T12:30:00Z"
+ },
+ {
+ "id": 4,
+ "type": "vmware_v6",
+ "name": "VMWare4",
+ "description": "Description for VMWare4",
+ "created_by": {"id": 7, "name": "Grace"},
+ "created_at": "2024-07-20T13:00:00Z",
+ "updated_by": {"id": 8, "name": "Hank"},
+ "updated_at": "2024-07-20T13:30:00Z"
+ },
+ {
+ "id": 5,
+ "type": "vmware_v6",
+ "name": "VMWare5",
+ "description": "Description for VMWare5",
+ "created_by": {"id": 9, "name": "Ivy"},
+ "created_at": "2024-07-19T14:00:00Z",
+ "updated_by": {"id": 10, "name": "Jack"},
+ "updated_at": "2024-07-19T14:30:00Z"
+ },
+ {
+ "id": 6,
+ "type": "vmware_v6",
+ "name": "VMWare6",
+ "description": "Description for VMWare6",
+ "created_by": {"id": 11, "name": "Kara"},
+ "created_at": "2024-07-18T15:00:00Z",
+ "updated_by": {"id": 12, "name": "Leo"},
+ "updated_at": "2024-07-18T15:30:00Z"
+ },
+ {
+ "id": 7,
+ "type": "vmware_v6",
+ "name": "VMWare7",
+ "description": "Description for VMWare7",
+ "created_by": {"id": 13, "name": "Mia"},
+ "created_at": "2024-07-17T16:00:00Z",
+ "updated_by": {"id": 14, "name": "Nate"},
+ "updated_at": "2024-07-17T16:30:00Z"
+ },
+ {
+ "id": 8,
+ "type": "vmware_v6",
+ "name": "VMWare8",
+ "description": "Description for VMWare8",
+ "created_by": {"id": 15, "name": "Olivia"},
+ "created_at": "2024-07-16T17:00:00Z",
+ "updated_by": {"id": 16, "name": "Paul"},
+ "updated_at": "2024-07-16T17:30:00Z"
+ },
+ {
+ "id": 9,
+ "type": "vmware_v6",
+ "name": "VMWare9",
+ "description": "Description for VMWare9",
+ "created_by": {"id": 17, "name": "Quinn"},
+ "created_at": "2024-07-15T18:00:00Z",
+ "updated_by": {"id": 18, "name": "Rita"},
+ "updated_at": "2024-07-15T18:30:00Z"
+ },
+ {
+ "id": 10,
+ "type": "vmware_v6",
+ "name": "VMWare10",
+ "description": "Description for VMWare10",
+ "created_by": {"id": 19, "name": "Steve"},
+ "created_at": "2024-07-14T19:00:00Z",
+ "updated_by": {"id": 20, "name": "Tina"},
+ "updated_at": "2024-07-14T19:30:00Z"
+ }
+ ],
+ "meta": {
+ "page": 1,
+ "limit": 10,
+ "search": {},
+ "sort_by": {},
+ "total": 44
+ }
+ }
+
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/ACC/pollers-vmware.json b/centreon/cypress/fixtures/ACC/pollers-vmware.json
new file mode 100644
index 0000000000..054df89776
--- /dev/null
+++ b/centreon/cypress/fixtures/ACC/pollers-vmware.json
@@ -0,0 +1,52 @@
+{
+ "result": [
+ {
+ "id": 1,
+ "name": "poller1"
+ },
+ {
+ "id": 2,
+ "name": "poller2"
+ },
+ {
+ "id": 3,
+ "name": "poller3"
+ },
+ {
+ "id": 4,
+ "name": "poller4"
+ },
+ {
+ "id": 5,
+ "name": "poller5"
+ },
+ {
+ "id": 6,
+ "name": "poller6"
+ },
+ {
+ "id": 7,
+ "name": "poller7"
+ },
+ {
+ "id": 8,
+ "name": "poller8"
+ },
+ {
+ "id": 9,
+ "name": "poller9"
+ },
+ {
+ "id": 10,
+ "name": "poller10"
+ }
+ ],
+ "meta": {
+ "page": 1,
+ "limit": 10,
+ "search": {},
+ "sort_by": {},
+ "total": 10
+ }
+ }
+
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/ResourcesTable/resourcesStatus.json b/centreon/cypress/fixtures/Widgets/ResourcesTable/resourcesStatus.json
index ac64b17334..9d63dd89c5 100644
--- a/centreon/cypress/fixtures/Widgets/ResourcesTable/resourcesStatus.json
+++ b/centreon/cypress/fixtures/Widgets/ResourcesTable/resourcesStatus.json
@@ -1,463 +1,481 @@
{
- "result": [
- {
- "uuid": "h14-s19",
- "duration": "13h 29m",
- "last_check": "4m 20s",
- "short_type": "s",
- "id": 19,
- "type": "service",
- "name": "Disk-\/",
- "alias": null,
- "fqdn": null,
- "host_id": 14,
- "service_id": 19,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": {
- "uuid": "h14",
- "id": 14,
- "name": "Centreon-Server",
- "type": "host",
- "short_type": "h",
- "status": {
- "code": 0,
- "name": "UP",
- "severity_code": 5
- },
- "alias": "Monitoring Server",
- "fqdn": "127.0.0.1",
- "monitoring_server_name": null
- },
- "status": {
- "code": 3,
- "name": "UNKNOWN",
- "severity_code": 3
- },
- "is_in_downtime": true,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-01-21T22:33:57+01:00",
- "tries": "3\/3 (H)",
- "information": "(Execute command failed)",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/hosts\/14\/services\/19",
- "timeline": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/metrics\/status",
- "performance_graph": null,
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
- "check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/check",
- "forced_check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/check",
- "metrics": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/19\/metrics"
- },
- "uris": {
- "configuration": "\/centreon\/main.php?p=60201\u0026o=c\u0026service_id=19",
- "logs": "\/centreon\/main.php?p=20301\u0026svc=14_19",
- "reporting": "\/centreon\/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=19"
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "result": [
+ {
+ "uuid": "h14-s19",
+ "duration": "13h 29m",
+ "last_check": "4m 20s",
+ "short_type": "s",
+ "id": 19,
+ "type": "service",
+ "name": "Disk-/",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 14,
+ "service_id": 19,
+ "icon": null,
+ "extra": {
+ "open_tickets": {
+ "tickets": {
+ "id": 2,
+ "subject": "description",
+ "created_at": "2024-02-24T14:35:17+01:00"
+ }
+ }
+ },
+ "monitoring_server_name": "Central",
+ "parent": {
+ "uuid": "h14",
+ "id": 14,
+ "name": "Centreon-Server",
+ "type": "host",
+ "short_type": "h",
+ "status": {
+ "code": 0,
+ "name": "UP",
+ "severity_code": 5
},
- {
- "uuid": "h14-s24",
- "duration": "13h 30m",
- "last_check": "1m 10s",
- "short_type": "s",
- "id": 24,
- "type": "service",
- "name": "Load",
- "alias": null,
- "fqdn": null,
- "host_id": 14,
- "service_id": 24,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": {
- "uuid": "h14",
- "id": 14,
- "name": "Centreon-Server",
- "type": "host",
- "short_type": "h",
- "status": {
- "code": 0,
- "name": "UP",
- "severity_code": 5
- },
- "alias": "Monitoring Server",
- "fqdn": "127.0.0.1",
- "monitoring_server_name": null
- },
- "status": {
- "code": 3,
- "name": "UNKNOWN",
- "severity_code": 3
- },
- "is_in_downtime": false,
- "is_acknowledged": true,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-01-21T22:32:42+01:00",
- "tries": "3\/3 (H)",
- "information": "(Execute command failed)",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/hosts\/14\/services\/24",
- "timeline": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/metrics\/status",
- "performance_graph": null,
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
- "check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/check",
- "forced_check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/check",
- "metrics": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/24\/metrics"
- },
- "uris": {
- "configuration": "\/centreon\/main.php?p=60201\u0026o=c\u0026service_id=24",
- "logs": "\/centreon\/main.php?p=20301\u0026svc=14_24",
- "reporting": "\/centreon\/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=24"
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "alias": "Monitoring Server",
+ "fqdn": "127.0.0.1",
+ "monitoring_server_name": null
+ },
+ "status": {
+ "code": 3,
+ "name": "UNKNOWN",
+ "severity_code": 3
+ },
+ "is_in_downtime": true,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-01-21T22:33:57+01:00",
+ "tries": "3/3 (H)",
+ "information": "(Execute command failed)",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/hosts/14/services/19",
+ "timeline": "/centreon/api/latest/monitoring/hosts/14/services/19/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/hosts/14/services/19/metrics/status",
+ "performance_graph": null,
+ "acknowledgement": "/centreon/api/latest/monitoring/hosts/14/services/19/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/hosts/14/services/19/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
+ "check": "/centreon/api/latest/monitoring/hosts/14/services/19/check",
+ "forced_check": "/centreon/api/latest/monitoring/hosts/14/services/19/check",
+ "metrics": "/centreon/api/latest/monitoring/hosts/14/services/19/metrics"
},
- {
- "uuid": "h14-s25",
- "duration": "13h 32m",
- "last_check": "1m 50s",
- "short_type": "s",
- "id": 25,
- "type": "service",
- "name": "Memory",
- "alias": null,
- "fqdn": null,
- "host_id": 14,
- "service_id": 25,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": {
- "uuid": "h14",
- "id": 14,
- "name": "Centreon-Server",
- "type": "host",
- "short_type": "h",
- "status": {
- "code": 0,
- "name": "UP",
- "severity_code": 5
- },
- "alias": "Monitoring Server",
- "fqdn": "127.0.0.1",
- "monitoring_server_name": null
- },
- "status": {
- "code": 3,
- "name": "UNKNOWN",
- "severity_code": 3
- },
- "is_in_downtime": false,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-01-21T22:31:27+01:00",
- "tries": "3\/3 (H)",
- "information": "(Execute command failed)",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/hosts\/14\/services\/25",
- "timeline": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/metrics\/status",
- "performance_graph": null,
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
- "check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/check",
- "forced_check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/check",
- "metrics": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/25\/metrics"
- },
- "uris": {
- "configuration": "\/centreon\/main.php?p=60201\u0026o=c\u0026service_id=25",
- "logs": "\/centreon\/main.php?p=20301\u0026svc=14_25",
- "reporting": "\/centreon\/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=25"
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "uris": {
+ "configuration": "/centreon/main.php?p=60201\u0026o=c\u0026service_id=19",
+ "logs": "/centreon/main.php?p=20301\u0026svc=14_19",
+ "reporting": "/centreon/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=19"
},
- {
- "uuid": "h14-s26",
- "duration": "13h 33m",
- "last_check": "3m 5s",
- "short_type": "s",
- "id": 26,
- "type": "service",
- "name": "Ping",
- "alias": null,
- "fqdn": null,
- "host_id": 14,
- "service_id": 26,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": {
- "uuid": "h14",
- "id": 14,
- "name": "Centreon-Server",
- "type": "host",
- "short_type": "h",
- "status": {
- "code": 0,
- "name": "UP",
- "severity_code": 5
- },
- "alias": "Monitoring Server",
- "fqdn": "127.0.0.1",
- "monitoring_server_name": null
- },
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "is_in_downtime": false,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-01-21T22:30:12+01:00",
- "tries": "1\/3 (H)",
- "information": "OK - 127.0.0.1 rta 0.023ms lost 0%",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/hosts\/14\/services\/26",
- "timeline": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/metrics\/status",
- "performance_graph": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/metrics\/performance",
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
- "check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/check",
- "forced_check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/check",
- "metrics": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/services\/26\/metrics"
- },
- "uris": {
- "configuration": "\/centreon\/main.php?p=60201\u0026o=c\u0026service_id=26",
- "logs": "\/centreon\/main.php?p=20301\u0026svc=14_26",
- "reporting": "\/centreon\/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=26"
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
+ },
+ {
+ "uuid": "h14-s24",
+ "duration": "13h 30m",
+ "last_check": "1m 10s",
+ "short_type": "s",
+ "id": 24,
+ "type": "service",
+ "name": "Load",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 14,
+ "service_id": 24,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": {
+ "uuid": "h14",
+ "id": 14,
+ "name": "Centreon-Server",
+ "type": "host",
+ "short_type": "h",
+ "status": {
+ "code": 0,
+ "name": "UP",
+ "severity_code": 5
},
- {
- "uuid": "h14",
- "duration": "13h 33m",
- "last_check": "4m 20s",
- "short_type": "h",
- "id": 14,
- "type": "host",
- "name": "Centreon-Server",
- "alias": "Monitoring Server",
- "fqdn": "127.0.0.1",
- "host_id": 14,
- "service_id": null,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": null,
- "status": {
- "code": 0,
- "name": "UP",
- "severity_code": 5
- },
- "is_in_downtime": false,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-01-21T22:30:12+01:00",
- "tries": "1\/5 (H)",
- "information": "OK - 127.0.0.1 rta 0.051ms lost 0%",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/hosts\/14",
- "timeline": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/timeline",
- "status_graph": null,
- "performance_graph": null,
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
- "check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/check",
- "forced_check": "\/centreon\/api\/latest\/monitoring\/hosts\/14\/check",
- "metrics": null
- },
- "uris": {
- "configuration": "\/centreon\/main.php?p=60101\u0026o=c\u0026host_id=14",
- "logs": "\/centreon\/main.php?p=20301\u0026h=14",
- "reporting": "\/centreon\/main.php?p=307\u0026host=14"
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "alias": "Monitoring Server",
+ "fqdn": "127.0.0.1",
+ "monitoring_server_name": null
+ },
+ "status": {
+ "code": 3,
+ "name": "UNKNOWN",
+ "severity_code": 3
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": true,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-01-21T22:32:42+01:00",
+ "tries": "3/3 (H)",
+ "information": "(Execute command failed)",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/hosts/14/services/24",
+ "timeline": "/centreon/api/latest/monitoring/hosts/14/services/24/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/hosts/14/services/24/metrics/status",
+ "performance_graph": null,
+ "acknowledgement": "/centreon/api/latest/monitoring/hosts/14/services/24/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/hosts/14/services/24/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
+ "check": "/centreon/api/latest/monitoring/hosts/14/services/24/check",
+ "forced_check": "/centreon/api/latest/monitoring/hosts/14/services/24/check",
+ "metrics": "/centreon/api/latest/monitoring/hosts/14/services/24/metrics"
},
- {
- "uuid": "m2",
- "duration": "1M 1w",
- "last_check": "14m 55s",
- "short_type": "m",
- "id": 2,
- "type": "metaservice",
- "name": "AS_Total_FW_Connexion",
- "alias": null,
- "fqdn": null,
- "host_id": 1972,
- "service_id": null,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "is_in_downtime": false,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-04-21T13:43:05+02:00",
- "tries": "1\/2 (H)",
- "information": "OK: AS FW Connect number: 200",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/metaservices\/2",
- "timeline": "\/centreon\/api\/latest\/monitoring\/metaservice\/2\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/metaservices\/2\/metrics\/status",
- "performance_graph": "\/centreon\/api\/latest\/monitoring\/metaservices\/2\/metrics\/performance",
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/metaservices\/2\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/metaservices\/2\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1716969848%7D,%22end_time%22:%7B%22%24gt%22:1716969848%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1716969848%7D%7D%7D%7D%5D%7D",
- "check": null,
- "forced_check": null,
- "metrics": "\/centreon\/api\/latest\/monitoring\/metaservices\/2\/metrics"
- },
- "uris": {
- "configuration": null,
- "logs": null,
- "reporting": null
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "uris": {
+ "configuration": "/centreon/main.php?p=60201\u0026o=c\u0026service_id=24",
+ "logs": "/centreon/main.php?p=20301\u0026svc=14_24",
+ "reporting": "/centreon/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=24"
+ },
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
+ },
+ {
+ "uuid": "h14-s25",
+ "duration": "13h 32m",
+ "last_check": "1m 50s",
+ "short_type": "s",
+ "id": 25,
+ "type": "service",
+ "name": "Memory",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 14,
+ "service_id": 25,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": {
+ "uuid": "h14",
+ "id": 14,
+ "name": "Centreon-Server",
+ "type": "host",
+ "short_type": "h",
+ "status": {
+ "code": 0,
+ "name": "UP",
+ "severity_code": 5
+ },
+ "alias": "Monitoring Server",
+ "fqdn": "127.0.0.1",
+ "monitoring_server_name": null
+ },
+ "status": {
+ "code": 3,
+ "name": "UNKNOWN",
+ "severity_code": 3
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-01-21T22:31:27+01:00",
+ "tries": "3/3 (H)",
+ "information": "(Execute command failed)",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/hosts/14/services/25",
+ "timeline": "/centreon/api/latest/monitoring/hosts/14/services/25/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/hosts/14/services/25/metrics/status",
+ "performance_graph": null,
+ "acknowledgement": "/centreon/api/latest/monitoring/hosts/14/services/25/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/hosts/14/services/25/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
+ "check": "/centreon/api/latest/monitoring/hosts/14/services/25/check",
+ "forced_check": "/centreon/api/latest/monitoring/hosts/14/services/25/check",
+ "metrics": "/centreon/api/latest/monitoring/hosts/14/services/25/metrics"
+ },
+ "uris": {
+ "configuration": "/centreon/main.php?p=60201\u0026o=c\u0026service_id=25",
+ "logs": "/centreon/main.php?p=20301\u0026svc=14_25",
+ "reporting": "/centreon/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=25"
+ },
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
+ },
+ {
+ "uuid": "h14-s26",
+ "duration": "13h 33m",
+ "last_check": "3m 5s",
+ "short_type": "s",
+ "id": 26,
+ "type": "service",
+ "name": "Ping",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 14,
+ "service_id": 26,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": {
+ "uuid": "h14",
+ "id": 14,
+ "name": "Centreon-Server",
+ "type": "host",
+ "short_type": "h",
+ "status": {
+ "code": 0,
+ "name": "UP",
+ "severity_code": 5
},
- {
- "uuid": "m6",
- "duration": "3M 3d",
- "last_check": "14m 49s",
- "short_type": "m",
- "id": 6,
- "type": "metaservice",
- "name": "SA_Total_FW_Connexion",
- "alias": null,
- "fqdn": null,
- "host_id": 1976,
- "service_id": null,
- "icon": null,
- "monitoring_server_name": "Central",
- "parent": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "is_in_downtime": false,
- "is_acknowledged": false,
- "has_active_checks_enabled": true,
- "has_passive_checks_enabled": false,
- "last_status_change": "2024-02-24T14:35:17+01:00",
- "tries": "1\/2 (H)",
- "information": "OK: SA FW Connect number: 100",
- "performance_data": null,
- "is_notification_enabled": false,
- "severity": null,
- "links": {
- "endpoints": {
- "details": "\/centreon\/api\/latest\/monitoring\/resources\/metaservices\/6",
- "timeline": "\/centreon\/api\/latest\/monitoring\/metaservice\/6\/timeline",
- "status_graph": "\/centreon\/api\/latest\/monitoring\/metaservices\/6\/metrics\/status",
- "performance_graph": "\/centreon\/api\/latest\/monitoring\/metaservices\/6\/metrics\/performance",
- "acknowledgement": "\/centreon\/api\/latest\/monitoring\/metaservices\/6\/acknowledgements?limit=1",
- "downtime": "\/centreon\/api\/latest\/monitoring\/metaservices\/6\/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1716969848%7D,%22end_time%22:%7B%22%24gt%22:1716969848%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1716969848%7D%7D%7D%7D%5D%7D",
- "check": null,
- "forced_check": null,
- "metrics": "\/centreon\/api\/latest\/monitoring\/metaservices\/6\/metrics"
- },
- "uris": {
- "configuration": null,
- "logs": null,
- "reporting": null
- },
- "externals": {
- "action_url": "",
- "notes": {
- "label": "",
- "url": ""
- }
- }
- }
+ "alias": "Monitoring Server",
+ "fqdn": "127.0.0.1",
+ "monitoring_server_name": null
+ },
+ "status": {
+ "code": 0,
+ "name": "OK",
+ "severity_code": 5
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-01-21T22:30:12+01:00",
+ "tries": "1/3 (H)",
+ "information": "OK - 127.0.0.1 rta 0.023ms lost 0%",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/hosts/14/services/26",
+ "timeline": "/centreon/api/latest/monitoring/hosts/14/services/26/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/hosts/14/services/26/metrics/status",
+ "performance_graph": "/centreon/api/latest/monitoring/hosts/14/services/26/metrics/performance",
+ "acknowledgement": "/centreon/api/latest/monitoring/hosts/14/services/26/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/hosts/14/services/26/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
+ "check": "/centreon/api/latest/monitoring/hosts/14/services/26/check",
+ "forced_check": "/centreon/api/latest/monitoring/hosts/14/services/26/check",
+ "metrics": "/centreon/api/latest/monitoring/hosts/14/services/26/metrics"
+ },
+ "uris": {
+ "configuration": "/centreon/main.php?p=60201\u0026o=c\u0026service_id=26",
+ "logs": "/centreon/main.php?p=20301\u0026svc=14_26",
+ "reporting": "/centreon/main.php?p=30702\u0026period=yesterday\u0026start=\u0026end=\u0026host_id=14\u0026item=26"
+ },
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
+ },
+ {
+ "uuid": "h14",
+ "duration": "13h 33m",
+ "last_check": "4m 20s",
+ "short_type": "h",
+ "id": 14,
+ "type": "host",
+ "name": "Centreon-Server",
+ "alias": "Monitoring Server",
+ "fqdn": "127.0.0.1",
+ "host_id": 14,
+ "service_id": null,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": null,
+ "status": {
+ "code": 0,
+ "name": "UP",
+ "severity_code": 5
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-01-21T22:30:12+01:00",
+ "tries": "1/5 (H)",
+ "information": "OK - 127.0.0.1 rta 0.051ms lost 0%",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/hosts/14",
+ "timeline": "/centreon/api/latest/monitoring/hosts/14/timeline",
+ "status_graph": null,
+ "performance_graph": null,
+ "acknowledgement": "/centreon/api/latest/monitoring/hosts/14/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/hosts/14/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1705921421%7D,%22end_time%22:%7B%22%24gt%22:1705921421%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1705921421%7D%7D%7D%7D%5D%7D",
+ "check": "/centreon/api/latest/monitoring/hosts/14/check",
+ "forced_check": "/centreon/api/latest/monitoring/hosts/14/check",
+ "metrics": null
+ },
+ "uris": {
+ "configuration": "/centreon/main.php?p=60101\u0026o=c\u0026host_id=14",
+ "logs": "/centreon/main.php?p=20301\u0026h=14",
+ "reporting": "/centreon/main.php?p=307\u0026host=14"
+ },
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
}
- ],
- "meta": {
- "page": 1,
- "limit": 30,
- "search": {
- "$and": []
+ }
+ },
+ {
+ "uuid": "m2",
+ "duration": "1M 1w",
+ "last_check": "14m 55s",
+ "short_type": "m",
+ "id": 2,
+ "type": "metaservice",
+ "name": "AS_Total_FW_Connexion",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 1972,
+ "service_id": null,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": null,
+ "status": {
+ "code": 0,
+ "name": "OK",
+ "severity_code": 5
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-04-21T13:43:05+02:00",
+ "tries": "1/2 (H)",
+ "information": "OK: AS FW Connect number: 200",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/metaservices/2",
+ "timeline": "/centreon/api/latest/monitoring/metaservice/2/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/metaservices/2/metrics/status",
+ "performance_graph": "/centreon/api/latest/monitoring/metaservices/2/metrics/performance",
+ "acknowledgement": "/centreon/api/latest/monitoring/metaservices/2/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/metaservices/2/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1716969848%7D,%22end_time%22:%7B%22%24gt%22:1716969848%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1716969848%7D%7D%7D%7D%5D%7D",
+ "check": null,
+ "forced_check": null,
+ "metrics": "/centreon/api/latest/monitoring/metaservices/2/metrics"
},
- "sort_by": {
- "last_status_change": "DESC"
+ "uris": {
+ "configuration": null,
+ "logs": null,
+ "reporting": null
},
- "total": 5
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
+ },
+ {
+ "uuid": "m6",
+ "duration": "3M 3d",
+ "last_check": "14m 49s",
+ "extra": {
+ "open_tickets": {
+ "tickets": {
+ "id": 1,
+ "subject": "description",
+ "created_at": "2024-02-24T14:35:17+01:00"
+ }
+ }
+ },
+ "short_type": "m",
+ "id": 6,
+ "type": "metaservice",
+ "name": "SA_Total_FW_Connexion",
+ "alias": null,
+ "fqdn": null,
+ "host_id": 1976,
+ "service_id": null,
+ "icon": null,
+ "monitoring_server_name": "Central",
+ "parent": null,
+ "status": {
+ "code": 0,
+ "name": "OK",
+ "severity_code": 5
+ },
+ "is_in_downtime": false,
+ "is_acknowledged": false,
+ "has_active_checks_enabled": true,
+ "has_passive_checks_enabled": false,
+ "last_status_change": "2024-02-24T14:35:17+01:00",
+ "tries": "1/2 (H)",
+ "information": "OK: SA FW Connect number: 100",
+ "performance_data": null,
+ "is_notification_enabled": false,
+ "severity": null,
+ "links": {
+ "endpoints": {
+ "details": "/centreon/api/latest/monitoring/resources/metaservices/6",
+ "timeline": "/centreon/api/latest/monitoring/metaservice/6/timeline",
+ "status_graph": "/centreon/api/latest/monitoring/metaservices/6/metrics/status",
+ "performance_graph": "/centreon/api/latest/monitoring/metaservices/6/metrics/performance",
+ "acknowledgement": "/centreon/api/latest/monitoring/metaservices/6/acknowledgements?limit=1",
+ "downtime": "/centreon/api/latest/monitoring/metaservices/6/downtimes?search=%7B%22%24and%22:%5B%7B%22start_time%22:%7B%22%24lt%22:1716969848%7D,%22end_time%22:%7B%22%24gt%22:1716969848%7D,%220%22:%7B%22%24or%22:%7B%22is_cancelled%22:%7B%22%24neq%22:1%7D,%22deletion_time%22:%7B%22%24gt%22:1716969848%7D%7D%7D%7D%5D%7D",
+ "check": null,
+ "forced_check": null,
+ "metrics": "/centreon/api/latest/monitoring/metaservices/6/metrics"
+ },
+ "uris": {
+ "configuration": null,
+ "logs": null,
+ "reporting": null
+ },
+ "externals": {
+ "action_url": "",
+ "notes": {
+ "label": "",
+ "url": ""
+ }
+ }
+ }
}
-}
\ No newline at end of file
+ ],
+ "meta": {
+ "page": 1,
+ "limit": 30,
+ "search": {
+ "$and": []
+ },
+ "sort_by": {
+ "last_status_change": "DESC"
+ },
+ "total": 5
+ }
+}
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/bamCondensed.json b/centreon/cypress/fixtures/Widgets/StatusGrid/bamCondensed.json
new file mode 100644
index 0000000000..3e4e1d7dee
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/bamCondensed.json
@@ -0,0 +1,18 @@
+{
+ "ok":{
+ "total":22
+ },
+ "warning":{
+ "total":3
+ },
+ "critical":{
+ "total":10
+ },
+ "unknown":{
+ "total":1
+ },
+ "pending":{
+ "total":4
+ },
+ "total":40
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/booleanRuleDetails.json b/centreon/cypress/fixtures/Widgets/StatusGrid/booleanRuleDetails.json
new file mode 100644
index 0000000000..e19f33f553
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/booleanRuleDetails.json
@@ -0,0 +1,11 @@
+{
+ "id":1,
+ "name":"boolean 1",
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "is_impacting_when_expression_true":true,
+ "expression_status":false
+}
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/businessActivities.json b/centreon/cypress/fixtures/Widgets/StatusGrid/businessActivities.json
new file mode 100644
index 0000000000..6c78b51b39
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/businessActivities.json
@@ -0,0 +1,109 @@
+{
+ "result":[
+ {
+ "id":1,
+ "name":"ba1",
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "business_views":[
+ {
+ "id":1,
+ "name":"bv1"
+ }
+ ]
+ },
+ {
+ "id":2,
+ "name":"ba2",
+ "status":{
+ "code":4,
+ "name":"PENDING",
+ "severity_code":4
+ },
+ "business_views":[
+ {
+ "id":1,
+ "name":"bv1"
+ }
+ ]
+ },
+ {
+ "id":3,
+ "name":"ba3",
+ "status":{
+ "code":2,
+ "name":"Unknown",
+ "severity_code":3
+ },
+ "business_views":[
+ {
+ "id":1,
+ "name":"bv1"
+ }
+ ]
+ },
+ {
+ "id":4,
+ "name":"ba4",
+ "status":{
+ "code":4,
+ "name":"Critical",
+ "severity_code":1
+ },
+ "business_views":[
+ {
+ "id":1,
+ "name":"bv1"
+ }
+ ]
+ },
+ {
+ "id":5,
+ "name":"ba5",
+ "status":{
+ "code":4,
+ "name":"Critical",
+ "severity_code":1
+ },
+ "business_views":[
+ {
+ "id":1,
+ "name":"bv1"
+ }
+ ]
+ }
+ ],
+ "meta":{
+ "page":1,
+ "limit":100,
+ "search":{
+ "$and":[
+ {
+ "business_view.name":{
+ "$in":[
+ "bv1"
+ ]
+ }
+ },
+ {
+ "status":{
+ "$in":[
+ "CRITICAL",
+ "WARNING",
+ "PENDING",
+ "OK",
+ "UNKNOWN"
+ ]
+ }
+ }
+ ]
+ },
+ "sort_by":{
+ "status":"DESC"
+ },
+ "total":2
+ }
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/criticalImpactBA.json b/centreon/cypress/fixtures/Widgets/StatusGrid/criticalImpactBA.json
new file mode 100644
index 0000000000..65f54a5ada
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/criticalImpactBA.json
@@ -0,0 +1,82 @@
+{
+ "id":4,
+ "name":"ba4",
+ "status":{
+ "name":"UNKNOWN",
+ "code":3,
+ "severity_code":3
+ },
+ "infrastructure_view":null,
+ "calculation_method":{
+ "id":0,
+ "name":"Impact",
+ "warning_threshold":80,
+ "critical_threshold":70,
+ "is_percentage":true
+ },
+ "indicators":[
+ {
+ "id":10,
+ "type":"boolean-rule",
+ "name":"boolean 1",
+ "impact":{
+ "warning":75,
+ "critical":100,
+ "unknown":5
+ },
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":1,
+ "name":"boolean 1",
+ "parent_id":null,
+ "parent_name":null
+ }
+ },
+ {
+ "id":9,
+ "type":"service",
+ "name":"Ping",
+ "impact":{
+ "warning":12,
+ "critical":15,
+ "unknown":1
+ },
+ "status":{
+ "code":0,
+ "name":"CRITICAL",
+ "severity_code":1
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":4,
+ "type":"boolean-rule",
+ "name":"boolean 2",
+ "impact":{
+ "warning":75,
+ "critical":100,
+ "unknown":5
+ },
+ "status":{
+ "code":0,
+ "name":"CRITICAL",
+ "severity_code":1
+ },
+ "resource":{
+ "id":1,
+ "name":"boolean 2",
+ "parent_id":null,
+ "parent_name":null
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/criticalRatioBA.json b/centreon/cypress/fixtures/Widgets/StatusGrid/criticalRatioBA.json
new file mode 100644
index 0000000000..75534c9fe0
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/criticalRatioBA.json
@@ -0,0 +1,70 @@
+{
+ "id":3,
+ "name":"ba5",
+ "status":{
+ "name":"CRITICAL",
+ "code":0,
+ "severity_code":1
+ },
+ "infrastructure_view":null,
+ "calculation_method":{
+ "id":3,
+ "name":"Ratio",
+ "warning_threshold":75,
+ "critical_threshold":80,
+ "is_percentage":true
+ },
+ "indicators":[
+ {
+ "id":6,
+ "type":"service",
+ "name":"Ping",
+ "impact":null,
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":7,
+ "type":"service",
+ "name":"Load",
+ "impact":null,
+ "status":{
+ "code":3,
+ "name":"UNKNOWN",
+ "severity_code":3
+ },
+ "resource":{
+ "id":24,
+ "name":"Load",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":8,
+ "type":"business-activity",
+ "name":"ba1",
+ "impact":null,
+ "status":{
+ "code":4,
+ "name":"WARNING",
+ "severity_code":1
+ },
+ "resource":{
+ "id":5,
+ "name":"ba5",
+ "parent_id":null,
+ "parent_name":null
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/impactBA.json b/centreon/cypress/fixtures/Widgets/StatusGrid/impactBA.json
new file mode 100644
index 0000000000..a23476370c
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/impactBA.json
@@ -0,0 +1,61 @@
+{
+ "id":1,
+ "name":"ba4",
+ "status":{
+ "name":"UNKNOWN",
+ "code":3,
+ "severity_code":3
+ },
+ "infrastructure_view":null,
+ "calculation_method":{
+ "id":0,
+ "name":"Impact",
+ "warning_threshold":80,
+ "critical_threshold":70,
+ "is_percentage":true
+ },
+ "indicators":[
+ {
+ "id":10,
+ "type":"boolean-rule",
+ "name":"boolean 1",
+ "impact":{
+ "warning":75,
+ "critical":100,
+ "unknown":5
+ },
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":1,
+ "name":"boolean 1",
+ "parent_id":null,
+ "parent_name":null
+ }
+ },
+ {
+ "id":9,
+ "type":"service",
+ "name":"Ping",
+ "impact":{
+ "warning":12,
+ "critical":15,
+ "unknown":1
+ },
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/indicators.json b/centreon/cypress/fixtures/Widgets/StatusGrid/indicators.json
new file mode 100644
index 0000000000..5d45ab03dc
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/indicators.json
@@ -0,0 +1,91 @@
+{
+ "result":[
+ {
+ "id":2,
+ "type":"service",
+ "name":"Memory",
+ "status":{
+ "code":3,
+ "name":"UNKNOWN",
+ "severity_code":3
+ },
+ "business_activity":{
+ "id":1,
+ "name":"ba1"
+ },
+ "resource":{
+ "id":25,
+ "name":"Memory",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":1,
+ "type":"service",
+ "name":"Ping",
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "business_activity":{
+ "id":1,
+ "name":"ba1"
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":3,
+ "type":"boolean-rule",
+ "name":"boolean 1",
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "business_activity":{
+ "id":1,
+ "name":"ba1"
+ },
+ "resource":{
+ "id":1
+ }
+ }
+ ],
+ "meta":{
+ "page":1,
+ "limit":100,
+ "search":{
+ "$and":[
+ {
+ "business_activity.name":{
+ "$in":[
+ "ba1"
+ ]
+ }
+ },
+ {
+ "status":{
+ "$in":[
+ "CRITICAL",
+ "WARNING",
+ "PENDING",
+ "OK",
+ "UNKNOWN"
+ ]
+ }
+ }
+ ]
+ },
+ "sort_by":{
+ "status":"DESC"
+ },
+ "total":5
+ }
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/ratioBA.json b/centreon/cypress/fixtures/Widgets/StatusGrid/ratioBA.json
new file mode 100644
index 0000000000..8de97961c4
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/ratioBA.json
@@ -0,0 +1,70 @@
+{
+ "id":3,
+ "name":"ba3",
+ "status":{
+ "name":"UNKNOWN",
+ "code":3,
+ "severity_code":3
+ },
+ "infrastructure_view":null,
+ "calculation_method":{
+ "id":3,
+ "name":"Ratio",
+ "warning_threshold":75,
+ "critical_threshold":80,
+ "is_percentage":true
+ },
+ "indicators":[
+ {
+ "id":6,
+ "type":"service",
+ "name":"Ping",
+ "impact":null,
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":7,
+ "type":"service",
+ "name":"Load",
+ "impact":null,
+ "status":{
+ "code":3,
+ "name":"UNKNOWN",
+ "severity_code":3
+ },
+ "resource":{
+ "id":24,
+ "name":"Load",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":8,
+ "type":"business-activity",
+ "name":"ba1",
+ "impact":null,
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":1,
+ "name":"ba1",
+ "parent_id":null,
+ "parent_name":null
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/centreon/cypress/fixtures/Widgets/StatusGrid/worstStatusBA.json b/centreon/cypress/fixtures/Widgets/StatusGrid/worstStatusBA.json
new file mode 100644
index 0000000000..f8b1674d69
--- /dev/null
+++ b/centreon/cypress/fixtures/Widgets/StatusGrid/worstStatusBA.json
@@ -0,0 +1,70 @@
+{
+ "id":1,
+ "name":"ba1",
+ "status":{
+ "name":"UNKNOWN",
+ "code":3,
+ "severity_code":3
+ },
+ "infrastructure_view":null,
+ "calculation_method":{
+ "id":2,
+ "name":"Worst Status",
+ "warning_threshold":null,
+ "critical_threshold":null,
+ "is_percentage":false
+ },
+ "indicators":[
+ {
+ "id":1,
+ "type":"service",
+ "name":"Ping",
+ "impact":null,
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":26,
+ "name":"Ping",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":2,
+ "type":"service",
+ "name":"Memory",
+ "impact":null,
+ "status":{
+ "code":3,
+ "name":"UNKNOWN",
+ "severity_code":3
+ },
+ "resource":{
+ "id":25,
+ "name":"Memory",
+ "parent_id":14,
+ "parent_name":"Centreon-Server"
+ }
+ },
+ {
+ "id":5,
+ "type":"boolean-rule",
+ "name":"boolean 1",
+ "impact":null,
+ "status":{
+ "code":0,
+ "name":"OK",
+ "severity_code":5
+ },
+ "resource":{
+ "id":1,
+ "name":"boolean 1",
+ "parent_id":null,
+ "parent_name":null
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- clears filters and the search bar, and sends a listing request with empty search parameter when the clear button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- clears filters and the search bar, and sends a listing request with empty search parameter when the clear button is clicked.snap.png
new file mode 100644
index 0000000000..545c912ec8
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- clears filters and the search bar, and sends a listing request with empty search parameter when the clear button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the advanced filters component when the corresponding icon is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the advanced filters component when the corresponding icon is clicked.snap.png
new file mode 100644
index 0000000000..2f5da6e81c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the advanced filters component when the corresponding icon is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the search bar component.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the search bar component.snap.png
new file mode 100644
index 0000000000..c4dc13f0ae
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- displays the search bar component.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- updates the search bar with the value from the filters.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- updates the search bar with the value from the filters.snap.png
new file mode 100644
index 0000000000..b14b9ef07f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Filters -- updates the search bar with the value from the filters.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- deletes an ACC when the Delete button is clicked and the confirmation button is triggered.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- deletes an ACC when the Delete button is clicked and the confirmation button is triggered.snap.png
new file mode 100644
index 0000000000..d392087ae2
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- deletes an ACC when the Delete button is clicked and the confirmation button is triggered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- displays the first page of the ACC listing.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- displays the first page of the ACC listing.snap.png
new file mode 100644
index 0000000000..6ef05a18c6
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Listing -- displays the first page of the ACC listing.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends a Post request when the Modal is in Creation Mode and the Create Button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends a Post request when the Modal is in Creation Mode and the Create Button is clicked.snap.png
new file mode 100644
index 0000000000..b04e9a6209
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends a Post request when the Modal is in Creation Mode and the Create Button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends an Update request when the Modal is in Edition Mode and the Update Button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends an Update request when the Modal is in Edition Mode and the Update Button is clicked.snap.png
new file mode 100644
index 0000000000..bc8cb2b8ad
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- API requests -- sends an Update request when the Modal is in Edition Mode and the Update Button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that at least one poller is required.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that at least one poller is required.snap.png
new file mode 100644
index 0000000000..3c6807d6a7
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that at least one poller is required.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that name length must be between 3 and 50 characters.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that name length must be between 3 and 50 characters.snap.png
new file mode 100644
index 0000000000..272ff7be1f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that name length must be between 3 and 50 characters.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that port field is required.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that port field is required.snap.png
new file mode 100644
index 0000000000..0557d4da2c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that port field is required.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be a valid integer.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be a valid integer.snap.png
new file mode 100644
index 0000000000..ccbfd7dd42
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be a valid integer.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be between 0 and 65535.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be between 0 and 65535.snap.png
new file mode 100644
index 0000000000..f339cb9961
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that the port should be between 0 and 65535.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter URL field is required.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter URL field is required.snap.png
new file mode 100644
index 0000000000..d7135aeed9
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter URL field is required.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name field is required.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name field is required.snap.png
new file mode 100644
index 0000000000..dfa8d51074
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name field is required.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name must be unique for its own ACC.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name must be unique for its own ACC.snap.png
new file mode 100644
index 0000000000..b7e66ab935
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter name must be unique for its own ACC.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is not required in Edition Mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is not required in Edition Mode.snap.png
new file mode 100644
index 0000000000..125e04a80f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is not required in Edition Mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is required in Creation Mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is required in Creation Mode.snap.png
new file mode 100644
index 0000000000..e31dcae582
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter password field is required in Creation Mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is not required Edition Mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is not required Edition Mode.snap.png
new file mode 100644
index 0000000000..74291d7ce1
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is not required Edition Mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is required in Creation Mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is required in Creation Mode.snap.png
new file mode 100644
index 0000000000..e31dcae582
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- Form validation -- validates that vCenter username is required in Creation Mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- adds a new parameter group when Add vCenter ESX button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- adds a new parameter group when Add vCenter ESX button is clicked.snap.png
new file mode 100644
index 0000000000..211b436bb3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- adds a new parameter group when Add vCenter ESX button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- disables the update button when no change has been made to the modal form.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- disables the update button when no change has been made to the modal form.snap.png
new file mode 100644
index 0000000000..13a46ef2cd
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- disables the update button when no change has been made to the modal form.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- displays form fields with the selected ACC values when the Modal is opened in Edition Mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- displays form fields with the selected ACC values when the Modal is opened in Edition Mode.snap.png
new file mode 100644
index 0000000000..8918e21471
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- displays form fields with the selected ACC values when the Modal is opened in Edition Mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- enables the create button when all mandatory fields are filled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- enables the create button when all mandatory fields are filled.snap.png
new file mode 100644
index 0000000000..fc74087c78
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Modal -- enables the create button when all mandatory fields are filled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- displays listing, filters and action buttons.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- displays listing, filters and action buttons.snap.png
new file mode 100644
index 0000000000..93a3085822
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- displays listing, filters and action buttons.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Creation Mode when Add button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Creation Mode when Add button is clicked.snap.png
new file mode 100644
index 0000000000..6e3e5e6462
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Creation Mode when Add button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Edition Mode when a row of the listing is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Edition Mode when a row of the listing is clicked.snap.png
new file mode 100644
index 0000000000..80771bff67
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/Additional Connctor Configuration -- Page -- opens the modal in Edition Mode when a row of the listing is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creation date column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creation date column is clicked.snap.png
new file mode 100644
index 0000000000..20d27c669c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creation date column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creator column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creator column is clicked.snap.png
new file mode 100644
index 0000000000..845c95f5cf
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Creator column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Last update column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Last update column is clicked.snap.png
new file mode 100644
index 0000000000..f4e73135f4
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Last update column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Name column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Name column is clicked.snap.png
new file mode 100644
index 0000000000..223efca5a2
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Name column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Type column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Type column is clicked.snap.png
new file mode 100644
index 0000000000..abbfdf1fef
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Type column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Updated by column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Updated by column is clicked.snap.png
new file mode 100644
index 0000000000..2509b31d38
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/column sorting -- executes a listing request when the Updated by column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_0.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_0.snap.png
new file mode 100644
index 0000000000..344ed7eb4e
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_0.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_1.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_1.snap.png
new file mode 100644
index 0000000000..976a07e9bb
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_1.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_2.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_2.snap.png
new file mode 100644
index 0000000000..303b41938b
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/invalide_url_2.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_0.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_0.snap.png
new file mode 100644
index 0000000000..5cede655be
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_0.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_1.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_1.snap.png
new file mode 100644
index 0000000000..428a94e204
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_1.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_2.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_2.snap.png
new file mode 100644
index 0000000000..714043a53a
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/AdditionalConnectorConfiguration/Specs/ACC.cypress.spec.tsx/valide_url_2.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Close button triggers the display of a confirmation dialog if the user has made some changes to the form.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Close button triggers the display of a confirmation dialog if the user has made some changes to the form.snap.png
index bc317afd05..6f4bbcbbf3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Close button triggers the display of a confirmation dialog if the user has made some changes to the form.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Close button triggers the display of a confirmation dialog if the user has made some changes to the form.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Save button is correctly activated when all required fields are filled, and the form is error-free, allowing the user to save the form data.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Save button is correctly activated when all required fields are filled, and the form is error-free, allowing the user to save the form data.snap.png
index 92157caf92..54faeecaaa 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Save button is correctly activated when all required fields are filled, and the form is error-free, allowing the user to save the form data.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- confirms that the Save button is correctly activated when all required fields are filled, and the form is error-free, allowing the user to save the form data.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Body field with the default initial value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Body field with the default initial value.snap.png
index 52048b2ca1..b3cb688bfa 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Body field with the default initial value.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Body field with the default initial value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Subject field with the default initial value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Subject field with the default initial value.snap.png
index a071b09c57..b3cb688bfa 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Subject field with the default initial value.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the Email Subject field with the default initial value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the form.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the form.snap.png
index c45ceab092..f15333bb52 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the form.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- displays the form.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- sends a request to add a new notification with the form values when the Confirm button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- sends a request to add a new notification with the form values when the Confirm button is clicked.snap.png
index 4738383985..dea37414a4 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- sends a request to add a new notification with the form values when the Confirm button is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel -- sends a request to add a new notification with the form values when the Confirm button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel Business Views -- dispalys the businessViews field when the BAM module is installed.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel Business Views -- dispalys the businessViews field when the BAM module is installed.snap.png
index 896412caa9..c9d4398a58 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel Business Views -- dispalys the businessViews field when the BAM module is installed.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelCreate.cypress.spec.tsx/Create Panel Business Views -- dispalys the businessViews field when the BAM module is installed.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Confirm Dialog -- confirms that the Confirm button triggers the sending of a PUT request.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Confirm Dialog -- confirms that the Confirm button triggers the sending of a PUT request.snap.png
index 4824cda634..268fbbccbc 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Confirm Dialog -- confirms that the Confirm button triggers the sending of a PUT request.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Confirm Dialog -- confirms that the Confirm button triggers the sending of a PUT request.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Expand/Collapse button triggers the desired expansion or collapse of the panel, providing users with the ability to control its visibility and size.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Expand/Collapse button triggers the desired expansion or collapse of the panel, providing users with the ability to control its visibility and size.snap.png
index f318564d37..df774db0a3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Expand/Collapse button triggers the desired expansion or collapse of the panel, providing users with the ability to control its visibility and size.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Expand/Collapse button triggers the desired expansion or collapse of the panel, providing users with the ability to control its visibility and size.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Include Services checkbox controls the enabling and checking of all host group services checkboxes.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Include Services checkbox controls the enabling and checking of all host group services checkboxes.snap.png
index eb560a8cd3..b29ba28381 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Include Services checkbox controls the enabling and checking of all host group services checkboxes.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Include Services checkbox controls the enabling and checking of all host group services checkboxes.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Message field is properly rendered with the edited notification message.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Message field is properly rendered with the edited notification message.snap.png
index 12c7366c75..9a535e693d 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Message field is properly rendered with the edited notification message.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Message field is properly rendered with the edited notification message.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Save button responds to field changes correctly, becoming enabled when a modification occurs and the form is error-free.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Save button responds to field changes correctly, becoming enabled when a modification occurs and the form is error-free.snap.png
index 69777cb261..9287f21f31 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Save button responds to field changes correctly, becoming enabled when a modification occurs and the form is error-free.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Save button responds to field changes correctly, becoming enabled when a modification occurs and the form is error-free.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Subject field is properly rendered with the edited notification subject.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Subject field is properly rendered with the edited notification subject.snap.png
index a710a5963e..517b8c3f7b 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Subject field is properly rendered with the edited notification subject.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the Subject field is properly rendered with the edited notification subject.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the notification name is properly rendered with the edited value and supports the capability for users to modify the name by interacting with the Edit icon.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the notification name is properly rendered with the edited value and supports the capability for users to modify the name by interacting with the Edit icon.snap.png
index 34c43471c8..4b372a2c4a 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the notification name is properly rendered with the edited value and supports the capability for users to modify the name by interacting with the Edit icon.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the notification name is properly rendered with the edited value and supports the capability for users to modify the name by interacting with the Edit icon.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the three icons for notification channels are appropriately presented, with the email icon initially selected and the other icons disabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the three icons for notification channels are appropriately presented, with the email icon initially selected and the other icons disabled.snap.png
index 6c6b84f4bf..4e4e1ed158 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the three icons for notification channels are appropriately presented, with the email icon initially selected and the other icons disabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- confirms that the three icons for notification channels are appropriately presented, with the email icon initially selected and the other icons disabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays host group resources and events with the edited notification values.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays host group resources and events with the edited notification values.snap.png
index 7be2527f44..2fac6c84c2 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays host group resources and events with the edited notification values.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays host group resources and events with the edited notification values.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays service groups and events fields with the edited notification values.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays service groups and events fields with the edited notification values.snap.png
index e230842cac..0d8d38da76 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays service groups and events fields with the edited notification values.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays service groups and events fields with the edited notification values.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays the Contacts field with edited notification contacts.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays the Contacts field with edited notification contacts.snap.png
index fa33ff3351..38d5f00abe 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays the Contacts field with edited notification contacts.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- displays the Contacts field with edited notification contacts.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Include Services field presents the value of the edited notification.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Include Services field presents the value of the edited notification.snap.png
index 7be2527f44..2fac6c84c2 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Include Services field presents the value of the edited notification.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Include Services field presents the value of the edited notification.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Save button's initial state is set to disabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Save button's initial state is set to disabled.snap.png
index 7be2527f44..0d8d38da76 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Save button's initial state is set to disabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the Save button's initial state is set to disabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an empty name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an empty name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png
index 342c93723f..c730cb9cbe 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an empty name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an empty name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an existing name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an existing name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png
index 0ec2c7e09b..6328476b13 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an existing name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the form handles an existing name field correctly by showing an error message and disabling the Save button as a validation measure.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the header section displays all the expected actions.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the header section displays all the expected actions.snap.png
index 0b969555d1..0d8d38da76 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the header section displays all the expected actions.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that the header section displays all the expected actions.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Host Groups field is empty, all event checkboxes are unchecked and the Include Services field is not visible.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Host Groups field is empty, all event checkboxes are unchecked and the Include Services field is not visible.snap.png
index 2f7e0e25ee..19dc865724 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Host Groups field is empty, all event checkboxes are unchecked and the Include Services field is not visible.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Host Groups field is empty, all event checkboxes are unchecked and the Include Services field is not visible.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Service Groups field is empty, all associated events are disabled and unchecked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Service Groups field is empty, all associated events are disabled and unchecked.snap.png
index 8fd6701b6d..3dd57400c9 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Service Groups field is empty, all associated events are disabled and unchecked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- ensures that when the Service Groups field is empty, all associated events are disabled and unchecked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when both resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when both resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
index 5dc302f748..bbd8dee13d 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when both resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when both resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Contacts field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Contacts field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
index 150277d335..1726e39f1e 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Contacts field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Contacts field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Message field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Message field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
index 16ab8aafc6..6710140f29 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Message field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Message field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Subject field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Subject field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
index d2d112bbc4..ab061247e8 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Subject field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Subject field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Time period field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Time period field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
new file mode 100644
index 0000000000..40f9294fc8
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel -- validates that when the Time period field is empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- displays Business Views and their events with the edited notification values.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- displays Business Views and their events with the edited notification values.snap.png
index bb6548b059..df87428a70 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- displays Business Views and their events with the edited notification values.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- displays Business Views and their events with the edited notification values.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- ensures that when the BA field is empty, all associated events are disabled and unchecked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- ensures that when the BA field is empty, all associated events are disabled and unchecked.snap.png
index d17022b789..7dd7968d17 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- ensures that when the BA field is empty, all associated events are disabled and unchecked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- ensures that when the BA field is empty, all associated events are disabled and unchecked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- validates that when all resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- validates that when all resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png
index 814f8b5518..5127b5c473 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- validates that when all resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Business Views -- validates that when all resource fields are empty, the user interface responds by displaying an error message and disabling the Save button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a confirmation dialog containing the notification name upon clicking the Delete button.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a confirmation dialog containing the notification name upon clicking the Delete button.snap.png
index e230842cac..e235ba491a 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a confirmation dialog containing the notification name upon clicking the Delete button.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a confirmation dialog containing the notification name upon clicking the Delete button.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a success message after successful deletion.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a success message after successful deletion.snap.png
index ffec74da32..971041a190 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a success message after successful deletion.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/CloudNotificationsConfiguration/Panel/specs/PanelEdit.cypress.spec.tsx/Edit Panel Delete button -- displays a success message after successful deletion.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- deletes a selected option on multi autocomplete when the corresponding button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- deletes a selected option on multi autocomplete when the corresponding button is clicked.snap.png
new file mode 100644
index 0000000000..48f6af2bed
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- deletes a selected option on multi autocomplete when the corresponding button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- disables the autocomplete when the does have the right to edit it.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- disables the autocomplete when the does have the right to edit it.snap.png
new file mode 100644
index 0000000000..0851ef5f3f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- disables the autocomplete when the does have the right to edit it.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays a single autocomplete and selects a value when an options is chosen.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays a single autocomplete and selects a value when an options is chosen.snap.png
new file mode 100644
index 0000000000..df43cf64a1
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays a single autocomplete and selects a value when an options is chosen.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the multi autocomplete and select values when options are chosen.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the multi autocomplete and select values when options are chosen.snap.png
new file mode 100644
index 0000000000..452fd4385a
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the multi autocomplete and select values when options are chosen.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the title in group mode when a prop is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the title in group mode when a prop is set.snap.png
new file mode 100644
index 0000000000..a01e13585d
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Autocomplete/ConnectedAutocomplete.cypress.spec.tsx/Widget connected autocomplete -- displays the title in group mode when a prop is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays default color when any color was previously selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays default color when any color was previously selected.snap.png
new file mode 100644
index 0000000000..055800640e
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays default color when any color was previously selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector as disabled when user does not have the right to edit the field.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector as disabled when user does not have the right to edit the field.snap.png
new file mode 100644
index 0000000000..055800640e
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector as disabled when user does not have the right to edit the field.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector in a group when a props is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector in a group when a props is set.snap.png
new file mode 100644
index 0000000000..888a1cf172
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- displays the color selector in a group when a props is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- selects another color when a color is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- selects another color when a color is selected.snap.png
new file mode 100644
index 0000000000..e22cf0a008
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Color/ColorSelector.cypress.spec.tsx/Color selector -- selects another color when a color is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- display the picker is disabled when the user cannot edit.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- display the picker is disabled when the user cannot edit.snap.png
new file mode 100644
index 0000000000..5adae9cc3c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- display the picker is disabled when the user cannot edit.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- displays a date time with a pre-selected date time.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- displays a date time with a pre-selected date time.snap.png
new file mode 100644
index 0000000000..2c1754d4b6
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- displays a date time with a pre-selected date time.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- selects date time when the picker is opened and a date time is picked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- selects date time when the picker is opened and a date time is picked.snap.png
new file mode 100644
index 0000000000..d8e5b7f417
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/DatePicker/DatePick.cypress.spec.tsx/DatePicker -- selects date time when the picker is opened and a date time is picked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- disables the metrics selector when resources are not correctly fullfilled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- disables the metrics selector when resources are not correctly fullfilled.snap.png
index b485a65a1e..f75c96d933 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- disables the metrics selector when resources are not correctly fullfilled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- disables the metrics selector when resources are not correctly fullfilled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays a message when there are too many metrics to retrieve.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays a message when there are too many metrics to retrieve.snap.png
index c55302dd86..09ba72aaa6 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays a message when there are too many metrics to retrieve.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays a message when there are too many metrics to retrieve.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays the number of metric available.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays the number of metric available.snap.png
index 977996e137..5712833008 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays the number of metric available.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Metric header -- displays the number of metric available.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Multiple metrics selection with several resources -- displays metrics with other units as disabled when the maximum of units are selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Multiple metrics selection with several resources -- displays metrics with other units as disabled when the maximum of units are selected.snap.png
index c77f90b268..0cac4320a9 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Multiple metrics selection with several resources -- displays metrics with other units as disabled when the maximum of units are selected.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Multiple metrics selection with several resources -- displays metrics with other units as disabled when the maximum of units are selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays a warning message when a metric with several resources is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays a warning message when a metric with several resources is selected.snap.png
index bb38de4f92..9f4d4f15ae 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays a warning message when a metric with several resources is selected.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays a warning message when a metric with several resources is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays the retrieved metrics.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays the retrieved metrics.snap.png
index 563eec5403..7f3e0c3ad2 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays the retrieved metrics.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- displays the retrieved metrics.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- selects a metric when metrics are retrieved and a metric name is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- selects a metric when metrics are retrieved and a metric name is clicked.snap.png
index bb38de4f92..9f4d4f15ae 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- selects a metric when metrics are retrieved and a metric name is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Metrics/Metrics.cypress.spec.tsx/Metrics -- Single metric selection with single resource -- selects a metric when metrics are retrieved and a metric name is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Resources/Resources.cypress.spec.tsx/Resources -- deletes a resource when the corresponding icon is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Resources/Resources.cypress.spec.tsx/Resources -- deletes a resource when the corresponding icon is clicked.snap.png
new file mode 100644
index 0000000000..50980a0b2f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Resources/Resources.cypress.spec.tsx/Resources -- deletes a resource when the corresponding icon is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the autocomplete as disabled when the user cannot edit the field.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the autocomplete as disabled when the user cannot edit the field.snap.png
new file mode 100644
index 0000000000..4572dbf671
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the autocomplete as disabled when the user cannot edit the field.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the user timezone as pre-selected when any value was previously selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the user timezone as pre-selected when any value was previously selected.snap.png
new file mode 100644
index 0000000000..ffa2136d33
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- displays the user timezone as pre-selected when any value was previously selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- selects a new timezone when a time zone is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- selects a new timezone when a time zone is selected.snap.png
new file mode 100644
index 0000000000..a796c20add
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/AddEditWidget/WidgetProperties/Inputs/Timezone/Timezone.cypress.spec.tsx/Timezone -- selects a new timezone when a time zone is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/Dashboard.cypress.spec.tsx/Dashboard -- Edit widget -- resizes the widget to its minimum size when the handle is dragged.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/Dashboard.cypress.spec.tsx/Dashboard -- Edit widget -- resizes the widget to its minimum size when the handle is dragged.snap.png
new file mode 100644
index 0000000000..3f63865630
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Dashboards/SingleInstancePage/Dashboard/Dashboard.cypress.spec.tsx/Dashboard -- Edit widget -- resizes the widget to its minimum size when the handle is dragged.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays more criterias interface when the corresponding button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays more criterias interface when the corresponding button is clicked.snap.png
deleted file mode 100644
index 818e6556de..0000000000
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays more criterias interface when the corresponding button is clicked.snap.png and /dev/null differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays the basic criterias interface.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays the basic criterias interface.snap.png
deleted file mode 100644
index 8a96d83dac..0000000000
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- displays the basic criterias interface.snap.png and /dev/null differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- does not display the host select and host statuses when the view by host is enabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- does not display the host select and host statuses when the view by host is enabled.snap.png
deleted file mode 100644
index f1b021b155..0000000000
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- does not display the host select and host statuses when the view by host is enabled.snap.png and /dev/null differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png
deleted file mode 100644
index ac230ae57a..0000000000
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png and /dev/null differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- displays the criterias interface.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- displays the criterias interface.snap.png
new file mode 100644
index 0000000000..55df46b2fa
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- displays the criterias interface.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png
new file mode 100644
index 0000000000..61d2b3a24d
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Type criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Type criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Basic criterias interface when selecting Type criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Basic criterias interface when selecting Type criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png
similarity index 100%
rename from centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png
rename to centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by All -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- displays the criterias interface.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- displays the criterias interface.snap.png
new file mode 100644
index 0000000000..8889b549c3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- displays the criterias interface.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png
new file mode 100644
index 0000000000..d4f5f2eb6c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png
new file mode 100644
index 0000000000..9807ced1fa
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png
new file mode 100644
index 0000000000..4478452835
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png
new file mode 100644
index 0000000000..607bbd5917
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png
new file mode 100644
index 0000000000..ddbc83a9d6
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png
new file mode 100644
index 0000000000..9a775c697d
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png
new file mode 100644
index 0000000000..a1d0f85701
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png
new file mode 100644
index 0000000000..3bb68df3e3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png
new file mode 100644
index 0000000000..c13d307a5c
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By host -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- displays the criterias interface.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- displays the criterias interface.snap.png
new file mode 100644
index 0000000000..55ea2a3153
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- displays the criterias interface.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png
new file mode 100644
index 0000000000..9b67459aad
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png
new file mode 100644
index 0000000000..c1a09690e8
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Host group criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png
new file mode 100644
index 0000000000..b414a436f9
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Monitoring server criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png
new file mode 100644
index 0000000000..8e1b7c5bb1
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png
new file mode 100644
index 0000000000..48a55bb668
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Service group criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png
new file mode 100644
index 0000000000..25f12013c5
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting State criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png
new file mode 100644
index 0000000000..4680736cb3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Basic criterias interface when selecting Status criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png
new file mode 100644
index 0000000000..8a391dd7de
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host category criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png
new file mode 100644
index 0000000000..6746c79100
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Filter/Filter.cypress.spec.tsx/Criterias, view by By service -- synchronize the search bar with Extended criterias interface when selecting Host severity criteria value.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Graph/Performance/Graph/AddCommentForm/AddCommentForm.cypress.spec.tsx/Add comment form -- sends a comment request with the given date and the typed comment.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Graph/Performance/Graph/AddCommentForm/AddCommentForm.cypress.spec.tsx/Add comment form -- sends a comment request with the given date and the typed comment.snap.png
index e8e1257908..0b712378a8 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Graph/Performance/Graph/AddCommentForm/AddCommentForm.cypress.spec.tsx/Add comment form -- sends a comment request with the given date and the typed comment.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Graph/Performance/Graph/AddCommentForm/AddCommentForm.cypress.spec.tsx/Add comment form -- sends a comment request with the given date and the typed comment.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays acknowledgement details when an acknowledged state chip is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays acknowledgement details when an acknowledged state chip is hovered.snap.png
index cee7300085..ae470dd0e0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays acknowledgement details when an acknowledged state chip is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays acknowledgement details when an acknowledged state chip is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding checks menu.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding checks menu.snap.png
index 9c444e8dfa..541e8e79c7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding checks menu.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding checks menu.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding fqdn menu.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding fqdn menu.snap.png
index bec521c1df..f2a6189270 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding fqdn menu.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding fqdn menu.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding notes_url menu.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding notes_url menu.snap.png
index 7b0c4d3202..61b116dcc3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding notes_url menu.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding notes_url menu.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding severity menu.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding severity menu.snap.png
index 8cb4f29488..185b2776d9 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding severity menu.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays additional columns when selected from the corresponding severity menu.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays downtime details when the downtime state chip is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays downtime details when the downtime state chip is hovered.snap.png
index d74a9c5614..d022939f84 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays downtime details when the downtime state chip is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Display additional columns -- displays downtime details when the downtime state chip is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with a limit param when the rows per page value is changed.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with a limit param when the rows per page value is changed.snap.png
index e4800e81ad..779e75dfe0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with a limit param when the rows per page value is changed.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with a limit param when the rows per page value is changed.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with an updated page param when a change page action is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with an updated page param when a change page action is clicked.snap.png
index e3df439ffe..8dbc3451cb 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with an updated page param when a change page action is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Listing request -- executes a listing request with an updated page param when a change page action is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- displays notification column if the cloud notification feature is disabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- displays notification column if the cloud notification feature is disabled.snap.png
index f316c1dd8b..34fd92d5a3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- displays notification column if the cloud notification feature is disabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- displays notification column if the cloud notification feature is disabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- hides notification column if the cloud notification feature is enabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- hides notification column if the cloud notification feature is enabled.snap.png
index 039b4827bb..71aa45c9ba 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- hides notification column if the cloud notification feature is enabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Notification column -- hides notification column if the cloud notification feature is enabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays a highlighted row when a resource is in a critical state.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays a highlighted row when a resource is in a critical state.snap.png
index cef9d3b3c9..8e2fb1dce7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays a highlighted row when a resource is in a critical state.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays a highlighted row when a resource is in a critical state.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays first part of information when multiple (split by ) are available.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays first part of information when multiple (split by ) are available.snap.png
index f6dca348ae..ea0e770841 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays first part of information when multiple (split by ) are available.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays first part of information when multiple (split by ) are available.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in compact mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in compact mode.snap.png
index f6dca348ae..ea0e770841 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in compact mode.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in compact mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in extended mode.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in extended mode.snap.png
index aa08ccf437..bf8fc58ac5 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in extended mode.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- displays the listing in extended mode.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- reorders columns when a drag handle is focused and an arrow is pressed.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- reorders columns when a drag handle is focused and an arrow is pressed.snap.png
index 4fc657fa9b..d872ecfee7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- reorders columns when a drag handle is focused and an arrow is pressed.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing -- reorders columns when a drag handle is focused and an arrow is pressed.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- disables columns drag and drop feature.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- disables columns drag and drop feature.snap.png
index 406c9fd482..704e08d4d7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- disables columns drag and drop feature.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- disables columns drag and drop feature.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- displays the services when the Expand button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- displays the services when the Expand button is clicked.snap.png
index edd3f0bf21..f32a68897e 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- displays the services when the Expand button is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- displays the services when the Expand button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sends a request to retrieve all sevices and their parents.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sends a request to retrieve all sevices and their parents.snap.png
index 406c9fd482..704e08d4d7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sends a request to retrieve all sevices and their parents.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sends a request to retrieve all sevices and their parents.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sorts columnns by worst status and duration.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sorts columnns by worst status and duration.snap.png
index 406c9fd482..704e08d4d7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sorts columnns by worst status and duration.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- sorts columnns by worst status and duration.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- updates column names.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- updates column names.snap.png
index 406c9fd482..704e08d4d7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- updates column names.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Hosts -- updates column names.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- disables columns drag and drop feature.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- disables columns drag and drop feature.snap.png
index 196a1448be..cc964d8530 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- disables columns drag and drop feature.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- disables columns drag and drop feature.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sends a request with types service,metaservice.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sends a request with types service,metaservice.snap.png
index 196a1448be..cc964d8530 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sends a request with types service,metaservice.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sends a request with types service,metaservice.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sorts columnns by worst status and duration.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sorts columnns by worst status and duration.snap.png
index 196a1448be..cc964d8530 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sorts columnns by worst status and duration.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- sorts columnns by worst status and duration.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- updates column names.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- updates column names.snap.png
index 196a1448be..cc964d8530 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- updates column names.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by Service -- updates column names.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- enables columns drag and drop feature.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- enables columns drag and drop feature.snap.png
index 812c094287..473e09dd8c 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- enables columns drag and drop feature.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- enables columns drag and drop feature.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sends a request to get all resources.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sends a request to get all resources.snap.png
index 812c094287..473e09dd8c 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sends a request to get all resources.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sends a request to get all resources.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sets the column names to the default ones.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sets the column names to the default ones.snap.png
index 812c094287..473e09dd8c 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sets the column names to the default ones.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sets the column names to the default ones.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sorts columnns by newest duration.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sorts columnns by newest duration.snap.png
index 812c094287..473e09dd8c 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sorts columnns by newest duration.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Resource Listing Visualization by all resources -- sorts columnns by newest duration.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Tree view Feature Flag -- hides the tree view icons if the feature is disabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Tree view Feature Flag -- hides the tree view icons if the feature is disabled.snap.png
index ac42115d1c..44cc2a621e 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Tree view Feature Flag -- hides the tree view icons if the feature is disabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/Tree view Feature Flag -- hides the tree view icons if the feature is disabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Duration column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Duration column is clicked.snap.png
index ae4169aa2e..5950f652e1 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Duration column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Duration column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Last check column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Last check column is clicked.snap.png
index 459aa0df0f..8dbc3451cb 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Last check column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Last check column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Parent column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Parent column is clicked.snap.png
index ce49479cc3..4e7ec2cf0d 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Parent column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Parent column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Resource column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Resource column is clicked.snap.png
index e645b1c65c..294f25768a 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Resource column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Resource column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Status column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Status column is clicked.snap.png
index 497156dc63..d0ab01079d 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Status column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Status column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Tries column is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Tries column is clicked.snap.png
index 2a2e858a53..7d09d56a5c 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Tries column is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/column sorting -- executes a listing request with sort_by param and stores the order parameter in the URL when Tries column is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is medium.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is medium.snap.png
new file mode 100644
index 0000000000..4afed33e74
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is medium.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is small.snap.png b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is small.snap.png
new file mode 100644
index 0000000000..eb9fdf63de
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/front_src/src/Resources/Listing/ResourceListing.cypress.spec.tsx/listing actions when the size is small.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the time in the corresponding timezone and time format when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the time in the corresponding timezone and time format when corresponding props are set.snap.png
new file mode 100644
index 0000000000..4115d436bc
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the time in the corresponding timezone and time format when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with a custom background color and a description when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with a custom background color and a description when corresponding props are set.snap.png
new file mode 100644
index 0000000000..049fcd48a8
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with a custom background color and a description when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with default properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with default properties.snap.png
new file mode 100644
index 0000000000..fb600d0b78
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with default properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with small width.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with small width.snap.png
new file mode 100644
index 0000000000..6fbc14f123
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- displays the widget with small width.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- does not display the date and timezone when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- does not display the date and timezone when corresponding props are set.snap.png
new file mode 100644
index 0000000000..637ff90be2
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Clock -- does not display the date and timezone when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays days when the ends date is far away.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays days when the ends date is far away.snap.png
new file mode 100644
index 0000000000..d7b9463e2e
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays days when the ends date is far away.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays the widget with default properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays the widget with default properties.snap.png
new file mode 100644
index 0000000000..bbfe587992
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- displays the widget with default properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display remaining time when the countdown is invalid.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display remaining time when the countdown is invalid.snap.png
new file mode 100644
index 0000000000..aa673930a7
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display remaining time when the countdown is invalid.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display the date and timezone when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display the date and timezone when corresponding props are set.snap.png
new file mode 100644
index 0000000000..0fb09daa10
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-clock/src/spec/Clock.cypress.spec.tsx/Clock-Timer -- Timer -- does not display the date and timezone when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays custom stacked bar chart when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays custom stacked bar chart when corresponding props are set.snap.png
new file mode 100644
index 0000000000..a0d42576cd
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays custom stacked bar chart when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the bar chart when the corresponding prop is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the bar chart when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..7d92bcfad6
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the bar chart when the corresponding prop is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the customised bar chart when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the customised bar chart when corresponding props are set.snap.png
new file mode 100644
index 0000000000..3c0117e6b5
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the customised bar chart when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart when the widget has metrics.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart when the widget has metrics.snap.png
index 0f0897970b..fd3ff3dde7 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart when the widget has metrics.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart when the widget has metrics.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a lot of custom style settings when corresponding props are set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a lot of custom style settings when corresponding props are set.snap.png
index 5bf79dd4b6..b5358353c9 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a lot of custom style settings when corresponding props are set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a lot of custom style settings when corresponding props are set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a natural curve when the corresponding prop is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a natural curve when the corresponding prop is set.snap.png
index 947a32ef9f..e5fc15f1fc 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a natural curve when the corresponding prop is set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a natural curve when the corresponding prop is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a step curve when the corresponding prop is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a step curve when the corresponding prop is set.snap.png
index 93a1b27fe3..3b78fb6861 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a step curve when the corresponding prop is set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with a step curve when the corresponding prop is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized critical threshold.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized critical threshold.snap.png
index 7c97b71b5b..4e49709bce 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized critical threshold.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized critical threshold.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized warning threshold.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized warning threshold.snap.png
index c634a47feb..763189f6de 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized warning threshold.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart with customized warning threshold.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart without thresholds when thresholds are disabled.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart without thresholds when thresholds are disabled.snap.png
index 90a9017f91..836272663f 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart without thresholds when thresholds are disabled.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the line chart without thresholds when thresholds are disabled.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the stacked bar chart when the corresponding prop is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the stacked bar chart when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..fce6398cb9
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-graph/src/Graph.cypress.spec.tsx/Graph Widget -- displays the stacked bar chart when the corresponding prop is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Limit -- changes the limit when a new limit is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Limit -- changes the limit when a new limit is selected.snap.png
index 12540a2ab4..9aeec43959 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Limit -- changes the limit when a new limit is selected.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Limit -- changes the limit when a new limit is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Pagination -- changes the page when the page button is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Pagination -- changes the page when the page button is clicked.snap.png
index 7b3de07d68..ac9272c4e1 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Pagination -- changes the page when the page button is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Pagination -- changes the page when the page button is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Sorting -- sorts the name column when the header is clicked.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Sorting -- sorts the name column when the header is clicked.snap.png
index 132f55be93..b9b988ade8 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Sorting -- sorts the name column when the header is clicked.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- Sorting -- sorts the name column when the header is clicked.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays all statuses when the panel option is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays all statuses when the panel option is set.snap.png
index 1bb957bda8..fef30f979e 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays all statuses when the panel option is set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays all statuses when the panel option is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the host column when the panel option is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the host column when the panel option is set.snap.png
index 6bd73f5b28..56a3ec61d4 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the host column when the panel option is set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the host column when the panel option is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the service column when the panel option is set.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the service column when the panel option is set.snap.png
index 88a8361e80..d9d6979db6 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the service column when the panel option is set.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays only the service column when the panel option is set.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the host group resource type is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the host group resource type is selected.snap.png
index a6d0262865..48837ec221 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the host group resource type is selected.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the host group resource type is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the service group resource type is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the service group resource type is selected.snap.png
index f5878ecd72..b9a5e1fae3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the service group resource type is selected.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-groupmonitoring/src/GroupMonitoring.cypress.spec.tsx/Group Monitoring -- displays the group monitoring widget with default options and the service group resource type is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a host.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a host.snap.png
new file mode 100644
index 0000000000..8608868fb5
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a host.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a service.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a service.snap.png
new file mode 100644
index 0000000000..ef52e726b3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays a confirmation modal when a close ticket button is clicked for a service.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets actions when openticket switch is enabled and a rule is selected.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets actions when openticket switch is enabled and a rule is selected.snap.png
new file mode 100644
index 0000000000..7651ede7d7
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets actions when openticket switch is enabled and a rule is selected.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets id,subject and open time when openticket switch is enabled, a rule is selected and display resources property is set to withTicket.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets id,subject and open time when openticket switch is enabled, a rule is selected and display resources property is set to withTicket.snap.png
new file mode 100644
index 0000000000..a8d0e12791
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/Open tickets -- displays tickets id,subject and open time when openticket switch is enabled, a rule is selected and display resources property is set to withTicket.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays acknowledge informations when the corresponding icon is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays acknowledge informations when the corresponding icon is hovered.snap.png
index 18d878e447..3e16894a83 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays acknowledge informations when the corresponding icon is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays acknowledge informations when the corresponding icon is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays downtime informations when the corresponding icon is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays downtime informations when the corresponding icon is hovered.snap.png
index 7df7bb9a87..55ce401b34 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays downtime informations when the corresponding icon is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays downtime informations when the corresponding icon is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays listing with columns from widget selected columns properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays listing with columns from widget selected columns properties.snap.png
index 2799657920..5197022ae0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays listing with columns from widget selected columns properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- displays listing with columns from widget selected columns properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with an status from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with an status from widget properties.snap.png
index 2799657920..5197022ae0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with an status from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with an status from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with downtime state defined in the widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with downtime state defined in the widget properties.snap.png
index 2799657920..5197022ae0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with downtime state defined in the widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with downtime state defined in the widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with hostgroup_names filter defined in widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with hostgroup_names filter defined in widget properties.snap.png
index 6a55a6fcf4..b6512d4912 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with hostgroup_names filter defined in widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with hostgroup_names filter defined in widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with limit from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with limit from widget properties.snap.png
index 8ac58ee6fd..c36ca663d6 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with limit from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with limit from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with resources type filter defined in widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with resources type filter defined in widget properties.snap.png
index 8ac58ee6fd..c36ca663d6 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with resources type filter defined in widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with resources type filter defined in widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with sort_by param from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with sort_by param from widget properties.snap.png
index d7d636536b..069466fcf1 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with sort_by param from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- executes a listing request with sort_by param from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- retrieves resources.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- retrieves resources.snap.png
index 2799657920..361526c83f 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- retrieves resources.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- retrieves resources.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that acknowledge resources row are correctly displayed with the right background color.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that acknowledge resources row are correctly displayed with the right background color.snap.png
index 2799657920..5197022ae0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that acknowledge resources row are correctly displayed with the right background color.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that acknowledge resources row are correctly displayed with the right background color.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that downtime resources row are correctly displayed with the right background color.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that downtime resources row are correctly displayed with the right background color.snap.png
index 2799657920..5197022ae0 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that downtime resources row are correctly displayed with the right background color.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by all -- verify that downtime resources row are correctly displayed with the right background color.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- displays listing with columns from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- displays listing with columns from widget properties.snap.png
index 14d7c7d1e3..06f5a5ab83 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- displays listing with columns from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- displays listing with columns from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- executes a listing request with limit from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- executes a listing request with limit from widget properties.snap.png
index 14d7c7d1e3..06f5a5ab83 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- executes a listing request with limit from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- executes a listing request with limit from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- retrieves resources.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- retrieves resources.snap.png
index e5bd43e1e1..f008856d6d 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- retrieves resources.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by host -- retrieves resources.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- displays listing with columns from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- displays listing with columns from widget properties.snap.png
index fd504aabfd..51e96b3d88 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- displays listing with columns from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- displays listing with columns from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- executes a listing request with limit from widget properties.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- executes a listing request with limit from widget properties.snap.png
index fd504aabfd..51e96b3d88 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- executes a listing request with limit from widget properties.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- executes a listing request with limit from widget properties.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- retrieves resources.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- retrieves resources.snap.png
index fd504aabfd..51e96b3d88 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- retrieves resources.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-resourcestable/src/spec/ResourcesTable.cypress.spec.tsx/View by service -- retrieves resources.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Condensed view -- With resources -- displays the tooltip when the pending card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Condensed view -- With resources -- displays the tooltip when the pending card is hovered.snap.png
index 9981106441..3434c7497f 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Condensed view -- With resources -- displays the tooltip when the pending card is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Condensed view -- With resources -- displays the tooltip when the pending card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Link to resource status page -- displays a see more tile when not all resources are displayed.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Link to resource status page -- displays a see more tile when not all resources are displayed.snap.png
index 5328f2556a..80970df8c1 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Link to resource status page -- displays a see more tile when not all resources are displayed.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/Link to resource status page -- displays a see more tile when not all resources are displayed.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays host informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays host informations when the mouse is over a tile.snap.png
index fd1cf9705e..5a1dff01d3 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays host informations when the mouse is over a tile.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays host informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays tiles.snap.png
index d5d2e5af74..ef51127a09 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays tiles.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- With Resources -- displays tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- Without Resources -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- Without Resources -- displays tiles.snap.png
index d5d2e5af74..ef51127a09 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- Without Resources -- displays tiles.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by host -- Without Resources -- displays tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a critical service tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a critical service tile is hovered.snap.png
index 3c70e6eee7..345876073b 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a critical service tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a critical service tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a service in downtime tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a service in downtime tile is hovered.snap.png
index 39e52d9dc6..784b3efe44 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a service in downtime tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a service in downtime tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a warning service tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a warning service tile is hovered.snap.png
index 0ac71d3862..b376bc78a2 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a warning service tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when a warning service tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an acknowledged service tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an acknowledged service tile is hovered.snap.png
index c59cfb120e..bf7d0b4cb5 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an acknowledged service tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an acknowledged service tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an ok service tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an ok service tile is hovered.snap.png
index dc8eb9f8ce..0a45ed11a2 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an ok service tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an ok service tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an unknown service tile is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an unknown service tile is hovered.snap.png
index 3970e35218..f500bdf579 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an unknown service tile is hovered.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays service informations when an unknown service tile is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays tiles.snap.png
index 3352481a5c..9700b3cb51 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays tiles.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- With Resources -- displays tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- Without Resources -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- Without Resources -- displays tiles.snap.png
index 3352481a5c..9700b3cb51 100644
Binary files a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- Without Resources -- displays tiles.snap.png and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGrid.cypress.spec.tsx/View by service -- Without Resources -- displays tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-critical displays business activity informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-critical displays business activity informations when the mouse is over a tile.snap.png
new file mode 100644
index 0000000000..cc43c781bf
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-critical displays business activity informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-ok displays business activity informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-ok displays business activity informations when the mouse is over a tile.snap.png
new file mode 100644
index 0000000000..9da95dc0fd
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Impact-ok displays business activity informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-critical displays business activity informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-critical displays business activity informations when the mouse is over a tile.snap.png
new file mode 100644
index 0000000000..8b2ac32af2
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-critical displays business activity informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-ok displays business activity informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-ok displays business activity informations when the mouse is over a tile.snap.png
new file mode 100644
index 0000000000..f3e2d264ec
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Ratio-ok displays business activity informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Worst Status-ok displays business activity informations when the mouse is over a tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Worst Status-ok displays business activity informations when the mouse is over a tile.snap.png
new file mode 100644
index 0000000000..897cf3dbcf
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- Worst Status-ok displays business activity informations when the mouse is over a tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- displays tiles.snap.png
new file mode 100644
index 0000000000..46728da50a
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Business activities -- displays tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays status tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays status tiles.snap.png
new file mode 100644
index 0000000000..48420b8b31
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays status tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the pending card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the pending card is hovered.snap.png
new file mode 100644
index 0000000000..66cd931a12
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the pending card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the problem card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the problem card is hovered.snap.png
new file mode 100644
index 0000000000..e2225ae19f
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the problem card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the success card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the success card is hovered.snap.png
new file mode 100644
index 0000000000..b75ed93df4
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- Business activities -- displays the tooltip when the success card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays status tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays status tiles.snap.png
new file mode 100644
index 0000000000..bb46425634
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays status tiles.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the pending card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the pending card is hovered.snap.png
new file mode 100644
index 0000000000..96b7288e14
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the pending card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the problem card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the problem card is hovered.snap.png
new file mode 100644
index 0000000000..b08c1d7b52
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the problem card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the success card is hovered.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the success card is hovered.snap.png
new file mode 100644
index 0000000000..ad04cdc260
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Condensed view -- KPIs -- displays the tooltip when the success card is hovered.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays boolean rule informations when the mouse is over boolean rule tile.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays boolean rule informations when the mouse is over boolean rule tile.snap.png
new file mode 100644
index 0000000000..1c57a476c3
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays boolean rule informations when the mouse is over boolean rule tile.snap.png differ
diff --git a/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays tiles.snap.png b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays tiles.snap.png
new file mode 100644
index 0000000000..d4f51f6681
Binary files /dev/null and b/centreon/cypress/visual-testing-snapshots/www/widgets/src/centreon-widget-statusgrid/src/spec/StatusGridWithBam.cypress.spec.tsx/Indicators -- displays tiles.snap.png differ
diff --git a/centreon/doc/API/centreon-api.yaml b/centreon/doc/API/centreon-api.yaml
index 1f6274c78a..1582b43084 100644
--- a/centreon/doc/API/centreon-api.yaml
+++ b/centreon/doc/API/centreon-api.yaml
@@ -3,13 +3,15 @@ info:
title: Centreon Web RestAPI
description: |
# New features
- +
+ + Added endpoint to deploy services in a host based on associated host template(s)
# Updated features
+ Added host_category filter to /monitoring/hostgroups endpoint
+ Added new filters for the /monitoring/hosts/categories endpoint
+ Added new filters for the /monitoring/services/categories endpoint
+ Remove snmp_community property from the hosts and host templates listing endpoints
+ Added new filters to the /monitoring/servicegroups endpoint
+ + Added new filters for /monitoring/resources /monitoring/resources/hosts related to Open Tickets
+ + Added new key 'extra' that contains extra data from modules installed for resources endpoints
+
# Information
All dates are in **ISO 8601** format
@@ -27,8 +29,8 @@ info:
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
version: "24.04"
externalDocs:
- description: You can contact us on our community Slack
- url: 'https://centreon.slack.com/messages/CCRGLQSE5'
+ description: You can contact us on our community platform The Watch
+ url: 'https://thewatch.centreon.com/'
servers:
- url: '{protocol}://{server}:{port}/centreon/api/{version}'
variables:
@@ -246,8 +248,14 @@ paths:
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
- /configuration/broker/{brokerId}/outputs:
- $ref: "./latest/onPremise/Configuration/Broker/AddBrokerOutput.yaml"
+ /configuration/additional-connector-configurations:
+ $ref: "./latest/onPremise/Configuration/AdditionalConnectorConfiguration/AddAndFindAccs.yaml"
+ /configuration/additional-connector-configurations/{acc_id}:
+ $ref: "./latest/onPremise/Configuration/AdditionalConnectorConfiguration/DeleteUpdateAndFindAcc.yaml"
+ /configuration/additional-connectors/pollers/{type}:
+ $ref: "./latest/onPremise/Configuration/AdditionalConnectorConfiguration/FindPollers.yaml"
+ /configuration/broker/{brokerId}/{tag}:
+ $ref: "./latest/onPremise/Configuration/Broker/AddBrokerInputOutput.yaml"
/configuration/broker/{brokerId}/outputs/{outputId}/file:
$ref: "./latest/onPremise/Configuration/Broker/UpdateStreamConnectorFile.yaml"
/configuration/commands:
@@ -390,6 +398,8 @@ paths:
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
+ /configuration/hosts/{host_id}/services/deploy:
+ $ref: './latest/onPremise/Configuration/Service/DeployServices.yaml'
/configuration/services/categories:
get:
tags:
@@ -409,6 +419,8 @@ paths:
* hostgroup.name
* hostcategory.id
* hostcategory.name
+ * servicegroup.id
+ * servicegroup.name
responses:
"200":
description: "OK"
@@ -1107,8 +1119,6 @@ paths:
description: "Generation OK"
'403':
$ref: '#/components/responses/Forbidden'
- '404':
- $ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/configuration/monitoring-servers/reload:
@@ -1391,57 +1401,7 @@ paths:
'500':
$ref: '#/components/responses/InternalServerError'
/configuration/timeperiods:
- get:
- tags:
- - Time period
- summary: "Get all time periods"
- description: |
- Get list of all time periods
-
- The available parameters to **search** / **sort_by** are:
-
- * id
- * name
- * alias
- responses:
- '200':
- description: OK
- content:
- application/json:
- schema:
- type: object
- properties:
- result:
- type: array
- items:
- $ref: '#/components/schemas/Configuration.TimePeriod'
- meta:
- $ref: '#/components/schemas/Meta'
- '403':
- $ref: '#/components/responses/Forbidden'
- '500':
- $ref: '#/components/responses/InternalServerError'
- post:
- tags:
- - Time period
- summary: "Create a new time period"
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Configuration.NewTimePeriod'
- responses:
- '201':
- description: "Time period created"
- '400':
- $ref: '#/components/responses/BadRequest'
- '403':
- $ref: '#/components/responses/Forbidden'
- '409':
- $ref: '#/components/responses/Conflict'
- '500':
- $ref: '#/components/responses/InternalServerError'
+ $ref: './latest/onPremise/Configuration/TimePeriod/AddOneAndFindTimePeriods.yaml'
/configuration/timeperiods/{id}:
delete:
tags:
@@ -1998,9 +1958,9 @@ paths:
'500':
$ref: '#/components/responses/InternalServerError'
/monitoring/hosts/status:
- $ref: './latest/onPremise/Realtime/Resources/FindHostsStatus.yaml'
+ $ref: './latest/onPremise/Realtime/Hosts/FindHostsStatus.yaml'
/monitoring/services/status:
- $ref: './latest/onPremise/Realtime/Resources/FindServicesStatus.yaml'
+ $ref: './latest/onPremise/Realtime/Services/FindServicesStatus.yaml'
/monitoring/services:
get:
tags:
@@ -4647,78 +4607,7 @@ paths:
'500':
$ref: '#/components/responses/InternalServerError'
/administration/vaults/configurations:
- post:
- tags:
- - Administration
- summary: "Create vault configuration"
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Administration.Vault.Configuration.Write'
- responses:
- '201':
- description: "OK"
- '400':
- $ref: '#/components/responses/BadRequest'
- '403':
- $ref: '#/components/responses/Forbidden'
- '404':
- $ref: '#/components/responses/NotFound'
- '500':
- $ref: '#/components/responses/InternalServerError'
- put:
- tags:
- - Administration
- summary: "Update vault configuration"
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Administration.Vault.Configuration.Update'
- responses:
- '204':
- description: "OK"
- '400':
- $ref: '#/components/responses/BadRequest'
- '403':
- $ref: '#/components/responses/Forbidden'
- '404':
- $ref: '#/components/responses/NotFound'
- '500':
- $ref: '#/components/responses/InternalServerError'
- delete:
- tags:
- - Administration
- summary: "Delete vault configuration"
- responses:
- '204':
- description: "OK"
- '403':
- $ref: '#/components/responses/Forbidden'
- '404':
- $ref: '#/components/responses/NotFound'
- '500':
- $ref: '#/components/responses/InternalServerError'
- get:
- tags:
- - Administration
- summary: "Get vault configuration details"
- responses:
- '200':
- description: "OK"
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Administration.Vault.Configuration.Read'
- '403':
- $ref: '#/components/responses/Forbidden'
- '404':
- $ref: '#/components/responses/NotFound'
- '500':
- $ref: '#/components/responses/InternalServerError'
+ $ref: "./latest/onPremise/Administration/Vault/VaultConfiguration.yaml"
components:
securitySchemes:
Token:
@@ -5120,24 +5009,6 @@ components:
required: true
schema:
type: string
- VaultId:
- in: path
- name: vault_id
- description: "ID of vault provider"
- required: true
- schema:
- type: integer
- format: int64
- example: 1
- VaultConfigurationId:
- in: path
- name: vault_configuration_id
- description: "ID of existing vault configuration"
- required: true
- schema:
- type: integer
- format: int64
- example: 1
HostCategoryId:
in: path
name: host_category_id
@@ -7359,6 +7230,10 @@ components:
type: string
description: "URL for the icon"
example: "/centreon/img/media/ppm/applications-monitoring-centreon-central-centreon-128-2.png"
+ extra:
+ type: array
+ items:
+ type: object
Monitoring.ResourceLinks:
type: object
properties:
@@ -8242,80 +8117,3 @@ components:
type: string
description: "Data on JSON Format"
example: "{\"action\":\"getthumbprint\",\"data\":{\"thumbprint\":\"xxxx_xxxxxxxxx\"},\"message\":\"ok\"}"
- Administration.Vault.Configuration.Write:
- type: object
- required: [name, address, port, root_path, role_id, secret_id]
- description: "Vault configuration"
- properties:
- name:
- type: string
- description: "Vault configuration name"
- example: "centreon_vault"
- address:
- type: string
- description: "Vault URL or IP"
- example: "127.0.0.1"
- port:
- type: integer
- description: "Vault Port"
- example: 8200
- root_path:
- type: string
- description: "Vault root storage path"
- example: "centreon"
- role_id:
- type: string
- description: "Vault role id"
- secret_id:
- type: string
- description: "Vault secret id"
- Administration.Vault.Configuration.Update:
- type: object
- required: [address, port, role_id, secret_id]
- description: "Vault configuration"
- properties:
- address:
- type: string
- description: "Vault URL or IP"
- example: "127.0.0.1"
- port:
- type: integer
- description: "Vault Port"
- example: 8200
- role_id:
- type: string
- description: "Vault role id"
- secret_id:
- type: string
- description: "Vault secret id"
- Administration.Vault.Configuration.Read:
- type: object
- description: "Vault configuration"
- properties:
- id:
- type: integer
- description: "Vault configuration id"
- example: 1
- name:
- type: string
- description: "Vault configuration name"
- example: "centreon_vault"
- vault_id:
- type: integer
- description: "Vault provider id"
- example: 1
- address:
- type: string
- description: "Vault URL or IP"
- example: "127.0.0.1"
- port:
- type: integer
- description: "Vault Port"
- example: 8200
- root_path:
- type: string
- description: "Vault root storage path"
- example: "centreon"
- role_id:
- type: string
- description: "Vault role ID"
diff --git a/centreon/doc/API/centreon-cloud-api.yaml b/centreon/doc/API/centreon-cloud-api.yaml
index 767d890a7e..2778770725 100644
--- a/centreon/doc/API/centreon-cloud-api.yaml
+++ b/centreon/doc/API/centreon-cloud-api.yaml
@@ -3,7 +3,7 @@ info:
title: Centreon Web RestAPI for Cloud
description: |
# New features
- +
+ + Added endpoint to deploy services in a host based on associated host template(s)
# Updated features
+
+
@@ -21,10 +21,9 @@ info:
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
- version: "24.04"
externalDocs:
- description: You can contact us on our community Slack
- url: 'https://centreon.slack.com/messages/CCRGLQSE5'
+ description: You can contact us on our community platform The Watch
+ url: 'https://thewatch.centreon.com/'
servers:
- url: '{protocol}://{server}:{port}/centreon/api/{version}'
variables:
@@ -70,6 +69,8 @@ paths:
$ref: './latest/Cloud/Configuration/HostTemplate/AddAndFindHostTemplates.yaml'
/configuration/hosts/templates/{host_template_id}:
$ref: './latest/Cloud/Configuration/HostTemplate/PartialUpdateHostTemplate.yaml'
+ /configuration/hosts/{host_id}/services/deploy:
+ $ref: './latest/Cloud/Configuration/Service/DeployServices.yaml'
/configuration/services:
$ref: "./latest/Cloud/Configuration/Service/AddAndFindServices.yaml"
/configuration/services/{service_id}:
diff --git a/centreon/doc/API/centreon-logo.png b/centreon/doc/API/centreon-logo.png
old mode 100755
new mode 100644
index 5458fb678d..a34220331f
Binary files a/centreon/doc/API/centreon-logo.png and b/centreon/doc/API/centreon-logo.png differ
diff --git a/centreon/doc/API/latest/Cloud/Configuration/Service/DeployServices.yaml b/centreon/doc/API/latest/Cloud/Configuration/Service/DeployServices.yaml
new file mode 100644
index 0000000000..e01f11b208
--- /dev/null
+++ b/centreon/doc/API/latest/Cloud/Configuration/Service/DeployServices.yaml
@@ -0,0 +1,29 @@
+post:
+ tags:
+ - Service
+ summary: "Add services to a host based on associated host template"
+ description: |
+ Add services to a host based on associated host templates
+ responses:
+ '201':
+ description: "Objects created"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ services:
+ type: array
+ items:
+ $ref: 'Schema/DeployServiceResponse.yaml'
+ '204':
+ $ref: '../../../Common/Response/NoContent.yaml'
+ '401':
+ $ref: '../../../Common/Response/Unauthorized.yaml'
+ '403':
+ $ref: '../../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../../Common/Response/InternalServerError.yaml'
+
diff --git a/centreon/doc/API/latest/Cloud/Configuration/Service/Schema/DeployServiceResponse.yaml b/centreon/doc/API/latest/Cloud/Configuration/Service/Schema/DeployServiceResponse.yaml
new file mode 100644
index 0000000000..7176505264
--- /dev/null
+++ b/centreon/doc/API/latest/Cloud/Configuration/Service/Schema/DeployServiceResponse.yaml
@@ -0,0 +1,78 @@
+type: object
+allOf:
+ - properties:
+ id:
+ type: integer
+ description: "Service ID."
+ example: 1
+ name:
+ type: string
+ description: "Service name."
+ example: "generic-service"
+ host_id:
+ type: integer
+ description: "ID of the host linked to this service."
+ example: 1
+ geo_coords:
+ type: string
+ description: "Geographic coordinates of the service"
+ example: "48.10,12.5"
+ service_template_id:
+ type: integer
+ description: "Template ID of the service template."
+ minimum: 1
+ nullable: true
+ example: null
+ check_timeperiod_id:
+ type: integer
+ description: "Time period ID of the check command."
+ minimum: 1
+ nullable: true
+ example: null
+ max_check_attempts:
+ type: integer
+ description: "Define the number of times that the monitoring engine will retry the service check command if it returns any non-OK state."
+ nullable: true
+ normal_check_interval:
+ type: integer
+ description: |
+ Define the number of 'time units' between regularly scheduled checks of the service.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+ nullable: true
+ retry_check_interval:
+ type: integer
+ description: |
+ Define the number of "time units" to wait before scheduling a re-check for this service after a non-OK state was detected.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+
+ Once the service has been retried max_check_attempts times without a change in its status,
+ it will revert to being scheduled at its "normal" check interval rate.
+ nullable: true
+ note:
+ type: string
+ description: "Define an optional note."
+ nullable: true
+ maxLength: 65535
+ note_url:
+ type: string
+ description: "Define an optional URL that can be used to provide more information about the service."
+ maxLength: 65535
+ nullable: true
+ action_url:
+ type: string
+ description: "Define an optional URL that can be used to specify actions to be performed on the service."
+ nullable: true
+ maxLength: 65535
+ icon_id:
+ type: integer
+ description: "Define the image ID that should be associated with this service."
+ minimum: 1
+ nullable: true
+ example: null
+ severity_id:
+ type: integer
+ description: "Severity ID."
+ minimum: 1
+ nullable: true
diff --git a/centreon/doc/API/latest/Common/Response/UnprocessableContent.yaml b/centreon/doc/API/latest/Common/Response/UnprocessableContent.yaml
new file mode 100644
index 0000000000..e2e5132f3a
--- /dev/null
+++ b/centreon/doc/API/latest/Common/Response/UnprocessableContent.yaml
@@ -0,0 +1,16 @@
+description: |
+ Unprocessable Content
+
+ The server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.
+content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int64
+ example: 422
+ message:
+ type: string
+ example: "id: This value should be of type integer\n"
diff --git a/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/GetVaultConfiguration.yaml b/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/GetVaultConfiguration.yaml
new file mode 100644
index 0000000000..4e2477e754
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/GetVaultConfiguration.yaml
@@ -0,0 +1,26 @@
+type: object
+description: "Vault configuration"
+properties:
+ id:
+ type: integer
+ description: "Vault configuration id"
+ example: 1
+ vault_id:
+ type: integer
+ description: "Vault provider id"
+ example: 1
+ address:
+ type: string
+ description: "Vault URL or IP"
+ example: "127.0.0.1"
+ port:
+ type: integer
+ description: "Vault Port"
+ example: 8200
+ root_path:
+ type: string
+ description: "Vault root storage path"
+ example: "centreon"
+ role_id:
+ type: string
+ description: "Vault role ID"
diff --git a/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/UpdateVaultConfiguration.yaml b/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/UpdateVaultConfiguration.yaml
new file mode 100644
index 0000000000..4f1e2f9b84
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Administration/Vault/Schema/UpdateVaultConfiguration.yaml
@@ -0,0 +1,22 @@
+type: object
+required: [address, port, root_path, role_id, secret_id]
+description: "Vault configuration"
+properties:
+ address:
+ type: string
+ description: "Vault URL or IP"
+ example: "127.0.0.1"
+ port:
+ type: integer
+ description: "Vault Port"
+ example: 8200
+ root_path:
+ type: string
+ description: "Vault root storage path"
+ example: "centreon"
+ role_id:
+ type: string
+ description: "Vault role id"
+ secret_id:
+ type: string
+ description: "Vault secret id"
diff --git a/centreon/doc/API/latest/onPremise/Administration/Vault/VaultConfiguration.yaml b/centreon/doc/API/latest/onPremise/Administration/Vault/VaultConfiguration.yaml
new file mode 100644
index 0000000000..03cdab2857
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Administration/Vault/VaultConfiguration.yaml
@@ -0,0 +1,51 @@
+put:
+ tags:
+ - Administration
+ summary: "Update or create vault configuration"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: './Schema/UpdateVaultConfiguration.yaml'
+ responses:
+ '204':
+ description: "OK"
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+delete:
+ tags:
+ - Administration
+ summary: "Delete vault configuration"
+ responses:
+ '204':
+ description: "OK"
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+get:
+ tags:
+ - Administration
+ summary: "Get vault configuration details"
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: './Schema/GetVaultConfiguration.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Common/Response/UnprocessableContent.yaml b/centreon/doc/API/latest/onPremise/Common/Response/UnprocessableContent.yaml
new file mode 100644
index 0000000000..8493d94c06
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Common/Response/UnprocessableContent.yaml
@@ -0,0 +1 @@
+$ref: "../../../Common/Response/UnprocessableContent.yaml"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/AddAndFindAccs.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/AddAndFindAccs.yaml
new file mode 100644
index 0000000000..de89ff526b
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/AddAndFindAccs.yaml
@@ -0,0 +1,64 @@
+post:
+ tags:
+ - Additional Connector Configuration
+ summary: "Add an Additional Connector Configuration (ACC)"
+ description: "Add an Additional Connector Configuration (ACC)"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/AddAccRequest.yaml'
+ responses:
+ '201':
+ description: "Object created"
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/AddAccResponse.yaml'
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '409':
+ $ref: '../../Common/Response/Conflict.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+get:
+ tags:
+ - Additional Connector Configuration
+ summary: "List Additional Connector Configurations (ACC)"
+ description: |
+ Return all ACCs.
+
+ The available parameters to **search** / **sort_by** are:
+
+ * name
+ * type
+ * poller.id
+ * poller.name
+ parameters:
+ - $ref: '../../Common/QueryParameter/Limit.yaml'
+ - $ref: '../../Common/QueryParameter/Page.yaml'
+ - $ref: '../../Common/QueryParameter/Search.yaml'
+ - $ref: '../../Common/QueryParameter/SortBy.yaml'
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ result:
+ type: array
+ items:
+ $ref: 'Schema/FindAccsResponse.yaml'
+ meta:
+ $ref: '../../Common/Schema/Meta.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/DeleteUpdateAndFindAcc.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/DeleteUpdateAndFindAcc.yaml
new file mode 100644
index 0000000000..97f21a56ee
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/DeleteUpdateAndFindAcc.yaml
@@ -0,0 +1,62 @@
+delete:
+ tags:
+ - Additional Connector Configuration
+ summary: "Delete an Additional Connector Configuration (ACC)"
+ description: "Delete an Additional Connector Configuration (ACC)"
+ parameters:
+ - $ref: 'QueryParameter/AccId.yaml'
+ responses:
+ '204':
+ $ref: '../../Common/Response/NoContent.yaml'
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+get:
+ tags:
+ - Additional Connector Configuration
+ summary: "Find an Additional Connector Configuration (ACC)"
+ description: "Find an Additional Connector Configuration (ACC)"
+ parameters:
+ - $ref: 'QueryParameter/AccId.yaml'
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/FindAccResponse.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+put:
+ tags:
+ - Additional Connector Configuration
+ summary: "Update an Additional Connector Configuration (ACC)"
+ description: "Update an Additional Connector Configuration (ACC)"
+ parameters:
+ - $ref: 'QueryParameter/AccId.yaml'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/UpdateAccRequest.yaml'
+ responses:
+ '204':
+ $ref: '../../Common/Response/NoContent.yaml'
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/FindPollers.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/FindPollers.yaml
new file mode 100644
index 0000000000..ddc9022e89
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/FindPollers.yaml
@@ -0,0 +1,40 @@
+get:
+ tags:
+ - Additional Connector Configuration
+ summary: "Find available pollers for an ACC type"
+ description: "Find available pollers for an ACC type"
+ parameters:
+ - in: path
+ name: type
+ required: true
+ description: |
+ Available Additional Connector Configuration types:
+ - vmware_v6
+ schema:
+ type: integer
+ minimum: 1
+ example: 1
+ - $ref: '../../Common/QueryParameter/Limit.yaml'
+ - $ref: '../../Common/QueryParameter/Page.yaml'
+ - $ref: '../../Common/QueryParameter/Search.yaml'
+ - $ref: '../../Common/QueryParameter/SortBy.yaml'
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ result:
+ type: array
+ items:
+ $ref: 'Schema/FindPollersResponse.yaml'
+ meta:
+ $ref: '../../Common/Schema/Meta.yaml'
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/QueryParameter/AccId.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/QueryParameter/AccId.yaml
new file mode 100644
index 0000000000..be64eed8bb
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/QueryParameter/AccId.yaml
@@ -0,0 +1,8 @@
+in: path
+name: acc_id
+required: true
+description: "Additional Connector Configuration ID"
+schema:
+ type: integer
+ minimum: 1
+ example: 1
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccRequest.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccRequest.yaml
new file mode 100644
index 0000000000..c631f9d196
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccRequest.yaml
@@ -0,0 +1,39 @@
+type: object
+required: ["name", "type", "pollers", "parameters"]
+properties:
+ name:
+ type: string
+ description: "ACC name"
+ example: "my-acc-name"
+ description:
+ type: string
+ description: "A short ACC description"
+ example: "some description"
+ type:
+ type: string
+ description: |
+ Type of ACC
+
+ Supported ACC types:
+ * vmware_v6
+ example: vmware_v6
+ pollers:
+ type: array
+ items:
+ type: integer
+ description: Poller ID(s) associated with the ACC
+ example: [1, 12]
+ parameters:
+ type: object
+ description: |
+ Configuration parameters, varies depending on the ACC type.
+ example:
+ port: 4242
+ vcenters: [
+ {
+ "name": "my-vcenter",
+ "url": "http://10.10.10.10/sdk",
+ "username": "admin",
+ "password": "my-pwd"
+ }
+ ]
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccResponse.yaml
new file mode 100644
index 0000000000..654cc65219
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/AddAccResponse.yaml
@@ -0,0 +1,61 @@
+type: object
+properties:
+ id:
+ type: integer
+ example: 4
+ name:
+ type: string
+ description: "ACC name"
+ example: "my-acc-name"
+ description:
+ type: string
+ description: "A short ACC description"
+ example: "some description"
+ type:
+ type: string
+ description: |
+ Type of ACC
+
+ Supported ACC types:
+ * vmware_v6
+ example: vmware_v6
+ pollers:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: integer
+ description: "Poller ID"
+ example: 1
+ name:
+ type: string
+ description: "Poller name"
+ example: "my-poller-name"
+ description: Poller(s) associated with the ACC
+ parameters:
+ type: object
+ description: |
+ Configuration parameters, varies depending on the ACC type.
+ Credential values are not readable and will always be null.
+ example:
+ port: 4242
+ vcenters: [
+ {
+ "name": "my-vcenter",
+ "url": "http://10.10.10.10/sdk",
+ "username": null,
+ "password": null
+ }
+ ]
+ created_by:
+ type: object
+ nullable: true
+ properties:
+ id: { type: integer, description: "Creation contact ID", example: 1 }
+ name: { type: string, description: "Creation contact name", example: "admin" }
+ created_at:
+ type: string
+ format: date-time
+ nullable: true
+ description: "Creation date (ISO8601)"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccResponse.yaml
new file mode 100644
index 0000000000..cf3fe91484
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccResponse.yaml
@@ -0,0 +1,72 @@
+type: object
+properties:
+ id:
+ type: integer
+ example: 4
+ name:
+ type: string
+ description: "ACC name"
+ example: "my-acc-name"
+ description:
+ type: string
+ description: "A short ACC description"
+ example: "some description"
+ type:
+ type: string
+ description: |
+ Type of ACC
+
+ Supported ACC types:
+ * vmware_v6
+ example: vmware_v6
+ pollers:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: integer
+ description: "Poller ID"
+ example: 1
+ name:
+ type: string
+ description: "Poller name"
+ example: "my-poller-name"
+ description: Poller(s) associated with the ACC
+ parameters:
+ type: object
+ description: |
+ Configuration parameters, varies depending on the ACC type.
+ Credential values are not readable and will always be null.
+ example:
+ port: 4242
+ vcenters: [
+ {
+ "name": "my-vcenter",
+ "url": "http://10.10.10.10/sdk",
+ "username": null,
+ "password": null
+ }
+ ]
+ created_by:
+ type: object
+ nullable: true
+ properties:
+ id: { type: integer, description: "Creation contact ID", example: 1 }
+ name: { type: string, description: "Creation contact name", example: "admin" }
+ created_at:
+ type: string
+ format: date-time
+ nullable: true
+ description: "Creation date (ISO8601)"
+ updated_by:
+ type: object
+ nullable: true
+ properties:
+ id: { type: integer, description: "Update contact ID", example: 1 }
+ name: { type: string, description: "Update contact name", example: "admin" }
+ updated_at:
+ type: string
+ format: date-time
+ nullable: true
+ description: "Update date (ISO8601)"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccsResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccsResponse.yaml
new file mode 100644
index 0000000000..3543a29039
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindAccsResponse.yaml
@@ -0,0 +1,43 @@
+type: object
+properties:
+ id:
+ type: integer
+ example: 4
+ name:
+ type: string
+ description: "ACC name"
+ example: "my-acc-name"
+ description:
+ type: string
+ description: "A short ACC description"
+ example: "some description"
+ type:
+ type: string
+ description: |
+ Type of ACC
+
+ Supported ACC types:
+ * vmware_v6
+ example: vmware_v6
+ created_by:
+ type: object
+ nullable: true
+ properties:
+ id: { type: integer, description: "Creation contact ID", example: 1 }
+ name: { type: string, description: "Creation contact name", example: "admin" }
+ created_at:
+ type: string
+ format: date-time
+ nullable: true
+ description: "Creation date (ISO8601)"
+ updated_by:
+ type: object
+ nullable: true
+ properties:
+ id: { type: integer, description: "Update contact ID", example: 1 }
+ name: { type: string, description: "Update contact name", example: "admin" }
+ updated_at:
+ type: string
+ format: date-time
+ nullable: true
+ description: "Update date (ISO8601)"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindPollersResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindPollersResponse.yaml
new file mode 100644
index 0000000000..7213239557
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/FindPollersResponse.yaml
@@ -0,0 +1,9 @@
+type: object
+properties:
+ id:
+ type: integer
+ example: 4
+ name:
+ type: string
+ description: "Poller name"
+ example: "my-poller-name"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/UpdateAccRequest.yaml b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/UpdateAccRequest.yaml
new file mode 100644
index 0000000000..3b8aa2f748
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/AdditionalConnectorConfiguration/Schema/UpdateAccRequest.yaml
@@ -0,0 +1,47 @@
+type: object
+required: ["name", "type", "pollers", "parameters"]
+properties:
+ name:
+ type: string
+ description: "ACC name"
+ example: "my-acc-name"
+ description:
+ type: string
+ description: "A short ACC description"
+ example: "some description"
+ type:
+ type: string
+ description: |
+ Type of ACC
+
+ Supported ACC types:
+ * vmware_v6
+ example: vmware_v6
+ pollers:
+ type: array
+ items:
+ type: integer
+ description: Poller ID(s) associated with the ACC
+ example: [1, 12]
+ parameters:
+ type: object
+ description: |
+ Configuration parameters, varies depending on the ACC type.
+ If credential(s) do not change, replace value(s) by null.
+ example:
+ port: 4242
+ vcenters: [
+ {
+ "name": "my-vcenter B",
+ "url": "http://10.10.10.10/sdk",
+ "username": null,
+ "password": null
+ },
+ {
+ "name": "my-vcenter B",
+ "url": "http://10.10.10.10/sdk",
+ "username": "admin",
+ "password": "my-pwd B"
+ }
+
+ ]
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerInputOutput.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerInputOutput.yaml
new file mode 100644
index 0000000000..b737b840fb
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerInputOutput.yaml
@@ -0,0 +1,37 @@
+post:
+ tags:
+ - Broker
+ summary: "Add a Broker input/output"
+ description: "Add a Broker input/output configuration"
+ parameters:
+ - $ref: 'QueryParameter/BrokerId.yaml'
+ - in: path
+ name: tag
+ description: "The configuration tag"
+ required: true
+ schema:
+ type: string
+ enum: [inputs, outputs]
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/AddBrokerInputOutputRequest.yaml'
+ responses:
+ '201':
+ description: "Object created"
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/AddBrokerInputOutputResponse.yaml'
+ '400':
+ $ref: '../../Common/Response/BadRequest.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '409':
+ $ref: '../../Common/Response/Conflict.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerOutput.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerOutput.yaml
deleted file mode 100644
index aa06d4c674..0000000000
--- a/centreon/doc/API/latest/onPremise/Configuration/Broker/AddBrokerOutput.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-post:
- tags:
- - Broker
- summary: "Add a broker output"
- description: "Add a broker output configuration"
- parameters:
- - $ref: 'QueryParameter/BrokerId.yaml'
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: 'Schema/AddBrokerOutputRequest.yaml'
- responses:
- '201':
- description: "Object created"
- content:
- application/json:
- schema:
- type: object
- $ref: 'Schema/AddBrokerOutputResponse.yaml'
- '400':
- $ref: '../../Common/Response/BadRequest.yaml'
- '403':
- $ref: '../../Common/Response/Forbidden.yaml'
- '404':
- $ref: '../../Common/Response/NotFound.yaml'
- '409':
- $ref: '../../Common/Response/Conflict.yaml'
- '500':
- $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputRequest.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputRequest.yaml
new file mode 100644
index 0000000000..7661f7c421
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputRequest.yaml
@@ -0,0 +1,60 @@
+type: object
+required: ["name", "type", "parameters"]
+properties:
+ name:
+ type: string
+ description: "input/output name"
+ example: "central-broker-master-unified-sql"
+ type:
+ type: integer
+ description: |
+ Input/Output type ID
+
+ Must be one of the following for outputs:
+ * 3 - IPv4 (ipv4)
+ * 10 - IPv6 (ipv6)
+ * 11 - File (file)
+ * 13 - RRD file generator (rrd)
+ * 14 - Perfdata Generator (Centreon Storage) - DEPRECATED (storage)
+ * 16 - Broker SQL database - DEPRECATED (sql)
+ * 28 - Database configuration reader (db_cfg_reader)
+ * 29 - Database configuration writer (db_cfg_writer)
+ * 30 - Storage - Graphite (graphite)
+ * 31 - Storage - InfluxDB (influxdb)
+ * 33 - Stream connector (lua)
+ * 34 - Unified SQL (unified_sql)
+ * 35 - BBDO Server (bbdo_server)
+ * 36 - BBDO Client (bbdo_client)
+
+ Must be one of the following for inputs:
+ * 3 - IPv4 (ipv4)
+ * 10 - IPv6 (ipv6)
+ * 11 - File (file)
+ * 35 - BBDO Server (bbdo_server)
+ * 36 - BBDO Client (bbdo_client)
+ example: 33
+ parameters:
+ type: object
+ description: |
+ Output parameters specific to the output type.
+
+ For multiselect fields the property name is a combination of
+ the group field name and the sub field name as "{fieldName}_{subfieldName}" (ex: "filters_category")
+
+ All fields must be provided, but can be null/empty if they are optional.
+
+ example:
+ path: "some/test/path"
+ filters_category: ["storage", "neb"]
+ lua_parameter: [
+ {
+ "type": "string",
+ "name": "my-lua-param-1",
+ "value": "azerty"
+ },
+ {
+ "type": "string",
+ "name": "my-lua-param-2",
+ "value": "qwerty"
+ }
+ ]
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputResponse.yaml
new file mode 100644
index 0000000000..ade0baca2a
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerInputOutputResponse.yaml
@@ -0,0 +1,44 @@
+type: object
+properties:
+ brokerId:
+ type: integer
+ description: "Broker configuration ID"
+ example: 1
+ name:
+ type: string
+ description: "input/output name"
+ example: "central-broker-master-unified-sql"
+ type:
+ type: object
+ description: "input/output type"
+ properties:
+ id:
+ type: integer
+ description: "input/output type ID"
+ example: 33
+ name:
+ type: string
+ description: "input/output type name"
+ example: "lua"
+ parameters:
+ type: object
+ description: |
+ Input/Output parameters specific to its type.
+
+ For multiselect fields, the property name is a combination of the group field name and the sub field name (ex: "filters_category")
+
+ example:
+ path: "some/test/path"
+ filters_category: ["storage", "neb"]
+ lua_parameter: [
+ {
+ "type": "string",
+ "name": "my-lua-param-1",
+ "value": "azerty"
+ },
+ {
+ "type": "string",
+ "name": "my-lua-param-2",
+ "value": "qwerty"
+ }
+ ]
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputRequest.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputRequest.yaml
deleted file mode 100644
index f125e3ec00..0000000000
--- a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputRequest.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-type: object
-required: ["name", "typeId", "parameters"]
-properties:
- name:
- type: string
- description: "output name"
- example: "central-broker-master-unified-sql"
- type:
- type: integer
- description: |
- Output type ID
-
- Must be one of the following:
- * 3 - IPv4 (ipv4)
- * 10 - IPv6 (ipv6)
- * 11 - File (file)
- * 13 - RRD file generator (rrd)
- * 14 - Perfdata Generator (Centreon Storage) - DEPRECATED (storage)
- * 16 - Broker SQL database - DEPRECATED (sql)
- * 28 - Database configuration reader (db_cfg_reader)
- * 29 - Database configuration writer (db_cfg_writer)
- * 30 - Storage - Graphite (graphite)
- * 31 - Storage - InfluxDB (influxdb)
- * 33 - Stream connector (lua)
- * 34 - Unified SQL (unified_sql)
- * 35 - BBDO Server (bbdo_server)
- * 36 - BBDO Client (bbdo_client)
- example: "33"
- parameters:
- type: object
- description: |
- Output parameters specific to the output type.
-
- For multiselect fields the property name is a combination of
- the group field name and the sub field name as "{fieldName}_{subfieldName}" (ex: "filters_category")
-
- All fields must be provided, but can be null/empty if they are optional.
-
- example: |
- {
- "path": "some/test/path",
- "filters.category": ["storage", "neb"],
- "lua_parameter": [
- {
- "type": "string",
- "name": "my-lua-param-1",
- "value": "azerty"
- },
- {
- "type": "string",
- "name": "my-lua-param-2",
- "value": "qwerty"
- }
- ]
- }
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputResponse.yaml
deleted file mode 100644
index c2075614cd..0000000000
--- a/centreon/doc/API/latest/onPremise/Configuration/Broker/Schema/AddBrokerOutputResponse.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-type: object
-properties:
- brokerId:
- type: integer
- description: "Broker configuration ID"
- example: 1
- name:
- type: string
- description: "output name"
- example: "central-broker-master-unified-sql"
- type:
- type: object
- description: "output type"
- properties:
- id:
- type: integer
- description: "output type ID"
- example: 33
- name:
- type: string
- description: "output type name"
- example: "lua"
- parameters:
- type: object
- description: |
- Output parameters specific to the output type.
-
- For multiselect fields, the property name is a combination of the group field name and the sub field name (ex: "filters.category")
-
- example: |
- {
- "path": "some/test/path",
- "filters.category": ["storage", "neb"],
- "lua_parameter": [
- {
- "type": "string",
- "name": "my-lua-param-1",
- "value": "azerty"
- },
- {
- "type": "string",
- "name": "my-lua-param-2",
- "value": "qwerty"
- }
- ]
- }
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Service/DeployServices.yaml b/centreon/doc/API/latest/onPremise/Configuration/Service/DeployServices.yaml
new file mode 100644
index 0000000000..1953a37e77
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/Service/DeployServices.yaml
@@ -0,0 +1,28 @@
+post:
+ tags:
+ - Service
+ summary: "Add services to a host based on associated host template"
+ description: |
+ Add services to a host based on associated host template
+ responses:
+ '201':
+ description: "Objects created"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ services:
+ type: array
+ items:
+ $ref: 'Schema/DeployServiceResponse.yaml'
+ '204':
+ $ref: '../../Common/Response/NoContent.yaml'
+ '401':
+ $ref: '../../Common/Response/Unauthorized.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '404':
+ $ref: '../../Common/Response/NotFound.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Service/Schema/DeployServiceResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/Service/Schema/DeployServiceResponse.yaml
new file mode 100644
index 0000000000..d8e092ab6f
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/Service/Schema/DeployServiceResponse.yaml
@@ -0,0 +1,260 @@
+type: object
+allOf:
+ - properties:
+ id:
+ type: integer
+ description: "Service ID."
+ example: 1
+ name:
+ type: string
+ description: "Service name."
+ example: "generic-service"
+ host_id:
+ type: integer
+ description: "ID of the host linked to this service."
+ example: 1
+ geo_coords:
+ type: string
+ description: "Geographic coordinates of the service"
+ example: "48.10,12.5"
+ comment:
+ type: string
+ description: "Service comment."
+ nullable: true
+ service_template_id:
+ type: integer
+ description: "Template ID of the service template."
+ minimum: 1
+ nullable: true
+ example: null
+ check_command_id:
+ type: integer
+ description: "Check command ID."
+ minimum: 1
+ nullable: true
+ example: null
+ check_command_args:
+ type: array
+ items:
+ type: string
+ description: "Arguments of the check command."
+ example: ["80", "90"]
+ check_timeperiod_id:
+ type: integer
+ description: "Time period ID of the check command."
+ minimum: 1
+ nullable: true
+ example: null
+ max_check_attempts:
+ type: integer
+ description: "Define the number of times that the monitoring engine will retry the service check command if it returns any non-OK state."
+ nullable: true
+ normal_check_interval:
+ type: integer
+ description: |
+ Define the number of 'time units' between regularly scheduled checks of the service.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+ nullable: true
+ retry_check_interval:
+ type: integer
+ description: |
+ Define the number of "time units" to wait before scheduling a re-check for this service after a non-OK state was detected.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+
+ Once the service has been retried max_check_attempts times without a change in its status,
+ it will revert to being scheduled at its "normal" check interval rate.
+ nullable: true
+ active_check_enabled:
+ type: integer
+ description: |
+ Indicates whether active checks are enabled or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ passive_check_enabled:
+ type: integer
+ description: |
+ Indicates whether passive checks are enabled or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ volatility_enabled:
+ type: integer
+ description: |
+ Indicates whether the service is "volatile" or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ notification_enabled:
+ type: integer
+ description: |
+ Specify whether notifications are enabled or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ is_contact_additive_inheritance:
+ type: boolean
+ description: |
+ Only used when notification inheritance for hosts and services is set to vertical inheritance only.
+
+ When enabled, the contactgroup definition will not override the definitions on template levels, it will be appended instead.
+ is_contact_group_additive_inheritance:
+ type: boolean
+ description: |
+ Only used when notification inheritance for hosts and services is set to vertical inheritance only.
+
+ When enabled, the contact definition will not override the definitions on template levels, it will be appended instead.
+ notification_interval:
+ type: integer
+ nullable: true
+ description: |
+ Define the number of "time units" to wait before re-notifying a contact that this service is still down or unreachable.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+
+ A value of 0 disables re-notifications of contacts about alerts for this service - only one alert notification will be sent out.
+ notification_timeperiod_id:
+ type: integer
+ description: "Notification timeperiod ID."
+ minimum: 1
+ nullable: true
+ example: 1
+ notification_type:
+ type: integer
+ description: |
+ Define the states of the service for which notifications should be sent out.
+
+ The value is the sum of all the values of the selected options.
+
+ * `0` - NONE
+ * `1` - WARNING
+ * `2` - UNKNOWN
+ * `4` - CRITICAL
+ * `8` - RECOVERY
+ * `16` - FLAPPING
+ * `32` - DOWNTIME_SCHEDULED
+ * NULL - (inheritance of its parent's value. If there is no parent,
+ the value will be assumed to be: WARNING|UNKNOWN|CRITICAL|RECOVERY|FLAPPING|DOWNTIME_SCHEDULED)
+
+ example: A value equal to 5 corresponds to the selected options WARNING and CRITICAL
+ example: 5
+ first_notification_delay:
+ type: integer
+ nullable: true
+ description: |
+ Define the number of "time units" to wait before sending out the first problem notification when this service enters a non-OK state.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+ recovery_notification_delay:
+ type: integer
+ nullable: true
+ description: |
+ Define the number of "time units" to wait before sending out the recovery notification when this service enters an OK state.
+
+ With the default time unit of 60s, this number will mean multiples of 1 minute.
+ acknowledgement_timeout:
+ type: integer
+ description: "Specify a duration of acknowledgement for this service."
+ nullable: true
+ freshness_checked:
+ type: integer
+ description: |
+ Indicates whether freshness is checked or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ freshness_threshold:
+ type: integer
+ description: "Specify the freshness threshold (in seconds) for this service."
+ nullable: true
+ flap_detection_enabled:
+ type: integer
+ description: |
+ Indicates whether the flap detection is enabled or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ low_flap_threshold:
+ type: integer
+ description: "Specify the low state change threshold used in flap detection for this service."
+ nullable: true
+ high_flap_threshold:
+ type: integer
+ description: "Specify the high state change threshold used in flap detection for this service."
+ nullable: true
+ event_handler_enabled:
+ type: integer
+ description: |
+ Indicates whether the event handler is enabled or not
+
+ * `0` - STATUS_DISABLED
+ * `1` - STATUS_ENABLED
+ * `2` - STATUS_DEFAULT (inheritance of its parent's value. If there is no parent, the values used will be that of Centreon Engine)
+ example: 2
+ event_handler_command_id:
+ type: integer
+ description: "Event handler command ID."
+ minimum: 1
+ nullable: true
+ example: 1
+ event_handler_command_args:
+ type: array
+ items:
+ type: string
+ description: "Command arguments of the event handler."
+ example: [ "80", "90" ]
+ graph_template_id:
+ type: integer
+ description: "ID of the default graph template that will be used for this service."
+ minimum: 1
+ nullable: true
+ example: null
+ note:
+ type: string
+ description: "Define an optional note."
+ nullable: true
+ maxLength: 65535
+ note_url:
+ type: string
+ description: "Define an optional URL that can be used to provide more information about the service."
+ maxLength: 65535
+ nullable: true
+ action_url:
+ type: string
+ description: "Define an optional URL that can be used to specify actions to be performed on the service."
+ nullable: true
+ maxLength: 65535
+ icon_id:
+ type: integer
+ description: "Define the image ID that should be associated with this service."
+ minimum: 1
+ nullable: true
+ example: null
+ icon_alternative:
+ type: string
+ description: "Define an optional string that is used as an alternative description for the icon."
+ nullable: true
+ maxLength: 200
+ severity_id:
+ type: integer
+ description: "Severity ID."
+ minimum: 1
+ nullable: true
+ is_activated:
+ type: boolean
+ description: "Indicates whether the service is activated or not"
+ example: true
diff --git a/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/AddOneAndFindTimePeriods.yaml b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/AddOneAndFindTimePeriods.yaml
new file mode 100644
index 0000000000..0242bc7cc1
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/AddOneAndFindTimePeriods.yaml
@@ -0,0 +1,56 @@
+get:
+ tags:
+ - Time period
+ summary: "Get all time periods"
+ description: |
+ Get list of all time periods
+
+ The available parameters to **search** / **sort_by** are:
+
+ * id
+ * name
+ * alias
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ result:
+ type: array
+ items:
+ $ref: 'Schema/FindTimePeriodResponse.yaml'
+ meta:
+ $ref: '../../Common/Schema/Meta.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
+post:
+ tags:
+ - Time period
+ summary: "Create a new time period"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/AddTimePeriodRequest.yaml'
+ responses:
+ '201':
+ description: "Time period created"
+ content:
+ application/json:
+ schema:
+ type: object
+ $ref: 'Schema/FindTimePeriodResponse.yaml'
+ '422':
+ $ref: '../../Common/Response/UnprocessableContent.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '409':
+ $ref: '../../Common/Response/Conflict.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/AddTimePeriodRequest.yaml b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/AddTimePeriodRequest.yaml
new file mode 100644
index 0000000000..87aa8809f7
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/AddTimePeriodRequest.yaml
@@ -0,0 +1,24 @@
+type: object
+properties:
+ name:
+ type: string
+ description: "Time period name."
+ example: "24x7"
+ alias:
+ type: string
+ description: "Time period alias."
+ example: "Always"
+ days:
+ type: array
+ items:
+ $ref: "Day.yaml"
+ templates:
+ type: array
+ items:
+ type: integer
+ description: "Template ID."
+ example: 1
+ exceptions:
+ type: array
+ items:
+ $ref: "ExtraTimePeriod.yaml"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/Day.yaml b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/Day.yaml
new file mode 100644
index 0000000000..155879628b
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/Day.yaml
@@ -0,0 +1,12 @@
+type: object
+properties:
+ day:
+ type: integer
+ description: Number of the day (1=monday)
+ example: 1
+ minimum: 1
+ maximum: 7
+ time_range:
+ type: string
+ description: "Time range for the day"
+ example: "00:00-06:00,07:00-08:00"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/ExtraTimePeriod.yaml b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/ExtraTimePeriod.yaml
new file mode 100644
index 0000000000..0ac9bda638
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/ExtraTimePeriod.yaml
@@ -0,0 +1,18 @@
+type: object
+properties:
+ day_range:
+ type: string
+ description: |
+ Directives, including weekdays, days of the month, and calendar dates
+
+ * Calendar date (2008-01-01)
+ * Specific month date (January 1st)
+ * Generic month date (Day 15)
+ * Offset weekday of specific month (2nd Tuesday in December)
+ * Offset weekday (3rd Monday)
+ * Normal weekday (Tuesday)
+ example: "monday 1"
+ time_range:
+ type: string
+ description: "Time range for the day"
+ example: "00:00-06:00,07:00-08:00"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/FindTimePeriodResponse.yaml b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/FindTimePeriodResponse.yaml
new file mode 100644
index 0000000000..7094f7e061
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Configuration/TimePeriod/Schema/FindTimePeriodResponse.yaml
@@ -0,0 +1,44 @@
+type: object
+properties:
+ id:
+ type: integer
+ description: "Time period ID"
+ example: 1
+ name:
+ type: string
+ description: "Name of the time period"
+ example: 24x7
+ alias:
+ type: string
+ description: "Alias of the time period"
+ example: Always
+ days:
+ type: array
+ items:
+ $ref: "Day.yaml"
+ templates:
+ type: array
+ description: "IDs of the time periods used as a template"
+ items:
+ type: object
+ properties:
+ id:
+ type: integer
+ description: "ID of the time periods used as a template"
+ example: 1
+ alias:
+ type: string
+ description: "Alias of the time period"
+ example: "Always"
+ exceptions:
+ type: array
+ description: "List of exceptions to the standard schedule"
+ items:
+ allOf:
+ - type: object
+ properties:
+ id:
+ type: integer
+ description: "ID of the extra period."
+ example: 1
+ - $ref: "ExtraTimePeriod.yaml"
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Users/Schema/CurrentParameters.Get.yaml b/centreon/doc/API/latest/onPremise/Configuration/Users/Schema/CurrentParameters.Get.yaml
index f566a589a1..d6250385e6 100644
--- a/centreon/doc/API/latest/onPremise/Configuration/Users/Schema/CurrentParameters.Get.yaml
+++ b/centreon/doc/API/latest/onPremise/Configuration/Users/Schema/CurrentParameters.Get.yaml
@@ -36,6 +36,11 @@ properties:
description: If the current user is an administrator
example: true
+ can_manage_api_tokens:
+ type: boolean
+ description: If the current user has ACL action "Manage API Tokens"
+ example: true
+
use_deprecated_pages:
type: boolean
description: Indicates if user wants to use deprecated monitoring pages
diff --git a/centreon/doc/API/latest/onPremise/Configuration/Users/Users.yaml b/centreon/doc/API/latest/onPremise/Configuration/Users/Users.yaml
index f1fbb64c48..8a2c69c2f6 100644
--- a/centreon/doc/API/latest/onPremise/Configuration/Users/Users.yaml
+++ b/centreon/doc/API/latest/onPremise/Configuration/Users/Users.yaml
@@ -11,6 +11,7 @@ get:
* alias
* name
* email
+ * is_admin
responses:
'200':
description: OK
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Hosts/FindHostsStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Hosts/FindHostsStatus.yaml
new file mode 100644
index 0000000000..a3ef2c95af
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Realtime/Hosts/FindHostsStatus.yaml
@@ -0,0 +1,32 @@
+get:
+ tags:
+ - Host
+ summary: "Count hosts by status"
+ description: |
+ Count hosts by their status (UP/DOWN/UNREACHABLE/PENDING)
+
+ The available parameters to **search** / **sort_by** are:
+
+ * name
+ * status
+ * service.name
+ * service.id
+ * host_category.name
+ * host_category.id
+ * host_group.name
+ * host_group.id
+ * service_group.name
+ * service_group.id
+ * service_category.name
+ * service_category.id
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/HostsStatus.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Hosts/Schema/HostsStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Hosts/Schema/HostsStatus.yaml
new file mode 100644
index 0000000000..2baf0754ad
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Realtime/Hosts/Schema/HostsStatus.yaml
@@ -0,0 +1,24 @@
+type: object
+properties:
+ up:
+ type: object
+ properties:
+ total:
+ type: integer
+ down:
+ type: object
+ properties:
+ total:
+ type: integer
+ unreachable:
+ type: object
+ properties:
+ total:
+ type: integer
+ pending:
+ type: object
+ properties:
+ total:
+ type: integer
+ total:
+ type: integer
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Resources/FindHostsStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Resources/FindHostsStatus.yaml
deleted file mode 100644
index ca53ef0543..0000000000
--- a/centreon/doc/API/latest/onPremise/Realtime/Resources/FindHostsStatus.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-get:
- tags:
- - Resource
- summary: "Count hosts by status"
- description: |
- Count hosts by their status (UP/DOWN/UNREACHABLE/PENDING)
-
- The available parameters to **search** / **sort_by** are:
-
- * name
-
- parameters:
- - $ref: 'QueryParameter/FilterHostgroupName.yaml'
- - $ref: 'QueryParameter/FilterHostCategoryName.yaml'
- responses:
- '200':
- description: "OK"
- content:
- application/json:
- schema:
- $ref: 'Schema/HostsStatus.yaml'
- '403':
- $ref: '../../Common/Response/Forbidden.yaml'
- '500':
- $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Resources/FindServicesStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Resources/FindServicesStatus.yaml
deleted file mode 100644
index c0237e781e..0000000000
--- a/centreon/doc/API/latest/onPremise/Realtime/Resources/FindServicesStatus.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-get:
- tags:
- - Resource
- summary: "Count hosts by status"
- description: |
- Count hosts by their status (UP/DOWN/UNREACHABLE/PENDING)
-
- The available parameters to **search** / **sort_by** are:
-
- * name
-
- parameters:
- - $ref: 'QueryParameter/FilterHostgroupName.yaml'
- - $ref: 'QueryParameter/FilterHostCategoryName.yaml'
- - $ref: 'QueryParameter/FilterServicegroupName.yaml'
- - $ref: 'QueryParameter/FilterServiceCategoryName.yaml'
- responses:
- '200':
- description: "OK"
- content:
- application/json:
- schema:
- $ref: 'Schema/ServicesStatus.yaml'
- '403':
- $ref: '../../Common/Response/Forbidden.yaml'
- '500':
- $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/HostsStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/HostsStatus.yaml
deleted file mode 100644
index b13e6be701..0000000000
--- a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/HostsStatus.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-type: object
-properties:
- up:
- type: object
- properties:
- total:
- type: int
- down:
- type: object
- properties:
- total:
- type: int
- unreachable:
- type: object
- properties:
- total:
- type: int
- pending:
- type: object
- properties:
- total:
- type: int
- total:
- type: int
\ No newline at end of file
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ResourcesByParent.yaml b/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ResourcesByParent.yaml
index 15c8250eb7..1c720cce8d 100644
--- a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ResourcesByParent.yaml
+++ b/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ResourcesByParent.yaml
@@ -5,6 +5,10 @@ allOf:
type: string
description: "Parent Resource name"
example: "Central"
+ extra:
+ type: array
+ items:
+ type: object
children:
type: object
properties:
@@ -51,6 +55,10 @@ allOf:
format: int32
description: "ID of the service behind the resource"
example: 12
+ extra:
+ type: array
+ items:
+ type: object
parent:
type: object
properties:
@@ -59,4 +67,8 @@ allOf:
format: int32
description: "ID of the parent"
example: 12
+ extra:
+ type: array
+ items:
+ type: object
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ServicesStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ServicesStatus.yaml
deleted file mode 100644
index 0797e1a8df..0000000000
--- a/centreon/doc/API/latest/onPremise/Realtime/Resources/Schema/ServicesStatus.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-type: object
-properties:
- critical:
- type: object
- properties:
- total:
- type: int
- unknown:
- type: object
- properties:
- total:
- type: int
- ok:
- type: object
- properties:
- total:
- type: int
- down:
- type: object
- properties:
- total:
- type: int
- pending:
- type: object
- properties:
- total:
- type: int
- total:
- type: int
\ No newline at end of file
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Services/FindServicesStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Services/FindServicesStatus.yaml
new file mode 100644
index 0000000000..378af684a7
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Realtime/Services/FindServicesStatus.yaml
@@ -0,0 +1,32 @@
+get:
+ tags:
+ - Service
+ summary: "Count services by status"
+ description: |
+ Count services by their status (OK/WARNING/CRITICAL/UNKNOWN/PENDING)
+
+ The available parameters to **search** / **sort_by** are:
+
+ * name
+ * status
+ * host.name
+ * host.id
+ * host_category.name
+ * host_category.id
+ * host_group.name
+ * host_group.id
+ * service_group.name
+ * service_group.id
+ * service_category.name
+ * service_category.id
+ responses:
+ '200':
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: 'Schema/ServicesStatus.yaml'
+ '403':
+ $ref: '../../Common/Response/Forbidden.yaml'
+ '500':
+ $ref: '../../Common/Response/InternalServerError.yaml'
diff --git a/centreon/doc/API/latest/onPremise/Realtime/Services/Schema/ServicesStatus.yaml b/centreon/doc/API/latest/onPremise/Realtime/Services/Schema/ServicesStatus.yaml
new file mode 100644
index 0000000000..194ff62199
--- /dev/null
+++ b/centreon/doc/API/latest/onPremise/Realtime/Services/Schema/ServicesStatus.yaml
@@ -0,0 +1,29 @@
+type: object
+properties:
+ critical:
+ type: object
+ properties:
+ total:
+ type: integer
+ unknown:
+ type: object
+ properties:
+ total:
+ type: integer
+ ok:
+ type: object
+ properties:
+ total:
+ type: integer
+ down:
+ type: object
+ properties:
+ total:
+ type: integer
+ pending:
+ type: object
+ properties:
+ total:
+ type: integer
+ total:
+ type: integer
diff --git a/centreon/features/KnowledgeBase.feature b/centreon/features/KnowledgeBase.feature
index 39c1564897..182c314036 100644
--- a/centreon/features/KnowledgeBase.feature
+++ b/centreon/features/KnowledgeBase.feature
@@ -1,3 +1,4 @@
+@system
Feature: Knowledge Base
As a Centreon user
I want to link my hosts and services supervised to wiki s procedures
diff --git a/centreon/features/Ldap.feature b/centreon/features/Ldap.feature
index 523d050a20..0b880d26cb 100644
--- a/centreon/features/Ldap.feature
+++ b/centreon/features/Ldap.feature
@@ -1,5 +1,4 @@
-#features/Ldap.feature
-
+@system
Feature: LDAP
As a company administrator
I want my users to access Centreon using LDAP credentials
diff --git a/centreon/features/LdapManualImport.feature b/centreon/features/LdapManualImport.feature
index 5db661ca4d..b5c8d56821 100644
--- a/centreon/features/LdapManualImport.feature
+++ b/centreon/features/LdapManualImport.feature
@@ -1,3 +1,4 @@
+@system
Feature: LDAPManualImport
As a company administrator
I want to import manually users
diff --git a/centreon/features/Partitioning.feature b/centreon/features/Partitioning.feature
index 658f3d07bb..65c8e36270 100644
--- a/centreon/features/Partitioning.feature
+++ b/centreon/features/Partitioning.feature
@@ -1,3 +1,4 @@
+@system
Feature: Database partitioning
As a Centreon user
I want to clean database tables quickly
diff --git a/centreon/features/bootstrap/DowntimeRecurrentContext.php b/centreon/features/bootstrap/DowntimeRecurrentContext.php
index 950987b5f9..a37eb3e111 100644
--- a/centreon/features/bootstrap/DowntimeRecurrentContext.php
+++ b/centreon/features/bootstrap/DowntimeRecurrentContext.php
@@ -1,11 +1,11 @@
'host',
'alias' => 'host',
- 'address' => 'host2@localhost',
+ 'address' => '1.2.3.4',
'check_command' => 'check_centreon_dummy',
'location' => 'Europe/Paris'
);
diff --git a/centreon/features/bootstrap/EscalationConfigurationContext.php b/centreon/features/bootstrap/EscalationConfigurationContext.php
index e98433959b..342dcdf68a 100644
--- a/centreon/features/bootstrap/EscalationConfigurationContext.php
+++ b/centreon/features/bootstrap/EscalationConfigurationContext.php
@@ -1,11 +1,11 @@
'hostName',
'alias' => 'hostAlias',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
);
protected $metaService1 = array(
diff --git a/centreon/features/bootstrap/HostCategoryConfigurationContext.php b/centreon/features/bootstrap/HostCategoryConfigurationContext.php
index c25e31e814..475f38b381 100644
--- a/centreon/features/bootstrap/HostCategoryConfigurationContext.php
+++ b/centreon/features/bootstrap/HostCategoryConfigurationContext.php
@@ -1,8 +1,8 @@
'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost'
+ 'address' => '1.2.3.4'
);
protected $host2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $hostTemplate1 = array(
diff --git a/centreon/features/bootstrap/HostConfigurationContext.php b/centreon/features/bootstrap/HostConfigurationContext.php
index 7f70ebbf67..d2e5121437 100644
--- a/centreon/features/bootstrap/HostConfigurationContext.php
+++ b/centreon/features/bootstrap/HostConfigurationContext.php
@@ -15,13 +15,13 @@ class HostConfigurationContext extends CentreonContext
protected $host2 = array(
'name' => 'hostName2',
'alias' => 'hostAlias2',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $host3 = array(
'name' => 'hostName3',
'alias' => 'hostAlias3',
- 'address' => 'host3@localhost'
+ 'address' => '3.4.5.6'
);
protected $hostGroup1 = array(
@@ -60,7 +60,7 @@ class HostConfigurationContext extends CentreonContext
protected $initialProperties = array(
'name' => 'hostName',
'alias' => 'hostAlias',
- 'address' => 'host@localhost',
+ 'address' => '1.2.3.4',
'snmp_community' => 'hostSnmpCommunity',
'snmp_version' => '1',
'location' => 'America/Caracas',
@@ -68,7 +68,7 @@ class HostConfigurationContext extends CentreonContext
'generic-host'
),
'check_command' => 'check_http',
- 'command_arguments' => 'hostCommandArgument',
+ 'command_arguments' => '!hostCommandArgument',
'check_period' => 'workhours',
'max_check_attempts' => 34,
'normal_check_interval' => 5,
@@ -100,7 +100,7 @@ class HostConfigurationContext extends CentreonContext
'high_flap_threshold' => 85,
'event_handler_enabled' => 2,
'event_handler' => 'check_https',
- 'event_handler_arguments' => 'event_handler_arguments',
+ 'event_handler_arguments' => '!event_handler_arguments',
'url' => 'hostMassiveChangeUrl',
'notes' => 'hostMassiveChangeNotes',
'action_url' => 'hostMassiveChangeActionUrl',
@@ -114,7 +114,7 @@ class HostConfigurationContext extends CentreonContext
protected $duplicatedProperties = array(
'name' => 'hostName_1',
'alias' => 'hostAlias',
- 'address' => 'host@localhost',
+ 'address' => '1.2.3.4',
'snmp_community' => self::PASSWORD_REPLACEMENT_VALUE,
'snmp_version' => '1',
'location' => 'America/Caracas',
@@ -122,7 +122,7 @@ class HostConfigurationContext extends CentreonContext
'generic-host'
),
'check_command' => 'check_http',
- 'command_arguments' => 'hostCommandArgument',
+ 'command_arguments' => '!hostCommandArgument',
'check_period' => 'workhours',
'max_check_attempts' => 34,
'normal_check_interval' => 5,
@@ -154,7 +154,7 @@ class HostConfigurationContext extends CentreonContext
'high_flap_threshold' => 85,
'event_handler_enabled' => 2,
'event_handler' => 'check_https',
- 'event_handler_arguments' => 'event_handler_arguments',
+ 'event_handler_arguments' => '!event_handler_arguments',
'url' => 'hostMassiveChangeUrl',
'notes' => 'hostMassiveChangeNotes',
'action_url' => 'hostMassiveChangeActionUrl',
@@ -168,7 +168,7 @@ class HostConfigurationContext extends CentreonContext
protected $updatedProperties = array(
'name' => 'hostNameChanged',
'alias' => 'hostAliasChanged',
- 'address' => 'hostChanged@localhost',
+ 'address' => '4.3.2.1',
'snmp_community' => self::PASSWORD_REPLACEMENT_VALUE,
'snmp_version' => '3',
'macros' => array(
@@ -179,7 +179,7 @@ class HostConfigurationContext extends CentreonContext
'hostTemplateName'
),
'check_command' => 'check_https',
- 'command_arguments' => 'hostCommandArgumentChanged',
+ 'command_arguments' => '!hostCommandArgumentChanged',
'check_period' => 'none',
'max_check_attempts' => 43,
'normal_check_interval' => 4,
@@ -211,7 +211,7 @@ class HostConfigurationContext extends CentreonContext
'high_flap_threshold' => 51,
'event_handler_enabled' => 1,
'event_handler' => 'check_http',
- 'event_handler_arguments' => 'eventHandlerArgumentsChanged',
+ 'event_handler_arguments' => '!eventHandlerArgumentsChanged',
'url' => 'hostMassiveChangeUrlChanged',
'notes' => 'hostMassiveChangeNotesChanged',
'action_url' => 'hostMassiveChangeActionUrlChanged',
diff --git a/centreon/features/bootstrap/HostDependencyConfigurationContext.php b/centreon/features/bootstrap/HostDependencyConfigurationContext.php
index 6119f7b5f2..8079894e0b 100644
--- a/centreon/features/bootstrap/HostDependencyConfigurationContext.php
+++ b/centreon/features/bootstrap/HostDependencyConfigurationContext.php
@@ -1,9 +1,9 @@
'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost'
+ 'address' => '1.2.3.4'
);
protected $host2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $host3 = array(
'name' => 'host3Name',
'alias' => 'host3Alias',
- 'address' => 'host3@localhost'
+ 'address' => '3.4.5.6'
);
protected $initialProperties = array(
diff --git a/centreon/features/bootstrap/HostGroupConfigurationContext.php b/centreon/features/bootstrap/HostGroupConfigurationContext.php
index 104e000b84..0a57c5e9ba 100644
--- a/centreon/features/bootstrap/HostGroupConfigurationContext.php
+++ b/centreon/features/bootstrap/HostGroupConfigurationContext.php
@@ -1,9 +1,9 @@
'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost'
+ 'address' => '1.2.3.4'
);
protected $host2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $initialProperties = array(
diff --git a/centreon/features/bootstrap/MassiveChangeHostsContext.php b/centreon/features/bootstrap/MassiveChangeHostsContext.php
index 553b56e884..feecfed3a9 100644
--- a/centreon/features/bootstrap/MassiveChangeHostsContext.php
+++ b/centreon/features/bootstrap/MassiveChangeHostsContext.php
@@ -15,19 +15,19 @@ class MassiveChangeHostsContext extends CentreonContext
protected $host1 = array(
'name' => 'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost'
+ 'address' => '1.2.3.4'
);
protected $host2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $host3 = array(
'name' => 'host3Name',
'alias' => 'host3Alias',
- 'address' => 'host3@localhost'
+ 'address' => '3.4.5.6'
);
protected $hostGroup = array(
@@ -59,7 +59,7 @@ class MassiveChangeHostsContext extends CentreonContext
'generic-host'
),
'service_linked_to_template' => 0,
- 'command_arguments' => 'hostCommandArgument',
+ 'command_arguments' => '!hostCommandArgument',
'macros' => array(
'HOSTMACRONAME' => '22'
),
@@ -103,7 +103,7 @@ class MassiveChangeHostsContext extends CentreonContext
'high_flap_threshold' => 85,
'event_handler_enabled' => 2,
'event_handler' => 'check_https',
- 'event_handler_arguments' => 'event_handler_arguments',
+ 'event_handler_arguments' => '!event_handler_arguments',
'url' => 'hostMassiveChangeUrl',
'notes' => 'hostMassiveChangeNotes',
'action_url' => 'hostMassiveChangeActionUrl',
@@ -117,7 +117,7 @@ class MassiveChangeHostsContext extends CentreonContext
protected $updatedHost1 = array(
'name' => 'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost',
+ 'address' => '1.2.3.4',
'snmp_community' => 'snmp',
'snmp_version' => '2c',
'monitored_from' => 'Central',
@@ -127,7 +127,7 @@ class MassiveChangeHostsContext extends CentreonContext
),
'service_linked_to_template' => 0,
'check_command' => 'check_http',
- 'command_arguments' => 'hostCommandArgument',
+ 'command_arguments' => '!hostCommandArgument',
'macros' => array(
'HOSTMACRONAME' => '22'
),
@@ -162,7 +162,7 @@ class MassiveChangeHostsContext extends CentreonContext
'high_flap_threshold' => 85,
'event_handler_enabled' => 2,
'event_handler' => 'check_https',
- 'event_handler_arguments' => 'event_handler_arguments',
+ 'event_handler_arguments' => '!event_handler_arguments',
'url' => 'hostMassiveChangeUrl',
'notes' => 'hostMassiveChangeNotes',
'action_url' => 'hostMassiveChangeActionUrl',
@@ -176,7 +176,7 @@ class MassiveChangeHostsContext extends CentreonContext
protected $updatedHost2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost',
+ 'address' => '2.3.4.5',
'snmp_community' => 'snmp',
'snmp_version' => '2c',
'monitored_from' => 'Central',
@@ -186,7 +186,7 @@ class MassiveChangeHostsContext extends CentreonContext
),
'service_linked_to_template' => 0,
'check_command' => 'check_http',
- 'command_arguments' => 'hostCommandArgument',
+ 'command_arguments' => '!hostCommandArgument',
'macros' => array(
'HOSTMACRONAME' => '22'
),
@@ -221,7 +221,7 @@ class MassiveChangeHostsContext extends CentreonContext
'high_flap_threshold' => 85,
'event_handler_enabled' => 2,
'event_handler' => 'check_https',
- 'event_handler_arguments' => 'event_handler_arguments',
+ 'event_handler_arguments' => '!event_handler_arguments',
'url' => 'hostMassiveChangeUrl',
'notes' => 'hostMassiveChangeNotes',
'action_url' => 'hostMassiveChangeActionUrl',
diff --git a/centreon/features/bootstrap/MassiveChangeServicesContext.php b/centreon/features/bootstrap/MassiveChangeServicesContext.php
index 7a16400ff4..b6e8fb6da1 100644
--- a/centreon/features/bootstrap/MassiveChangeServicesContext.php
+++ b/centreon/features/bootstrap/MassiveChangeServicesContext.php
@@ -1,14 +1,14 @@
'host1Name',
'alias' => 'host1Alias',
- 'address' => 'host1@localhost'
+ 'address' => '1.2.3.4'
);
protected $host2 = array(
'name' => 'host2Name',
'alias' => 'host2Alias',
- 'address' => 'host2@localhost'
+ 'address' => '2.3.4.5'
);
protected $host3 = array(
'name' => 'host3Name',
'alias' => 'host3Alias',
- 'address' => 'host3@localhost'
+ 'address' => '3.4.5.6'
);
protected $service1 = array(
diff --git a/centreon/features/bootstrap/ServiceConfigurationContext.php b/centreon/features/bootstrap/ServiceConfigurationContext.php
index be61f6a181..aff926c57c 100644
--- a/centreon/features/bootstrap/ServiceConfigurationContext.php
+++ b/centreon/features/bootstrap/ServiceConfigurationContext.php
@@ -1,10 +1,10 @@
'hostName',
'alias' => 'hostAlias',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
);
protected $serviceCategory1 = array(
diff --git a/centreon/features/bootstrap/ServiceDependencyConfigurationContext.php b/centreon/features/bootstrap/ServiceDependencyConfigurationContext.php
index b784b08f49..6525d550b9 100644
--- a/centreon/features/bootstrap/ServiceDependencyConfigurationContext.php
+++ b/centreon/features/bootstrap/ServiceDependencyConfigurationContext.php
@@ -1,9 +1,9 @@
'hostName',
'alias' => 'hostAlias',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
);
protected $initialProperties = array(
diff --git a/centreon/features/bootstrap/ServiceTemplateConfigurationContext.php b/centreon/features/bootstrap/ServiceTemplateConfigurationContext.php
index 0d0a962518..ee41cc8481 100644
--- a/centreon/features/bootstrap/ServiceTemplateConfigurationContext.php
+++ b/centreon/features/bootstrap/ServiceTemplateConfigurationContext.php
@@ -1,10 +1,10 @@
'hostName',
'alias' => 'hostAlias',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
);
protected $serviceCategory1 = array(
diff --git a/centreon/features/bootstrap/TrapsSNMPConfigurationContext.php b/centreon/features/bootstrap/TrapsSNMPConfigurationContext.php
index 083792e95c..051f481340 100644
--- a/centreon/features/bootstrap/TrapsSNMPConfigurationContext.php
+++ b/centreon/features/bootstrap/TrapsSNMPConfigurationContext.php
@@ -1,14 +1,14 @@
currentPage->setProperties(array(
'name' => 'hostName',
'alias' => 'hostName',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
));
$this->currentPage->save();
$this->currentPage = new CommandConfigurationPage($this);
@@ -200,7 +200,7 @@ public function iModifySomePropertiesOfAnExistingSNMPTrapDefinition()
$this->currentPage->setProperties(array(
'name' => 'hostName',
'alias' => 'hostName',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
));
$this->currentPage->save();
$this->currentPage = new CommandConfigurationPage($this);
@@ -291,7 +291,7 @@ public function iHaveDuplicatedOneExistingSNMPTrapDefinition()
$this->currentPage->setProperties(array(
'name' => 'hostName',
'alias' => 'hostName',
- 'address' => 'host@localhost'
+ 'address' => '1.2.3.4'
));
$this->currentPage->save();
$this->currentPage = new CommandConfigurationPage($this);
diff --git a/centreon/lang/de_DE.UTF-8/LC_MESSAGES/messages.po b/centreon/lang/de_DE.UTF-8/LC_MESSAGES/messages.po
index 6624019985..6dd99e9a74 100644
--- a/centreon/lang/de_DE.UTF-8/LC_MESSAGES/messages.po
+++ b/centreon/lang/de_DE.UTF-8/LC_MESSAGES/messages.po
@@ -16596,7 +16596,7 @@ msgstr "Erweiterter Modus"
# msgid "The resource access rule was successfully deleted"
# msgstr ""
-# msgid "Error while adding a broker output"
+# msgid "Error while adding a Broker input/output"
# msgstr ""
# msgid "You are not allowed to edit a broker configuration"
@@ -16605,7 +16605,7 @@ msgstr "Erweiterter Modus"
# msgid "Broker configuration #%d not found"
# msgstr ""
-# msgid "Missing output parameter: %s"
+# msgid "Missing input/output parameter: %s"
# msgstr ""
# msgid "Parameter '%s' (%s) is invalid"
@@ -16614,7 +16614,7 @@ msgstr "Erweiterter Modus"
# msgid "Parameter '%s' of type %s is invalid"
# msgstr ""
-# msgid "Output #%d not found for broker configuration #%d"
+# msgid "Input/Output #%d not found for Broker configuration #%d"
# msgstr ""
# msgid "Displays a detailed view of the current status for selected resources as a chart."
@@ -16745,7 +16745,7 @@ msgstr "Erweiterter Modus"
# msgid "All resources selected"
# msgstr ""
-# msgid "Error while updating a broker output"
+# msgid "Error while updating a Broker input/output"
# msgstr ""
# msgid "Action not permitted for output of type '%s'"
@@ -17007,3 +17007,326 @@ msgstr "Erweiterter Modus"
# msgid "Tooltip"
# msgstr ""
+
+# msgid "Add filter"
+# msgstr ""
+
+# msgid "Add resource dataset"
+# msgstr ""
+
+# msgid "Line"
+# msgstr ""
+
+# msgid "Bar"
+# msgstr ""
+
+# msgid "Stacked bar"
+# msgstr ""
+
+# msgid "Orientation"
+# msgstr ""
+
+# msgid "Bar radius"
+# msgstr ""
+
+# msgid "Bar background opacity"
+# msgstr ""
+
+# msgid "Check command sent!"
+# msgstr ""
+
+# msgid "Forced check command sent!"
+# msgstr ""
+
+# msgid "Open ticket"
+# msgstr "Ouvrir un ticket"
+
+# msgid "Open ticket for host"
+# msgstr ""
+
+# msgid "Open ticket for service"
+# msgstr ""
+
+# msgid "Host severities"
+# msgstr ""
+
+# msgid "Service severities"
+# msgstr ""
+
+# msgid "Select service severities"
+# msgstr ""
+
+# msgid "Select host severities"
+# msgstr ""
+
+# msgid "Enable Open Tickets"
+# msgstr ""
+
+# msgid "Ticket provider"
+# msgstr ""
+
+# msgid "Select a provider"
+# msgstr ""
+
+# msgid "Display resources"
+# msgstr ""
+
+# msgid "Resources linked to a ticket"
+# msgstr ""
+
+# msgid "Resources with no ticket"
+# msgstr ""
+
+# msgid "Hide services with Down host"
+# msgstr ""
+
+# msgstr "hide services with Unreachable host"
+# msgstr ""
+
+# msgstr "Ticket ID"
+# msgstr ""
+
+# msgstr "Ticket subject"
+# msgstr ""
+
+# msgstr "Opened on"
+# msgstr ""
+
+
+# msgid "Create a ticket"
+# msgstr ""
+
+# msgid "Rule (ticket provider)"
+# msgstr ""
+
+# msgid "Select rule (ticket provider)"
+# msgstr ""
+
+# msgid "Display resources with these status types"
+# msgstr ""
+
+# msgid "All KPIs on this Business Activity are working fine."
+# msgstr ""
+
+# msgid "are working fine."
+# msgstr ""
+
+# msgid "See more information in the geoview"
+# msgstr ""
+
+# msgid "Calculation method"
+# msgstr ""
+
+# msgid "State information"
+# msgstr ""
+
+# msgid "Warning threshold"
+# msgstr ""
+
+# msgid "Critical threshold"
+# msgstr ""
+
+# msgid "Click here for details"
+# msgstr ""
+
+# msgid "Expression in"
+# msgstr ""
+
+# msgid "Impact applied when:"
+# msgstr ""
+
+# msgid "true"
+# msgstr ""
+
+# msgid "false"
+# msgstr ""
+
+# msgid "No KPI found"
+# msgstr ""
+
+# msgid "No Business Activity found"
+# msgstr ""
+
+# msgid "business activity"
+# msgstr ""
+
+# msgid "Health"
+# msgstr ""
+
+# msgid "Critical KPIs"
+# msgstr ""
+
+# msgid "Additional connector configurations"
+# msgstr ""
+
+# msgid "Types"
+# msgstr ""
+
+# msgid "Updated by"
+# msgstr ""
+
+# msgid "Edit connector configuration"
+# msgstr ""
+
+# msgid "More filters"
+# msgstr ""
+
+# msgid "Pollers"
+# msgstr ""
+
+# msgid "Delete additional connector configuration"
+# msgstr ""
+
+# msgid "The {{name}} additional connector configuration will be permanently deleted."
+# msgstr ""
+
+# msgid "The corresponding connectors will not work anymore."
+# msgstr ""
+
+# msgid "Additional connector configuration deleted"
+# msgstr ""
+
+# msgid "Additional connector configuration duplicated"
+# msgstr ""
+
+# msgid "Additional connector configuration created"
+# msgstr ""
+
+# msgid "Additional connector configuration updated"
+# msgstr ""
+
+# msgid "Duplicate connector configuration"
+# msgstr ""
+
+# msgid "The name can be at most 50 characters long"
+# msgstr ""
+
+# msgid "The name should be at least 3 characters long"
+# msgstr ""
+
+# msgid "Create additional connector configuration"
+# msgstr ""
+
+# msgid "Update additional connector configuration"
+# msgstr ""
+
+# msgid "Select poller(s)"
+# msgstr ""
+
+# msgid "Password"
+# msgstr ""
+
+# msgid "Add parameter"
+# msgstr ""
+
+# msgid "Url"
+# msgstr ""
+
+# msgid "Username"
+# msgstr ""
+
+# msgid "Add vCenter/ESX"
+# msgstr ""
+
+# msgid "Remove vCenter/ESX"
+# msgstr ""
+
+# msgid "At least one poller is required"
+# msgstr ""
+
+# msgid "At least one vCenter is required"
+# msgstr ""
+
+# msgid "Please enter a valid URL or IP address"
+# msgstr ""
+
+# msgid "Invalid port number"
+# msgstr ""
+
+# msgid "The name of the vCenter should be unique"
+# msgstr ""
+
+# msgid "vCenter name"
+# msgstr ""
+
+# msgid "Do you want to quit without saving the changes?"
+# msgstr ""
+
+# msgid "Your form has unsaved changes"
+# msgstr ""
+
+
+# msgid "Error while adding an additional connector configuration"
+# msgstr ""
+
+# msgid "You are not allowed to access additional connector configurations"
+# msgstr ""
+
+# msgid "An additional connector configuration configuration of type '%s' is already associated with poller ID(s) '%s'"
+# msgstr ""
+
+# msgid "Duplicates not allowed for property '%s'"
+# msgstr ""
+
+# msgid "'%s' must contain at least one element"
+# msgstr ""
+
+# msgid "Error while retrieving an additional connector configuration"
+# msgstr ""
+
+# msgid "The additional connector configuration name '%s' already exists"
+# msgstr ""
+
+# msgid "Error while deleting an additional connector configuration"
+# msgstr ""
+
+# msgid "You don't have sufficient permissions for this action"
+# msgstr ""
+
+# msgid "Error while searching for additional connector configurations"
+# msgstr ""
+
+# msgid "Error while searching for available pollers for type '%s'"
+# msgstr ""
+
+# msgid "Select time zone"
+# msgstr ""
+
+# msgid "Select time format"
+# msgstr ""
+
+# msgid "12 hours"
+# msgstr ""
+
+# msgid "24 hours"
+# msgstr ""
+
+# msgid "Ends at"
+# msgstr ""
+
+# msgid "Time zone"
+# msgstr ""
+
+# msgid "Date format"
+# msgstr ""
+
+# msgid "Time format"
+# msgstr ""
+
+# msgid "Countdown"
+# msgstr ""
+
+# msgid "Timer"
+# msgstr ""
+
+# msgid "Show time zone"
+# msgstr ""
+
+# msgid "Show date"
+# msgstr ""
+
+# msgid "Error while updating an additional connector configuration"
+# msgstr ""
+
+# msgid "Changing type of an existing additional connector configuration is not allowed"
+# msgstr ""
diff --git a/centreon/lang/es_ES.UTF-8/LC_MESSAGES/messages.po b/centreon/lang/es_ES.UTF-8/LC_MESSAGES/messages.po
index 90d73af2a1..f0ec63746e 100644
--- a/centreon/lang/es_ES.UTF-8/LC_MESSAGES/messages.po
+++ b/centreon/lang/es_ES.UTF-8/LC_MESSAGES/messages.po
@@ -16933,7 +16933,7 @@ msgstr "Modo avanzado"
# msgid "The resource access rule was successfully deleted"
# msgstr ""
-# msgid "Error while adding a broker output"
+# msgid "Error while adding a Broker input/output"
# msgstr ""
# msgid "You are not allowed to edit a broker configuration"
@@ -16942,7 +16942,7 @@ msgstr "Modo avanzado"
# msgid "Broker configuration #%d not found"
# msgstr ""
-# msgid "Missing output parameter: %s"
+# msgid "Missing input/output parameter: %s"
# msgstr ""
# msgid "Parameter '%s' (%s) is invalid"
@@ -16951,7 +16951,7 @@ msgstr "Modo avanzado"
# msgid "Parameter '%s' of type %s is invalid"
# msgstr ""
-# msgid "Output #%d not found for broker configuration #%d"
+# msgid "Input/Output #%d not found for Broker configuration #%d"
# msgstr ""
# msgid "Displays a detailed view of the current status for selected resources as a chart."
@@ -17079,7 +17079,7 @@ msgstr "Modo avanzado"
# msgid "All resources selected"
# msgstr ""
-# msgid "Error while updating a broker output"
+# msgid "Error while updating a Broker input/output"
# msgstr ""
# msgid "Action not permitted for output of type '%s'"
@@ -17341,3 +17341,325 @@ msgstr "Modo avanzado"
# msgid "Tooltip"
# msgstr ""
+
+# msgid "Add filter"
+# msgstr ""
+
+# msgid "Add resource dataset"
+# msgstr ""
+
+# msgid "Line"
+# msgstr ""
+
+# msgid "Bar"
+# msgstr ""
+
+# msgid "Stacked bar"
+# msgstr ""
+
+# msgid "Orientation"
+# msgstr ""
+
+# msgid "Bar radius"
+# msgstr ""
+
+# msgid "Bar background opacity"
+# msgstr ""
+
+# msgid "Check command sent!"
+# msgstr ""
+
+# msgid "Forced check command sent!"
+# msgstr ""
+
+# msgid "Open ticket"
+# msgstr ""
+
+# msgid "Open ticket for host"
+# msgstr ""
+
+# msgid "Open ticket for service"
+# msgstr ""
+
+# msgid "Host severities"
+# msgstr ""
+
+# msgid "Service severities"
+# msgstr ""
+
+# msgid "Select service severities"
+# msgstr ""
+
+# msgid "Select host severities"
+# msgstr ""
+
+# msgid "Enable Open Tickets"
+# msgstr ""
+
+# msgid "Ticket provider"
+# msgstr ""
+
+# msgid "Select a provider"
+# msgstr ""
+
+# msgid "Display resources"
+# msgstr ""
+
+# msgid "Resources linked to a ticket"
+# msgstr ""
+
+# msgid "Resources with no ticket"
+# msgstr ""
+
+# msgid "Hide services with Down host"
+# msgstr ""
+
+# msgstr "hide services with Unreachable host"
+# msgstr ""
+
+# msgstr "Ticket ID"
+# msgstr ""
+
+# msgstr "Ticket subject"
+# msgstr ""
+
+# msgstr "Opened on"
+# msgstr ""
+
+# msgid "Create a ticket"
+# msgstr ""
+
+# msgid "Rule (ticket provider)"
+# msgstr ""
+
+# msgid "Select rule (ticket provider)"
+# msgstr ""
+
+# msgid "Display resources with these status types"
+# msgstr ""
+
+# msgid "All KPIs on this Business Activity are working fine."
+# msgstr ""
+
+# msgid "are working fine."
+# msgstr ""
+
+# msgid "See more information in the geoview"
+# msgstr ""
+
+# msgid "Calculation method"
+# msgstr ""
+
+# msgid "State information"
+# msgstr ""
+
+# msgid "Warning threshold"
+# msgstr ""
+
+# msgid "Critical threshold"
+# msgstr ""
+
+# msgid "Expression in"
+# msgstr ""
+
+# msgid "Impact applied when:"
+# msgstr ""
+
+# msgid "true"
+# msgstr ""
+
+# msgid "false"
+# msgstr ""
+
+# msgid "Click here for details"
+# msgstr ""
+
+# msgid "No KPI found"
+# msgstr ""
+
+# msgid "No Business Activity found"
+# msgstr ""
+
+# msgid "business activity"
+# msgstr ""
+
+# msgid "Health"
+# msgstr ""
+
+# msgid "Critical KPIs"
+# msgstr ""
+
+# msgid "Additional connector configurations"
+# msgstr ""
+
+# msgid "Types"
+# msgstr ""
+
+# msgid "Updated by"
+# msgstr ""
+
+# msgid "Edit connector configuration"
+# msgstr ""
+
+# msgid "More filters"
+# msgstr ""
+
+# msgid "Pollers"
+# msgstr ""
+
+# msgid "Delete additional connector configuration"
+# msgstr ""
+
+# msgid "The {{name}} additional connector configuration will be permanently deleted."
+# msgstr ""
+
+# msgid "The corresponding connectors will not work anymore."
+# msgstr ""
+
+# msgid "Additional connector configuration deleted"
+# msgstr ""
+
+# msgid "Additional connector configuration duplicated"
+# msgstr ""
+
+# msgid "Additional connector configuration created"
+# msgstr ""
+
+# msgid "Additional connector configuration updated"
+# msgstr ""
+
+# msgid "Duplicate connector configuration"
+# msgstr ""
+
+# msgid "The name can be at most 50 characters long"
+# msgstr ""
+
+# msgid "The name should be at least 3 characters long"
+# msgstr ""
+
+# msgid "Create additional connector configuration"
+# msgstr ""
+
+# msgid "Update additional connector configuration"
+# msgstr ""
+
+# msgid "Select poller(s)"
+# msgstr ""
+
+# msgid "Password"
+# msgstr ""
+
+# msgid "Add parameter"
+# msgstr ""
+
+# msgid "Url"
+# msgstr ""
+
+# msgid "Username"
+# msgstr ""
+
+# msgid "Add vCenter/ESX"
+# msgstr ""
+
+# msgid "Remove vCenter/ESX"
+# msgstr ""
+
+# msgid "At least one poller is required"
+# msgstr ""
+
+# msgid "At least one vCenter is required"
+# msgstr ""
+
+# msgid "Please enter a valid URL or IP address"
+# msgstr ""
+
+# msgid "Invalid port number"
+# msgstr ""
+
+# msgid "The name of the vCenter should be unique"
+# msgstr ""
+
+# msgid "vCenter name"
+# msgstr ""
+
+# msgid "Do you want to quit without saving the changes?"
+# msgstr ""
+
+# msgid "Your form has unsaved changes"
+# msgstr ""
+
+
+# msgid "Error while adding an additional connector configuration"
+# msgstr ""
+
+# msgid "You are not allowed to access additional connector configurations"
+# msgstr ""
+
+# msgid "An additional connector configuration configuration of type '%s' is already associated with poller ID(s) '%s'"
+# msgstr ""
+
+# msgid "Duplicates not allowed for property '%s'"
+# msgstr ""
+
+# msgid "'%s' must contain at least one element"
+# msgstr ""
+
+# msgid "Error while retrieving an additional connector configuration"
+# msgstr ""
+
+# msgid "The additional connector configuration name '%s' already exists"
+# msgstr ""
+
+# msgid "Error while deleting an additional connector configuration"
+# msgstr ""
+
+# msgid "You don't have sufficient permissions for this action"
+# msgstr ""
+
+# msgid "Error while searching for additional connector configurations"
+# msgstr ""
+
+# msgid "Error while searching for available pollers for type '%s'"
+# msgstr ""
+
+# msgid "Select time zone"
+# msgstr ""
+
+# msgid "Select time format"
+# msgstr ""
+
+# msgid "12 hours"
+# msgstr ""
+
+# msgid "24 hours"
+# msgstr ""
+
+# msgid "Ends at"
+# msgstr ""
+
+# msgid "Time zone"
+# msgstr ""
+
+# msgid "Date format"
+# msgstr ""
+
+# msgid "Time format"
+# msgstr ""
+
+# msgid "Countdown"
+# msgstr ""
+
+# msgid "Timer"
+# msgstr ""
+
+# msgid "Show time zone"
+# msgstr ""
+
+# msgid "Show date"
+# msgstr ""
+
+# msgid "Error while updating an additional connector configuration"
+# msgstr ""
+
+# msgid "Changing type of an existing additional connector configuration is not allowed"
+# msgstr ""
diff --git a/centreon/lang/fr_FR.UTF-8/LC_MESSAGES/messages.po b/centreon/lang/fr_FR.UTF-8/LC_MESSAGES/messages.po
index cfb847263d..7461b259c6 100644
--- a/centreon/lang/fr_FR.UTF-8/LC_MESSAGES/messages.po
+++ b/centreon/lang/fr_FR.UTF-8/LC_MESSAGES/messages.po
@@ -2684,6 +2684,9 @@ msgstr "Mot de passe de l'utilisateur de la base de données"
msgid "Confirm user password"
msgstr "Confirmer le mot de passe de l'utilisateur"
+msgid "Use a vault to store sensitive data"
+msgstr "Utiliser un coffre fort pour stocker les données sensibles"
+
#: centreon-web/www/install/steps/functions.php:140
msgid "File not found"
msgstr "Fichier non trouvé"
@@ -17921,10 +17924,10 @@ msgid "Show thresholds"
msgstr "Afficher les seuils"
msgid "Custom"
-msgstr "Personnalisé"
+msgstr "Personnalisée"
-msgid "Thresholds are automatically hidden as soon as you select 2 metric units."
-msgstr "Les seuils sont automatiquement masqués dès que vous sélectionnez 2 unités métriques."
+msgid "Thresholds are automatically hidden when you select several metrics with different units."
+msgstr "Les seuils sont automatiquement masqués lorsque vous sélectionnez des métriques aux unités différentes."
msgid "Show description"
msgstr "Afficher la description"
@@ -17957,7 +17960,7 @@ msgid "Your widget has been created successfully!"
msgstr "Votre widget a été créé avec succès !"
msgid "Value settings"
-msgstr "Paramètres de valeur"
+msgstr "Paramètres des valeurs"
msgid "By turning off this option, all the links included in the widget will be opened in the same tab."
msgstr "En désactivant cette option, tous les liens inclus dans le widget seront ouverts dans le même onglet."
@@ -18005,7 +18008,7 @@ msgid "Widget type"
msgstr "Type de widget"
msgid "Display as"
-msgstr "Afficher en tant que"
+msgstr "Afficher sous forme de"
msgid "Text"
msgstr "Texte"
@@ -18016,8 +18019,8 @@ msgstr "Jauge"
msgid "Bar chart"
msgstr "Diagramme à barres"
-msgid "The default value is the value defined for the first metric used."
-msgstr "La valeur par défaut est la valeur définie pour la première métrique utilisée."
+msgid "The default value is the value defined for the first selected metric."
+msgstr "La valeur par défaut est la valeur définie pour la première métrique sélectionnée."
msgid "Raw value"
msgstr "Valeur brute"
@@ -18170,8 +18173,8 @@ msgstr "Seuils"
msgid "Value format"
msgstr "Format de la valeur"
-msgid "Time period"
-msgstr "Période temporelle"
+msgid "Time range"
+msgstr "Plage temporelle"
msgid "Last hour"
msgstr "La dernière heure"
@@ -18771,8 +18774,8 @@ msgstr "La règle d'accès aux ressouces a été supprimée avec succès"
msgid "Error while retrieving the number of services by status"
msgstr "Erreur lors de la récupération du nombre de services par statut"
-msgid "Error while adding a broker output"
-msgstr "Erreur lors de l'ajout d'une sortie Centreon Broker"
+msgid "Error while adding a Broker input/output"
+msgstr "Erreur lors de l'ajout d'une entrée/sortie Centreon Broker"
msgid "You are not allowed to edit a broker configuration"
msgstr "Vous n'êtes pas autorisé à éditer une configuration Broker"
@@ -18780,8 +18783,8 @@ msgstr "Vous n'êtes pas autorisé à éditer une configuration Broker"
msgid "Broker configuration #%d not found"
msgstr "Configuration Broker #%d introuvable"
-msgid "Missing output parameter: %s"
-msgstr "Paramètre de sortie manquant: %s"
+msgid "Missing input/output parameter: %s"
+msgstr "Paramètre d'entrée/sortie manquant : %s"
msgid "Parameter '%s' (%s) is invalid"
msgstr "Le paramètre '%s' (%s) est invalide"
@@ -18789,8 +18792,8 @@ msgstr "Le paramètre '%s' (%s) est invalide"
msgid "Parameter '%s' of type %s is invalid"
msgstr "Le paramètre '%s' de type %s est invalide"
-msgid "Output #%d not found for broker configuration #%d"
-msgstr "Sortie #%d introuvable pour la configuration Broker #%d"
+msgid "Input/Output #%d not found for Broker configuration #%d"
+msgstr "Entrée/sortie #%d introuvable pour la configuration Broker #%d"
msgid "Display resources with this unit"
msgstr "Afficher les ressources avec cette unité"
@@ -18852,8 +18855,8 @@ msgstr "Toutes les ressources"
msgid "All resources selected"
msgstr "Toutes les ressources sont sélectionnées"
-msgid "Error while updating a broker output"
-msgstr "Erreur lors de la mise à jour d'une sortie Centreon Broker"
+msgid "Error while updating a Broker input/output"
+msgstr "Erreur lors de la mise à jour d'une entrée/sortie Centreon Broker"
msgid "Action not permitted for output of type '%s'"
msgstr "Action non autorisée pour une sortie de type '%s'"
@@ -18960,8 +18963,8 @@ msgstr "Type de courbe"
msgid "Linear"
msgstr "Linéaire"
-msgid "Natural"
-msgstr "Naturel"
+msgid "Smooth"
+msgstr "Arrondie"
msgid "Error while partially updating the token"
msgstr "Erreur lors de la mise à jour partielle du jeton"
@@ -18978,23 +18981,26 @@ msgstr "Impossible de migrer les mots de passe"
msgid "No vault configured"
msgstr "Aucun coffre configuré"
-msgid "Value sorting"
+msgid "You are not allowed to access hosts in the real time context"
+msgstr "Vous n'êtes pas autorisé à accéder aux hôtes dans le cadre du temps réel"
+
+msgid "You are not allowed to access services in the real time context"
+msgstr "Vous n'êtes pas autorisé à accéder aux services dans le cadre du temps réel"
+
+msgid "Value sort order"
msgstr "Tri des valeurs"
msgid "By name"
msgstr "Par nom"
-msgid "Tooltip display"
-msgstr "Affichage de l'infobulle"
-
msgid "All"
-msgstr "Tout"
+msgstr "Toutes"
-msgid "Single"
-msgstr "Unique"
+msgid "Only one"
+msgstr "Une seule"
msgid "Hidden"
-msgstr "Masqué"
+msgstr "Masquées"
msgid "Hide"
msgstr "Masquer"
@@ -19005,8 +19011,8 @@ msgstr "Largeur de la ligne"
msgid "Auto"
msgstr "Auto"
-msgid "Show area"
-msgstr "Afficher l'aire"
+msgid "Area"
+msgstr "Aire"
msgid "Show"
msgstr "Afficher"
@@ -19014,14 +19020,14 @@ msgstr "Afficher"
msgid "Display curve points"
msgstr "Afficher les points de la courbe"
-msgid "Show axis border"
-msgstr "Afficher la bordure de l'axe"
+msgid "Show axis borders"
+msgstr "Afficher les bordures de l'axe"
-msgid "Y-axis tick label rotation"
-msgstr "Rotation de l'étiquette de l'axe Y"
+msgid "Y-axis label rotation"
+msgstr "Rotation des étiquettes de l'axe Y"
-msgid "The Auto value corresponds to the value defined in the Curves configuration in Centreon."
-msgstr "La valeur Auto correspond à la valeur définie dans la configuration des courbes dans Centreon."
+msgid "Auto: Default value defined for the corresponding curve template (Monitoring > Performances > Curves)."
+msgstr "Auto : Valeur par défaut définie dans le modèle de courbe correspondant (Supervision > Informations de performance > Courbes)."
msgid "Position"
msgstr "Position"
@@ -19044,11 +19050,11 @@ msgstr "Centré sur zéro"
msgid "Solid"
msgstr "Uni"
-msgid "Dashed"
-msgstr "Tiret"
+msgid "Dashes"
+msgstr "Tirets"
-msgid "Dotted"
-msgstr "Pointillé"
+msgid "Dots"
+msgstr "Pointillés"
msgid "Graph style"
msgstr "Style de graphe"
@@ -19056,8 +19062,8 @@ msgstr "Style de graphe"
msgid "Display type"
msgstr "Type d'affichage"
-msgid "Display settings"
-msgstr "Afichage des paramètres"
+msgid "Graph settings"
+msgstr "Paramètres de graphe"
msgid "Fill opacity"
msgstr "Opacité du remplissage"
@@ -19071,8 +19077,11 @@ msgstr "Largeur du tiret"
msgid "Space"
msgstr "Espacement"
-msgid "Show grid lines"
-msgstr "Affichage de la grille"
+msgid "Show gridlines"
+msgstr "Afficher le quadrillage"
+
+msgid "Gridline type"
+msgstr "Type de quadrillage"
msgid "Horizontal"
msgstr "Horizontal"
@@ -19095,8 +19104,318 @@ msgstr "Gauche"
msgid "Right"
msgstr "Droite"
-msgid "Axis"
-msgstr "Axe"
+msgid "Axes"
+msgstr "Axes"
+
+msgid "Tooltips"
+msgstr "Infobulles"
+
+msgid "Unable to retrieve credentials ['%s'] from vault"
+msgstr "Impossible de récupérer les informations d'identification ['%s'] du coffre"
+
+msgid "Unknown provider type: %s"
+msgstr "Type de fournisseur inconnu : %s"
+
+msgid "Add filter"
+msgstr "Ajouter un filtre"
+
+msgid "Add resource dataset"
+msgstr "Ajouter un jeu de données de ressources"
+
+msgid "Bar"
+msgstr "Barre"
+
+msgid "Stacked bar"
+msgstr "Barre empilée"
+
+msgid "Orientation"
+msgstr "Orientation"
+
+msgid "Bar radius"
+msgstr "Radius de la barre"
+
+msgid "Bar opacity"
+msgstr "Opacité de la barre"
+
+msgid "Check command sent!"
+msgstr "Commande de vérification envoyée !"
+
+msgid "Forced check command sent!"
+msgstr "Commande de vérification forcée envoyée !"
+
+msgid "Open ticket"
+msgstr "Ouvrir un ticket"
+
+msgid "Open ticket for host"
+msgstr "Ouvrir un ticket pour l'hôte"
+
+msgid "Open ticket for service"
+msgstr "Ouvrir un ticket pour le service"
+
+msgid "Host severities"
+msgstr "Sévérités des hôtes"
+
+msgid "Service severities"
+msgstr "Sévérités des services"
+
+msgid "Select service severities"
+msgstr "Sélectionner les sévérités des services"
+
+msgid "Select host severities"
+msgstr "Sélectionner les sévérités des hôtes"
+
+msgid "Enable Open Tickets"
+msgstr "Activer Open Tickets"
+
+msgid "Ticket provider"
+msgstr "Fournisseur de tickets"
+
+msgid "Select a provider"
+msgstr "Sélectionner un fournisseur"
+
+msgid "Display resources"
+msgstr "Afficher les ressources"
+
+msgid "Resources linked to a ticket"
+msgstr "Ressources liées à un ticket"
+
+msgid "Resources with no ticket"
+msgstr "Ressources sans ticket"
+
+msgid "Hide services with Down host"
+msgstr "Masquer les services dont l'hôte est Indisponible"
+
+msgid "Hide services with Unreachable host"
+msgstr "Masquer les services dont l'hôte est Injoignable"
+
+msgid "Ticket ID"
+msgstr "ID du ticket"
+
+msgid "Ticket subject"
+msgstr "Sujet du ticket"
+
+msgid "Opened on"
+msgstr "Date d'ouverture"
+
+msgid "Create a ticket"
+msgstr "Créer un ticket"
+
+msgid "Rule (ticket provider)"
+msgstr "Règle (fournisseur de tickets)"
+
+msgid "Select rule (ticket provider)"
+msgstr "Sélectionner la règle (fournisseur de tickets)"
+
+msgid "Display resources with these status types"
+msgstr "Afficher les ressources avec ces types de statuts"
+
+msgid "All KPIs on this Business Activity are working fine."
+msgstr "Tous les KPI de cette activité métier fonctionnent correctement."
+
+msgid "See more information in the geoview"
+msgstr "Voir plus d'informations dans la vue géographique"
+
+msgid "Calculation method"
+msgstr "Méthode de calcul"
+
+msgid "State information"
+msgstr "Information de l'état"
+
+msgid "Warning threshold"
+msgstr "Seuil d'alerte"
+
+msgid "Critical threshold"
+msgstr "Seuil critique"
+
+msgid "Click here for details"
+msgstr "Cliquez ici pour les détails"
+
+msgid "Expression in"
+msgstr "Expression en"
+
+msgid "Impact applied when:"
+msgstr "Impact appliqué quand :"
+
+msgid "true"
+msgstr "vrai"
+
+msgid "false"
+msgstr "faux"
+
+msgid "No KPI found"
+msgstr "Aucun KPI trouvé"
+
+msgid "No Business Activity found"
+msgstr "Aucune activité métier trouvée"
+
+msgid "business activity"
+msgstr "activité métier"
+
+msgid "Health"
+msgstr "Santé"
+
+msgid "Critical KPIs"
+msgstr "Indicateurs critiques"
+
+msgid "Additional connector configurations"
+msgstr "Configuration supplémentaire de connecteurs"
+
+msgid "Types"
+msgstr "Types"
+
+msgid "Updated by"
+msgstr "Mis à jour par"
+
+msgid "Edit connector configuration"
+msgstr "Modifier la configuration de connecteur"
+
+msgid "More filters"
+msgstr "Plus de filtres"
+
+msgid "Delete additional connector configuration"
+msgstr "Supprimer la configuration supplémentaire de connecteur"
+
+msgid "The {{name}} additional connector configuration will be permanently deleted."
+msgstr "La configuration supplémentaire de connecteur {{name}} sera définitivement supprimée."
+
+msgid "The corresponding connectors will not work anymore."
+msgstr "Les connecteurs correspondants ne fonctionneront plus."
+
+msgid "Additional connector configuration deleted"
+msgstr "Configuration supplémentaire de connecteur supprimée"
+
+msgid "Additional connector configuration duplicated"
+msgstr "Configuration supplémentaire de connecteur dupliquée"
+
+msgid "Additional connector configuration created"
+msgstr "Configuration supplémentaire de connecteur créée"
+
+msgid "Additional connector configuration updated"
+msgstr "Configuration supplémentaire de connecteur mise à jour"
+
+msgid "Duplicate connector configuration"
+msgstr "Dupliquer la configuration de connecteur"
+
+msgid "The name can be at most 50 characters long"
+msgstr "Le nom peut comporter au maximum 50 caractères"
+
+msgid "The name should be at least 3 characters long"
+msgstr "Le nom doit comporter au moins 3 caractères"
+
+msgid "Create additional connector configuration"
+msgstr "Créer une configuration supplémentaire de connecteur"
+
+msgid "Update additional connector configuration"
+msgstr "Mettre à jour la configuration supplémentaire de connecteur"
+
+msgid "Select poller(s)"
+msgstr "Sélectionner le(s) collecteur(s)"
+
+msgid "Add parameter"
+msgstr "Ajouter un paramètre"
+
+msgid "Add vCenter/ESX"
+msgstr "Ajouter vCenter/ESX"
+
+msgid "Remove vCenter/ESX"
+msgstr "Supprimer vCenter/ESX"
+
+msgid "At least one poller is required"
+msgstr "Au moins un collecteur est requis"
+
+msgid "At least one vCenter is required"
+msgstr "Au moins un vCenter est requis"
+
+msgid "Please enter a valid URL or IP address"
+msgstr "Entrez une URL ou une adresse IP valide"
+
+msgid "Invalid port number"
+msgstr "Numéro de port invalide"
+
+msgid "The name of the vCenter should be unique"
+msgstr "Le nom du vCenter doit être unique"
+
+msgid "vCenter name"
+msgstr "Nom du vCenter"
+
+msgid "Do you want to quit without saving the changes?"
+msgstr "Voulez-vous quitter sans enregistrer les modifications ?"
+
+
+msgid "Error while adding an additional connector configuration"
+msgstr "Erreur lors de l'ajout d'une configuration additionnelle de connecteur"
+
+msgid "You are not allowed to access additional connector configurations"
+msgstr "Vous n'êtes pas autorisé à accéder aux configurations additionnelles de connecteurs"
+
+msgid "An additional connector configuration of type %s is already associated with poller ID(s) '%s'"
+msgstr "Une configuration additionnelle de connecteur de type %s est déjà associée au(x) ID(s) de collecteur(s) '%s'"
+
+msgid "Duplicates not allowed for property '%s'"
+msgstr "Doublons non autorisés pour la propriété '%'"
+
+msgid "'%s' must contain at least one element"
+msgstr "'%s' doit contenir au moins un élément"
+
+msgid "Error while retrieving an additional connector configuration"
+msgstr "Erreur durant la récupération d'une configuration additionnelle de connecteur"
+
+msgid "The additional connector configuration name '%s' already exists"
+msgstr "Le nom de configuration additionnelle de connecteur '%s' existe déjà"
+
+msgid "Error while deleting an additional connector configuration"
+msgstr "Erreur lors de la suppression d'une configuration additionelle de connecteur"
+
+msgid "You don't have sufficient permissions for this action"
+msgstr "Vous ne disposez pas de droits suffisants pour cette action"
+
+msgid "Error while searching for additional connector configurations"
+msgstr "Erreur lors de la recherche de configurations additionnelles de connecteurs"
+
+msgid "Error while searching for available pollers for type '%s'"
+msgstr "Erreur lors de la recherche de collecteurs disponibles pour le type '%s'"
+
+msgid "Error while updating an additional connector configuration"
+msgstr "Erreur lors de la mise à jour d'une configuration additionnelle de connecteur"
+
+msgid "Changing type of an existing additional connector configuration is not allowed"
+msgstr "Changer le type d'une configuration additionnelle de connecteur existante n'est pas autorisé"
+
+msgid "Select time zone"
+msgstr "Sélectionner un fuseau horaire"
+
+msgid "Select time format"
+msgstr "Sélectionner un format d'heure"
+
+msgid "12 hours"
+msgstr "12 heures"
+
+msgid "24 hours"
+msgstr "24 heures"
+
+msgid "Ends at"
+msgstr "Se termine à"
+
+msgid "Time zone"
+msgstr "Fuseau horaire"
+
+msgid "Date format"
+msgstr "Format de date"
+
+msgid "Time format"
+msgstr "Format d'heure"
+
+msgid "Countdown"
+msgstr "Compte à rebours"
+
+msgid "Timer"
+msgstr "Minuteur"
+
+msgid "Show time zone"
+msgstr "Afficher le fuseau horaire"
+
+msgid "Show date"
+msgstr "Afficher la date"
-msgid "Tooltip"
-msgstr "Infobulle"
+msgid "The ticket will be closed for the selected ticket provider"
+msgstr "Le ticket sera fermé pour le fournisseur de tickets sélectionné"
diff --git a/centreon/lang/pt_BR.UTF-8/LC_MESSAGES/messages.po b/centreon/lang/pt_BR.UTF-8/LC_MESSAGES/messages.po
index e1316c1e78..2aa77d9d3d 100644
--- a/centreon/lang/pt_BR.UTF-8/LC_MESSAGES/messages.po
+++ b/centreon/lang/pt_BR.UTF-8/LC_MESSAGES/messages.po
@@ -17468,7 +17468,7 @@ msgstr ""
# msgid "The resource access rule was successfully deleted"
# msgstr ""
-# msgid "Error while adding a broker output"
+# msgid "Error while adding a Broker input/output"
# msgstr ""
# msgid "You are not allowed to edit a broker configuration"
@@ -17477,7 +17477,7 @@ msgstr ""
# msgid "Broker configuration #%d not found"
# msgstr ""
-# msgid "Missing output parameter: %s"
+# msgid "Missing input/output parameter: %s"
# msgstr ""
# msgid "Parameter '%s' (%s) is invalid"
@@ -17486,7 +17486,7 @@ msgstr ""
# msgid "Parameter '%s' of type %s is invalid"
# msgstr ""
-# msgid "Output #%d not found for broker configuration #%d"
+# msgid "Input/Output #%d not found for Broker configuration #%d"
# msgstr ""
# msgid "Rules are used to allow users to access resources."
@@ -17546,7 +17546,7 @@ msgstr ""
# msgid "All resources selected"
# msgstr ""
-# msgid "Error while updating a broker output"
+# msgid "Error while updating a Broker input/output"
# msgstr ""
# msgid "Action not permitted for output of type '%s'"
@@ -17809,3 +17809,325 @@ msgstr ""
# msgid "Tooltip"
# msgstr ""
+
+# msgid "Add filter"
+# msgstr ""
+
+# msgid "Add resource dataset"
+# msgstr ""
+
+# msgid "Line"
+# msgstr ""
+
+# msgid "Bar"
+# msgstr ""
+
+# msgid "Stacked bar"
+# msgstr ""
+
+# msgid "Orientation"
+# msgstr ""
+
+# msgid "Bar radius"
+# msgstr ""
+
+# msgid "Bar background opacity"
+# msgstr ""
+
+# msgid "Check command sent!"
+# msgstr ""
+
+# msgid "Forced check command sent!"
+# msgstr ""
+
+# msgid "Open ticket"
+# msgstr ""
+
+# msgid "Open ticket for host"
+# msgstr ""
+
+# msgid "Open ticket for service"
+# msgstr ""
+
+# msgid "Host severities"
+# msgstr ""
+
+# msgid "Service severities"
+# msgstr ""
+
+# msgid "Select service severities"
+# msgstr ""
+
+# msgid "Select host severities"
+# msgstr ""
+
+# msgid "Enable Open Tickets"
+# msgstr ""
+
+# msgid "Ticket provider"
+# msgstr ""
+
+# msgid "Select a provider"
+# msgstr ""
+
+# msgid "Display resources"
+# msgstr ""
+
+# msgid "Resources linked to a ticket"
+# msgstr ""
+
+# msgid "Resources with no ticket"
+# msgstr ""
+
+# msgid "Hide services with Down host"
+# msgstr ""
+
+# msgstr "hide services with Unreachable host"
+# msgstr ""
+
+# msgstr "Ticket ID"
+# msgstr ""
+
+# msgstr "Ticket subject"
+# msgstr ""
+
+# msgstr "Opened on"
+# msgstr ""
+
+# msgid "Create a ticket"
+# msgstr ""
+
+# msgid "Rule (ticket provider)"
+# msgstr ""
+
+# msgid "Select rule (ticket provider)"
+# msgstr ""
+
+# msgid "Display resources with these status types"
+# msgstr ""
+
+# msgid "All KPIs on this Business Activity are working fine."
+# msgstr ""
+
+# msgid "are working fine."
+# msgstr ""
+
+# msgid "See more information in the geoview"
+# msgstr ""
+
+# msgid "Calculation method"
+# msgstr ""
+
+# msgid "State information"
+# msgstr ""
+
+# msgid "Warning threshold"
+# msgstr ""
+
+# msgid "Critical threshold"
+# msgstr ""
+
+# msgid "Expression in"
+# msgstr ""
+
+# msgid "Impact applied when:"
+# msgstr ""
+
+# msgid "true"
+# msgstr ""
+
+# msgid "false"
+# msgstr ""
+
+# msgid "Click here for details"
+# msgstr ""
+
+# msgid "No KPI found"
+# msgstr ""
+
+# msgid "No Business Activity found"
+# msgstr ""
+
+# msgid "business activity"
+# msgstr ""
+
+# msgid "Health"
+# msgstr ""
+
+# msgid "Critical KPIs"
+# msgstr ""
+
+# msgid "Additional connector configurations"
+# msgstr ""
+
+# msgid "Types"
+# msgstr ""
+
+# msgid "Updated by"
+# msgstr ""
+
+# msgid "Edit connector configuration"
+# msgstr ""
+
+# msgid "More filters"
+# msgstr ""
+
+# msgid "Pollers"
+# msgstr ""
+
+# msgid "Delete additional connector configuration"
+# msgstr ""
+
+# msgid "The {{name}} additional connector configuration will be permanently deleted."
+# msgstr ""
+
+# msgid "The corresponding connectors will not work anymore."
+# msgstr ""
+
+# msgid "Additional connector configuration deleted"
+# msgstr ""
+
+# msgid "Additional connector configuration duplicated"
+# msgstr ""
+
+# msgid "Additional connector configuration created"
+# msgstr ""
+
+# msgid "Additional connector configuration updated"
+# msgstr ""
+
+# msgid "Duplicate connector configuration"
+# msgstr ""
+
+# msgid "The name can be at most 50 characters long"
+# msgstr ""
+
+# msgid "The name should be at least 3 characters long"
+# msgstr ""
+
+# msgid "Create additional connector configuration"
+# msgstr ""
+
+# msgid "Update additional connector configuration"
+# msgstr ""
+
+# msgid "Select poller(s)"
+# msgstr ""
+
+# msgid "Password"
+# msgstr ""
+
+# msgid "Add parameter"
+# msgstr ""
+
+# msgid "Url"
+# msgstr ""
+
+# msgid "Username"
+# msgstr ""
+
+# msgid "Add vCenter/ESX"
+# msgstr ""
+
+# msgid "Remove vCenter/ESX"
+# msgstr ""
+
+# msgid "At least one poller is required"
+# msgstr ""
+
+# msgid "At least one vCenter is required"
+# msgstr ""
+
+# msgid "Please enter a valid URL or IP address"
+# msgstr ""
+
+# msgid "Invalid port number"
+# msgstr ""
+
+# msgid "The name of the vCenter should be unique"
+# msgstr ""
+
+# msgid "vCenter name"
+# msgstr ""
+
+# msgid "Do you want to quit without saving the changes?"
+# msgstr ""
+
+# msgid "Your form has unsaved changes"
+# msgstr ""
+
+
+# msgid "Error while adding an additional connector configuration"
+# msgstr ""
+
+# msgid "You are not allowed to access additional connector configurations"
+# msgstr ""
+
+# msgid "An additional connector configuration configuration of type '%s' is already associated with poller ID(s) '%s'"
+# msgstr ""
+
+# msgid "Duplicates not allowed for property '%s'"
+# msgstr ""
+
+# msgid "'%s' must contain at least one element"
+# msgstr ""
+
+# msgid "Error while retrieving an additional connector configuration"
+# msgstr ""
+
+# msgid "The additional connector configuration name '%s' already exists"
+# msgstr ""
+
+# msgid "Error while deleting an additional connector configuration"
+# msgstr ""
+
+# msgid "You don't have sufficient permissions for this action"
+# msgstr ""
+
+# msgid "Error while searching for additional connector configurations"
+# msgstr ""
+
+# msgid "Error while searching for available pollers for type '%s'"
+# msgstr ""
+
+# msgid "Select time zone"
+# msgstr ""
+
+# msgid "Select time format"
+# msgstr ""
+
+# msgid "12 hours"
+# msgstr ""
+
+# msgid "24 hours"
+# msgstr ""
+
+# msgid "Ends at"
+# msgstr ""
+
+# msgid "Time zone"
+# msgstr ""
+
+# msgid "Date format"
+# msgstr ""
+
+# msgid "Time format"
+# msgstr ""
+
+# msgid "Countdown"
+# msgstr ""
+
+# msgid "Timer"
+# msgstr ""
+
+# msgid "Show time zone"
+# msgstr ""
+
+# msgid "Show date"
+# msgstr ""
+
+# msgid "Error while updating an additional connector configuration"
+# msgstr ""
+
+# msgid "Changing type of an existing additional connector configuration is not allowed"
+# msgstr ""
diff --git a/centreon/lang/pt_PT.UTF-8/LC_MESSAGES/messages.po b/centreon/lang/pt_PT.UTF-8/LC_MESSAGES/messages.po
index cf6151a72c..0cee342f99 100644
--- a/centreon/lang/pt_PT.UTF-8/LC_MESSAGES/messages.po
+++ b/centreon/lang/pt_PT.UTF-8/LC_MESSAGES/messages.po
@@ -17432,7 +17432,7 @@ msgstr "Você não salvou as alterações, deseja continuar?"
# msgid "You are not allowed to access the Resources Status page"
-# msgid "Error while adding a broker output"
+# msgid "Error while adding a Broker input/output"
# msgstr ""
# msgid "You are not allowed to edit a broker configuration"
@@ -17441,7 +17441,7 @@ msgstr "Você não salvou as alterações, deseja continuar?"
# msgid "Broker configuration #%d not found"
# msgstr ""
-# msgid "Missing output parameter: %s"
+# msgid "Missing input/output parameter: %s"
# msgstr ""
# msgid "Parameter '%s' (%s) is invalid"
@@ -17450,7 +17450,7 @@ msgstr "Você não salvou as alterações, deseja continuar?"
# msgid "Parameter '%s' of type %s is invalid"
# msgstr ""
-# msgid "Output #%d not found for broker configuration #%d"
+# msgid "Input/Output #%d not found for Broker configuration #%d"
# msgstr ""
# msgid "Delete rule"
@@ -17527,7 +17527,7 @@ msgstr "Você não salvou as alterações, deseja continuar?"
# msgid "All resources selected"
# msgstr ""
-# msgid "Error while updating a broker output"
+# msgid "Error while updating a Broker input/output"
# msgstr ""
# msgid "Action not permitted for output of type '%s'"
@@ -17789,3 +17789,325 @@ msgstr "Você não salvou as alterações, deseja continuar?"
# msgid "Tooltip"
# msgstr ""
+
+# msgid "Add filter"
+# msgstr ""
+
+# msgid "Add resource dataset"
+# msgstr ""
+
+# msgid "Line"
+# msgstr ""
+
+# msgid "Bar"
+# msgstr ""
+
+# msgid "Stacked bar"
+# msgstr ""
+
+# msgid "Orientation"
+# msgstr ""
+
+# msgid "Bar radius"
+# msgstr ""
+
+# msgid "Bar background opacity"
+# msgstr ""
+
+# msgid "Check command sent!"
+# msgstr ""
+
+# msgid "Forced check command sent!"
+# msgstr ""
+
+# msgid "Open ticket"
+# msgstr ""
+
+# msgid "Open ticket for host"
+# msgstr ""
+
+# msgid "Open ticket for service"
+# msgstr ""
+
+# msgid "Host severities"
+# msgstr ""
+
+# msgid "Service severities"
+# msgstr ""
+
+# msgid "Select service severities"
+# msgstr ""
+
+# msgid "Select host severities"
+# msgstr ""
+
+# msgid "Enable Open Tickets"
+# msgstr ""
+
+# msgid "Ticket provider"
+# msgstr ""
+
+# msgid "Select a provider"
+# msgstr ""
+
+# msgid "Display resources"
+# msgstr ""
+
+# msgid "Resources linked to a ticket"
+# msgstr ""
+
+# msgid "Resources with no ticket"
+# msgstr ""
+
+# msgid "Hide services with Down host"
+# msgstr ""
+
+# msgstr "hide services with Unreachable host"
+# msgstr ""
+
+# msgstr "Ticket ID"
+# msgstr ""
+
+# msgstr "Ticket subject"
+# msgstr ""
+
+# msgstr "Opened on"
+# msgstr ""
+
+# msgid "Create a ticket"
+# msgstr ""
+
+# msgid "Rule (ticket provider)"
+# msgstr ""
+
+# msgid "Select rule (ticket provider)"
+# msgstr ""
+
+# msgid "Display resources with these status types"
+# msgstr ""
+
+# msgid "All KPIs on this Business Activity are working fine."
+# msgstr ""
+
+# msgid "are working fine."
+# msgstr ""
+
+# msgid "See more information in the geoview"
+# msgstr ""
+
+# msgid "Calculation method"
+# msgstr ""
+
+# msgid "State information"
+# msgstr ""
+
+# msgid "Warning threshold"
+# msgstr ""
+
+# msgid "Critical threshold"
+# msgstr ""
+
+# msgid "Expression in"
+# msgstr ""
+
+# msgid "Impact applied when:"
+# msgstr ""
+
+# msgid "true"
+# msgstr ""
+
+# msgid "false"
+# msgstr ""
+
+# msgid "Click here for details"
+# msgstr ""
+
+# msgid "No KPI found"
+# msgstr ""
+
+# msgid "No Business Activity found"
+# msgstr ""
+
+# msgid "business activity"
+# msgstr ""
+
+# msgid "Health"
+# msgstr ""
+
+# msgid "Critical KPIs"
+# msgstr ""
+
+# msgid "Additional connector configurations"
+# msgstr ""
+
+# msgid "Types"
+# msgstr ""
+
+# msgid "Updated by"
+# msgstr ""
+
+# msgid "Edit connector configuration"
+# msgstr ""
+
+# msgid "More filters"
+# msgstr ""
+
+# msgid "Pollers"
+# msgstr ""
+
+# msgid "Delete additional connector configuration"
+# msgstr ""
+
+# msgid "The {{name}} additional connector configuration will be permanently deleted."
+# msgstr ""
+
+# msgid "The corresponding connectors will not work anymore."
+# msgstr ""
+
+# msgid "Additional connector configuration deleted"
+# msgstr ""
+
+# msgid "Additional connector configuration duplicated"
+# msgstr ""
+
+# msgid "Additional connector configuration created"
+# msgstr ""
+
+# msgid "Additional connector configuration updated"
+# msgstr ""
+
+# msgid "Duplicate connector configuration"
+# msgstr ""
+
+# msgid "The name can be at most 50 characters long"
+# msgstr ""
+
+# msgid "The name should be at least 3 characters long"
+# msgstr ""
+
+# msgid "Create additional connector configuration"
+# msgstr ""
+
+# msgid "Update additional connector configuration"
+# msgstr ""
+
+# msgid "Select poller(s)"
+# msgstr ""
+
+# msgid "Password"
+# msgstr ""
+
+# msgid "Add parameter"
+# msgstr ""
+
+# msgid "Url"
+# msgstr ""
+
+# msgid "Username"
+# msgstr ""
+
+# msgid "Add vCenter/ESX"
+# msgstr ""
+
+# msgid "Remove vCenter/ESX"
+# msgstr ""
+
+# msgid "At least one poller is required"
+# msgstr ""
+
+# msgid "At least one vCenter is required"
+# msgstr ""
+
+# msgid "Please enter a valid URL or IP address"
+# msgstr ""
+
+# msgid "Invalid port number"
+# msgstr ""
+
+# msgid "The name of the vCenter should be unique"
+# msgstr ""
+
+# msgid "vCenter name"
+# msgstr ""
+
+# msgid "Do you want to quit without saving the changes?"
+# msgstr ""
+
+# msgid "Your form has unsaved changes"
+# msgstr ""
+
+
+# msgid "Error while adding an additional connector configuration"
+# msgstr ""
+
+# msgid "You are not allowed to access additional connector configurations"
+# msgstr ""
+
+# msgid "An additional connector configuration configuration of type '%s' is already associated with poller ID(s) '%s'"
+# msgstr ""
+
+# msgid "Duplicates not allowed for property '%s'"
+# msgstr ""
+
+# msgid "'%s' must contain at least one element"
+# msgstr ""
+
+# msgid "Error while retrieving an additional connector configuration"
+# msgstr ""
+
+# msgid "The additional connector configuration name '%s' already exists"
+# msgstr ""
+
+# msgid "Error while deleting an additional connector configuration"
+# msgstr ""
+
+# msgid "You don't have sufficient permissions for this action"
+# msgstr ""
+
+# msgid "Error while searching for additional connector configurations"
+# msgstr ""
+
+# msgid "Error while searching for available pollers for type '%s'"
+# msgstr ""
+
+# msgid "Select time zone"
+# msgstr ""
+
+# msgid "Select time format"
+# msgstr ""
+
+# msgid "12 hours"
+# msgstr ""
+
+# msgid "24 hours"
+# msgstr ""
+
+# msgid "Ends at"
+# msgstr ""
+
+# msgid "Time zone"
+# msgstr ""
+
+# msgid "Date format"
+# msgstr ""
+
+# msgid "Time format"
+# msgstr ""
+
+# msgid "Countdown"
+# msgstr ""
+
+# msgid "Timer"
+# msgstr ""
+
+# msgid "Show time zone"
+# msgstr ""
+
+# msgid "Show date"
+# msgstr ""
+
+# msgid "Error while updating an additional connector configuration"
+# msgstr ""
+
+# msgid "Changing type of an existing additional connector configuration is not allowed"
+# msgstr ""
diff --git a/centreon/lighthouse/package-lock.json b/centreon/lighthouse/package-lock.json
index cbb59269e8..5418d71583 100644
--- a/centreon/lighthouse/package-lock.json
+++ b/centreon/lighthouse/package-lock.json
@@ -7,283 +7,18 @@
"": {
"name": "centreon-lighthouse-report",
"version": "22.4.0",
- "dependencies": {
- "node-fetch": "^3.3.2"
- },
- "devDependencies": {
- "@swc/cli": "^0.1.61",
- "@swc/core": "^1.3.35",
- "lighthouse": "^10.0.0",
- "open": "^8.4.0",
- "pptr-testing-library": "^0.7.0",
- "puppeteer": "^19.7.0"
- }
- },
- "../node_modules/.pnpm/@swc+cli@0.1.62_@swc+core@1.3.58/node_modules/@swc/cli": {
- "version": "0.1.62",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@mole-inc/bin-wrapper": "^8.0.1",
- "commander": "^7.1.0",
- "fast-glob": "^3.2.5",
- "semver": "^7.3.8",
- "slash": "3.0.0",
- "source-map": "^0.7.3"
- },
- "bin": {
- "spack": "bin/spack.js",
- "swc": "bin/swc.js",
- "swcx": "bin/swcx.js"
- },
- "devDependencies": {
- "@swc/cli": "^0.1.43",
- "@swc/core": "^1.2.66",
- "@swc/jest": "^0.1.2",
- "@types/jest": "^26.0.23",
- "@types/node": "^12.19.16",
- "@types/semver": "^7.3.13",
- "chokidar": "^3.5.1",
- "deepmerge": "^4.2.2",
- "jest": "^27.0.3",
- "nano-staged": "^0.4.5",
- "prettier": "^2.5.1",
- "simple-git-hooks": "^2.7.0",
- "ts-jest": "^27.0.4",
- "typescript": "~4.3.2"
- },
- "engines": {
- "node": ">= 12.13"
- },
- "peerDependencies": {
- "@swc/core": "^1.2.66",
- "chokidar": "^3.5.1"
- },
- "peerDependenciesMeta": {
- "chokidar": {
- "optional": true
- }
- }
- },
- "../node_modules/.pnpm/@swc+core@1.3.58/node_modules/@swc/core": {
- "version": "1.3.58",
- "dev": true,
- "hasInstallScript": true,
- "license": "Apache-2.0",
- "devDependencies": {
- "@babel/compat-data": "^7.17.0",
- "@babel/core": "^7.13.16",
- "@babel/generator": "^7.18.13",
- "@babel/plugin-proposal-class-properties": "^7.13.0",
- "@babel/plugin-proposal-decorators": "^7.13.15",
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
- "@babel/preset-env": "^7.13.15",
- "@babel/preset-react": "^7.13.13",
- "@babel/preset-typescript": "^7.13.0",
- "@babel/types": "^7.14.0",
- "@napi-rs/cli": "^2.14.1",
- "@swc/core": "=1.2.220",
- "@swc/helpers": "^0.5.0",
- "@swc/plugin-jest": "latest",
- "@taplo/cli": "^0.3.2",
- "@types/jest": "^28.1.4",
- "@types/node": "^14.14.41",
- "@types/terser": "^3.12.0",
- "acorn": "^8.6.0",
- "acorn-jsx": "^5.3.2",
- "axios": "^0.21.1",
- "babel-plugin-transform-node-env-inline": "^0.4.3",
- "benchmark": "^2.1.4",
- "bootstrap": "^5.2.1",
- "class-validator": "^0.13.1",
- "core-js": "^2.6.11",
- "core-js-compat": "^3.21.1",
- "cross-env": "^7.0.3",
- "cspell": "^5.12.3",
- "expect": "^27.4.2",
- "glob": "^8.0.3",
- "husky": "^7.0.2",
- "jest": "^28.1.2",
- "js-beautify": "^1.14.3",
- "lint-staged": "^12.3.6",
- "lodash": "^4.17.21",
- "mocha": "^9.1.3",
- "npm-run-all": "^4.1.5",
- "prettier": "^2.6.2",
- "progress": "^2.0.3",
- "prop-types": "^15.7.2",
- "react": "^17.0.2",
- "reflect-metadata": "^0.1.13",
- "regenerator-runtime": "^0.13.9",
- "source-map": "^0.7.3",
- "source-map-support": "^0.5.19",
- "sourcemap-validator": "^2.1.0",
- "swc-plugin-coverage-instrument": "^0.0.12",
- "terser": "^5.7.1",
- "ts-node": "^10.5.0",
- "typescript": "^4.5.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/swc"
- },
- "optionalDependencies": {
- "@swc/core-darwin-arm64": "1.3.58",
- "@swc/core-darwin-x64": "1.3.58",
- "@swc/core-linux-arm-gnueabihf": "1.3.58",
- "@swc/core-linux-arm64-gnu": "1.3.58",
- "@swc/core-linux-arm64-musl": "1.3.58",
- "@swc/core-linux-x64-gnu": "1.3.58",
- "@swc/core-linux-x64-musl": "1.3.58",
- "@swc/core-win32-arm64-msvc": "1.3.58",
- "@swc/core-win32-ia32-msvc": "1.3.58",
- "@swc/core-win32-x64-msvc": "1.3.58"
- },
- "peerDependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependenciesMeta": {
- "@swc/helpers": {
- "optional": true
- }
- }
- },
- "../node_modules/.pnpm/lighthouse@10.2.0/node_modules/lighthouse": {
- "version": "10.2.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@sentry/node": "^6.17.4",
- "axe-core": "4.7.0",
- "chrome-launcher": "^0.15.2",
- "configstore": "^5.0.1",
- "csp_evaluator": "1.1.1",
- "devtools-protocol": "0.0.1130274",
- "enquirer": "^2.3.6",
- "http-link-header": "^1.1.1",
- "intl-messageformat": "^4.4.0",
- "jpeg-js": "^0.4.4",
- "js-library-detector": "^6.6.0",
- "lighthouse-logger": "^1.3.0",
- "lighthouse-stack-packs": "1.10.0",
- "lodash": "^4.17.21",
- "lookup-closest-locale": "6.2.0",
- "metaviewport-parser": "0.3.0",
- "open": "^8.4.0",
- "parse-cache-control": "1.0.1",
- "ps-list": "^8.0.0",
- "puppeteer-core": "^20.1.0",
- "robots-parser": "^3.0.0",
- "semver": "^5.3.0",
- "speedline-core": "^1.4.3",
- "third-party-web": "^0.20.2",
- "ws": "^7.0.0",
- "yargs": "^17.3.1",
- "yargs-parser": "^21.0.0"
- },
- "bin": {
- "chrome-debug": "core/scripts/manual-chrome-launcher.js",
- "lighthouse": "cli/index.js",
- "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js"
- },
"devDependencies": {
- "@build-tracker/cli": "^1.0.0-beta.15",
- "@esbuild-kit/esm-loader": "^2.1.1",
- "@jest/fake-timers": "^28.1.0",
- "@rollup/plugin-alias": "^3.1.2",
- "@rollup/plugin-commonjs": "^20.0.0",
- "@rollup/plugin-dynamic-import-vars": "^1.1.1",
- "@rollup/plugin-json": "^4.1.0",
- "@rollup/plugin-node-resolve": "^13.0.4",
- "@rollup/plugin-typescript": "^8.2.5",
- "@stadtlandnetz/rollup-plugin-postprocess": "^1.1.0",
- "@testing-library/preact": "^3.1.1",
- "@testing-library/preact-hooks": "^1.1.0",
- "@types/archiver": "^2.1.2",
- "@types/chrome": "^0.0.154",
- "@types/configstore": "^4.0.0",
- "@types/cpy": "^5.1.0",
- "@types/debug": "^4.1.7",
- "@types/eslint": "^8.2.1",
- "@types/estree": "^0.0.50",
- "@types/gh-pages": "^2.0.0",
- "@types/google.analytics": "0.0.39",
- "@types/jpeg-js": "^0.3.7",
- "@types/jsdom": "^16.2.13",
- "@types/lodash": "^4.14.178",
- "@types/mocha": "^9.0.0",
- "@types/node": "*",
- "@types/pako": "^1.0.1",
- "@types/resize-observer-browser": "^0.1.1",
- "@types/semver": "^5.5.0",
- "@types/tabulator-tables": "^4.9.1",
- "@types/ws": "^7.0.0",
- "@types/yargs": "^17.0.8",
- "@types/yargs-parser": "^20.2.1",
- "@typescript-eslint/eslint-plugin": "^5.48.0",
- "@typescript-eslint/parser": "^5.48.0",
- "acorn": "^8.5.0",
- "angular": "^1.7.4",
- "archiver": "^3.0.0",
- "c8": "^7.11.3",
- "chalk": "^2.4.1",
- "chrome-devtools-frontend": "1.0.1070764",
- "concurrently": "^6.4.0",
- "conventional-changelog-cli": "^2.1.1",
- "cpy": "^8.1.2",
- "cross-env": "^7.0.2",
- "csv-validator": "^0.0.3",
- "es-main": "^1.0.2",
- "eslint": "^8.4.1",
- "eslint-config-google": "^0.14.0",
- "eslint-formatter-codeframe": "^7.32.1",
- "eslint-plugin-import": "^2.25.3",
- "eslint-plugin-local-rules": "1.1.0",
- "event-target-shim": "^6.0.2",
- "expect": "^28.1.0",
- "firebase": "^9.0.2",
- "gh-pages": "^2.0.1",
- "glob": "^7.1.3",
- "idb-keyval": "2.2.0",
- "intl-messageformat-parser": "^1.8.1",
- "jest-mock": "^27.3.0",
- "jest-snapshot": "^28.1.0",
- "jsdom": "^12.2.0",
- "lighthouse-plugin-publisher-ads": "1.5.7-beta",
- "lighthouse-plugin-soft-navigation": "^1.0.1",
- "magic-string": "^0.25.7",
- "mime-types": "^2.1.30",
- "mocha": "^10.0.0",
- "node-fetch": "^2.6.1",
- "npm-run-posix-or-windows": "^2.0.2",
- "pako": "^2.0.3",
- "preact": "^10.7.2",
- "pretty-json-stringify": "^0.0.2",
- "puppeteer": "^20.1.0",
- "resolve": "^1.20.0",
- "rollup": "^2.52.7",
- "rollup-plugin-node-resolve": "^5.2.0",
- "rollup-plugin-polyfill-node": "^0.12.0",
- "rollup-plugin-replace": "^2.2.0",
- "rollup-plugin-shim": "^1.0.0",
- "rollup-plugin-terser": "^7.0.2",
- "tabulator-tables": "^4.9.3",
- "terser": "^5.3.8",
- "testdouble": "^3.16.8",
- "typed-query-selector": "^2.6.1",
- "typescript": "^5.0.4",
- "wait-for-expect": "^3.0.2",
- "webtreemap-cdt": "^3.2.1"
- },
- "engines": {
- "node": ">=16.16"
+ "@swc/cli": "^0.4.0",
+ "@swc/core": "^1.6.6",
+ "lighthouse": "^12.1.0",
+ "open": "^10.1.0",
+ "pptr-testing-library": "^0.8.0",
+ "puppeteer": "^22.12.1"
}
},
"../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch": {
"version": "3.3.2",
+ "extraneous": true,
"license": "MIT",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
@@ -316,42 +51,6 @@
"url": "https://opencollective.com/node-fetch"
}
},
- "../node_modules/.pnpm/open@8.4.2/node_modules/open": {
- "version": "8.4.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- },
- "devDependencies": {
- "@types/node": "^15.0.0",
- "ava": "^3.15.0",
- "tsd": "^0.14.0",
- "xo": "^0.39.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../node_modules/.pnpm/puppeteer@19.11.1/node_modules/puppeteer": {
- "version": "19.11.1",
- "dev": true,
- "hasInstallScript": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@puppeteer/browsers": "0.5.0",
- "cosmiconfig": "8.1.3",
- "https-proxy-agent": "5.0.1",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "puppeteer-core": "19.11.1"
- }
- },
"node_modules/@babel/code-frame": {
"version": "7.22.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
@@ -537,6 +236,85 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
+ "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
+ "dev": true,
+ "dependencies": {
+ "@formatjs/intl-localematcher": "0.5.4",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/ecma402-abstract/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
+ "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/fast-memoize/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/@formatjs/icu-messageformat-parser": {
+ "version": "2.7.8",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
+ "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
+ "dev": true,
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/icu-skeleton-parser": "1.8.2",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-messageformat-parser/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/@formatjs/icu-skeleton-parser": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
+ "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
+ "dev": true,
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-skeleton-parser/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
+ "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl-localematcher/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
"node_modules/@jest/types": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
@@ -553,922 +331,6862 @@
"node": ">= 10.14.2"
}
},
- "node_modules/@swc/cli": {
- "resolved": "../node_modules/.pnpm/@swc+cli@0.1.62_@swc+core@1.3.58/node_modules/@swc/cli",
- "link": true
- },
- "node_modules/@swc/core": {
- "resolved": "../node_modules/.pnpm/@swc+core@1.3.58/node_modules/@swc/core",
- "link": true
- },
- "node_modules/@testing-library/dom": {
- "version": "7.31.2",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
- "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
+ "node_modules/@mole-inc/bin-wrapper": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz",
+ "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.10.4",
- "@babel/runtime": "^7.12.5",
- "@types/aria-query": "^4.2.0",
- "aria-query": "^4.2.2",
- "chalk": "^4.1.0",
- "dom-accessibility-api": "^0.5.6",
- "lz-string": "^1.4.4",
- "pretty-format": "^26.6.2"
+ "bin-check": "^4.1.0",
+ "bin-version-check": "^5.0.0",
+ "content-disposition": "^0.5.4",
+ "ext-name": "^5.0.0",
+ "file-type": "^17.1.6",
+ "filenamify": "^5.0.2",
+ "got": "^11.8.5",
+ "os-filter-obj": "^2.0.0"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/@types/aria-query": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
- "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
- "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
- "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"dependencies": {
- "@types/istanbul-lib-report": "*"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@types/node": {
- "version": "20.9.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
- "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
- "dependencies": {
- "undici-types": "~5.26.4"
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@types/yargs": {
- "version": "15.0.18",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.18.tgz",
- "integrity": "sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
- "@types/yargs-parser": "*"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@types/yargs-parser": {
- "version": "21.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
- "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "node_modules/@paulirish/trace_engine": {
+ "version": "0.0.23",
+ "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.23.tgz",
+ "integrity": "sha512-2ym/q7HhC5K+akXkNV6Gip3oaHpbI6TsGjmcAsl7bcJ528MVbacPQeoauLFEeLXH4ulJvsxQwNDIg/kAEhFZxw==",
"dev": true
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
+ "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==",
"dev": true,
+ "dependencies": {
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "progress": "2.0.3",
+ "proxy-agent": "6.4.0",
+ "semver": "7.6.0",
+ "tar-fs": "3.0.5",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/@puppeteer/browsers/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "ms": "2.1.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/aria-query": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
- "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "node_modules/@puppeteer/browsers/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.10.2",
- "@babel/runtime-corejs3": "^7.10.2"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=10"
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/@puppeteer/browsers/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
+ }
+ },
+ "node_modules/@puppeteer/browsers/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@sentry/core": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz",
+ "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==",
+ "dev": true,
+ "dependencies": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/minimal": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/@sentry/hub": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz",
+ "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=6"
}
},
- "node_modules/color-name": {
+ "node_modules/@sentry/minimal": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz",
+ "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==",
+ "dev": true,
+ "dependencies": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/node": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz",
+ "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==",
+ "dev": true,
+ "dependencies": {
+ "@sentry/core": "6.19.7",
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "cookie": "^0.4.1",
+ "https-proxy-agent": "^5.0.0",
+ "lru_map": "^0.3.3",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/types": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz",
+ "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/utils": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz",
+ "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==",
+ "dev": true,
+ "dependencies": {
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@swc/cli": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.4.0.tgz",
+ "integrity": "sha512-4JdVrPtF/4rCMXp6Q1h5I6YkYZrCCcqod7Wk97ZQq7K8vNGzJUryBv4eHCvqx5sJOJBrbYm9fcswe1B0TygNoA==",
+ "dev": true,
+ "dependencies": {
+ "@mole-inc/bin-wrapper": "^8.0.1",
+ "@swc/counter": "^0.1.3",
+ "commander": "^8.3.0",
+ "fast-glob": "^3.2.5",
+ "minimatch": "^9.0.3",
+ "piscina": "^4.3.0",
+ "semver": "^7.3.8",
+ "slash": "3.0.0",
+ "source-map": "^0.7.3"
+ },
+ "bin": {
+ "spack": "bin/spack.js",
+ "swc": "bin/swc.js",
+ "swcx": "bin/swcx.js"
+ },
+ "engines": {
+ "node": ">= 16.14.0"
+ },
+ "peerDependencies": {
+ "@swc/core": "^1.2.66",
+ "chokidar": "^3.5.1"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@swc/core": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.6.6.tgz",
+ "integrity": "sha512-sHfmIUPUXNrQTwFMVCY5V5Ena2GTOeaWjS2GFUpjLhAgVfP90OP67DWow7+cYrfFtqBdILHuWnjkTcd0+uPKlg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@swc/counter": "^0.1.3",
+ "@swc/types": "^0.1.9"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/swc"
+ },
+ "optionalDependencies": {
+ "@swc/core-darwin-arm64": "1.6.6",
+ "@swc/core-darwin-x64": "1.6.6",
+ "@swc/core-linux-arm-gnueabihf": "1.6.6",
+ "@swc/core-linux-arm64-gnu": "1.6.6",
+ "@swc/core-linux-arm64-musl": "1.6.6",
+ "@swc/core-linux-x64-gnu": "1.6.6",
+ "@swc/core-linux-x64-musl": "1.6.6",
+ "@swc/core-win32-arm64-msvc": "1.6.6",
+ "@swc/core-win32-ia32-msvc": "1.6.6",
+ "@swc/core-win32-x64-msvc": "1.6.6"
+ },
+ "peerDependencies": {
+ "@swc/helpers": "*"
+ },
+ "peerDependenciesMeta": {
+ "@swc/helpers": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@swc/core-darwin-arm64": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.6.tgz",
+ "integrity": "sha512-5DA8NUGECcbcK1YLKJwNDKqdtTYDVnkfDU1WvQSXq/rU+bjYCLtn5gCe8/yzL7ISXA6rwqPU1RDejhbNt4ARLQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-darwin-x64": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.6.6.tgz",
+ "integrity": "sha512-2nbh/RHpweNRsJiYDFk1KcX7UtaKgzzTNUjwtvK5cp0wWrpbXmPvdlWOx3yzwoiSASDFx78242JHHXCIOlEdsw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm-gnueabihf": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.6.tgz",
+ "integrity": "sha512-YgytuyUfR7b0z0SRHKV+ylr83HmgnROgeT7xryEkth6JGpAEHooCspQ4RrWTU8+WKJ7aXiZlGXPgybQ4TiS+TA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-gnu": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.6.tgz",
+ "integrity": "sha512-yGwx9fddzEE0iURqRVwKBQ4IwRHE6hNhl15WliHpi/PcYhzmYkUIpcbRXjr0dssubXAVPVnx6+jZVDSbutvnfg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-musl": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.6.tgz",
+ "integrity": "sha512-a6fMbqzSAsS5KCxFJyg1mD5kwN3ZFO8qQLyJ75R/htZP/eCt05jrhmOI7h2n+1HjiG332jLnZ9S8lkVE5O8Nqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-gnu": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.6.tgz",
+ "integrity": "sha512-hRGsUKNzzZle28YF0dYIpN0bt9PceR9LaVBq7x8+l9TAaDLFbgksSxcnU/ubTtsy+WsYSYGn+A83w3xWC0O8CQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-musl": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.6.tgz",
+ "integrity": "sha512-NokIUtFxJDVv3LzGeEtYMTV3j2dnGKLac59luTeq36DQLZdJQawQIdTbzzWl2jE7lxxTZme+dhsVOH9LxE3ceg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-arm64-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.6.tgz",
+ "integrity": "sha512-lzYdI4qb4k1dFG26yv+9Jaq/bUMAhgs/2JsrLncGjLof86+uj74wKYCQnbzKAsq2hDtS5DqnHnl+//J+miZfGA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-ia32-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.6.tgz",
+ "integrity": "sha512-bvl7FMaXIJQ76WZU0ER4+RyfKIMGb6S2MgRkBhJOOp0i7VFx4WLOnrmMzaeoPJaJSkityVKAftfNh7NBzTIydQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-x64-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.6.tgz",
+ "integrity": "sha512-WAP0JoCTfgeYKgOeYJoJV4ZS0sQUmU3OwvXa2dYYtMLF7zsNqOiW4niU7QlThBHgUv/qNZm2p6ITEgh3w1cltw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "dev": true
+ },
+ "node_modules/@swc/types": {
+ "version": "0.1.9",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.9.tgz",
+ "integrity": "sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==",
+ "dev": true,
+ "dependencies": {
+ "@swc/counter": "^0.1.3"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dev": true,
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@testing-library/dom": {
+ "version": "7.31.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
+ "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^4.2.0",
+ "aria-query": "^4.2.2",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.6",
+ "lz-string": "^1.4.4",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "dev": true
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true
+ },
+ "node_modules/@types/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
+ "dev": true
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.9.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
+ "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/yargs": {
+ "version": "15.0.18",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.18.tgz",
+ "integrity": "sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ast-types/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/axe-core": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz",
+ "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/bare-events": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
+ "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/bare-fs": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz",
+ "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.0.0",
+ "bare-path": "^2.0.0",
+ "bare-stream": "^2.0.0"
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz",
+ "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/bare-path": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
+ "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^2.1.0"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz",
+ "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.18.0"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/basic-ftp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/bin-check": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz",
+ "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^0.7.0",
+ "executable": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/bin-version": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz",
+ "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0",
+ "find-versions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bin-version-check": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz",
+ "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==",
+ "dev": true,
+ "dependencies": {
+ "bin-version": "^6.0.0",
+ "semver": "^7.5.3",
+ "semver-truncate": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bin-version/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/bin-version/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/bin-version/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bin-version/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bin-version/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bin-version/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bin-version/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bin-version/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bin-version/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chrome-launcher": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.1.2.tgz",
+ "integrity": "sha512-YclTJey34KUm5jB1aEJCq807bSievi7Nb/TU4Gu504fUYi3jw3KCIaH6L7nFWQhdEgH3V+wCh+kKD1P5cXnfxw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^2.0.1"
+ },
+ "bin": {
+ "print-chrome-path": "bin/print-chrome-path.js"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
+ "node_modules/chrome-launcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/chromium-bidi": {
+ "version": "0.5.24",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.24.tgz",
+ "integrity": "sha512-5xQNN2SVBdZv4TxeMLaI+PelrnZsHDhn8h2JtyriLr+0qHcZS8BMuo93qN6J1VmtmrgYP+rmcLHcbpnA8QJh+w==",
+ "dev": true,
+ "dependencies": {
+ "mitt": "3.0.1",
+ "urlpattern-polyfill": "10.0.0",
+ "zod": "3.23.8"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/core-js-pure": {
+ "version": "3.33.2",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz",
+ "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "dev": true,
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/csp_evaluator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz",
+ "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==",
+ "dev": true
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1312386",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+ "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
+ "dev": true
+ },
+ "node_modules/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "^1.28.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "dependencies": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "17.1.6",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz",
+ "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==",
+ "dev": true,
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.2",
+ "strtok3": "^7.0.0-alpha.9",
+ "token-types": "^5.0.0-alpha.2"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/filename-reserved-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz",
+ "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==",
+ "dev": true,
+ "dependencies": {
+ "filename-reserved-regex": "^3.0.0",
+ "strip-outer": "^2.0.0",
+ "trim-repeated": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-versions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
+ "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==",
+ "dev": true,
+ "dependencies": {
+ "semver-regex": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz",
+ "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==",
+ "dev": true,
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^11.2.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
+ },
+ "node_modules/http-link-header": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz",
+ "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/image-ssim": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz",
+ "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/intl-messageformat": {
+ "version": "10.5.14",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
+ "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
+ "dev": true,
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/fast-memoize": "2.2.0",
+ "@formatjs/icu-messageformat-parser": "2.7.8",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/intl-messageformat/node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dev": true,
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
+ "dev": true
+ },
+ "node_modules/js-library-detector": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz",
+ "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "dev": true
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/lighthouse": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.1.0.tgz",
+ "integrity": "sha512-PQLaNcv3tQcybnYux6T8uoS6+RNrNYvVJBbGo0kkbD4XTjesGslOXWeMkUQDK7c28nLfVZi7gYWDUsicTLglKQ==",
+ "dev": true,
+ "dependencies": {
+ "@paulirish/trace_engine": "^0.0.23",
+ "@sentry/node": "^6.17.4",
+ "axe-core": "^4.9.1",
+ "chrome-launcher": "^1.1.2",
+ "configstore": "^5.0.1",
+ "csp_evaluator": "1.1.1",
+ "devtools-protocol": "0.0.1312386",
+ "enquirer": "^2.3.6",
+ "http-link-header": "^1.1.1",
+ "intl-messageformat": "^10.5.3",
+ "jpeg-js": "^0.4.4",
+ "js-library-detector": "^6.7.0",
+ "lighthouse-logger": "^2.0.1",
+ "lighthouse-stack-packs": "1.12.1",
+ "lodash": "^4.17.21",
+ "lookup-closest-locale": "6.2.0",
+ "metaviewport-parser": "0.3.0",
+ "open": "^8.4.0",
+ "parse-cache-control": "1.0.1",
+ "puppeteer-core": "^22.11.1",
+ "robots-parser": "^3.0.1",
+ "semver": "^5.3.0",
+ "speedline-core": "^1.4.3",
+ "third-party-web": "^0.24.3",
+ "tldts-icann": "^6.1.16",
+ "ws": "^7.0.0",
+ "yargs": "^17.3.1",
+ "yargs-parser": "^21.0.0"
+ },
+ "bin": {
+ "chrome-debug": "core/scripts/manual-chrome-launcher.js",
+ "lighthouse": "cli/index.js",
+ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js"
+ },
+ "engines": {
+ "node": ">=18.16"
+ }
+ },
+ "node_modules/lighthouse-logger": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.1.tgz",
+ "integrity": "sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/lighthouse-stack-packs": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.1.tgz",
+ "integrity": "sha512-i4jTmg7tvZQFwNFiwB+nCK6a7ICR68Xcwo+VIVd6Spi71vBNFUlds5HiDrSbClZdkQDON2Bhqv+KKJIo5zkPeA==",
+ "dev": true
+ },
+ "node_modules/lighthouse/node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lighthouse/node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lighthouse/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lookup-closest-locale": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz",
+ "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==",
+ "dev": true
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru_map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
+ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "dev": true,
+ "bin": {
+ "lz-string": "bin/bin.js"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/metaviewport-parser": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz",
+ "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ==",
+ "dev": true
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/nice-napi": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
+ "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "!win32"
+ ],
+ "dependencies": {
+ "node-addon-api": "^3.0.0",
+ "node-gyp-build": "^4.2.2"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
+ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
+ "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open/node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-filter-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
+ "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
+ "dev": true,
+ "dependencies": {
+ "arch": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pac-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.5",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "dev": true,
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==",
+ "dev": true
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/peek-readable": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.1.0.tgz",
+ "integrity": "sha512-Tq2I+yoz6Xq3S09E2PyjzOy/oYuNg5v7wyjmrw7OQYSKc7QnDs63q4RXFXraMoI6LZyiEOJ/wDEYzGDPhWwNPA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/piscina": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz",
+ "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==",
+ "dev": true,
+ "optionalDependencies": {
+ "nice-napi": "^1.0.2"
+ }
+ },
+ "node_modules/pptr-testing-library": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/pptr-testing-library/-/pptr-testing-library-0.8.0.tgz",
+ "integrity": "sha512-QcaSiD3sLuxNgfl/wkv/tFB3x3bSZOPieVbmiPyoJMIWv93O2eAOhPnq8uv8qqX22o8DK+gxWgovc1XMvaioGQ==",
+ "dev": true,
+ "dependencies": {
+ "@testing-library/dom": "^7.31.0",
+ "wait-for-expect": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "peerDependencies": {
+ "puppeteer": "*"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+ "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/proxy-agent": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
+ "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.3",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.0.1",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "dev": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/puppeteer": {
+ "version": "22.12.1",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.12.1.tgz",
+ "integrity": "sha512-1GxY8dnEnHr1SLzdSDr0FCjM6JQfAh2E2I/EqzeF8a58DbGVk9oVjj4lFdqNoVbpgFSpAbz7VER9St7S1wDpNg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@puppeteer/browsers": "2.2.3",
+ "cosmiconfig": "^9.0.0",
+ "devtools-protocol": "0.0.1299070",
+ "puppeteer-core": "22.12.1"
+ },
+ "bin": {
+ "puppeteer": "lib/esm/puppeteer/node/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "22.12.1",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.12.1.tgz",
+ "integrity": "sha512-XmqeDPVdC5/3nGJys1jbgeoZ02wP0WV1GBlPtr/ULRbGXJFuqgXMcKQ3eeNtFpBzGRbpeoCGWHge1ZWKWl0Exw==",
+ "dev": true,
+ "dependencies": {
+ "@puppeteer/browsers": "2.2.3",
+ "chromium-bidi": "0.5.24",
+ "debug": "^4.3.5",
+ "devtools-protocol": "0.0.1299070",
+ "ws": "^8.17.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/devtools-protocol": {
+ "version": "0.0.1299070",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz",
+ "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==",
+ "dev": true
+ },
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/puppeteer/node_modules/devtools-protocol": {
+ "version": "0.0.1299070",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz",
+ "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==",
+ "dev": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "dev": true
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
+ "dev": true
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/robots-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz",
+ "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-regex": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
+ "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver-truncate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz",
+ "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+ "dev": true,
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+ "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+ "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
+ "dev": true,
+ "dependencies": {
+ "sort-keys": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/speedline-core": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz",
+ "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "image-ssim": "^0.2.0",
+ "jpeg-js": "^0.4.1"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true
+ },
+ "node_modules/streamx": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
+ "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
+ "dev": true,
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-outer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz",
+ "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strtok3": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz",
+ "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz",
+ "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^2.1.1",
+ "bare-path": "^2.1.0"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dev": true,
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz",
+ "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==",
+ "dev": true,
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/third-party-web": {
+ "version": "0.24.3",
+ "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.24.3.tgz",
+ "integrity": "sha512-imE6hXZyaCeGinGFCvpWsv0oelsEaufSG39qYBQhp3urGq4OLOtsuEddf3XgKxmAAczBD/I1Tnp8L3gJ3ksTuQ==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.30",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.30.tgz",
+ "integrity": "sha512-CPlL58/oIvnovk5KTHIho/B0bMuvPkZrcC7f4pfQH+BBPY/mMz6CekiIdhjFxk9XZZJNirbwh1rRTSo4e5KXQA==",
+ "dev": true
+ },
+ "node_modules/tldts-icann": {
+ "version": "6.1.30",
+ "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-6.1.30.tgz",
+ "integrity": "sha512-1ekjlDThO9urnJvPJ533AS/ZY9O2E7AVNmy7yX4QDQzATuvDv8qeUuuPsc+nWoinXila5LoQVEmqOR310q34BQ==",
+ "dev": true,
+ "dependencies": {
+ "tldts-core": "^6.1.30"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
+ "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/trim-repeated": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz",
+ "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/trim-repeated/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dev": true,
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/urlpattern-polyfill": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+ "dev": true
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/wait-for-expect": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz",
+ "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
+ "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.14.0"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz",
+ "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==",
+ "dev": true,
+ "requires": {
+ "core-js-pure": "^3.30.2",
+ "regenerator-runtime": "^0.14.0"
+ }
+ },
+ "@formatjs/ecma402-abstract": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
+ "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
+ "dev": true,
+ "requires": {
+ "@formatjs/intl-localematcher": "0.5.4",
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@formatjs/fast-memoize": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
+ "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@formatjs/icu-messageformat-parser": {
+ "version": "2.7.8",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
+ "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
+ "dev": true,
+ "requires": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/icu-skeleton-parser": "1.8.2",
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@formatjs/icu-skeleton-parser": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
+ "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
+ "dev": true,
+ "requires": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@formatjs/intl-localematcher": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
+ "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/types": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
+ "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^4.0.0"
+ }
+ },
+ "@mole-inc/bin-wrapper": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz",
+ "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==",
+ "dev": true,
+ "requires": {
+ "bin-check": "^4.1.0",
+ "bin-version-check": "^5.0.0",
+ "content-disposition": "^0.5.4",
+ "ext-name": "^5.0.0",
+ "file-type": "^17.1.6",
+ "filenamify": "^5.0.2",
+ "got": "^11.8.5",
+ "os-filter-obj": "^2.0.0"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@paulirish/trace_engine": {
+ "version": "0.0.23",
+ "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.23.tgz",
+ "integrity": "sha512-2ym/q7HhC5K+akXkNV6Gip3oaHpbI6TsGjmcAsl7bcJ528MVbacPQeoauLFEeLXH4ulJvsxQwNDIg/kAEhFZxw==",
+ "dev": true
+ },
+ "@puppeteer/browsers": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
+ "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "progress": "2.0.3",
+ "proxy-agent": "6.4.0",
+ "semver": "7.6.0",
+ "tar-fs": "3.0.5",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/core": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz",
+ "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==",
+ "dev": true,
+ "requires": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/minimal": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/hub": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz",
+ "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==",
+ "dev": true,
+ "requires": {
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/minimal": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz",
+ "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==",
+ "dev": true,
+ "requires": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/node": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz",
+ "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==",
+ "dev": true,
+ "requires": {
+ "@sentry/core": "6.19.7",
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "cookie": "^0.4.1",
+ "https-proxy-agent": "^5.0.0",
+ "lru_map": "^0.3.3",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/types": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz",
+ "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==",
+ "dev": true
+ },
+ "@sentry/utils": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz",
+ "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==",
+ "dev": true,
+ "requires": {
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "dev": true
+ },
+ "@swc/cli": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.4.0.tgz",
+ "integrity": "sha512-4JdVrPtF/4rCMXp6Q1h5I6YkYZrCCcqod7Wk97ZQq7K8vNGzJUryBv4eHCvqx5sJOJBrbYm9fcswe1B0TygNoA==",
+ "dev": true,
+ "requires": {
+ "@mole-inc/bin-wrapper": "^8.0.1",
+ "@swc/counter": "^0.1.3",
+ "commander": "^8.3.0",
+ "fast-glob": "^3.2.5",
+ "minimatch": "^9.0.3",
+ "piscina": "^4.3.0",
+ "semver": "^7.3.8",
+ "slash": "3.0.0",
+ "source-map": "^0.7.3"
+ }
+ },
+ "@swc/core": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.6.6.tgz",
+ "integrity": "sha512-sHfmIUPUXNrQTwFMVCY5V5Ena2GTOeaWjS2GFUpjLhAgVfP90OP67DWow7+cYrfFtqBdILHuWnjkTcd0+uPKlg==",
+ "dev": true,
+ "requires": {
+ "@swc/core-darwin-arm64": "1.6.6",
+ "@swc/core-darwin-x64": "1.6.6",
+ "@swc/core-linux-arm-gnueabihf": "1.6.6",
+ "@swc/core-linux-arm64-gnu": "1.6.6",
+ "@swc/core-linux-arm64-musl": "1.6.6",
+ "@swc/core-linux-x64-gnu": "1.6.6",
+ "@swc/core-linux-x64-musl": "1.6.6",
+ "@swc/core-win32-arm64-msvc": "1.6.6",
+ "@swc/core-win32-ia32-msvc": "1.6.6",
+ "@swc/core-win32-x64-msvc": "1.6.6",
+ "@swc/counter": "^0.1.3",
+ "@swc/types": "^0.1.9"
+ }
+ },
+ "@swc/core-darwin-arm64": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.6.tgz",
+ "integrity": "sha512-5DA8NUGECcbcK1YLKJwNDKqdtTYDVnkfDU1WvQSXq/rU+bjYCLtn5gCe8/yzL7ISXA6rwqPU1RDejhbNt4ARLQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-darwin-x64": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.6.6.tgz",
+ "integrity": "sha512-2nbh/RHpweNRsJiYDFk1KcX7UtaKgzzTNUjwtvK5cp0wWrpbXmPvdlWOx3yzwoiSASDFx78242JHHXCIOlEdsw==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-linux-arm-gnueabihf": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.6.tgz",
+ "integrity": "sha512-YgytuyUfR7b0z0SRHKV+ylr83HmgnROgeT7xryEkth6JGpAEHooCspQ4RrWTU8+WKJ7aXiZlGXPgybQ4TiS+TA==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-linux-arm64-gnu": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.6.tgz",
+ "integrity": "sha512-yGwx9fddzEE0iURqRVwKBQ4IwRHE6hNhl15WliHpi/PcYhzmYkUIpcbRXjr0dssubXAVPVnx6+jZVDSbutvnfg==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-linux-arm64-musl": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.6.tgz",
+ "integrity": "sha512-a6fMbqzSAsS5KCxFJyg1mD5kwN3ZFO8qQLyJ75R/htZP/eCt05jrhmOI7h2n+1HjiG332jLnZ9S8lkVE5O8Nqw==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-linux-x64-gnu": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.6.tgz",
+ "integrity": "sha512-hRGsUKNzzZle28YF0dYIpN0bt9PceR9LaVBq7x8+l9TAaDLFbgksSxcnU/ubTtsy+WsYSYGn+A83w3xWC0O8CQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-linux-x64-musl": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.6.tgz",
+ "integrity": "sha512-NokIUtFxJDVv3LzGeEtYMTV3j2dnGKLac59luTeq36DQLZdJQawQIdTbzzWl2jE7lxxTZme+dhsVOH9LxE3ceg==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-win32-arm64-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.6.tgz",
+ "integrity": "sha512-lzYdI4qb4k1dFG26yv+9Jaq/bUMAhgs/2JsrLncGjLof86+uj74wKYCQnbzKAsq2hDtS5DqnHnl+//J+miZfGA==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-win32-ia32-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.6.tgz",
+ "integrity": "sha512-bvl7FMaXIJQ76WZU0ER4+RyfKIMGb6S2MgRkBhJOOp0i7VFx4WLOnrmMzaeoPJaJSkityVKAftfNh7NBzTIydQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/core-win32-x64-msvc": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.6.tgz",
+ "integrity": "sha512-WAP0JoCTfgeYKgOeYJoJV4ZS0sQUmU3OwvXa2dYYtMLF7zsNqOiW4niU7QlThBHgUv/qNZm2p6ITEgh3w1cltw==",
+ "dev": true,
+ "optional": true
+ },
+ "@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "dev": true
+ },
+ "@swc/types": {
+ "version": "0.1.9",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.9.tgz",
+ "integrity": "sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==",
+ "dev": true,
+ "requires": {
+ "@swc/counter": "^0.1.3"
+ }
+ },
+ "@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^2.0.0"
+ }
+ },
+ "@testing-library/dom": {
+ "version": "7.31.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
+ "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^4.2.0",
+ "aria-query": "^4.2.2",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.6",
+ "lz-string": "^1.4.4",
+ "pretty-format": "^26.6.2"
+ }
+ },
+ "@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "dev": true
+ },
+ "@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true
+ },
+ "@types/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
+ "dev": true
+ },
+ "@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dev": true,
+ "requires": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "dev": true
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true
+ },
+ "@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/node": {
+ "version": "20.9.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
+ "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
+ "dev": true,
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/yargs": {
+ "version": "15.0.18",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.18.tgz",
+ "integrity": "sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true
+ },
+ "@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
+ "ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ }
+ },
+ "ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.0.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "axe-core": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz",
+ "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==",
+ "dev": true
+ },
+ "b4a": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "bare-events": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
+ "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
+ "dev": true,
+ "optional": true
+ },
+ "bare-fs": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz",
+ "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bare-events": "^2.0.0",
+ "bare-path": "^2.0.0",
+ "bare-stream": "^2.0.0"
+ }
+ },
+ "bare-os": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz",
+ "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==",
+ "dev": true,
+ "optional": true
+ },
+ "bare-path": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
+ "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bare-os": "^2.1.0"
+ }
+ },
+ "bare-stream": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz",
+ "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "streamx": "^2.18.0"
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "basic-ftp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "dev": true
+ },
+ "bin-check": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz",
+ "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0",
+ "executable": "^4.1.0"
+ }
+ },
+ "bin-version": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz",
+ "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==",
+ "dev": true,
+ "requires": {
+ "execa": "^5.0.0",
+ "find-versions": "^5.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "bin-version-check": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz",
+ "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==",
+ "dev": true,
+ "requires": {
+ "bin-version": "^6.0.0",
+ "semver": "^7.5.3",
+ "semver-truncate": "^3.0.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.1.1"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true
+ },
+ "bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "requires": {
+ "run-applescript": "^7.0.0"
+ }
+ },
+ "cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true
+ },
+ "cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ }
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "chrome-launcher": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.1.2.tgz",
+ "integrity": "sha512-YclTJey34KUm5jB1aEJCq807bSievi7Nb/TU4Gu504fUYi3jw3KCIaH6L7nFWQhdEgH3V+wCh+kKD1P5cXnfxw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^2.0.1"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ }
+ }
+ },
+ "chromium-bidi": {
+ "version": "0.5.24",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.24.tgz",
+ "integrity": "sha512-5xQNN2SVBdZv4TxeMLaI+PelrnZsHDhn8h2JtyriLr+0qHcZS8BMuo93qN6J1VmtmrgYP+rmcLHcbpnA8QJh+w==",
+ "dev": true,
+ "requires": {
+ "mitt": "3.0.1",
+ "urlpattern-polyfill": "10.0.0",
+ "zod": "3.23.8"
+ }
+ },
+ "cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "node_modules/core-js-pure": {
- "version": "3.33.2",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz",
- "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==",
+ "commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true
+ },
+ "configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.2.1"
+ }
+ },
+ "cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "dev": true
+ },
+ "core-js-pure": {
+ "version": "3.33.2",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz",
+ "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "dev": true,
+ "requires": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "dev": true
+ },
+ "csp_evaluator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz",
+ "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==",
+ "dev": true
+ },
+ "data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^3.1.0"
+ },
+ "dependencies": {
+ "mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true
+ }
+ }
+ },
+ "default-browser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "dev": true,
+ "requires": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ }
+ },
+ "default-browser-id": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "dev": true
+ },
+ "defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true
+ },
+ "define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true
+ },
+ "degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "requires": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ }
+ },
+ "devtools-protocol": {
+ "version": "0.0.1312386",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+ "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
+ "dev": true
+ },
+ "dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "dev": true,
+ "requires": {
+ "pify": "^2.2.0"
+ }
+ },
+ "ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
+ "requires": {
+ "mime-db": "^1.28.0"
+ }
+ },
+ "ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "requires": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ }
+ },
+ "extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "requires": {
+ "@types/yauzl": "^2.9.1",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ }
+ }
+ },
+ "fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
+ "fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "file-type": {
+ "version": "17.1.6",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz",
+ "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==",
+ "dev": true,
+ "requires": {
+ "readable-web-to-node-stream": "^3.0.2",
+ "strtok3": "^7.0.0-alpha.9",
+ "token-types": "^5.0.0-alpha.2"
+ }
+ },
+ "filename-reserved-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
+ "dev": true
+ },
+ "filenamify": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz",
+ "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==",
+ "dev": true,
+ "requires": {
+ "filename-reserved-regex": "^3.0.0",
+ "strip-outer": "^2.0.0",
+ "trim-repeated": "^2.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-versions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
+ "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==",
+ "dev": true,
+ "requires": {
+ "semver-regex": "^4.0.5"
+ }
+ },
+ "fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "dev": true
+ },
+ "get-uri": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz",
+ "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==",
+ "dev": true,
+ "requires": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4",
+ "fs-extra": "^11.2.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
+ },
+ "http-link-header": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz",
+ "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==",
+ "dev": true
+ },
+ "http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4"
+ }
+ }
+ }
+ },
+ "http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
+ "requires": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "image-ssim": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz",
+ "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "intl-messageformat": {
+ "version": "10.5.14",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
+ "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
+ "dev": true,
+ "requires": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/fast-memoize": "2.2.0",
+ "@formatjs/icu-messageformat-parser": "2.7.8",
+ "tslib": "^2.4.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ }
+ }
+ },
+ "ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dev": true,
+ "requires": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^3.0.0"
+ },
+ "dependencies": {
+ "is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true
+ }
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0"
+ }
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
+ "dev": true
+ },
+ "js-library-detector": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz",
+ "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "dev": true
+ },
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "lighthouse": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.1.0.tgz",
+ "integrity": "sha512-PQLaNcv3tQcybnYux6T8uoS6+RNrNYvVJBbGo0kkbD4XTjesGslOXWeMkUQDK7c28nLfVZi7gYWDUsicTLglKQ==",
+ "dev": true,
+ "requires": {
+ "@paulirish/trace_engine": "^0.0.23",
+ "@sentry/node": "^6.17.4",
+ "axe-core": "^4.9.1",
+ "chrome-launcher": "^1.1.2",
+ "configstore": "^5.0.1",
+ "csp_evaluator": "1.1.1",
+ "devtools-protocol": "0.0.1312386",
+ "enquirer": "^2.3.6",
+ "http-link-header": "^1.1.1",
+ "intl-messageformat": "^10.5.3",
+ "jpeg-js": "^0.4.4",
+ "js-library-detector": "^6.7.0",
+ "lighthouse-logger": "^2.0.1",
+ "lighthouse-stack-packs": "1.12.1",
+ "lodash": "^4.17.21",
+ "lookup-closest-locale": "6.2.0",
+ "metaviewport-parser": "0.3.0",
+ "open": "^8.4.0",
+ "parse-cache-control": "1.0.1",
+ "puppeteer-core": "^22.11.1",
+ "robots-parser": "^3.0.1",
+ "semver": "^5.3.0",
+ "speedline-core": "^1.4.3",
+ "third-party-web": "^0.24.3",
+ "tldts-icann": "^6.1.16",
+ "ws": "^7.0.0",
+ "yargs": "^17.3.1",
+ "yargs-parser": "^21.0.0"
+ },
+ "dependencies": {
+ "define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true
+ },
+ "open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "requires": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
+ }
+ },
+ "lighthouse-logger": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.1.tgz",
+ "integrity": "sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "lighthouse-stack-packs": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.1.tgz",
+ "integrity": "sha512-i4jTmg7tvZQFwNFiwB+nCK6a7ICR68Xcwo+VIVd6Spi71vBNFUlds5HiDrSbClZdkQDON2Bhqv+KKJIo5zkPeA==",
+ "dev": true
+ },
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lookup-closest-locale": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz",
+ "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==",
+ "dev": true
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ },
+ "lru_map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
+ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "metaviewport-parser": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz",
+ "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "dev": true
+ },
+ "nice-napi": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
+ "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "node-addon-api": "^3.0.0",
+ "node-gyp-build": "^4.2.2"
+ }
+ },
+ "node-addon-api": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
+ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
+ "dev": true,
+ "optional": true
+ },
+ "node-gyp-build": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
+ "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
+ "dev": true,
+ "optional": true
+ },
+ "normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "open": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "dev": true,
+ "requires": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "requires": {
+ "is-inside-container": "^1.0.0"
+ }
+ }
+ }
+ },
+ "os-filter-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
+ "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.0"
+ }
+ },
+ "p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true
+ },
+ "pac-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==",
+ "dev": true,
+ "requires": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.5",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.4"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ }
+ }
+ }
+ },
+ "pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "dev": true,
+ "requires": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "peek-readable": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.1.0.tgz",
+ "integrity": "sha512-Tq2I+yoz6Xq3S09E2PyjzOy/oYuNg5v7wyjmrw7OQYSKc7QnDs63q4RXFXraMoI6LZyiEOJ/wDEYzGDPhWwNPA==",
+ "dev": true
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true
+ },
+ "piscina": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz",
+ "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==",
+ "dev": true,
+ "requires": {
+ "nice-napi": "^1.0.2"
+ }
+ },
+ "pptr-testing-library": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/pptr-testing-library/-/pptr-testing-library-0.8.0.tgz",
+ "integrity": "sha512-QcaSiD3sLuxNgfl/wkv/tFB3x3bSZOPieVbmiPyoJMIWv93O2eAOhPnq8uv8qqX22o8DK+gxWgovc1XMvaioGQ==",
+ "dev": true,
+ "requires": {
+ "@testing-library/dom": "^7.31.0",
+ "wait-for-expect": "^3.0.2"
+ }
+ },
+ "pretty-format": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+ "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
+ }
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "proxy-agent": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
+ "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.3",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.0.1",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.2"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ }
+ },
+ "lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true
+ }
+ }
+ },
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "puppeteer": {
+ "version": "22.12.1",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.12.1.tgz",
+ "integrity": "sha512-1GxY8dnEnHr1SLzdSDr0FCjM6JQfAh2E2I/EqzeF8a58DbGVk9oVjj4lFdqNoVbpgFSpAbz7VER9St7S1wDpNg==",
+ "dev": true,
+ "requires": {
+ "@puppeteer/browsers": "2.2.3",
+ "cosmiconfig": "^9.0.0",
+ "devtools-protocol": "0.0.1299070",
+ "puppeteer-core": "22.12.1"
+ },
+ "dependencies": {
+ "devtools-protocol": {
+ "version": "0.0.1299070",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz",
+ "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==",
+ "dev": true
+ }
+ }
+ },
+ "puppeteer-core": {
+ "version": "22.12.1",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.12.1.tgz",
+ "integrity": "sha512-XmqeDPVdC5/3nGJys1jbgeoZ02wP0WV1GBlPtr/ULRbGXJFuqgXMcKQ3eeNtFpBzGRbpeoCGWHge1ZWKWl0Exw==",
+ "dev": true,
+ "requires": {
+ "@puppeteer/browsers": "2.2.3",
+ "chromium-bidi": "0.5.24",
+ "debug": "^4.3.5",
+ "devtools-protocol": "0.0.1299070",
+ "ws": "^8.17.1"
+ },
+ "dependencies": {
+ "devtools-protocol": {
+ "version": "0.0.1299070",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz",
+ "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==",
+ "dev": true
+ },
+ "ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "requires": {}
+ }
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+ "dev": true
+ },
+ "quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
"dev": true,
- "hasInstallScript": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "requires": {
+ "readable-stream": "^3.6.0"
}
},
- "node_modules/dom-accessibility-api": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
"dev": true
},
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true
},
- "node_modules/has-flag": {
+ "resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "requires": {
+ "lowercase-keys": "^2.0.0"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true
},
- "node_modules/lighthouse": {
- "resolved": "../node_modules/.pnpm/lighthouse@10.2.0/node_modules/lighthouse",
- "link": true
+ "robots-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz",
+ "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==",
+ "dev": true
},
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "run-applescript": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
- "bin": {
- "lz-string": "bin/bin.js"
+ "requires": {
+ "queue-microtask": "^1.2.2"
}
},
- "node_modules/node-fetch": {
- "resolved": "../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch",
- "link": true
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
},
- "node_modules/open": {
- "resolved": "../node_modules/.pnpm/open@8.4.2/node_modules/open",
- "link": true
+ "semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true
},
- "node_modules/pptr-testing-library": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/pptr-testing-library/-/pptr-testing-library-0.7.0.tgz",
- "integrity": "sha512-NYt6XQzAoWCC/WKkBWW40Uth+MBRKmdYr+3NdrF4gTgBeK31zNQN6gFvmTubjZY5mUVdHmPns60jTs7PZuwg2A==",
+ "semver-regex": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
+ "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
+ "dev": true
+ },
+ "semver-truncate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz",
+ "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==",
"dev": true,
- "dependencies": {
- "@testing-library/dom": "^7.31.0",
- "wait-for-expect": "^3.0.2"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "puppeteer": "*"
+ "requires": {
+ "semver": "^7.3.5"
}
},
- "node_modules/pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dev": true,
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": ">= 10"
+ "requires": {
+ "shebang-regex": "^1.0.0"
}
},
- "node_modules/puppeteer": {
- "resolved": "../node_modules/.pnpm/puppeteer@19.11.1/node_modules/puppeteer",
- "link": true
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
},
- "node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
- "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true
+ },
+ "socks": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "requires": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
}
},
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "dev": true
- },
- "node_modules/wait-for-expect": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz",
- "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==",
- "dev": true
- }
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "socks-proxy-agent": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+ "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.22.13",
- "chalk": "^2.4.2"
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "debug": "^4.3.4"
}
}
}
},
- "@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ }
},
- "@babel/highlight": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "sort-keys-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+ "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "sort-keys": "^1.0.0"
}
},
- "@babel/runtime": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
- "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ },
+ "speedline-core": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz",
+ "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==",
"dev": true,
"requires": {
- "regenerator-runtime": "^0.14.0"
+ "@types/node": "*",
+ "image-ssim": "^0.2.0",
+ "jpeg-js": "^0.4.1"
}
},
- "@babel/runtime-corejs3": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz",
- "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==",
+ "sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true
+ },
+ "streamx": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
+ "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
"dev": true,
"requires": {
- "core-js-pure": "^3.30.2",
- "regenerator-runtime": "^0.14.0"
+ "bare-events": "^2.2.0",
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
}
},
- "@jest/types": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
+ "safe-buffer": "~5.2.0"
}
},
- "@swc/cli": {
- "version": "file:../node_modules/.pnpm/@swc+cli@0.1.62_@swc+core@1.3.58/node_modules/@swc/cli",
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
"requires": {
- "@mole-inc/bin-wrapper": "^8.0.1",
- "@swc/cli": "^0.1.43",
- "@swc/core": "^1.2.66",
- "@swc/jest": "^0.1.2",
- "@types/jest": "^26.0.23",
- "@types/node": "^12.19.16",
- "@types/semver": "^7.3.13",
- "chokidar": "^3.5.1",
- "commander": "^7.1.0",
- "deepmerge": "^4.2.2",
- "fast-glob": "^3.2.5",
- "jest": "^27.0.3",
- "nano-staged": "^0.4.5",
- "prettier": "^2.5.1",
- "semver": "^7.3.8",
- "simple-git-hooks": "^2.7.0",
- "slash": "3.0.0",
- "source-map": "^0.7.3",
- "ts-jest": "^27.0.4",
- "typescript": "~4.3.2"
- }
- },
- "@swc/core": {
- "version": "file:../node_modules/.pnpm/@swc+core@1.3.58/node_modules/@swc/core",
- "requires": {
- "@babel/compat-data": "^7.17.0",
- "@babel/core": "^7.13.16",
- "@babel/generator": "^7.18.13",
- "@babel/plugin-proposal-class-properties": "^7.13.0",
- "@babel/plugin-proposal-decorators": "^7.13.15",
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
- "@babel/preset-env": "^7.13.15",
- "@babel/preset-react": "^7.13.13",
- "@babel/preset-typescript": "^7.13.0",
- "@babel/types": "^7.14.0",
- "@napi-rs/cli": "^2.14.1",
- "@swc/core": "=1.2.220",
- "@swc/core-darwin-arm64": "1.3.58",
- "@swc/core-darwin-x64": "1.3.58",
- "@swc/core-linux-arm-gnueabihf": "1.3.58",
- "@swc/core-linux-arm64-gnu": "1.3.58",
- "@swc/core-linux-arm64-musl": "1.3.58",
- "@swc/core-linux-x64-gnu": "1.3.58",
- "@swc/core-linux-x64-musl": "1.3.58",
- "@swc/core-win32-arm64-msvc": "1.3.58",
- "@swc/core-win32-ia32-msvc": "1.3.58",
- "@swc/core-win32-x64-msvc": "1.3.58",
- "@swc/helpers": "^0.5.0",
- "@swc/plugin-jest": "latest",
- "@taplo/cli": "^0.3.2",
- "@types/jest": "^28.1.4",
- "@types/node": "^14.14.41",
- "@types/terser": "^3.12.0",
- "acorn": "^8.6.0",
- "acorn-jsx": "^5.3.2",
- "axios": "^0.21.1",
- "babel-plugin-transform-node-env-inline": "^0.4.3",
- "benchmark": "^2.1.4",
- "bootstrap": "^5.2.1",
- "class-validator": "^0.13.1",
- "core-js": "^2.6.11",
- "core-js-compat": "^3.21.1",
- "cross-env": "^7.0.3",
- "cspell": "^5.12.3",
- "expect": "^27.4.2",
- "glob": "^8.0.3",
- "husky": "^7.0.2",
- "jest": "^28.1.2",
- "js-beautify": "^1.14.3",
- "lint-staged": "^12.3.6",
- "lodash": "^4.17.21",
- "mocha": "^9.1.3",
- "npm-run-all": "^4.1.5",
- "prettier": "^2.6.2",
- "progress": "^2.0.3",
- "prop-types": "^15.7.2",
- "react": "^17.0.2",
- "reflect-metadata": "^0.1.13",
- "regenerator-runtime": "^0.13.9",
- "source-map": "^0.7.3",
- "source-map-support": "^0.5.19",
- "sourcemap-validator": "^2.1.0",
- "swc-plugin-coverage-instrument": "^0.0.12",
- "terser": "^5.7.1",
- "ts-node": "^10.5.0",
- "typescript": "^4.5.2"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
- "@testing-library/dom": {
- "version": "7.31.2",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
- "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/runtime": "^7.12.5",
- "@types/aria-query": "^4.2.0",
- "aria-query": "^4.2.2",
- "chalk": "^4.1.0",
- "dom-accessibility-api": "^0.5.6",
- "lz-string": "^1.4.4",
- "pretty-format": "^26.6.2"
+ "ansi-regex": "^5.0.1"
}
},
- "@types/aria-query": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
- "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
"dev": true
},
- "@types/istanbul-lib-coverage": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
- "@types/istanbul-lib-report": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
- "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "strip-outer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz",
+ "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==",
+ "dev": true
+ },
+ "strtok3": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz",
+ "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "*"
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^5.0.0"
}
},
- "@types/istanbul-reports": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
- "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "@types/istanbul-lib-report": "*"
+ "has-flag": "^4.0.0"
}
},
- "@types/node": {
- "version": "20.9.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
- "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
+ "tar-fs": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz",
+ "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==",
"dev": true,
"requires": {
- "undici-types": "~5.26.4"
+ "bare-fs": "^2.1.1",
+ "bare-path": "^2.1.0",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
}
},
- "@types/yargs": {
- "version": "15.0.18",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.18.tgz",
- "integrity": "sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==",
+ "tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"dev": true,
"requires": {
- "@types/yargs-parser": "*"
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
}
},
- "@types/yargs-parser": {
- "version": "21.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
- "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "text-decoder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz",
+ "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==",
+ "dev": true,
+ "requires": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "third-party-web": {
+ "version": "0.24.3",
+ "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.24.3.tgz",
+ "integrity": "sha512-imE6hXZyaCeGinGFCvpWsv0oelsEaufSG39qYBQhp3urGq4OLOtsuEddf3XgKxmAAczBD/I1Tnp8L3gJ3ksTuQ==",
"dev": true
},
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"dev": true
},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "tldts-core": {
+ "version": "6.1.30",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.30.tgz",
+ "integrity": "sha512-CPlL58/oIvnovk5KTHIho/B0bMuvPkZrcC7f4pfQH+BBPY/mMz6CekiIdhjFxk9XZZJNirbwh1rRTSo4e5KXQA==",
+ "dev": true
+ },
+ "tldts-icann": {
+ "version": "6.1.30",
+ "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-6.1.30.tgz",
+ "integrity": "sha512-1ekjlDThO9urnJvPJ533AS/ZY9O2E7AVNmy7yX4QDQzATuvDv8qeUuuPsc+nWoinXila5LoQVEmqOR310q34BQ==",
"dev": true,
"requires": {
- "color-convert": "^2.0.1"
+ "tldts-core": "^6.1.30"
}
},
- "aria-query": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
- "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.10.2",
- "@babel/runtime-corejs3": "^7.10.2"
+ "is-number": "^7.0.0"
}
},
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "token-types": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
+ "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
"dev": true,
"requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
}
},
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "trim-repeated": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz",
+ "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==",
"dev": true,
"requires": {
- "color-name": "~1.1.4"
+ "escape-string-regexp": "^5.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true
+ }
}
},
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
- "core-js-pure": {
- "version": "3.33.2",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz",
- "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==",
- "dev": true
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
},
- "dom-accessibility-api": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
- "dev": true
+ "unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^2.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true
},
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "urlpattern-polyfill": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
"dev": true
},
- "lighthouse": {
- "version": "file:../node_modules/.pnpm/lighthouse@10.2.0/node_modules/lighthouse",
- "requires": {
- "@build-tracker/cli": "^1.0.0-beta.15",
- "@esbuild-kit/esm-loader": "^2.1.1",
- "@jest/fake-timers": "^28.1.0",
- "@rollup/plugin-alias": "^3.1.2",
- "@rollup/plugin-commonjs": "^20.0.0",
- "@rollup/plugin-dynamic-import-vars": "^1.1.1",
- "@rollup/plugin-json": "^4.1.0",
- "@rollup/plugin-node-resolve": "^13.0.4",
- "@rollup/plugin-typescript": "^8.2.5",
- "@sentry/node": "^6.17.4",
- "@stadtlandnetz/rollup-plugin-postprocess": "^1.1.0",
- "@testing-library/preact": "^3.1.1",
- "@testing-library/preact-hooks": "^1.1.0",
- "@types/archiver": "^2.1.2",
- "@types/chrome": "^0.0.154",
- "@types/configstore": "^4.0.0",
- "@types/cpy": "^5.1.0",
- "@types/debug": "^4.1.7",
- "@types/eslint": "^8.2.1",
- "@types/estree": "^0.0.50",
- "@types/gh-pages": "^2.0.0",
- "@types/google.analytics": "0.0.39",
- "@types/jpeg-js": "^0.3.7",
- "@types/jsdom": "^16.2.13",
- "@types/lodash": "^4.14.178",
- "@types/mocha": "^9.0.0",
- "@types/node": "*",
- "@types/pako": "^1.0.1",
- "@types/resize-observer-browser": "^0.1.1",
- "@types/semver": "^5.5.0",
- "@types/tabulator-tables": "^4.9.1",
- "@types/ws": "^7.0.0",
- "@types/yargs": "^17.0.8",
- "@types/yargs-parser": "^20.2.1",
- "@typescript-eslint/eslint-plugin": "^5.48.0",
- "@typescript-eslint/parser": "^5.48.0",
- "acorn": "^8.5.0",
- "angular": "^1.7.4",
- "archiver": "^3.0.0",
- "axe-core": "4.7.0",
- "c8": "^7.11.3",
- "chalk": "^2.4.1",
- "chrome-devtools-frontend": "1.0.1070764",
- "chrome-launcher": "^0.15.2",
- "concurrently": "^6.4.0",
- "configstore": "^5.0.1",
- "conventional-changelog-cli": "^2.1.1",
- "cpy": "^8.1.2",
- "cross-env": "^7.0.2",
- "csp_evaluator": "1.1.1",
- "csv-validator": "^0.0.3",
- "devtools-protocol": "0.0.1130274",
- "enquirer": "^2.3.6",
- "es-main": "^1.0.2",
- "eslint": "^8.4.1",
- "eslint-config-google": "^0.14.0",
- "eslint-formatter-codeframe": "^7.32.1",
- "eslint-plugin-import": "^2.25.3",
- "eslint-plugin-local-rules": "1.1.0",
- "event-target-shim": "^6.0.2",
- "expect": "^28.1.0",
- "firebase": "^9.0.2",
- "gh-pages": "^2.0.1",
- "glob": "^7.1.3",
- "http-link-header": "^1.1.1",
- "idb-keyval": "2.2.0",
- "intl-messageformat": "^4.4.0",
- "intl-messageformat-parser": "^1.8.1",
- "jest-mock": "^27.3.0",
- "jest-snapshot": "^28.1.0",
- "jpeg-js": "^0.4.4",
- "js-library-detector": "^6.6.0",
- "jsdom": "^12.2.0",
- "lighthouse-logger": "^1.3.0",
- "lighthouse-plugin-publisher-ads": "1.5.7-beta",
- "lighthouse-plugin-soft-navigation": "^1.0.1",
- "lighthouse-stack-packs": "1.10.0",
- "lodash": "^4.17.21",
- "lookup-closest-locale": "6.2.0",
- "magic-string": "^0.25.7",
- "metaviewport-parser": "0.3.0",
- "mime-types": "^2.1.30",
- "mocha": "^10.0.0",
- "node-fetch": "^2.6.1",
- "npm-run-posix-or-windows": "^2.0.2",
- "open": "^8.4.0",
- "pako": "^2.0.3",
- "parse-cache-control": "1.0.1",
- "preact": "^10.7.2",
- "pretty-json-stringify": "^0.0.2",
- "ps-list": "^8.0.0",
- "puppeteer": "^20.1.0",
- "puppeteer-core": "^20.1.0",
- "resolve": "^1.20.0",
- "robots-parser": "^3.0.0",
- "rollup": "^2.52.7",
- "rollup-plugin-node-resolve": "^5.2.0",
- "rollup-plugin-polyfill-node": "^0.12.0",
- "rollup-plugin-replace": "^2.2.0",
- "rollup-plugin-shim": "^1.0.0",
- "rollup-plugin-terser": "^7.0.2",
- "semver": "^5.3.0",
- "speedline-core": "^1.4.3",
- "tabulator-tables": "^4.9.3",
- "terser": "^5.3.8",
- "testdouble": "^3.16.8",
- "third-party-web": "^0.20.2",
- "typed-query-selector": "^2.6.1",
- "typescript": "^5.0.4",
- "wait-for-expect": "^3.0.2",
- "webtreemap-cdt": "^3.2.1",
- "ws": "^7.0.0",
- "yargs": "^17.3.1",
- "yargs-parser": "^21.0.0"
- }
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
},
- "lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "wait-for-expect": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz",
+ "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==",
"dev": true
},
- "node-fetch": {
- "version": "file:../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch",
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"requires": {
- "abort-controller": "^3.0.0",
- "abortcontroller-polyfill": "^1.7.1",
- "busboy": "^1.4.0",
- "c8": "^7.7.2",
- "chai": "^4.3.4",
- "chai-as-promised": "^7.1.1",
- "chai-iterator": "^3.0.2",
- "chai-string": "^1.5.0",
- "coveralls": "^3.1.0",
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.4",
- "form-data": "^4.0.0",
- "formdata-node": "^4.2.4",
- "formdata-polyfill": "^4.0.10",
- "mocha": "^9.1.3",
- "p-timeout": "^5.0.0",
- "stream-consumers": "^1.0.1",
- "tsd": "^0.14.0",
- "xo": "^0.39.1"
+ "isexe": "^2.0.0"
}
},
- "open": {
- "version": "file:../node_modules/.pnpm/open@8.4.2/node_modules/open",
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
"requires": {
- "@types/node": "^15.0.0",
- "ava": "^3.15.0",
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0",
- "tsd": "^0.14.0",
- "xo": "^0.39.1"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
- "pptr-testing-library": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/pptr-testing-library/-/pptr-testing-library-0.7.0.tgz",
- "integrity": "sha512-NYt6XQzAoWCC/WKkBWW40Uth+MBRKmdYr+3NdrF4gTgBeK31zNQN6gFvmTubjZY5mUVdHmPns60jTs7PZuwg2A==",
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
"requires": {
- "@testing-library/dom": "^7.31.0",
- "wait-for-expect": "^3.0.2"
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
}
},
- "pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- }
+ "requires": {}
},
- "puppeteer": {
- "version": "file:../node_modules/.pnpm/puppeteer@19.11.1/node_modules/puppeteer",
- "requires": {
- "@puppeteer/browsers": "0.5.0",
- "cosmiconfig": "8.1.3",
- "https-proxy-agent": "5.0.1",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "puppeteer-core": "19.11.1"
- }
+ "xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "dev": true
},
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
- "regenerator-runtime": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
- "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
"dev": true
},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"requires": {
- "has-flag": "^4.0.0"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
}
},
- "undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true
},
- "wait-for-expect": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz",
- "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==",
+ "yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"dev": true
}
}
diff --git a/centreon/lighthouse/package.json b/centreon/lighthouse/package.json
index 84817c7f46..90f0c551c9 100644
--- a/centreon/lighthouse/package.json
+++ b/centreon/lighthouse/package.json
@@ -3,20 +3,22 @@
"version": "22.4.0",
"description": "This is handle Lighthouse report",
"scripts": {
+ "update:deps": "pnpx npm-check-updates -i --format group",
"start:docker": "docker run -d -p 4000:80 --name centreon-dev docker.centreon.com/centreon/centreon-web-alma9:develop",
"kill:docker": "docker stop centreon-dev && docker rm centreon-dev",
- "run:lighthouse": "swc src/ -d build && node --experimental-modules --es-module-specifier-resolution=node ./build/lighthouseReport.js",
+ "run:lighthouse": "swc src/ -d build --strip-leading-paths && node --import=extensionless/register ./build/lighthouseReport.js",
"start": "npm run start:docker && npm run run:lighthouse && npm run kill:docker",
"eslint": "eslint . --ext .js,.jsx,.ts,.tsx",
"eslint:fix": "pnpm eslint --fix"
},
"type": "module",
"devDependencies": {
- "@swc/cli": "^0.1.61",
- "@swc/core": "^1.3.35",
- "lighthouse": "^10.0.0",
- "open": "^8.4.0",
- "pptr-testing-library": "^0.7.0",
- "puppeteer": "^19.7.0"
+ "@swc/cli": "^0.4.0",
+ "@swc/core": "^1.6.6",
+ "extensionless": "^1.9.9",
+ "lighthouse": "^12.1.0",
+ "open": "^10.1.0",
+ "pptr-testing-library": "^0.8.0",
+ "puppeteer": "^22.12.1"
}
}
diff --git a/centreon/lighthouse/tsconfig.json b/centreon/lighthouse/tsconfig.json
index 152b936ead..c75f79c2f2 100644
--- a/centreon/lighthouse/tsconfig.json
+++ b/centreon/lighthouse/tsconfig.json
@@ -4,10 +4,11 @@
"baseUrl": "./src",
"typeRoots": ["./node_modules/@types"],
"module": "nodenext",
+ "moduleResolution": "nodenext",
"outDir": "build",
"esModuleInterop": true,
"resolveJsonModule": true
},
"include": ["./**/*.ts"],
"exclude": ["node_modules"]
-}
\ No newline at end of file
+}
diff --git a/centreon/lua/centreon-cloud-notifications.lua b/centreon/lua/centreon-cloud-notifications.lua
index 662d67ad3d..a45d0f1340 100644
--- a/centreon/lua/centreon-cloud-notifications.lua
+++ b/centreon/lua/centreon-cloud-notifications.lua
@@ -142,9 +142,11 @@ local function get_configuration()
if not ok then
broker_log:error(0, "Unable to call the API to get the configuration.: " .. tostring(err))
end
- update_conf(full.resp)
local resp_code = c:getinfo(cURL.INFO_RESPONSE_CODE)
broker_log:info(2, "Response code: " .. resp_code)
+ if resp_code == 200 then
+ update_conf(full.resp)
+ end
if resp_code == 401 then
broker_log:info(1, "Expired token. Trying to get a new one")
login()
@@ -165,7 +167,7 @@ end
-- notification ID.
-- @param id The notification ID we know from the first API configuration.
-- @return A table with the notification content.
-local function get_notification(id)
+local function get_notification_rule(id)
local content = {}
local loop = true
while loop do
@@ -202,6 +204,87 @@ local function get_notification(id)
return content
end
+
+--- Get the notification configuration from the API. The parameter is the
+-- notification ID.
+-- @param id The notification ID we know from the first API configuration.
+-- @return A table with the notification content.
+local function get_notification(id)
+ local content = {}
+ local loop = true
+ while loop do
+ local c = cURL.easy{
+ url = data.base_url .. "/configuration/notifications/" .. id,
+ post = false,
+ httpheader = {
+ 'Content-Type: application/json',
+ 'x-AUTH-TOKEN: ' .. tostring(data.token),
+ },
+ writefunction = function(resp)
+ content = broker.json_decode(resp)
+ if content then
+ broker_log:info(2, resp)
+ else
+ broker_log:error(0, "Unable to decode the message '" .. tostring(resp) .. "'")
+ end
+ end,
+ }
+ ok, err = c:perform()
+ if not ok then
+ broker_log:error(0, "Unable to call the API to get the notif " .. id .. ": " .. tostring(err))
+ end
+ local resp_code = c:getinfo(cURL.INFO_RESPONSE_CODE)
+ broker_log:info(2, "response code: " .. resp_code)
+ if resp_code == 401 then
+ broker_log:info(1, "Expired token. Trying to get a new one")
+ login()
+ else
+ loop = false
+ end
+ c:close()
+ end
+ return content
+end
+
+--- Get the time periods from the API.
+-- @return A table with the time periods content.
+local function get_time_period(id)
+ local content = {}
+ local loop = true
+ while loop do
+ local c = cURL.easy{
+ url = data.base_url .. "/configuration/timeperiods/" .. id,
+ post = false,
+ httpheader = {
+ 'Content-Type: application/json',
+ 'x-AUTH-TOKEN: ' .. tostring(data.token),
+ },
+ writefunction = function(resp)
+ content = broker.json_decode(resp)
+ if content then
+ broker_log:info(2, resp)
+ else
+ broker_log:error(0, "Unable to decode the message '" .. tostring(resp) .. "'")
+ end
+ end,
+ }
+ ok, err = c:perform()
+ if not ok then
+ broker_log:error(0, "Unable to call the API to get time period : " .. tostring(err))
+ end
+ local resp_code = c:getinfo(cURL.INFO_RESPONSE_CODE)
+ broker_log:info(2, "response code: " .. resp_code)
+ if resp_code == 401 then
+ broker_log:info(1, "Expired token. Trying to get a new one")
+ login()
+ else
+ loop = false
+ end
+ c:close()
+ end
+ return content
+end
+
--- Fill a table with various key from the received event and the corresponding
-- resource configuration.
-- @param event A service status or a host status.
@@ -382,6 +465,12 @@ function init(conf)
end
end
+local function is_notifiable(notification)
+ local notif = get_notification(notification.notification_id)
+ local time_period = get_time_period(notif.timeperiod.id)
+ return time_period.in_period == true
+end
+
function write(d)
local now = os.time()
if now >= data.last_refresh + data.refresh_delay then
@@ -392,7 +481,7 @@ function write(d)
-- PbServiceStatus
if d._type == 65565 then
-- Notification is done only on resources not in downtime and not acknowledged.
- if d.scheduled_downtime_depth == 0 and d.acknowledgement_type == 0 then
+ if (d.scheduled_downtime_depth == 0 or d.scheduled_downtime_depth == nil) and (d.acknowledgement_type == 0 or d.acknowledgement_type == nil) then
-- Look for the host containing this service in the notification configuration
local host = data.host[d.host_id]
if host then
@@ -415,14 +504,22 @@ function write(d)
broker_log:info(2, "Notification on service (" .. d.host_id .. "," .. d.service_id ..
") --- state: " .. d.state ..
" ; notification_id: " .. svc.notification_id)
- local notif = get_notification(svc.notification_id)
+ local notif = get_notification_rule(svc.notification_id)
+ if is_notifiable(notif) == false then
+ goto continue
+ end
+
if notif and notif.channels and notif.channels.email then
notif = notif.channels.email
send_mail(notif, d, svc, hostname)
end
end
end
+
+ ::continue::
end
+ else
+ broker_log:info(2, "host " .. d.host_id .. " not found")
end
else
if d.scheduled_downtime_depth > 0 then
@@ -434,7 +531,7 @@ function write(d)
-- PbHostStatus
elseif d._type == 65568 then
-- Notification is done only on resources not in downtime and not acknowledged.
- if d.scheduled_downtime_depth == 0 and d.acknowledgement_type == 0 then
+ if (d.scheduled_downtime_depth == 0 or d.scheduled_downtime_depth == nil) and (d.acknowledgement_type == 0 or d.acknowledgement_type == nil) then
-- Looking for the host in the notification configuration
local hst = data.host[d.host_id]
-- We check that
@@ -454,7 +551,12 @@ function write(d)
broker_log:info(2, "Notification on host " .. d.host_id ..
" --- notification_id: " .. hnotif.notification_id ..
" state: " .. d.state)
- local notif = get_notification(hnotif.notification_id)
+
+ local notif = get_notification_rule(hnotif.notification_id)
+ if is_notifiable(notif) == false then
+ goto continue
+ end
+
if notif.channels and notif.channels.email then
notif = notif.channels.email
local host = {
@@ -464,7 +566,11 @@ function write(d)
send_mail(notif, d, host)
end
end
+
+ ::continue::
end
+ else
+ broker_log:info(2, "host " .. d.host_id .. " not found")
end
else
if d.scheduled_downtime_depth > 0 then
diff --git a/centreon/package.json b/centreon/package.json
index e25fad8a1e..8c2e47711b 100644
--- a/centreon/package.json
+++ b/centreon/package.json
@@ -1,186 +1,170 @@
{
- "name": "centreon",
- "version": "23.4.0",
- "description": "centreon web package",
- "scripts": {
- "update:deps": "pnpx npm-check-updates -i --format group",
- "widgets:build": "(cd www/widgets && pnpm build $WIDGETS)",
- "widgets:build:dev": "(cd www/widgets && pnpm build:dev $WIDGETS)",
- "widgets:watch": "(cd www/widgets && pnpm watch $WIDGETS)",
- "widgets:build:analyze": "(cd www/widgets && pnpm build:analyze)",
- "centreon:build": "rspack build -c ./rspack.config.prod.js",
- "centreon:build:analyze": "rspack build -c ./rspack.config.prod.js --analyze",
- "centreon:build:dev": "rspack serve -c ./rspack.config.dev.js",
- "centreon:watch": "rspack serve -c ./rspack.config.dev.js",
- "build": "pnpm widgets:build && pnpm centreon:build",
- "build:dev": "pnpm widgets:build:dev && pnpm centreon:build:dev",
- "build:watch": "pnpm centreon:watch & pnpm widgets:watch",
- "build:analyze": "pnpm widgets:build:analyze && pnpm centreon:build:analyze",
- "eslint": "eslint ./www/front_src --ext .js,.jsx,.ts,.tsx --max-warnings 0",
- "eslint:fix": "pnpm eslint --fix",
- "test": "jest",
- "test:watch": "pnpm test --watch",
- "test:coverage": "jest --coverage",
- "cypress:cli": "./cypress/scripts/cypress-cli.sh",
- "cypress:cli:updateSnapshot": "cypress run --component --browser=chrome --env updateSnapshots=true",
- "cypress:ui": "cypress open --component --browser=chrome",
- "cypress:run": "cypress run --component --browser=chrome",
- "cypress:run:coverage": "cypress run --component --browser=chrome --env codeCoverageTasksRegistered=true",
- "generate:lockfile:analysis": "npm shrinkwrap && mv ./npm-shrinkwrap.json ./package-lock.json",
- "preview:api:doc": "pnpm --package=@redocly/cli dlx openapi preview-docs ./doc/API/centreon-api.yaml"
- },
- "devDependencies": {
- "@4tw/cypress-drag-drop": "^2.2.5",
- "@centreon/js-config": "workspace:*",
- "@cypress/code-coverage": "^3.12.38",
- "@cypress/react": "^8.0.0",
- "@cypress/webpack-dev-server": "^3.8.0",
- "@cypress/webpack-preprocessor": "^6.0.1",
- "@mui/utils": "^5.15.14",
- "@rspack/cli": "^0.6.3",
- "@rspack/core": "^0.6.3",
- "@rspack/plugin-react-refresh": "^0.6.3",
- "@svgr/webpack": "^8.1.0",
- "@swc/core": "^1.4.17",
- "@swc/core-linux-x64-gnu": "^1.5.2",
- "@swc/jest": "^0.2.36",
- "@testing-library/cypress": "^10.0.1",
- "@testing-library/dom": "^9.3.4",
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^14.2.1",
- "@testing-library/react-hooks": "^8.0.1",
- "@testing-library/user-event": "^14.5.2",
- "@types/cypress-image-snapshot": "^3.1.9",
- "@types/d3-array": "^3.2.1",
- "@types/ramda": "^0.29.9",
- "@types/react": "^18.3.1",
- "@types/react-grid-layout": "^1.3.5",
- "@types/testing-library__cypress": "^5.0.13",
- "@typescript-eslint/eslint-plugin": "^6.18.1",
- "@typescript-eslint/parser": "^6.18.1",
- "chromatic": "^7.4.0",
- "css-loader": "^6.9.0",
- "cypress": "^13.8.1",
- "cypress-msw-interceptor": "2.2.0",
- "cypress-plugin-tab": "^1.0.5",
- "cypress-real-events": "^1.12.0",
- "cypress-rspack-dev-server": "^0.0.5",
- "eslint": "^8.56.0",
- "eslint-config-airbnb": "19.0.4",
- "eslint-config-prettier": "^9.1.0",
- "eslint-import-resolver-alias": "1.1.2",
- "eslint-plugin-cypress": "^2.15.1",
- "eslint-plugin-hooks": "^0.4.3",
- "eslint-plugin-import": "^2.29.1",
- "eslint-plugin-jest": "^27.6.3",
- "eslint-plugin-jsx-a11y": "^6.8.0",
- "eslint-plugin-prefer-arrow-functions": "^3.3.2",
- "eslint-plugin-prettier": "^5.1.3",
- "eslint-plugin-react": "7.34.1",
- "eslint-plugin-react-hooks": "^4.6.2",
- "eslint-plugin-sort-keys-fix": "^1.1.2",
- "eslint-plugin-typescript-sort-keys": "^3.2.0",
- "identity-obj-proxy": "^3.0.0",
- "istanbul": "^0.4.5",
- "jest": "^28.1.3",
- "jest-environment-jsdom": "^28.1.3",
- "jest-fetch-mock": "^3.0.3",
- "jest-junit": "^14.0.1",
- "jsdom": "^23.2.0",
- "mochawesome": "^7.1.3",
- "mockdate": "^3.0.5",
- "msw": "1.3.2",
- "nyc": "^15.1.0",
- "prettier": "^3.2.5",
- "process": "^0.11.10",
- "react-beautiful-dnd-test-utils": "^4.1.1",
- "react-mock-router": "^1.0.15",
- "react-refresh": "^0.14.2",
- "resize-observer-polyfill": "^1.5.1",
- "resolve-url-loader": "^5.0.0",
- "style-loader": "^3.3.4",
- "swc-loader": "^0.2.6",
- "swc-plugin-coverage-instrument": "^0.0.21",
- "typescript": "^5.4.5",
- "webpack-merge": "^5.10.0"
- },
- "dependencies": {
- "@centreon/ui": "workspace:*",
- "@centreon/ui-context": "workspace:*",
- "@dnd-kit/core": "^6.1.0",
- "@dnd-kit/sortable": "^7.0.2",
- "@dnd-kit/utilities": "^3.2.2",
- "@emotion/react": "^11.11.4",
- "@emotion/styled": "^11.11.5",
- "@lexical/html": "^0.12.6",
- "@module-federation/utilities": "^3.0.16",
- "@mui/icons-material": "^5.15.15",
- "@mui/lab": "5.0.0-alpha.170",
- "@mui/material": "^5.15.15",
- "@mui/styles": "^5.15.15",
- "@mui/system": "^5.15.15",
- "@mui/x-date-pickers": "^6.19.0",
- "@react-spring/web": "^9.7.3",
- "@simonsmith/cypress-image-snapshot": "8.1.2",
- "@tanstack/react-query": "^5.32.1",
- "@tanstack/react-query-devtools": "^5.32.1",
- "@visx/curve": "^3.3.0",
- "@visx/responsive": "^3.10.2",
- "@visx/scale": "^3.5.0",
- "@visx/shape": "^3.5.0",
- "@visx/threshold": "^3.5.0",
- "@visx/visx": "3.10.2",
- "axios": "^1.6.8",
- "classnames": "^2.5.1",
- "clsx": "^2.1.1",
- "d3-array": "3.2.4",
- "d3-color": "^3.1.0",
- "d3-format": "^3.1.0",
- "d3-interpolate": "^3.0.1",
- "d3-scale": "^4.0.2",
- "d3-time": "^3.1.0",
- "dayjs": "^1.11.11",
- "dom-serializer": "^2.0.0",
- "dom-to-image": "^2.6.0",
- "dompurify": "^3.1.2",
- "file-saver": "^2.0.5",
- "formik": "^2.4.5",
- "html-react-parser": "^5.1.10",
- "i18next": "^23.11.3",
- "intl-pluralrules": "^2.0.1",
- "jotai": "2.8.0",
- "jotai-suspense": "^0.2.0",
- "notistack": "^3.0.1",
- "numeral": "^2.0.6",
- "pluralize": "^8.0.0",
- "ramda": "0.29.1",
- "react": "^18.2.0",
- "react-cookie": "^7.1.4",
- "react-dom": "^18.2.0",
- "react-grid-layout": "^1.4.4",
- "react-i18next": "^14.1.1",
- "react-material-ui-carousel": "^3.4.2",
- "react-resizable": "^3.0.5",
- "react-router": "^6.23.0",
- "react-router-dom": "^6.23.0",
- "react-select": "^5.8.0",
- "react-spring": "^9.7.3",
- "string-argv": "^0.3.2",
- "ts.data.json": "^2.2.0",
- "tss-react": "^4.9.10",
- "use-deep-compare-effect": "^1.8.1",
- "yup": "^1.4.0"
- },
- "jest-junit": {
- "suiteName": "jest tests",
- "output": "./jest-test-results.xml"
- },
- "workspaces": [
- "packages/*",
- "www/widgets"
- ],
- "msw": {
- "workerDirectory": "www/front_src/public"
- },
- "baseCodeCoveragePercentage": 90
-}
\ No newline at end of file
+ "name": "centreon",
+ "version": "23.4.0",
+ "description": "centreon web package",
+ "scripts": {
+ "update:deps": "pnpx npm-check-updates -i --format group",
+ "widgets:build": "(cd www/widgets && pnpm build $WIDGETS)",
+ "widgets:build:dev": "(cd www/widgets && pnpm build:dev $WIDGETS)",
+ "widgets:watch": "(cd www/widgets && pnpm watch $WIDGETS)",
+ "widgets:build:analyze": "(cd www/widgets && pnpm build:analyze)",
+ "centreon:build": "rspack build -c ./rspack.config.prod.js",
+ "centreon:build:analyze": "rspack build -c ./rspack.config.prod.js --analyze",
+ "centreon:build:dev": "rspack serve -c ./rspack.config.dev.js",
+ "centreon:watch": "rspack serve -c ./rspack.config.dev.js",
+ "build": "pnpm widgets:build && pnpm centreon:build",
+ "build:dev": "pnpm widgets:build:dev && pnpm centreon:build:dev",
+ "build:watch": "pnpm centreon:watch & pnpm widgets:watch",
+ "build:analyze": "pnpm widgets:build:analyze && pnpm centreon:build:analyze",
+ "lint": "biome check ./www/front_src --error-on-warnings",
+ "lint:fix": "pnpm lint --fix",
+ "lint:ci": "biome ci ./www/front_src --error-on-warnings",
+ "test": "jest",
+ "test:watch": "pnpm test --watch",
+ "test:coverage": "jest --coverage",
+ "cypress:cli": "./cypress/scripts/cypress-cli.sh",
+ "cypress:cli:updateSnapshot": "cypress run --component --browser=chrome --env updateSnapshots=true",
+ "cypress:ui": "cypress open --component --browser=chrome",
+ "cypress:run": "cypress run --component --browser=chrome",
+ "cypress:run:coverage": "cypress run --component --browser=chrome --env codeCoverageTasksRegistered=true",
+ "generate:lockfile:analysis": "npm shrinkwrap && mv ./npm-shrinkwrap.json ./package-lock.json",
+ "preview:api:doc": "pnpm --package=@redocly/cli dlx openapi preview-docs ./doc/API/centreon-api.yaml"
+ },
+ "devDependencies": {
+ "@4tw/cypress-drag-drop": "^2.2.5",
+ "@biomejs/biome": "^1.8.3",
+ "@centreon/js-config": "workspace:*",
+ "@cypress/code-coverage": "^3.12.45",
+ "@cypress/react": "^8.0.2",
+ "@cypress/webpack-dev-server": "^3.10.1",
+ "@cypress/webpack-preprocessor": "^6.0.2",
+ "@mui/utils": "^5.16.6",
+ "@rspack/cli": "^1.0.0",
+ "@rspack/core": "^1.0.0",
+ "@rspack/plugin-react-refresh": "^1.0.0",
+ "@simonsmith/cypress-image-snapshot": "9.1.0",
+ "@svgr/webpack": "^8.1.0",
+ "@swc/core": "^1.6.6",
+ "@swc/core-linux-x64-gnu": "^1.7.12",
+ "@swc/jest": "^0.2.36",
+ "@testing-library/cypress": "^10.0.2",
+ "@testing-library/dom": "^10.4.0",
+ "@testing-library/jest-dom": "^6.4.8",
+ "@testing-library/react": "^16.0.0",
+ "@testing-library/react-hooks": "^8.0.1",
+ "@testing-library/user-event": "^14.5.2",
+ "@types/cypress-image-snapshot": "^3.1.9",
+ "@types/d3-array": "^3.2.1",
+ "@types/ramda": "^0.30.1",
+ "@types/react": "^18.3.3",
+ "@types/react-grid-layout": "^1.3.5",
+ "@types/testing-library__cypress": "^5.0.13",
+ "chromatic": "^11.7.1",
+ "css-loader": "^7.1.2",
+ "cypress": "^13.13.3",
+ "cypress-msw-interceptor": "2.2.0",
+ "cypress-plugin-tab": "^1.0.5",
+ "cypress-real-events": "^1.13.0",
+ "cypress-rspack-dev-server": "^0.0.6",
+ "identity-obj-proxy": "^3.0.0",
+ "istanbul": "^0.4.5",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "jest-fetch-mock": "^3.0.3",
+ "jest-junit": "^16.0.0",
+ "jsdom": "^24.1.1",
+ "mochawesome": "^7.1.3",
+ "mockdate": "^3.0.5",
+ "msw": "1.3.2",
+ "nyc": "^17.0.0",
+ "prettier": "^3.3.3",
+ "process": "^0.11.10",
+ "react-beautiful-dnd-test-utils": "^4.1.1",
+ "react-mock-router": "^1.0.15",
+ "react-refresh": "^0.14.2",
+ "resize-observer-polyfill": "^1.5.1",
+ "resolve-url-loader": "^5.0.0",
+ "style-loader": "^4.0.0",
+ "swc-loader": "^0.2.6",
+ "swc-plugin-coverage-instrument": "^0.0.24",
+ "typescript": "^5.5.4",
+ "webpack-merge": "^6.0.1"
+ },
+ "dependencies": {
+ "@centreon/ui": "workspace:*",
+ "@centreon/ui-context": "workspace:*",
+ "@dnd-kit/core": "^6.1.0",
+ "@dnd-kit/sortable": "^8.0.0",
+ "@dnd-kit/utilities": "^3.2.2",
+ "@emotion/react": "^11.13.0",
+ "@emotion/styled": "^11.13.0",
+ "@lexical/html": "^0.17.0",
+ "@module-federation/utilities": "^3.1.3",
+ "@mui/icons-material": "^5.16.7",
+ "@mui/lab": "5.0.0-alpha.173",
+ "@mui/material": "^5.16.7",
+ "@mui/styles": "^5.16.7",
+ "@mui/system": "^5.16.7",
+ "@mui/x-date-pickers": "^7.13.0",
+ "@react-spring/web": "^9.7.4",
+ "@tanstack/react-query": "^5.51.23",
+ "@tanstack/react-query-devtools": "^5.51.23",
+ "@visx/curve": "^3.3.0",
+ "@visx/responsive": "^3.10.2",
+ "@visx/scale": "^3.5.0",
+ "@visx/shape": "^3.5.0",
+ "@visx/threshold": "^3.5.0",
+ "@visx/visx": "3.11.0",
+ "axios": "^1.7.4",
+ "classnames": "^2.5.1",
+ "clsx": "^2.1.1",
+ "d3-array": "3.2.4",
+ "d3-color": "^3.1.0",
+ "d3-format": "^3.1.0",
+ "d3-interpolate": "^3.0.1",
+ "d3-scale": "^4.0.2",
+ "d3-time": "^3.1.0",
+ "dayjs": "^1.11.12",
+ "dom-serializer": "^2.0.0",
+ "dom-to-image": "^2.6.0",
+ "dompurify": "^3.1.6",
+ "file-saver": "^2.0.5",
+ "formik": "^2.4.6",
+ "html-react-parser": "^5.1.12",
+ "i18next": "^23.13.0",
+ "intl-pluralrules": "^2.0.1",
+ "jotai": "2.9.3",
+ "jotai-suspense": "^0.4.0",
+ "notistack": "^3.0.1",
+ "numeral": "^2.0.6",
+ "pluralize": "^8.0.0",
+ "ramda": "0.30.1",
+ "react": "^18.3.1",
+ "react-cookie": "^7.2.0",
+ "react-dom": "^18.3.1",
+ "react-grid-layout": "^1.4.4",
+ "react-i18next": "^15.0.1",
+ "react-material-ui-carousel": "^3.4.2",
+ "react-resizable": "^3.0.5",
+ "react-router": "^6.26.1",
+ "react-router-dom": "^6.26.1",
+ "react-select": "^5.8.0",
+ "react-spring": "^9.7.4",
+ "string-argv": "^0.3.2",
+ "ts.data.json": "^2.2.0",
+ "tss-react": "^4.9.12",
+ "use-deep-compare-effect": "^1.8.1",
+ "yup": "^1.4.0"
+ },
+ "jest-junit": {
+ "suiteName": "jest tests",
+ "output": "./jest-test-results.xml"
+ },
+ "workspaces": [
+ "packages/*",
+ "www/widgets"
+ ],
+ "msw": {
+ "workerDirectory": "www/front_src/public"
+ }
+}
diff --git a/centreon/packages/js-config/biome/base.json b/centreon/packages/js-config/biome/base.json
new file mode 100644
index 0000000000..00cf50c7c3
--- /dev/null
+++ b/centreon/packages/js-config/biome/base.json
@@ -0,0 +1,224 @@
+{
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space",
+ "formatWithErrors": false
+ },
+ "organizeImports": {
+ "enabled": true
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true,
+ "a11y": {
+ "noSvgWithoutTitle": "off"
+ },
+ "complexity": {
+ "noBannedTypes": "off",
+ "noForEach": "off"
+ },
+ "correctness": {
+ "noUnusedImports": "error",
+ "noUnusedVariables": "error",
+ "useExhaustiveDependencies": "off"
+ },
+ "nursery": {
+ "noConsole": "error",
+ "noRestrictedImports": {
+ "level": "error",
+ "options": {
+ "paths": {
+ "lodash": "Using lodash is not encouraged.",
+ "moment": "Using moment is not encouraged."
+ }
+ }
+ },
+ "noUnknownFunction": "error",
+ "noUnknownProperty": "error",
+ "noUnknownUnit": "error"
+ },
+ "suspicious": {
+ "useAwait": "error"
+ },
+ "performance": {
+ "noAccumulatingSpread": "off"
+ },
+ "style": {
+ "useLiteralEnumMembers": "off",
+ "useImportType": "off",
+ "noNamespace": "error",
+ "noNamespaceImport": "error",
+ "useFragmentSyntax": "error",
+ "useFilenamingConvention": {
+ "level": "error",
+ "options": {
+ "strictCase": false,
+ "filenameCases": [
+ "camelCase",
+ "PascalCase",
+ "kebab-case"
+ ]
+ }
+ },
+ "useNamingConvention": {
+ "level": "error",
+ "options": {
+ "strictCase": false,
+ "conventions": [
+ {
+ "formats": [
+ "camelCase",
+ "PascalCase"
+ ],
+ "selector": {
+ "kind": "variable"
+ }
+ },
+ {
+ "selector": {
+ "kind": "interface"
+ },
+ "formats": [
+ "PascalCase"
+ ]
+ },
+ {
+ "selector": {
+ "kind": "enum"
+ },
+ "formats": [
+ "PascalCase"
+ ]
+ },
+ {
+ "selector": {
+ "kind": "objectLiteralProperty"
+ },
+ "match": ".*"
+ },
+ {
+ "match": "_(.*)|([a-zA-Z].*)",
+ "selector": {
+ "kind": "functionParameter"
+ },
+ "formats": [
+ "snake_case",
+ "PascalCase",
+ "camelCase"
+ ]
+ },
+ {
+ "match": ".*",
+ "formats": [
+ "snake_case",
+ "camelCase",
+ "PascalCase",
+ "CONSTANT_CASE"
+ ]
+ }
+ ]
+ }
+ },
+ "noRestrictedGlobals": {
+ "level": "error",
+ "options": {
+ "deniedGlobals": [
+ "isFinite",
+ "isNaN",
+ "addEventListener",
+ "blur",
+ "close",
+ "closed",
+ "confirm",
+ "defaultStatus",
+ "defaultstatus",
+ "event",
+ "external",
+ "find",
+ "focus",
+ "frameElement",
+ "frames",
+ "history",
+ "innerHeight",
+ "innerWidth",
+ "length",
+ "location",
+ "locationbar",
+ "menubar",
+ "moveBy",
+ "moveTo",
+ "name",
+ "onblur",
+ "onerror",
+ "onfocus",
+ "onload",
+ "onresize",
+ "onunload",
+ "open",
+ "opener",
+ "opera",
+ "outerHeight",
+ "outerWidth",
+ "pageXOffset",
+ "pageYOffset",
+ "parent",
+ "print",
+ "removeEventListener",
+ "resizeBy",
+ "resizeTo",
+ "screen",
+ "screenLeft",
+ "screenTop",
+ "screenX",
+ "screenY",
+ "scroll",
+ "scrollbars",
+ "scrollBy",
+ "scrollTo",
+ "scrollX",
+ "scrollY",
+ "self",
+ "status",
+ "statusbar",
+ "stop",
+ "toolbar",
+ "top"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "javascript": {
+ "formatter": {
+ "enabled": true,
+ "quoteStyle": "single",
+ "semicolons": "always",
+ "indentStyle": "space",
+ "trailingCommas": "none"
+ },
+ "linter": {
+ "enabled": true
+ }
+ },
+ "json": {
+ "parser": {
+ "allowComments": true,
+ "allowTrailingCommas": false
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space"
+ }
+ },
+ "css": {
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space"
+ },
+ "linter": {
+ "enabled": true
+ }
+ }
+}
diff --git a/centreon/packages/js-config/cypress/component/commands.tsx b/centreon/packages/js-config/cypress/component/commands.tsx
index f301919a6d..ff52da183c 100644
--- a/centreon/packages/js-config/cypress/component/commands.tsx
+++ b/centreon/packages/js-config/cypress/component/commands.tsx
@@ -86,6 +86,7 @@ Cypress.Commands.add(
path.replace('./', '**'),
(req, res, ctx) => {
const getQuery = req?.url?.searchParams?.get(query?.name);
+
if (query && equals(query.value, getQuery)) {
return res(
ctx.delay(delay),
diff --git a/centreon/packages/js-config/cypress/component/configuration.js b/centreon/packages/js-config/cypress/component/configuration.js
index eb40750ef7..f37aae212d 100644
--- a/centreon/packages/js-config/cypress/component/configuration.js
+++ b/centreon/packages/js-config/cypress/component/configuration.js
@@ -28,6 +28,11 @@ module.exports = ({
addMatchImageSnapshotPlugin(on, config);
cypressCodeCoverageTask(on, config);
+ on('task', {
+ coverageReport: () => {
+ return null;
+ }
+ });
on('before:browser:launch', (browser, launchOptions) => {
if (browser.name === 'chrome' && browser.isHeadless) {
diff --git a/centreon/packages/js-config/cypress/e2e/commands.ts b/centreon/packages/js-config/cypress/e2e/commands.ts
index 235465dc5e..454cf29650 100644
--- a/centreon/packages/js-config/cypress/e2e/commands.ts
+++ b/centreon/packages/js-config/cypress/e2e/commands.ts
@@ -312,6 +312,10 @@ interface ExecInContainerProps {
name: string;
}
+interface ExecInContainerOptions {
+ log: boolean;
+}
+
interface ExecInContainerResult {
exitCode: number;
output: string;
@@ -319,7 +323,7 @@ interface ExecInContainerResult {
Cypress.Commands.add(
'execInContainer',
- ({ command, name }: ExecInContainerProps): Cypress.Chainable => {
+ ({ command, name }, { log = true } = { log: true }): Cypress.Chainable => {
const commands =
typeof command === 'string' || command instanceof String
? [command]
@@ -330,19 +334,22 @@ Cypress.Commands.add(
cy.task
(
'execInContainer',
{ command: runCommand, name },
- { timeout: 600000 }
+ { log, timeout: 600000 }
).then((result) => {
+ const displayedOutput = log ? result.output : 'hidden command output';
+ const displayedRunCommand = log ? runCommand : 'hidden run command';
+
if (result.exitCode) {
- cy.log(result.output);
+ cy.log(displayedOutput);
// output will not be truncated
throw new Error(`
-Execution of "${runCommand}" failed
+Execution of "${displayedRunCommand}" failed
Exit code: ${result.exitCode}
-Output:\n${result.output}`);
+Output:\n${displayedOutput}`);
}
- acc.output = `${acc.output}${result.output}`;
+ acc.output = `${acc.output}${displayedOutput}`;
});
return acc;
@@ -778,10 +785,10 @@ declare global {
options?: Partial
) => Cypress.Chainable;
createDirectory: (directoryPath: string) => Cypress.Chainable;
- execInContainer: ({
- command,
- name
- }: ExecInContainerProps) => Cypress.Chainable;
+ execInContainer: (
+ props: ExecInContainerProps,
+ options?: ExecInContainerOptions
+ ) => Cypress.Chainable;
getByLabel: ({
patternType,
tag,
diff --git a/centreon/packages/js-config/cypress/e2e/commands/configuration.ts b/centreon/packages/js-config/cypress/e2e/commands/configuration.ts
index a9195d3833..adb3dfd321 100644
--- a/centreon/packages/js-config/cypress/e2e/commands/configuration.ts
+++ b/centreon/packages/js-config/cypress/e2e/commands/configuration.ts
@@ -141,12 +141,12 @@ Cypress.Commands.add(
);
interface Contact {
+ GUIAccess?: boolean;
admin?: boolean;
alias?: string | null;
authenticationType?: 'local' | 'ldap';
email: string;
enableNotifications?: boolean;
- GUIAccess?: boolean;
language?: string;
name: string;
password: string;
@@ -203,7 +203,7 @@ Cypress.Commands.add(
interface ContactGroup {
alias?: string | null;
- contacts: string[];
+ contacts: Array;
name: string;
}
@@ -449,7 +449,7 @@ Cypress.Commands.add(
interface ServiceGroup {
alias?: string | null;
- hostsAndServices: string[][];
+ hostsAndServices: Array>;
name: string;
}
@@ -500,8 +500,8 @@ Cypress.Commands.add(
interface ACLGroup {
alias?: string | null;
- contacts?: string[];
- contactGroups?: string[];
+ contactGroups?: Array;
+ contacts?: Array;
name: string;
}
@@ -525,7 +525,7 @@ Cypress.Commands.add(
})
.then(() => {
if (contacts) {
- contacts.map((contact) => {
+ contacts.forEach((contact) => {
cy.executeActionViaClapi({
bodyContent: {
action: 'ADDCONTACT',
@@ -536,7 +536,7 @@ Cypress.Commands.add(
});
}
if (contactGroups) {
- contactGroups.map((contactGroup) => {
+ contactGroups.forEach((contactGroup) => {
cy.executeActionViaClapi({
bodyContent: {
action: 'ADDCONTACTGROUP',
@@ -551,11 +551,11 @@ Cypress.Commands.add(
);
interface ACLMenu {
- name: string;
- rule?: string[];
alias?: string | null;
includeChildren?: boolean;
+ name: string;
readOnly?: boolean;
+ rule?: Array;
}
Cypress.Commands.add(
@@ -580,30 +580,31 @@ Cypress.Commands.add(
}
})
.then(() => {
- if (rule.length == 0) {
+ if (rule.length === 0) {
return cy.wrap(null);
}
let ruleCommand = '';
- rule.map((rulePage, index) => {
+ rule.forEach((rulePage, index) => {
ruleCommand += rulePage + (index == rule.length - 1 ? '' : ';');
});
cy.executeActionViaClapi({
bodyContent: {
- action: action,
+ action,
object: 'ACLMENU',
values: `${name};${children};${ruleCommand}`
}
});
+
return cy.wrap(null);
});
}
);
interface ACLAction {
- name: string;
+ actions?: Array;
description: string;
- actions?: Action[];
+ name: string;
}
Cypress.Commands.add(
@@ -618,12 +619,12 @@ Cypress.Commands.add(
}
})
.then(() => {
- if (actions.length == 0) {
+ if (actions.length === 0) {
return cy.wrap(null);
}
let actionCommand = '';
- actions.map((action, index) => {
+ actions.forEach((action, index) => {
actionCommand += action + (index == actions.length - 1 ? '' : '|');
});
cy.executeActionViaClapi({
@@ -633,20 +634,22 @@ Cypress.Commands.add(
values: `${name};${actionCommand}`
}
});
+
return cy.wrap(null);
});
}
);
interface ACLResource {
- name: string;
alias?: string | null;
+ name: string;
}
Cypress.Commands.add(
'addACLResource',
({ name, alias = null }: ACLResource): Cypress.Chainable => {
const ACLResourcesAlias = alias === null ? name : alias;
+
return cy.executeActionViaClapi({
bodyContent: {
action: 'ADD',
diff --git a/centreon/packages/js-config/cypress/e2e/commands/monitoring.ts b/centreon/packages/js-config/cypress/e2e/commands/monitoring.ts
index 6b1a30e903..62b791d5ce 100644
--- a/centreon/packages/js-config/cypress/e2e/commands/monitoring.ts
+++ b/centreon/packages/js-config/cypress/e2e/commands/monitoring.ts
@@ -21,6 +21,112 @@ const getStatusNumberFromString = (status: string): number => {
throw new Error(`Status ${status} does not exist`);
};
+interface HostCheck {
+ host: string;
+ isForced?: boolean;
+}
+
+Cypress.Commands.add(
+ 'scheduleHostCheck',
+ ({
+ host,
+ isForced = true
+ }: ServiceCheck): Cypress.Chainable => {
+ let query = `SELECT id FROM resources WHERE name = '${host}' AND type = 1`;
+
+ return cy
+ .requestOnDatabase({
+ database: 'centreon_storage',
+ query
+ })
+ .then(([rows]) => {
+ if (rows.length === 0) {
+ throw new Error(`Cannot find host ${host}`);
+ }
+
+ const hostId = rows[0].id;
+
+ return cy.request({
+ body: {
+ check: {
+ is_forced: isForced
+ },
+ resources: [
+ {
+ id: hostId,
+ parent: null,
+ type: 'host'
+ }
+ ]
+ },
+ method: 'POST',
+ timeout: 30000,
+ url: '/centreon/api/latest/monitoring/resources/check'
+ }).then((response) => {
+ expect(response.status).to.eq(204);
+
+ return cy.wrap(null);
+ });
+ });
+ }
+);
+
+interface ServiceCheck {
+ host: string;
+ isForced?: boolean;
+ service: string;
+}
+
+Cypress.Commands.add(
+ 'scheduleServiceCheck',
+ ({
+ host,
+ isForced = true,
+ service
+ }: ServiceCheck): Cypress.Chainable => {
+ let query = `SELECT parent_id, id FROM resources WHERE parent_name = '${host}' AND name = '${service}'`;
+
+ return cy
+ .requestOnDatabase({
+ database: 'centreon_storage',
+ query
+ })
+ .then(([rows]) => {
+ if (rows.length === 0) {
+ throw new Error(`Cannot find service ${host} / ${service}`);
+ }
+
+ const hostId = rows[0].parent_id;
+ const serviceId = rows[0].id;
+
+ return cy.request({
+ body: {
+ check: {
+ is_forced: isForced
+ },
+ resources: [
+ {
+ id: serviceId,
+ parent: {
+ id: hostId
+ },
+ type: 'service'
+ }
+ ]
+ },
+ method: 'POST',
+ timeout: 30000,
+ url: '/centreon/api/latest/monitoring/resources/check'
+ }).then((response) => {
+ expect(response.status).to.eq(204);
+
+ return cy.wrap(null);
+ });
+ });
+ }
+);
+
+
interface SubmitResult {
host: string;
output: string;
@@ -64,10 +170,54 @@ Cypress.Commands.add(
}
);
+interface Downtime {
+ host: string;
+ service?: string | null;
+}
+
+Cypress.Commands.add(
+ 'waitForDowntime',
+ (downtime: Downtime): Cypress.Chainable => {
+ cy.log('Checking hosts in database');
+
+ let query = `SELECT COUNT(d.downtime_id) AS count_downtimes FROM downtimes as d
+ INNER JOIN hosts as h ON h.host_id = d.host_id AND h.name = '${downtime.host}'`;
+ if (downtime.service) {
+ query += ` INNER JOIN services as s ON s.service_id = d.service_id AND s.description = '${downtime.service}'`;
+ }
+ query += ` WHERE d.started=1`;
+ if (!downtime.service) {
+ query += ` AND d.service_id = 0`;
+ }
+
+ cy.log(query);
+
+ cy.waitUntil(() => {
+ return cy
+ .requestOnDatabase({
+ database: 'centreon_storage',
+ query
+ })
+ .then(([rows]) => {
+ const foundDowntimesCount = rows.length ? rows[0].count_downtimes : 0;
+
+ cy.log('Downtime count in database', foundDowntimesCount);
+
+ return cy.wrap(foundDowntimesCount > 0);
+ });
+ });
+
+ return cy.wrap(null);
+ }
+);
+
declare global {
namespace Cypress {
interface Chainable {
+ scheduleHostCheck: (hostCheck) => Cypress.Chainable;
+ scheduleServiceCheck: (serviceCheck) => Cypress.Chainable;
submitResults: (props: Array) => Cypress.Chainable;
+ waitForDowntime: (downtime: Downtime) => Cypress.Chainable;
}
}
}
diff --git a/centreon/packages/js-config/cypress/e2e/configuration.ts b/centreon/packages/js-config/cypress/e2e/configuration.ts
index b9ce82a44e..427daf0397 100644
--- a/centreon/packages/js-config/cypress/e2e/configuration.ts
+++ b/centreon/packages/js-config/cypress/e2e/configuration.ts
@@ -48,7 +48,8 @@ export default ({
reporterOptions: {
configFile: `${__dirname}/reporter-config.js`
},
- setupNodeEvents: async (on, config) => {
+ setupNodeEvents: async (cypressOn, config) => {
+ const on = require('cypress-on-fix')(cypressOn)
installLogsPrinter(on);
await esbuildPreprocessor(on, config);
tasks(on);
@@ -63,12 +64,16 @@ export default ({
DATABASE_IMAGE: 'bitnami/mariadb:10.11',
OPENID_IMAGE_VERSION: process.env.MAJOR || '24.04',
SAML_IMAGE_VERSION: process.env.MAJOR || '24.04',
+ STABILITY: 'unstable',
WEB_IMAGE_OS: 'alma9',
WEB_IMAGE_VERSION: webImageVersion
},
execTimeout: 60000,
requestTimeout: 20000,
- retries: 0,
+ retries: {
+ openMode: 0,
+ runMode: 2
+ },
screenshotsFolder: `${resultsFolder}/screenshots`,
video: isDevelopment,
videoCompression: 0,
diff --git a/centreon/packages/js-config/cypress/e2e/plugins.ts b/centreon/packages/js-config/cypress/e2e/plugins.ts
index b67e02f5be..4eecd8830f 100644
--- a/centreon/packages/js-config/cypress/e2e/plugins.ts
+++ b/centreon/packages/js-config/cypress/e2e/plugins.ts
@@ -3,6 +3,9 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable no-param-reassign */
+import fs from 'fs';
+import path from 'path';
+
export default (
on: Cypress.PluginEvents,
config: Cypress.PluginConfigOptions
@@ -32,5 +35,38 @@ export default (
return launchOptions;
});
+ on('after:run', (results) => {
+ const testRetries: { [key: string]: boolean } = {};
+ if ('runs' in results) {
+ results.runs.forEach((run) => {
+ run.tests.forEach((test) => {
+ if (test.attempts && test.attempts.length > 1) {
+ const testTitle = test.title.join(' > '); // Convert the array to a string
+ testRetries[testTitle] = true;
+ }
+ });
+ });
+ }
+
+ console.log('After run results:', results);
+ console.log('Test retries:', testRetries);
+
+ // Save the testRetries object to a file in the e2e/results directory
+ const resultFilePath = path.join(
+ __dirname,
+ '../../../../tests/e2e/results',
+ 'hasRetries.json'
+ );
+ if (results.totalFailed > 0) {
+ fs.writeFileSync(resultFilePath, '{}');
+ } else if (Object.keys(testRetries).length > 0) {
+ // If tests succeeded but there were retries, write the retries to the file
+ fs.writeFileSync(resultFilePath, JSON.stringify(testRetries, null, 2));
+ } else {
+ // If no retries, empty the file
+ fs.writeFileSync(resultFilePath, '{}');
+ }
+ });
+
return config;
};
diff --git a/centreon/packages/js-config/cypress/e2e/tasks.ts b/centreon/packages/js-config/cypress/e2e/tasks.ts
index 8c72d366cb..4bb5083627 100644
--- a/centreon/packages/js-config/cypress/e2e/tasks.ts
+++ b/centreon/packages/js-config/cypress/e2e/tasks.ts
@@ -157,7 +157,7 @@ export default (on: Cypress.PluginEvents): void => {
user: 'centreon'
});
- const [rows, fields] = await client.execute(query);
+ const [rows, fields] = await client.query(query);
await client.end();
@@ -211,6 +211,7 @@ export default (on: Cypress.PluginEvents): void => {
WEB_IMAGE: webImage
})
.withProfiles(...profiles)
+ .withStartupTimeout(120000)
.withWaitStrategy(
'web-1',
Wait.forAll([
diff --git a/centreon/packages/js-config/package.json b/centreon/packages/js-config/package.json
index 9b3fc2bd4b..321f6a0393 100644
--- a/centreon/packages/js-config/package.json
+++ b/centreon/packages/js-config/package.json
@@ -11,7 +11,7 @@
"eslint"
],
"author": "centreon@centreon.com",
- "license": "GPL-2.0",
+ "license": "MIT",
"bugs": {
"url": "https://github.com/centreon/centreon-frontend/issues"
},
@@ -21,19 +21,19 @@
"prettier": "^3.0.0"
},
"dependencies": {
- "@badeball/cypress-cucumber-preprocessor": "^20.0.5",
- "@bahmutov/cypress-esbuild-preprocessor": "^2.2.0",
+ "@badeball/cypress-cucumber-preprocessor": "^20.1.2",
+ "@bahmutov/cypress-esbuild-preprocessor": "^2.2.2",
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
- "@tsconfig/node16": "^16.1.1",
- "@tsconfig/node20": "^20.1.2",
+ "@tsconfig/node16": "^16.1.3",
+ "@tsconfig/node20": "^20.1.4",
"@types/cypress-cucumber-preprocessor": "^4.0.5",
- "cypress": "^13.6.4",
+ "cypress": "^13.13.3",
"cypress-multi-reporters": "^1.6.4",
- "cypress-terminal-report": "^6.0.2",
- "cypress-wait-until": "^3.0.1",
+ "cypress-terminal-report": "^6.1.2",
+ "cypress-wait-until": "^3.0.2",
"dotenv": "^16.4.5",
- "esbuild": "^0.20.0",
+ "esbuild": "^0.21.5",
"eslint": "^8.53.0",
"eslint-config-airbnb": "19.0.4",
"eslint-config-prettier": "^8.5.0",
@@ -52,8 +52,8 @@
"eslint-plugin-sort-keys-fix": "^1.1.2",
"eslint-plugin-typescript-sort-keys": "^2.1.0",
"mochawesome": "^7.1.3",
- "mysql2": "^3.9.7",
+ "mysql2": "^3.11.0",
"tar-fs": "^3.0.6",
- "testcontainers": "^10.9.0"
+ "testcontainers": "^10.11.0"
}
-}
\ No newline at end of file
+}
diff --git a/centreon/packages/ui-context/package.json b/centreon/packages/ui-context/package.json
index 84bee92034..82ea94377e 100644
--- a/centreon/packages/ui-context/package.json
+++ b/centreon/packages/ui-context/package.json
@@ -5,9 +5,10 @@
"main": "src/index.ts",
"keywords": [],
"author": "centreon@centreon.com",
- "license": "GPL-2.0",
+ "license": "MIT",
"scripts": {
- "eslint": "eslint ./src --ext .ts --max-warnings 0",
- "eslint:fix": "pnpm eslint --fix"
+ "lint": "biome check ./src/ --error-on-warnings",
+ "lint:fix": "pnpm lint --fix",
+ "lint:ci": "biome ci ./src/ --error-on-warnings"
}
-}
\ No newline at end of file
+}
diff --git a/centreon/packages/ui-context/src/defaults.ts b/centreon/packages/ui-context/src/defaults.ts
index 99b056638c..b3d4cf8355 100644
--- a/centreon/packages/ui-context/src/defaults.ts
+++ b/centreon/packages/ui-context/src/defaults.ts
@@ -1,7 +1,8 @@
-import { User, ThemeMode, ListingVariant } from './types';
+import { ListingVariant, ThemeMode, User } from './types';
const defaultUser: User = {
alias: '',
+ canManageApiTokens: false,
default_page: '/monitoring/resources',
id: undefined,
isAdmin: undefined,
diff --git a/centreon/packages/ui-context/src/index.ts b/centreon/packages/ui-context/src/index.ts
index a95bac542e..2a9ee8ff03 100644
--- a/centreon/packages/ui-context/src/index.ts
+++ b/centreon/packages/ui-context/src/index.ts
@@ -11,6 +11,9 @@ export {
platformFeaturesAtom,
featureFlagsDerivedAtom
} from './platformFeauresAtom';
+
+export { platformVersionsAtom } from './platformVersionsAtom';
+
export { isOnPublicPageAtom } from './isOnPublicPageAtom';
export { additionalResourcesAtom } from './additionalResources';
export {
diff --git a/centreon/packages/ui-context/src/platformVersionsAtom.ts b/centreon/packages/ui-context/src/platformVersionsAtom.ts
new file mode 100644
index 0000000000..f58f5eba7a
--- /dev/null
+++ b/centreon/packages/ui-context/src/platformVersionsAtom.ts
@@ -0,0 +1,5 @@
+import { atom } from 'jotai';
+
+import { PlatformVersions } from './types';
+
+export const platformVersionsAtom = atom(null);
diff --git a/centreon/packages/ui-context/src/types.ts b/centreon/packages/ui-context/src/types.ts
index 52817250b2..b6aadf0873 100644
--- a/centreon/packages/ui-context/src/types.ts
+++ b/centreon/packages/ui-context/src/types.ts
@@ -20,6 +20,7 @@ export interface DashboardRolesAndPermissions {
export interface User {
alias: string;
+ canManageApiTokens: boolean;
dashboard?: DashboardRolesAndPermissions | null;
default_page?: string | null;
id?: number;
@@ -85,11 +86,8 @@ export interface Downtime {
export interface FeatureFlags {
adExclusionPeriods?: boolean;
- dashboard?: boolean;
- dashboardPlayList?: boolean;
notification?: boolean;
- resourceStatusFilterRevamp?: boolean;
- resourceStatusTreeView?: boolean;
+ resouresTableOpenTickets: boolean;
vault?: boolean;
}
@@ -129,3 +127,16 @@ export interface FederatedModule {
remoteEntry: string;
remoteUrl?: string;
}
+
+interface Version {
+ fix: string;
+ major: string;
+ minor: string;
+ version: string;
+}
+
+export interface PlatformVersions {
+ modules: Record;
+ web: Version;
+ widgets: Record;
+}
diff --git a/centreon/packages/ui/.eslintrc.cjs b/centreon/packages/ui/.eslintrc.cjs
deleted file mode 100644
index 3ed77b36b2..0000000000
--- a/centreon/packages/ui/.eslintrc.cjs
+++ /dev/null
@@ -1,24 +0,0 @@
-module.exports = {
- root: true,
- extends: [
- '../js-config/eslint/react/typescript.eslintrc.js'
- ],
- settings: {
- 'import/resolver': {
- alias: {
- map: [
- ['@centreon/ui/fonts', './public/fonts']
- ]
- }
- }
- },
- overrides: [
- {
- // less strict for stories
- "files": ["*.stories.tsx"],
- "rules": {
- "react/no-array-index-key": "warn",
- }
- }
- ]
-};
\ No newline at end of file
diff --git a/centreon/packages/ui/.storybook/main.ts b/centreon/packages/ui/.storybook/main.ts
index 94ae68fce8..6c129c4733 100644
--- a/centreon/packages/ui/.storybook/main.ts
+++ b/centreon/packages/ui/.storybook/main.ts
@@ -1,3 +1,4 @@
+import { dirname, join } from "path";
import type { StorybookConfig } from "@storybook/react-vite";
import remarkGfm from "remark-gfm";
import turbosnap from 'vite-plugin-turbosnap';
@@ -6,7 +7,8 @@ import { mergeConfig } from 'vite';
const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
addons: [
- "@storybook/addon-essentials",
+ getAbsolutePath("@storybook/addon-themes"),
+ getAbsolutePath("@storybook/addon-essentials"),
{
name: "@storybook/addon-docs",
options: {
@@ -18,23 +20,19 @@ const config: StorybookConfig = {
},
},
},
- "@storybook/addon-styling",
- "@storybook/addon-a11y",
- "@storybook/addon-interactions",
- "storybook-addon-mock",
- "storybook-dark-mode",
+ getAbsolutePath("@storybook/addon-a11y"),
+ getAbsolutePath("storybook-addon-mock"),
+ getAbsolutePath("storybook-dark-mode")
],
framework: {
- name: "@storybook/react-vite",
+ name: getAbsolutePath("@storybook/react-vite"),
options: {},
},
typescript: {
reactDocgen: "react-docgen-typescript",
},
- docs: {
- autodocs: "tag",
- },
- core: { builder: '@storybook/builder-vite' },
+ docs: {},
+ core: {},
async viteFinal(config, { configType }) {
return mergeConfig(config, {
plugins: configType === 'PRODUCTION' ? [turbosnap({ rootDir: process.cwd() })] : [],
@@ -42,4 +40,8 @@ const config: StorybookConfig = {
},
};
-export default config;
\ No newline at end of file
+export default config;
+
+function getAbsolutePath(value: string): any {
+ return dirname(require.resolve(join(value, "package.json")));
+}
diff --git a/centreon/packages/ui/.storybook/preview.tsx b/centreon/packages/ui/.storybook/preview.tsx
index d746e49bf1..3644960a64 100644
--- a/centreon/packages/ui/.storybook/preview.tsx
+++ b/centreon/packages/ui/.storybook/preview.tsx
@@ -28,10 +28,12 @@ const withQueryProvider: Decorator = (story, context): JSX.Element => (
const preview: Preview = {
loaders: [mswLoader],
+
decorators: [
withThemeProvider,
withQueryProvider,
],
+
globalTypes: {
reactquerydevtools: {
description: "React-Query devtools",
@@ -46,8 +48,9 @@ const preview: Preview = {
},
},
},
+
parameters: {
- actions: { argTypesRegex: "^on[A-Z].*" },
+ // actions: { argTypesRegex: "^on[A-Z].*" },
a11y: {
manual: true,
},
@@ -68,7 +71,9 @@ const preview: Preview = {
defaultViewport: 'tablet',
defaultOrientation: 'landscape'
},
- }
+ },
+
+ tags: ["autodocs"]
};
export default preview;
diff --git a/centreon/packages/ui/biome.json b/centreon/packages/ui/biome.json
new file mode 100644
index 0000000000..35982b5e5d
--- /dev/null
+++ b/centreon/packages/ui/biome.json
@@ -0,0 +1,12 @@
+{
+ "extends": [
+ "../js-config/biome/base.json"
+ ],
+ "files": {
+ "ignore": [
+ "**/*{.,-}min.js",
+ "**/mockServiceWorker.js",
+ "**/*.test.tsx"
+ ]
+ }
+}
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a single bar is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a single bar is hovered.snap.png
new file mode 100644
index 0000000000..f8171b1856
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a single bar is hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a stacked bar is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a stacked bar is hovered.snap.png
new file mode 100644
index 0000000000..7554afecd9
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip when a stacked bar is hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip with a single metric when a stacked bar is hovered and a prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip with a single metric when a stacked bar is hovered and a prop is set.snap.png
new file mode 100644
index 0000000000..242f38a873
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays a tooltip with a single metric when a stacked bar is hovered and a prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart horizontally with a mix of stacked and non-stacked data.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart horizontally with a mix of stacked and non-stacked data.snap.png
new file mode 100644
index 0000000000..c50b9d5497
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart horizontally with a mix of stacked and non-stacked data.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart vertically with a mix of stacked and non-stacked data.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart vertically with a mix of stacked and non-stacked data.snap.png
new file mode 100644
index 0000000000..6c6aa227cb
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays bar chart vertically with a mix of stacked and non-stacked data.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally centered in zero.snap.png
new file mode 100644
index 0000000000..e673328572
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally.snap.png
new file mode 100644
index 0000000000..f8171b1856
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart horizontally.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically centered in zero.snap.png
new file mode 100644
index 0000000000..d2daaba88d
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically.snap.png
new file mode 100644
index 0000000000..39406c7659
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the bar chart vertically.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally centered in zero.snap.png
new file mode 100644
index 0000000000..31da359f16
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally.snap.png
new file mode 100644
index 0000000000..242f38a873
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart horizontally.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically centered in zero.snap.png
new file mode 100644
index 0000000000..99dd2a6613
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically.snap.png
new file mode 100644
index 0000000000..960e441c58
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- displays the stacked bar chart vertically.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- does not display a tooltip when a bar is hovered and a props is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- does not display a tooltip when a bar is hovered and a props is set.snap.png
new file mode 100644
index 0000000000..242f38a873
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarChart/BarChart.cypress.spec.tsx/Bar chart -- does not display a tooltip when a bar is hovered and a props is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- adjusts size based on the provided width and height.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- adjusts size based on the provided width and height.snap.png
index df4b66980b..13d683f594 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- adjusts size based on the provided width and height.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- adjusts size based on the provided width and height.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- conditionally displays values on rects based on displayValues prop.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- conditionally displays values on rects based on displayValues prop.snap.png
index 36662c6497..cfc02402c8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- conditionally displays values on rects based on displayValues prop.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- conditionally displays values on rects based on displayValues prop.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays Legend component based on displayLegend prop.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays Legend component based on displayLegend prop.snap.png
index 720903dffd..b414370fe2 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays Legend component based on displayLegend prop.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays Legend component based on displayLegend prop.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays the title when the title is giving.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays the title when the title is giving.snap.png
index 36662c6497..cfc02402c8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays the title when the title is giving.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays the title when the title is giving.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays tooltip with correct information on hover.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays tooltip with correct information on hover.snap.png
index d807d373e9..2654f9c88d 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays tooltip with correct information on hover.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays tooltip with correct information on hover.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays values on rects in percentage unit when displayValues is set to true and unit to percentage.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays values on rects in percentage unit when displayValues is set to true and unit to percentage.snap.png
index d7b74d9c2c..98919cd57c 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays values on rects in percentage unit when displayValues is set to true and unit to percentage.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- displays values on rects in percentage unit when displayValues is set to true and unit to percentage.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders Bar stack correctly with provided data.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders Bar stack correctly with provided data.snap.png
index 36662c6497..cfc02402c8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders Bar stack correctly with provided data.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders Bar stack correctly with provided data.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a horizontal bar when variant is set to horizontal.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a horizontal bar when variant is set to horizontal.snap.png
index 974037b8b9..9b97a57e9b 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a horizontal bar when variant is set to horizontal.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a horizontal bar when variant is set to horizontal.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a vertical bar when variant is set to vertical.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a vertical bar when variant is set to vertical.snap.png
index 36662c6497..cfc02402c8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a vertical bar when variant is set to vertical.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/BarStack/BarStack.cypress.spec.tsx/Bar stack -- renders as a vertical bar when variant is set to vertical.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png
new file mode 100644
index 0000000000..4d040ed9f6
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png
new file mode 100644
index 0000000000..ebdab9c190
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png
new file mode 100644
index 0000000000..e4f26635c3
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png
new file mode 100644
index 0000000000..6301563caa
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png
new file mode 100644
index 0000000000..615f3cd6ab
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png
new file mode 100644
index 0000000000..eb6e715d91
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png
new file mode 100644
index 0000000000..39a0ae11ec
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..6ccd05bf66
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png
new file mode 100644
index 0000000000..4a3960df7c
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png
new file mode 100644
index 0000000000..cbbd3a9b30
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png
new file mode 100644
index 0000000000..924a958061
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png
new file mode 100644
index 0000000000..5119aeb000
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png
new file mode 100644
index 0000000000..55e93e501d
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png
new file mode 100644
index 0000000000..1479a904d0
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png
new file mode 100644
index 0000000000..66f83e135a
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png
new file mode 100644
index 0000000000..65711086e8
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..e71e215ad0
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values when the graph is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values when the graph is hovered.snap.png
new file mode 100644
index 0000000000..481f77b6db
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values when the graph is hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png
new file mode 100644
index 0000000000..21afd2b1c9
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..46c181a601
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..f62d914d46
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png
new file mode 100644
index 0000000000..742abf7a60
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png
new file mode 100644
index 0000000000..6cfd9a8bf6
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- changes the unit on the left or right scales when a new unit is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- changes the unit on the left or right scales when a new unit is selected.snap.png
new file mode 100644
index 0000000000..fa913a5e74
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- changes the unit on the left or right scales when a new unit is selected.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart centered in zero.snap.png
new file mode 100644
index 0000000000..4e51017641
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart.snap.png
new file mode 100644
index 0000000000..51cd065e95
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays lines and bars in the same chart.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart centered in zero.snap.png
new file mode 100644
index 0000000000..44a2dee7cc
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart.snap.png
new file mode 100644
index 0000000000..074bdf6304
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays mixed lines and bars in the same chart.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart centered in zero.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart centered in zero.snap.png
new file mode 100644
index 0000000000..b7bdb30add
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart centered in zero.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart.snap.png
new file mode 100644
index 0000000000..0b7db1fe24
Binary files /dev/null and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Chart/Chart.cypress.spec.tsx/Lines and bars -- displays stacked lines and bars in the same chart.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays ranged thresholds.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays ranged thresholds.snap.png
index 562bbde333..11e3951ac3 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays ranged thresholds.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays ranged thresholds.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as critical when corresponding thresholds are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as critical when corresponding thresholds are set.snap.png
index a8751074c9..5e2d226c87 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as critical when corresponding thresholds are set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as critical when corresponding thresholds are set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as success when corresponding thresholds are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as success when corresponding thresholds are set.snap.png
index bb0d85863b..712661ef4f 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as success when corresponding thresholds are set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as success when corresponding thresholds are set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as warning when corresponding thresholds are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as warning when corresponding thresholds are set.snap.png
index cad8c92faa..9f5b23c247 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as warning when corresponding thresholds are set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the gauge as warning when corresponding thresholds are set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the threshold tooltip when a threshold is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the threshold tooltip when a threshold is hovered.snap.png
index 0164ecf4b6..06f83633df 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the threshold tooltip when a threshold is hovered.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the threshold tooltip when a threshold is hovered.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the value as raw when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the value as raw when the prop is set.snap.png
index f736486d61..68063db2c1 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the value as raw when the prop is set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Gauge/Gauge.cypress.spec.tsx/Gauge -- displays the value as raw when the prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png
deleted file mode 100644
index 5ef0f151f5..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays as centered to zero when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png
deleted file mode 100644
index 4efdc0ba26..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only horizontal lines when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png
deleted file mode 100644
index 4ef6e2e6af..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- displays only vertical lines when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png
deleted file mode 100644
index 75a8a36c26..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display axis borders when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png
deleted file mode 100644
index 21526d545d..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- does not display grids when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png
deleted file mode 100644
index ab6eba45b3..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Axis -- rotates the tick label when the props is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png
deleted file mode 100644
index c5f7aff3fa..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend in list mode when the corresponding props is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png
deleted file mode 100644
index 47572a7f56..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the left side of the graph when the corresponding prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png
deleted file mode 100644
index 49471c2a64..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Legend -- displays the legend on the right side of the graph as list when the corresponding props are set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png
deleted file mode 100644
index c34e7bda8c..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with a custom line width when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with dots width when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with dots width when the prop is set.snap.png
deleted file mode 100644
index 8e57280f12..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays lines with dots width when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png
deleted file mode 100644
index 60b730651b..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a natural style when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png
deleted file mode 100644
index 4a41191241..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- displays the curve in a step style when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png
deleted file mode 100644
index c34220cdb0..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows points when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png
deleted file mode 100644
index 1d0b7138a0..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area when the prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area with a custom transparency when props are set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area with a custom transparency when props are set.snap.png
deleted file mode 100644
index 28d67e2fc1..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Line style -- shows the area with a custom transparency when props are set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png
deleted file mode 100644
index 9164107022..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a metric highlighted when the graph is hovered and the metric is the nearest point.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png
deleted file mode 100644
index 755bee4086..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays a tooltip when the graph is hovered.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png
deleted file mode 100644
index a00a0518da..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip a single metric when the corresponding prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values whent the graph is hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values whent the graph is hovered.snap.png
deleted file mode 100644
index c608640de8..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- displays the tooltip with defined values whent the graph is hovered.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png
deleted file mode 100644
index bcef99e021..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when null values are hovered.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png
deleted file mode 100644
index cbde62180f..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- does not display the tooltip when the corresponding prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png
deleted file mode 100644
index d98438514a..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is ascending when the corresponding prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png
deleted file mode 100644
index 99f445131a..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- Tooltip -- sorts metrics by their value is descending when the corresponding prop is set.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png
deleted file mode 100644
index aa697a79a5..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/LineChart/LineChart.cypress.spec.tsx/Line chart -- displays the curves with different shades when curves have same color.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts outer radius when chart dimensions are too small.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts outer radius when chart dimensions are too small.snap.png
index 20fe169a05..c2f89b16a2 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts outer radius when chart dimensions are too small.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts outer radius when chart dimensions are too small.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts size based on the provided width and height.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts size based on the provided width and height.snap.png
index 63507e3db6..dfc7e22d22 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts size based on the provided width and height.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- adjusts size based on the provided width and height.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- conditionally displays values on arcs based on displayValues prop.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- conditionally displays values on arcs based on displayValues prop.snap.png
index 91068ab6ff..26443e3116 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- conditionally displays values on arcs based on displayValues prop.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- conditionally displays values on arcs based on displayValues prop.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays Legend component based on displayLegend prop.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays Legend component based on displayLegend prop.snap.png
index a5f68975cc..fe0f3cc4d8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays Legend component based on displayLegend prop.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays Legend component based on displayLegend prop.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays the title when the title is giving.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays the title when the title is giving.snap.png
index 91068ab6ff..26443e3116 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays the title when the title is giving.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays the title when the title is giving.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays tooltip with correct information on hover.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays tooltip with correct information on hover.snap.png
index d8b1c52c56..e50b43beb5 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays tooltip with correct information on hover.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays tooltip with correct information on hover.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays values on arcs in percentage unit when displayValues is set to true and unit to percentage.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays values on arcs in percentage unit when displayValues is set to true and unit to percentage.snap.png
index d701099e9b..fcbcba3783 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays values on arcs in percentage unit when displayValues is set to true and unit to percentage.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- displays values on arcs in percentage unit when displayValues is set to true and unit to percentage.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a donut when variant is set to donut.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a donut when variant is set to donut.snap.png
index a169aa9bc3..3e63a39306 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a donut when variant is set to donut.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a donut when variant is set to donut.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a pie when variant is set to pie.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a pie when variant is set to pie.snap.png
index 91068ab6ff..26443e3116 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a pie when variant is set to pie.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders as a pie when variant is set to pie.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders pie chart correctly with provided data.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders pie chart correctly with provided data.snap.png
index e87bf3803f..26443e3116 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders pie chart correctly with provided data.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/PieChart/PieChart.cypress.spec.tsx/Pie chart -- renders pie chart correctly with provided data.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- cannot collapse a node when a node is not clickable.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- cannot collapse a node when a node is not clickable.snap.png
index 2fc09758cc..c0801b1585 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- cannot collapse a node when a node is not clickable.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- cannot collapse a node when a node is not clickable.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- collapses a node when a node is clickable.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- collapses a node when a node is clickable.snap.png
index 69916fee5e..250c572fe7 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- collapses a node when a node is clickable.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- collapses a node when a node is clickable.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with line links when a prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with line links when a prop is set.snap.png
index d0443bca16..e42e41b6f8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with line links when a prop is set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with line links when a prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with step links when a prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with step links when a prop is set.snap.png
index 20dfce6e5a..32af5b01f1 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with step links when a prop is set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Complex data tree -- displays the tree with step links when a prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- cannot collapses a node when a leaf is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- cannot collapses a node when a leaf is clicked.snap.png
index f1aefb2335..f58960542e 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- cannot collapses a node when a leaf is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- cannot collapses a node when a leaf is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- collapses a node's childrens when a node is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- collapses a node's childrens when a node is clicked.snap.png
index 9ba1f7e9c2..ae6505ce4a 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- collapses a node's childrens when a node is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- collapses a node's childrens when a node is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays customized links when a prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays customized links when a prop is set.snap.png
index c40483bf30..d60cdfa9c0 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays customized links when a prop is set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays customized links when a prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays the whole tree.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays the whole tree.snap.png
index f1aefb2335..f58960542e 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays the whole tree.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- displays the whole tree.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands a node's childrens when a node is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands a node's childrens when a node is clicked.snap.png
index f1aefb2335..f58960542e 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands a node's childrens when a node is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands a node's childrens when a node is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands nodes by default when a prop is set.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands nodes by default when a prop is set.snap.png
index 586e43a45b..1dc141ce7d 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands nodes by default when a prop is set.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/Graph/Tree/Tree.cypress.spec.tsx/Simple data tree -- expands nodes by default when a prop is set.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png
index 3e92d6332a..50230f7fe0 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png
index 54f926fea7..64439738a8 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png
index e336a0c370..df510a8da7 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png
index 36689a6b81..6671a1e624 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png
index 457a1788a4..2e46793efd 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png
index f6d97db632..383d5da813 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights list.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights list.snap.png
index 5f3169e2b5..a1dc696c58 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights list.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights list.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png
index f2a3d25e9d..6dfc589ed2 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png
index 5f3169e2b5..ad290ff29f 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png
index 5f3169e2b5..a1dc696c58 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png
index a0caa23ac7..811e331be0 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png
index a3813c56bf..f9f8aa4726 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png
index c4fcc92db5..26c1a4a5a7 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png
index 39071c0a14..c5384863ae 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png
index e73dd8bb7f..73a6b35554 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png
index e59f47846e..41782f7979 100644
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png and b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png
deleted file mode 100644
index 07ffd57491..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact as viewer when a contact is selected and the corresponding button is clicked.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png
deleted file mode 100644
index d8c3c60b62..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- adds the contact group as editor when a contact group is selected and the corresponding button is clicked.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png
deleted file mode 100644
index c93d894695..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- clears the autocomplete when a contact is selected and the contact type is changed.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png
deleted file mode 100644
index 06b85f09c8..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays a removed chip when the corresponding icon is clicked.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png
deleted file mode 100644
index 6e6610d825..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays statistics when a contact is added, a contact is updated and a contact is removed.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png
deleted file mode 100644
index cbf12ebecb..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights in loading state.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png
deleted file mode 100644
index 69023d34fe..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights with an empty list.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights without link.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights without link.snap.png
deleted file mode 100644
index cfa7d8882e..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- displays the access rights without link.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png
deleted file mode 100644
index ffe2a01147..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the contact from the list when the contact has been to the list and the corresponding button is clicked.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png
deleted file mode 100644
index ffe2a01147..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- removes the updated chip when the contact role is updated and its initial role is assigned back.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png
deleted file mode 100644
index 6f47a1aa78..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- resets the role to viewer when the editor role is selected and a contact with viewer right is selected.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png
deleted file mode 100644
index 34822583a9..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- restores the contact when the contact is removed and the corresponding icon is clicked.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png
deleted file mode 100644
index b4f5932283..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contact groups when the contact group radio is selected.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png
deleted file mode 100644
index 44d3bf2011..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- retrieves contacts when the contact radio is selected.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png
deleted file mode 100644
index 9299357454..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list with the updated contact.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png b/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png
deleted file mode 100644
index 8536241952..0000000000
Binary files a/centreon/packages/ui/cypress/visual-testing-snapshots/src/components/Form/AccessRightsV2/AccessRights.cypress.spec.tsx/Access rights -- submits the new acces rights list without the removed contact.snap.png and /dev/null differ
diff --git a/centreon/packages/ui/jest.config.js b/centreon/packages/ui/jest.config.js
index 2fad50181f..93908cecf1 100644
--- a/centreon/packages/ui/jest.config.js
+++ b/centreon/packages/ui/jest.config.js
@@ -4,21 +4,15 @@ module.exports = {
...baseConfig,
moduleNameMapper: {
'\\.(s?css|png|svg)$': 'identity-obj-proxy',
- '^@centreon/ui/fonts(.*)$': '/public/fonts$1',
+ '^@centreon/ui/fonts(.*)$': '/src/fonts$1',
'^react($|/.+)': '/../../node_modules/react$1',
'd3-array': '/node_modules/d3-array/dist/d3-array.min.js'
},
reporters: ['default', ['jest-junit', { outputName: 'junit.xml' }]],
roots: ['/src/', '/test/'],
- setupFilesAfterEnv: [
- '/test/setupTests.js',
- '@testing-library/jest-dom/extend-expect'
- ],
+ setupFilesAfterEnv: ['/test/setupTests.js'],
testResultsProcessor: 'jest-junit',
- transform: {
- ...baseConfig.transform,
- '^.+\\.mdx?$': '@storybook/addon-docs/jest-transform-mdx'
- },
+ transform: baseConfig.transform,
transformIgnorePatterns: [
'/../../node_modules/(?!d3-array|d3-scale|d3-interpolation|d3-interpolate)'
]
diff --git a/centreon/packages/ui/modern.config.ts b/centreon/packages/ui/modern.config.ts
deleted file mode 100644
index 3dfb6146d5..0000000000
--- a/centreon/packages/ui/modern.config.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
- output: {
- disableTsChecker: true
- }
-};
diff --git a/centreon/packages/ui/package.json b/centreon/packages/ui/package.json
index 6f4001a1bc..c98b1f89c5 100644
--- a/centreon/packages/ui/package.json
+++ b/centreon/packages/ui/package.json
@@ -4,17 +4,18 @@
"description": "Centreon UI Components",
"scripts": {
"update:deps": "pnpx npm-check-updates -i --format group",
- "eslint": "eslint ./src --ext .js,.jsx,.ts,.tsx --max-warnings 0",
- "eslint:fix": "pnpm eslint --fix",
+ "lint": "biome check ./src/ --error-on-warnings",
+ "lint:fix": "pnpm lint --fix",
+ "lint:ci": "biome ci ./src/ --error-on-warnings",
"storybook": "storybook dev -p 9001 -c .storybook",
"build:storybook": "storybook build -c .storybook -o .out",
"test": "jest",
"test:storybook:local": "test-storybook --url http://127.0.0.1:9001",
"test:ci": "jest --silent --reporter=jest-junit",
"cypress:ui": "cypress open --component --browser=chrome",
- "cypress:cli:updateSnapshot": "pnpm cypress:cli --env updateSnapshots=true",
+ "cypress:run:updateSnapshots": "cypress run --component --browser=chrome --env updateSnapshots=true",
"cypress:run:coverage": "cypress run --component --browser=chrome --env codeCoverageTasksRegistered=true",
- "cypress:cli": "cypress run --component --browser=chrome",
+ "cypress:run": "cypress run --component --browser=chrome",
"tokens:transform": "TS_NODE_PROJECT=tsconfig.node.json ts-node style-dictionary.transform.ts"
},
"sideEffects": false,
@@ -29,8 +30,7 @@
"author": {
"name": "centreon@centreon.com"
},
- "baseCodeCoveragePercentage": 60,
- "license": "GPL-2.0",
+ "license": "MIT",
"bugs": {
"url": "https://github.com/centreon/centreon/issues"
},
@@ -39,7 +39,7 @@
"exports": {
".": "./src/index.ts",
"./components": "./src/components/index.ts",
- "./fonts/*": "./public/fonts/*",
+ "./fonts/*": "./src/fonts/*",
"./test/testRenderer": "./test/testRenderer.tsx"
},
"files": [
@@ -49,123 +49,104 @@
"test/*"
],
"devDependencies": {
- "@cypress/react": "^8.0.0",
- "@cypress/webpack-dev-server": "^3.7.4",
+ "@cypress/react": "^8.0.2",
+ "@cypress/webpack-dev-server": "^3.10.1",
"@faker-js/faker": "^8.4.1",
"@mdx-js/react": "^3.0.1",
- "@modern-js/prod-server": "^2.49.2",
- "@modern-js/storybook": "^2.49.2",
- "@simonsmith/cypress-image-snapshot": "^9.0.1",
- "@storybook/addon-a11y": "^7.0.9",
- "@storybook/addon-docs": "^7.0.9",
- "@storybook/addon-essentials": "^7.0.9",
- "@storybook/addon-interactions": "^7.0.9",
- "@storybook/addon-styling": "^1.0.6",
- "@storybook/blocks": "^7.0.26",
- "@storybook/builder-vite": "^7.6.18",
- "@storybook/jest": "^0.1.0",
- "@storybook/manager-api": "^7.0.9",
+ "@modern-js/prod-server": "^2.58.1",
+ "@modern-js/storybook": "^2.58.1",
+ "@simonsmith/cypress-image-snapshot": "^9.1.0",
+ "@storybook/addon-a11y": "^8.2.9",
+ "@storybook/addon-docs": "^8.2.9",
+ "@storybook/addon-essentials": "^8.2.9",
+ "@storybook/addon-interactions": "^8.2.9",
+ "@storybook/addon-themes": "^8.2.9",
+ "@storybook/blocks": "^8.2.9",
+ "@storybook/manager-api": "^8.2.9",
"@storybook/mdx2-csf": "^1.1.0",
- "@storybook/preview-api": "^7.0.9",
- "@storybook/react": "^7.0.9",
- "@storybook/react-vite": "^7.0.9",
- "@storybook/test-runner": "^0.16.0",
- "@storybook/testing-library": "^0.1.0",
- "@storybook/theming": "^7.0.9",
- "@testing-library/cypress": "^8.0.7",
- "@testing-library/jest-dom": "^5.16.5",
- "@testing-library/react": "^13.4.0",
+ "@storybook/preview-api": "^8.2.9",
+ "@storybook/react": "^8.2.9",
+ "@storybook/react-vite": "^8.2.9",
+ "@storybook/test": "^8.2.9",
+ "@storybook/test-runner": "^0.19.1",
+ "@storybook/theming": "^8.2.9",
+ "@testing-library/cypress": "^10.0.2",
+ "@testing-library/jest-dom": "^6.4.8",
+ "@testing-library/react": "^16.0.0",
"@testing-library/react-hooks": "^8.0.1",
"@types/jest": "^29.5.12",
- "@types/mocha": "^10.0.6",
- "@types/ramda": "^0.29.9",
- "@types/react": "^18.2.65",
+ "@types/mocha": "^10.0.7",
+ "@types/ramda": "^0.30.1",
+ "@types/react": "^18.3.3",
"@types/testing-library__jest-dom": "^6.0.0",
- "@vitejs/plugin-react": "^4.2.1",
- "@vitejs/plugin-react-swc": "^3.6.0",
- "axios-mock-adapter": "^1.22.0",
- "cypress": "^13.7.1",
+ "@vitejs/plugin-react": "^4.3.1",
+ "@vitejs/plugin-react-swc": "^3.7.0",
+ "chai": "^5.1.1",
+ "cypress": "^13.13.3",
"identity-obj-proxy": "^3.0.0",
"jest-transform-stub": "^2.0.0",
"mochawesome": "^7.1.3",
- "msw": "1.3.2",
- "msw-storybook-addon": "^1.10.0",
- "puppeteer": "^13.7.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-test-renderer": "^18.2.0",
- "remark-gfm": "^3.0.1",
- "speed-measure-vite-plugin": "^0.1.2",
- "storybook": "^7.6.8",
- "storybook-addon-mock": "^4.3.0",
- "storybook-dark-mode": "^3.0.3",
- "style-dictionary": "^3.9.2",
+ "msw": "2.3.5",
+ "msw-storybook-addon": "^2.0.3",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-test-renderer": "^18.3.1",
+ "remark-gfm": "^4.0.0",
+ "speed-measure-vite-plugin": "^1.0.1",
+ "storybook": "^8.2.9",
+ "storybook-addon-mock": "^5.0.0",
+ "storybook-dark-mode": "^4.0.2",
+ "style-dictionary": "^4.0.1",
"ts-node": "^10.9.2",
"use-resize-observer": "^9.1.0",
- "vite": "^4.3.5",
- "vite-plugin-istanbul": "^5.0.0",
- "vite-plugin-svgr": "^3.3.0",
+ "vite": "^5.4.1",
+ "vite-plugin-istanbul": "^6.0.2",
+ "vite-plugin-svgr": "^4.2.0",
"vite-plugin-turbosnap": "^1.0.3"
},
+ "peerDependencies": {
+ "@centreon/ui-context": "file:../ui-context"
+ },
"dependencies": {
- "@lexical/html": "^0.12.6",
- "@lexical/link": "^0.12.6",
- "@lexical/list": "^0.12.6",
- "@lexical/react": "^0.12.6",
- "@lexical/rich-text": "^0.12.6",
- "@lexical/selection": "^0.12.6",
- "@lexical/utils": "^0.12.6",
- "@react-spring/web": "^9.7.3",
+ "@lexical/html": "^0.17.0",
+ "@lexical/link": "^0.17.0",
+ "@lexical/list": "^0.17.0",
+ "@lexical/react": "^0.17.0",
+ "@lexical/rich-text": "^0.17.0",
+ "@lexical/selection": "^0.17.0",
+ "@lexical/utils": "^0.17.0",
+ "@mui/material": "^5.16.7",
+ "@react-spring/web": "^9.7.4",
"@visx/clip-path": "^3.3.0",
- "@visx/curve": "^2.1.0",
+ "@visx/curve": "^3.3.0",
"@visx/event": "^3.3.0",
"@visx/group": "^3.3.0",
"@visx/hierarchy": "^3.3.0",
- "@visx/legend": "^3.5.0",
+ "@visx/legend": "^3.10.3",
"@visx/pattern": "^3.3.0",
"@visx/point": "^3.3.0",
"@visx/scale": "^3.5.0",
- "@visx/shape": "^2.18.0",
+ "@visx/shape": "^3.5.0",
"@visx/text": "^3.3.0",
- "@visx/threshold": "^2.12.2",
- "@visx/visx": "2.16.0",
+ "@visx/threshold": "^3.5.0",
+ "@visx/visx": "3.11.0",
"@visx/zoom": "^3.3.0",
"anylogger": "^1.0.11",
"d3-array": "3.2.4",
- "humanize-duration": "^3.31.0",
- "lexical": "^0.12.6",
+ "dayjs": "^1.11.12",
+ "humanize-duration": "^3.32.1",
+ "lexical": "^0.17.0",
"notistack": "^3.0.1",
"numeral": "^2.0.6",
- "ramda": "0.29.1",
+ "ramda": "0.30.1",
"react-grid-layout": "^1.4.4",
"react-html-parser": "^2.0.2",
"react-resizable": "^3.0.5",
+ "react-router-dom": "^6.26.1",
"react-transition-group": "^4.4.5",
- "sanitize-html": "^2.12.1",
+ "sanitize-html": "^2.13.0",
"ulog": "^2.0.0-beta.19"
},
- "peerDependencies": {
- "@centreon/ui-context": "file:../ui-context",
- "@dnd-kit/core": "6.x",
- "@dnd-kit/sortable": "6.x",
- "@dnd-kit/utilities": "3.x",
- "@mui/icons-material": "5.x",
- "@mui/material": "5.x",
- "@mui/styles": "5.x",
- "@tanstack/react-query": "5.x",
- "axios": ">= 1.6.4",
- "dayjs": "1.x",
- "formik": "2.x",
- "jotai": "2.x",
- "numeral": "2.x",
- "ramda": "0.x",
- "react-i18next": "12.x",
- "react-router-dom": "6.x",
- "react-scale-text": "1.x",
- "resize-observer-polyfill": "1.x",
- "ts.data.json": "2.x",
- "tss-react": "4.x"
- },
"jest-junit": {
"suiteName": "jest tests",
"output": "./junit.xml"
@@ -175,4 +156,4 @@
"public"
]
}
-}
\ No newline at end of file
+}
diff --git a/centreon/packages/ui/rspack.config.js b/centreon/packages/ui/rspack.config.js
deleted file mode 100644
index 66067d3aaf..0000000000
--- a/centreon/packages/ui/rspack.config.js
+++ /dev/null
@@ -1,54 +0,0 @@
-const rspack = require('@rspack/core');
-
-/**
- * @type {import('@rspack/cli').Configuration}
- */
-module.exports = {
- context: __dirname,
- entry: {
- main: './src/index.ts'
- },
- module: {
- rules: [
- {
- test: /\.[jt]sx?$/,
- use: {
- loader: 'swc-loader',
- options: {
- jsc: {
- externalHelpers: true,
- parser: {
- jsx: true,
- syntax: 'typescript'
- },
- preserveAllComments: false,
- transform: {
- react: {
- runtime: 'automatic',
- throwIfNamespace: true,
- useBuiltins: false
- }
- }
- },
- sourceMap: true
- }
- }
- },
- {
- test: /\.svg$/,
- type: 'asset'
- }
- ]
- },
- optimization: {
- minimize: false // Disabling minification because it takes too long on CI
- },
- plugins: [
- new rspack.HtmlRspackPlugin({
- template: './index.html'
- })
- ],
- resolve: {
- extensions: ['...', '.ts', '.tsx', '.jsx']
- }
-};
diff --git a/centreon/packages/ui/src/@assets/icons/downtime.icon.svg b/centreon/packages/ui/src/@assets/icons/downtime.icon.svg
deleted file mode 100644
index c08900b955..0000000000
--- a/centreon/packages/ui/src/@assets/icons/downtime.icon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/centreon/packages/ui/src/@types/globals.d.ts b/centreon/packages/ui/src/@types/globals.d.ts
index fc2aeaf749..9d2ad8203a 100644
--- a/centreon/packages/ui/src/@types/globals.d.ts
+++ b/centreon/packages/ui/src/@types/globals.d.ts
@@ -1,9 +1,9 @@
+import { FunctionComponent, SVGProps } from 'react';
+
declare module '*.scss';
declare module '*.svg' {
- import * as React from 'react';
-
- export const ReactComponent: React.FunctionComponent<
- React.SVGProps & { title?: string }
+ export const ReactComponent: FunctionComponent<
+ SVGProps & { title?: string }
>;
}
diff --git a/centreon/packages/ui/src/ActionsList/ActionsList.styles.ts b/centreon/packages/ui/src/ActionsList/ActionsList.styles.ts
index 9290f4fbd5..3f74d5e554 100644
--- a/centreon/packages/ui/src/ActionsList/ActionsList.styles.ts
+++ b/centreon/packages/ui/src/ActionsList/ActionsList.styles.ts
@@ -1,5 +1,5 @@
-import { makeStyles } from 'tss-react/mui';
import { equals } from 'ramda';
+import { makeStyles } from 'tss-react/mui';
import { Theme } from '@mui/material';
diff --git a/centreon/packages/ui/src/ActionsList/index.stories.tsx b/centreon/packages/ui/src/ActionsList/index.stories.tsx
index a11d846316..f8d30e882c 100644
--- a/centreon/packages/ui/src/ActionsList/index.stories.tsx
+++ b/centreon/packages/ui/src/ActionsList/index.stories.tsx
@@ -1,8 +1,8 @@
import { ComponentMeta, ComponentStory } from '@storybook/react';
+import CopyIcon from '@mui/icons-material/ContentCopy';
import DeleteIcon from '@mui/icons-material/Delete';
import EditIcon from '@mui/icons-material/Edit';
-import CopyIcon from '@mui/icons-material/ContentCopy';
import { ActionVariants } from './models';
diff --git a/centreon/packages/ui/src/ActionsList/index.tsx b/centreon/packages/ui/src/ActionsList/index.tsx
index f2acf89f92..3c15136834 100644
--- a/centreon/packages/ui/src/ActionsList/index.tsx
+++ b/centreon/packages/ui/src/ActionsList/index.tsx
@@ -1,13 +1,12 @@
-/* eslint-disable react/no-array-index-key */
-import { useTranslation } from 'react-i18next';
import { equals } from 'ramda';
+import { useTranslation } from 'react-i18next';
import {
- MenuList,
- MenuItem,
- ListItemText,
- ListItemIcon,
Divider,
+ ListItemIcon,
+ ListItemText,
+ MenuItem,
+ MenuList,
SvgIconTypeMap
} from '@mui/material';
import { OverridableComponent } from '@mui/material/OverridableComponent';
@@ -50,6 +49,7 @@ const ActionsList = ({
{actions?.map((action, idx) => {
if (equals(action, ActionsListActionDivider.divider)) {
+ // biome-ignore lint/suspicious/noArrayIndexKey:
return ;
}
diff --git a/centreon/packages/ui/src/Button/Icon/index.stories.tsx b/centreon/packages/ui/src/Button/Icon/index.stories.tsx
index 8e36c3209a..39d76411a8 100644
--- a/centreon/packages/ui/src/Button/Icon/index.stories.tsx
+++ b/centreon/packages/ui/src/Button/Icon/index.stories.tsx
@@ -1,4 +1,4 @@
-import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { ComponentMeta, ComponentStory } from '@storybook/react';
import { makeStyles } from 'tss-react/mui';
import AccessibilityIcon from '@mui/icons-material/Accessibility';
diff --git a/centreon/packages/ui/src/Button/Icon/index.tsx b/centreon/packages/ui/src/Button/Icon/index.tsx
index 933588706b..494d1f351e 100644
--- a/centreon/packages/ui/src/Button/Icon/index.tsx
+++ b/centreon/packages/ui/src/Button/Icon/index.tsx
@@ -1,8 +1,8 @@
import { makeStyles } from 'tss-react/mui';
import {
- IconButton as MuiIconButton,
IconButtonProps,
+ IconButton as MuiIconButton,
Tooltip
} from '@mui/material';
diff --git a/centreon/packages/ui/src/Button/Save/StartIcon.tsx b/centreon/packages/ui/src/Button/Save/StartIcon.tsx
index d6fadad489..cc620b2312 100644
--- a/centreon/packages/ui/src/Button/Save/StartIcon.tsx
+++ b/centreon/packages/ui/src/Button/Save/StartIcon.tsx
@@ -1,4 +1,4 @@
-import { always, cond, not, pipe, propEq, T } from 'ramda';
+import { T, always, cond, not, pipe, propEq } from 'ramda';
import CheckIcon from '@mui/icons-material/Check';
import SaveIcon from '@mui/icons-material/Save';
diff --git a/centreon/packages/ui/src/Checkbox/Checkbox.tsx b/centreon/packages/ui/src/Checkbox/Checkbox.tsx
index 20c6ebddf4..fd137e6d7e 100644
--- a/centreon/packages/ui/src/Checkbox/Checkbox.tsx
+++ b/centreon/packages/ui/src/Checkbox/Checkbox.tsx
@@ -1,9 +1,9 @@
-import { makeStyles } from 'tss-react/mui';
import { T, always, cond, equals } from 'ramda';
+import { makeStyles } from 'tss-react/mui';
import { SvgIconComponent } from '@mui/icons-material';
+import { Box, FormControlLabel, Checkbox as MuiCheckbox } from '@mui/material';
import Typography, { TypographyProps } from '@mui/material/Typography';
-import { FormControlLabel, Checkbox as MuiCheckbox, Box } from '@mui/material';
export type LabelPlacement = 'bottom' | 'top' | 'end' | 'start' | undefined;
diff --git a/centreon/packages/ui/src/Colors/index.stories.tsx b/centreon/packages/ui/src/Colors/index.stories.tsx
index a5cac8ca6f..13c3d99937 100644
--- a/centreon/packages/ui/src/Colors/index.stories.tsx
+++ b/centreon/packages/ui/src/Colors/index.stories.tsx
@@ -1,5 +1,3 @@
-import React from 'react';
-
import { ComponentMeta, ComponentStory } from '@storybook/react';
import { Paper } from '@mui/material';
diff --git a/centreon/packages/ui/src/Colors/index.tsx b/centreon/packages/ui/src/Colors/index.tsx
index 8cfdb16b0e..0850a8b739 100644
--- a/centreon/packages/ui/src/Colors/index.tsx
+++ b/centreon/packages/ui/src/Colors/index.tsx
@@ -1,7 +1,7 @@
-import { makeStyles } from 'tss-react/mui';
import { includes, toPairs } from 'ramda';
+import { makeStyles } from 'tss-react/mui';
-import { Stack, Box, useTheme, Typography, Divider, Grid } from '@mui/material';
+import { Box, Divider, Grid, Stack, Typography, useTheme } from '@mui/material';
import { ThemeMode } from '@centreon/ui-context';
@@ -90,7 +90,11 @@ const GroupedColorStatus = (): JSX.Element => {
key={status}
keyTheme={status}
/>
-
+
>
))}
>
diff --git a/centreon/packages/ui/src/ContentWithCircularProgress/index.stories.tsx b/centreon/packages/ui/src/ContentWithCircularProgress/index.stories.tsx
index 041a411377..c93d1ffae1 100644
--- a/centreon/packages/ui/src/ContentWithCircularProgress/index.stories.tsx
+++ b/centreon/packages/ui/src/ContentWithCircularProgress/index.stories.tsx
@@ -1,7 +1,7 @@
import { ComponentMeta, ComponentStory } from '@storybook/react';
import { makeStyles } from 'tss-react/mui';
-import { Typography, Theme } from '@mui/material';
+import { Theme, Typography } from '@mui/material';
import ContentWithCircularLoading from '.';
diff --git a/centreon/packages/ui/src/Dashboard/Dashboard.cypress.spec.tsx b/centreon/packages/ui/src/Dashboard/Dashboard.cypress.spec.tsx
index 06c2417f68..fc15d1f732 100644
--- a/centreon/packages/ui/src/Dashboard/Dashboard.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Dashboard/Dashboard.cypress.spec.tsx
@@ -41,6 +41,8 @@ const dashboardLayout: Array = [
];
const initialize = (): void => {
+ cy.adjustViewport();
+
cy.mount({
Component: (
@@ -52,6 +54,8 @@ const initialize = (): void => {
)
});
+
+ cy.viewport('macbook-13');
};
describe('Dashboard', () => {
@@ -61,7 +65,6 @@ describe('Dashboard', () => {
cy.get('[data-widget-skeleton="a"]').should('not.exist');
cy.get('[data-widget-skeleton="b"]').should('not.exist');
cy.get('[data-widget-skeleton="c"]').should('not.exist');
- cy.get('[data-widget-skeleton="d"]').should('exist');
cy.makeSnapshot();
});
diff --git a/centreon/packages/ui/src/Dashboard/Dashboard.styles.ts b/centreon/packages/ui/src/Dashboard/Dashboard.styles.ts
index 4276ff978a..3cf51ca639 100644
--- a/centreon/packages/ui/src/Dashboard/Dashboard.styles.ts
+++ b/centreon/packages/ui/src/Dashboard/Dashboard.styles.ts
@@ -1,110 +1,111 @@
-import { makeStyles } from 'tss-react/mui';
-
-import { alpha } from '@mui/material';
-
-export const useDashboardLayoutStyles = makeStyles()(
- (theme, isStatic: boolean) => ({
- container: {
- '& .react-grid-item': {
- borderRadius: theme.shape.borderRadius,
- transition: theme.transitions.create('all', {
- delay: 0,
- duration: 100,
- easing: theme.transitions.easing.easeOut
- })
- },
- '& .react-grid-item.react-draggable-dragging': {
- boxShadow: theme.shadows[3]
- },
- '& .react-grid-item.react-grid-placeholder': {
- backgroundColor: alpha(theme.palette.primary.main, 0.2)
- },
- '& .react-grid-item.resizing': {
- boxShadow: theme.shadows[3]
- },
- '& .react-resizable-handle': {
- backgroundColor: theme.palette.action.focus,
- backgroundImage: 'none',
- borderRadius: theme.shape.borderRadius,
- display: isStatic ? 'none' : 'block',
- opacity: 0,
- position: 'absolute'
- },
- '& .react-resizable-handle.react-resizable-handle-e': {
- cursor: 'ew-resize',
- height: `calc(100% - ${theme.spacing(3)})`,
- marginTop: 0,
- right: 0,
- top: 0,
- transform: 'rotate(0deg)',
- width: theme.spacing(1)
- },
- '& .react-resizable-handle.react-resizable-handle-s': {
- bottom: 0,
- cursor: 'ns-resize',
- height: theme.spacing(1),
- left: 0,
- marginLeft: 0,
- transform: 'rotate(0deg)',
- width: `calc(100% - ${theme.spacing(3)})`
- },
- '& .react-resizable-handle.react-resizable-handle-se': {
- bottom: 0,
- cursor: 'nwse-resize',
- height: theme.spacing(2),
- right: 0,
- transform: 'rotate(0deg)',
- width: theme.spacing(2)
- },
- '& .react-resizable-handle::after': {
- content: 'none'
- },
- '& .react-resizable-handle:hover': {
- opacity: 1
- },
- position: 'relative'
- }
- })
-);
-
-export const useDashboardItemStyles = makeStyles<{ hasHeader: boolean }>()(
- (theme, { hasHeader }) => ({
- widgetContainer: {
- '&[data-padding="false"]': {
- padding: 0
- },
- background: theme.palette.background.widget,
- border: 'none',
- borderRadius: theme.spacing(1),
- height: '100%',
- width: '100%'
- },
- widgetContent: {
- height: hasHeader
- ? `calc(100% - ${theme.spacing(3.5)} - ${theme.spacing(0.5)})`
- : `calc(100% - ${theme.spacing(3.5)})`
- },
- widgetHeader: {
- '&:hover': {
- backgroundColor: theme.palette.action.hover
- },
- '&[data-canMove="false"]': {
- cursor: 'default'
- },
- '&[data-canMove="true"]': {
- cursor: 'move'
- },
- padding: theme.spacing(0, 1.5),
- position: 'relative'
- },
- widgetHeaderDraggable: {
- height: '100%',
- position: 'absolute',
- width: '95%'
- },
- widgetPadding: {
- overflowX: 'auto',
- padding: theme.spacing(0.5, 1.5, 1.5)
- }
- })
-);
+import { makeStyles } from 'tss-react/mui';
+
+import { alpha } from '@mui/material';
+
+export const useDashboardLayoutStyles = makeStyles()(
+ (theme, isStatic: boolean) => ({
+ container: {
+ '& .react-grid-item': {
+ borderRadius: theme.shape.borderRadius,
+ transition: theme.transitions.create('all', {
+ delay: 0,
+ duration: 100,
+ easing: theme.transitions.easing.easeOut
+ })
+ },
+ '& .react-grid-item.react-draggable-dragging': {
+ boxShadow: theme.shadows[3]
+ },
+ '& .react-grid-item.react-grid-placeholder': {
+ backgroundColor: alpha(theme.palette.primary.main, 0.2)
+ },
+ '& .react-grid-item.resizing': {
+ boxShadow: theme.shadows[3]
+ },
+ '& .react-resizable-handle': {
+ backgroundColor: theme.palette.action.focus,
+ backgroundImage: 'none',
+ borderRadius: theme.shape.borderRadius,
+ display: isStatic ? 'none' : 'block',
+ opacity: 0,
+ position: 'absolute'
+ },
+ '& .react-resizable-handle.react-resizable-handle-e': {
+ cursor: 'ew-resize',
+ height: `calc(100% - ${theme.spacing(3)})`,
+ marginTop: 0,
+ right: 0,
+ top: 0,
+ transform: 'rotate(0deg)',
+ width: theme.spacing(1)
+ },
+ '& .react-resizable-handle.react-resizable-handle-s': {
+ bottom: 0,
+ cursor: 'ns-resize',
+ height: theme.spacing(1),
+ left: 0,
+ marginLeft: 0,
+ transform: 'rotate(0deg)',
+ width: `calc(100% - ${theme.spacing(3)})`
+ },
+ '& .react-resizable-handle.react-resizable-handle-se': {
+ bottom: 0,
+ cursor: 'nwse-resize',
+ height: theme.spacing(2),
+ right: 0,
+ transform: 'rotate(0deg)',
+ width: theme.spacing(2)
+ },
+ '& .react-resizable-handle::after': {
+ content: 'none'
+ },
+ '& .react-resizable-handle:hover': {
+ opacity: 1
+ },
+ position: 'relative'
+ }
+ })
+);
+
+export const useDashboardItemStyles = makeStyles<{ hasHeader: boolean }>()(
+ (theme, { hasHeader }) => ({
+ widgetContainer: {
+ '&[data-padding="false"]': {
+ padding: 0
+ },
+ background: theme.palette.background.widget,
+ border: 'none',
+ borderRadius: theme.spacing(1),
+ height: '100%',
+ width: '100%'
+ },
+ widgetContent: {
+ height: hasHeader
+ ? `calc(100% - ${theme.spacing(3.5)} - ${theme.spacing(0.5)})`
+ : `calc(100% - ${theme.spacing(3.5)})`
+ },
+ widgetHeader: {
+ '&:hover': {
+ backgroundColor: theme.palette.action.hover
+ },
+ '&[data-canMove="false"]': {
+ cursor: 'default'
+ },
+ '&[data-canMove="true"]': {
+ cursor: 'move'
+ },
+ padding: theme.spacing(0, 1.5),
+ position: 'relative'
+ },
+ widgetHeaderDraggable: {
+ height: '100%',
+ position: 'absolute',
+ width: '95%'
+ },
+ widgetPadding: {
+ overflowX: 'auto',
+ padding: theme.spacing(0.5, 1.5, 1.5),
+ position: 'relative'
+ }
+ })
+);
diff --git a/centreon/packages/ui/src/Dashboard/Grid.tsx b/centreon/packages/ui/src/Dashboard/Grid.tsx
index d1a8cdd2f6..42a7185e9c 100644
--- a/centreon/packages/ui/src/Dashboard/Grid.tsx
+++ b/centreon/packages/ui/src/Dashboard/Grid.tsx
@@ -1,7 +1,7 @@
-import { useMemo, ReactElement } from 'react';
+import { ReactElement, useMemo } from 'react';
-import { Grid as VisxGrid } from '@visx/visx';
import { scaleLinear } from '@visx/scale';
+import { Grid as VisxGrid } from '@visx/visx';
import { useTheme } from '@mui/material';
diff --git a/centreon/packages/ui/src/Dashboard/Item.tsx b/centreon/packages/ui/src/Dashboard/Item.tsx
index 14aeb92488..bacf26ee6f 100644
--- a/centreon/packages/ui/src/Dashboard/Item.tsx
+++ b/centreon/packages/ui/src/Dashboard/Item.tsx
@@ -1,20 +1,23 @@
import {
CSSProperties,
ForwardedRef,
- forwardRef,
MouseEvent,
ReactElement,
- useEffect
+ forwardRef,
+ useEffect,
+ useMemo
} from 'react';
-import { isNil, prop } from 'ramda';
+import { useAtomValue } from 'jotai';
+import { equals, isNil, prop } from 'ramda';
import { Card, useTheme } from '@mui/material';
-import { useMemoComponent, useViewportIntersection } from '../utils';
import LoadingSkeleton from '../LoadingSkeleton';
+import { useMemoComponent, useViewportIntersection } from '../utils';
import { useDashboardItemStyles } from './Dashboard.styles';
+import { isResizingItemAtom } from './atoms';
interface DashboardItemProps {
additionalMemoProps?: Array;
@@ -55,6 +58,18 @@ const Item = forwardRef(
const { classes, cx } = useDashboardItemStyles({ hasHeader });
const theme = useTheme();
+ const isResizingItem = useAtomValue(isResizingItemAtom);
+
+ const isResizing = useMemo(
+ () => equals(id, isResizingItem),
+ [isResizingItem, id]
+ );
+
+ const sanitizedReactGridLayoutClassName = useMemo(
+ () => (isResizing ? className : className?.replace(' resizing ', '')),
+ [className, isResizing]
+ );
+
const listeners = {
onMouseDown,
onMouseUp,
@@ -75,7 +90,7 @@ const Item = forwardRef(
Component: (
(
>
{header && (
-
+ {canMove && (
+
+ )}
{header}
)}
diff --git a/centreon/packages/ui/src/Dashboard/Layout.tsx b/centreon/packages/ui/src/Dashboard/Layout.tsx
index 23c0258c49..e423d16ca2 100644
--- a/centreon/packages/ui/src/Dashboard/Layout.tsx
+++ b/centreon/packages/ui/src/Dashboard/Layout.tsx
@@ -1,17 +1,19 @@
-import { useEffect, useState } from 'react';
+import { useCallback, useEffect, useState } from 'react';
+import { useSetAtom } from 'jotai';
import GridLayout, { Layout, WidthProvider } from 'react-grid-layout';
import 'react-grid-layout/css/styles.css';
import {
- Responsive as ResponsiveHeight,
ParentSize,
+ Responsive as ResponsiveHeight,
useMemoComponent
} from '..';
import { useDashboardLayoutStyles } from './Dashboard.styles';
-import { getColumnsFromScreenSize, getLayout, rowHeight } from './utils';
import Grid from './Grid';
+import { isResizingItemAtom } from './atoms';
+import { getColumnsFromScreenSize, getLayout, rowHeight } from './utils';
const ReactGridLayout = WidthProvider(GridLayout);
@@ -36,10 +38,20 @@ const DashboardLayout =
({
const [columns, setColumns] = useState(getColumnsFromScreenSize());
+ const setIsResizingItem = useSetAtom(isResizingItemAtom);
+
const resize = (): void => {
setColumns(getColumnsFromScreenSize());
};
+ const startResize = useCallback((_, _e, newItem: T) => {
+ setIsResizingItem(newItem.i);
+ }, []);
+
+ const stopResize = useCallback(() => {
+ setIsResizingItem(null);
+ }, []);
+
useEffect(() => {
window.addEventListener('resize', resize);
@@ -66,6 +78,8 @@ const DashboardLayout = ({
rowHeight={rowHeight}
width={width}
onLayoutChange={changeLayout}
+ onResizeStart={startResize}
+ onResizeStop={stopResize}
>
{children}
diff --git a/centreon/packages/ui/src/Dashboard/atoms.ts b/centreon/packages/ui/src/Dashboard/atoms.ts
new file mode 100644
index 0000000000..a8a29855a4
--- /dev/null
+++ b/centreon/packages/ui/src/Dashboard/atoms.ts
@@ -0,0 +1,3 @@
+import { atom } from 'jotai';
+
+export const isResizingItemAtom = atom(null);
diff --git a/centreon/packages/ui/src/Dashboard/index.tsx b/centreon/packages/ui/src/Dashboard/index.tsx
index afde535637..2399d7958c 100644
--- a/centreon/packages/ui/src/Dashboard/index.tsx
+++ b/centreon/packages/ui/src/Dashboard/index.tsx
@@ -1,9 +1,9 @@
-import Layout from './Layout';
-import Item from './Item';
-
-export * from './utils';
-
-export const DashboardLayout = {
- Item,
- Layout
-};
+import Item from './Item';
+import Layout from './Layout';
+
+export * from './utils';
+
+export const DashboardLayout = {
+ Item,
+ Layout
+};
diff --git a/centreon/packages/ui/src/Dialog/Duplicate/index.test.tsx b/centreon/packages/ui/src/Dialog/Duplicate/index.test.tsx
index 1641b089c0..717b1dc6b4 100644
--- a/centreon/packages/ui/src/Dialog/Duplicate/index.test.tsx
+++ b/centreon/packages/ui/src/Dialog/Duplicate/index.test.tsx
@@ -1,4 +1,4 @@
-import { render, fireEvent } from '../../../test/testRenderer';
+import { fireEvent, render } from '../../../test/testRenderer';
import DialogDuplicate from '.';
diff --git a/centreon/packages/ui/src/Dialog/Duplicate/index.tsx b/centreon/packages/ui/src/Dialog/Duplicate/index.tsx
index 7e60e35df4..6a12390992 100644
--- a/centreon/packages/ui/src/Dialog/Duplicate/index.tsx
+++ b/centreon/packages/ui/src/Dialog/Duplicate/index.tsx
@@ -22,7 +22,7 @@ const Duplicate = ({
labelInput = 'Count',
labelConfirm = 'Duplicate',
labelTitle = 'Duplicate',
- limit = Infinity,
+ limit = Number.POSITIVE_INFINITY,
onConfirm,
...rest
}: Props): JSX.Element => {
@@ -37,7 +37,10 @@ const Duplicate = ({
onConfirm(event, value);
};
- const isConfirmDisabled = or(isEmpty(value), parseInt(value, 10) > limit);
+ const isConfirmDisabled = or(
+ isEmpty(value),
+ Number.parseInt(value, 10) > limit
+ );
return (
({
logo: {
diff --git a/centreon/packages/ui/src/FileDropZone/index.stories.tsx b/centreon/packages/ui/src/FileDropZone/index.stories.tsx
index b9f77ea91c..2bbf10d94f 100644
--- a/centreon/packages/ui/src/FileDropZone/index.stories.tsx
+++ b/centreon/packages/ui/src/FileDropZone/index.stories.tsx
@@ -2,8 +2,8 @@ import { useState } from 'react';
import { makeStyles } from 'tss-react/mui';
-import { Button, Paper, Typography, Theme } from '@mui/material';
import PersonIcon from '@mui/icons-material/Person';
+import { Button, Paper, Theme, Typography } from '@mui/material';
import FileDropZone, {
CustomDropZoneContentProps,
diff --git a/centreon/packages/ui/src/FileDropZone/index.tsx b/centreon/packages/ui/src/FileDropZone/index.tsx
index 522ed8949c..d310d91c66 100644
--- a/centreon/packages/ui/src/FileDropZone/index.tsx
+++ b/centreon/packages/ui/src/FileDropZone/index.tsx
@@ -1,19 +1,19 @@
-import { useTranslation } from 'react-i18next';
+import { useAtomValue } from 'jotai';
import {
+ T,
cond,
equals,
flatten,
identity,
includes,
isNil,
- split,
- T
+ split
} from 'ramda';
-import { useAtomValue } from 'jotai';
+import { useTranslation } from 'react-i18next';
import { makeStyles } from 'tss-react/mui';
import PostAddIcon from '@mui/icons-material/PostAdd';
-import { alpha, Box, FormHelperText, Typography } from '@mui/material';
+import { Box, FormHelperText, Typography, alpha } from '@mui/material';
import { userAtom } from '@centreon/ui-context';
diff --git a/centreon/packages/ui/src/FileDropZone/useDropzone.test.ts b/centreon/packages/ui/src/FileDropZone/useDropzone.test.ts
index 3e4cc8384d..b2faafb407 100644
--- a/centreon/packages/ui/src/FileDropZone/useDropzone.test.ts
+++ b/centreon/packages/ui/src/FileDropZone/useDropzone.test.ts
@@ -1,4 +1,4 @@
-import { act, renderHook, RenderHookResult } from '@testing-library/react';
+import { RenderHookResult, act, renderHook } from '@testing-library/react';
import { labelFileTooBig, labelInvalidFileType } from './translatedLabels';
import useDropzone, { UseDropzoneProps, UseDropzoneState } from './useDropzone';
diff --git a/centreon/packages/ui/src/FileDropZone/useDropzone.ts b/centreon/packages/ui/src/FileDropZone/useDropzone.ts
index 95886e1f59..6d15f0e25a 100644
--- a/centreon/packages/ui/src/FileDropZone/useDropzone.ts
+++ b/centreon/packages/ui/src/FileDropZone/useDropzone.ts
@@ -7,7 +7,7 @@ import {
useState
} from 'react';
-import { all, isNil, lte, not, path, pluck } from 'ramda';
+import { path, all, isNil, lte, not, pluck } from 'ramda';
import { labelFileTooBig, labelInvalidFileType } from './translatedLabels';
diff --git a/centreon/packages/ui/src/Form/CollapsibleGroup.tsx b/centreon/packages/ui/src/Form/CollapsibleGroup.tsx
index 3cef1348f6..bcc399468b 100644
--- a/centreon/packages/ui/src/Form/CollapsibleGroup.tsx
+++ b/centreon/packages/ui/src/Form/CollapsibleGroup.tsx
@@ -3,16 +3,16 @@ import { useCallback, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { makeStyles } from 'tss-react/mui';
+import ChevronRightIcon from '@mui/icons-material/ChevronRight';
+import ExpandMore from '@mui/icons-material/ExpandMore';
import {
+ Box,
Collapse,
- Tooltip,
- IconButton as MuiIconButton,
- Typography,
ListItemButton,
- Box
+ IconButton as MuiIconButton,
+ Tooltip,
+ Typography
} from '@mui/material';
-import ChevronRightIcon from '@mui/icons-material/ChevronRight';
-import ExpandMore from '@mui/icons-material/ExpandMore';
import { Group } from './Inputs/models';
diff --git a/centreon/packages/ui/src/Form/Form.cypress.spec.tsx b/centreon/packages/ui/src/Form/Form.cypress.spec.tsx
index dce295aa03..33affad15d 100644
--- a/centreon/packages/ui/src/Form/Form.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Form/Form.cypress.spec.tsx
@@ -1,6 +1,6 @@
-import { object } from 'yup';
import { faker } from '@faker-js/faker';
import { useFormikContext } from 'formik';
+import { object } from 'yup';
import { Typography } from '@mui/material';
diff --git a/centreon/packages/ui/src/Form/Form.stories.tsx b/centreon/packages/ui/src/Form/Form.stories.tsx
index 4977fb8739..bbcb8dd056 100644
--- a/centreon/packages/ui/src/Form/Form.stories.tsx
+++ b/centreon/packages/ui/src/Form/Form.stories.tsx
@@ -1,14 +1,14 @@
import { Paper } from '@mui/material';
+import { Form, GroupDirection } from './Form';
import {
BasicForm,
+ CustomButton,
basicFormGroups,
basicFormInitialValues,
basicFormInputs,
- basicFormValidationSchema,
- CustomButton
+ basicFormValidationSchema
} from './storiesData';
-import { Form, GroupDirection } from './Form';
export default { title: 'Form' };
diff --git a/centreon/packages/ui/src/Form/Form.tsx b/centreon/packages/ui/src/Form/Form.tsx
index cb2f7b71bd..d4398026f0 100644
--- a/centreon/packages/ui/src/Form/Form.tsx
+++ b/centreon/packages/ui/src/Form/Form.tsx
@@ -4,12 +4,13 @@ import {
FormikSharedConfig,
FormikValues
} from 'formik';
-import * as Yup from 'yup';
+import { ComponentType } from 'react';
+import { Schema } from 'yup';
+import { useStyles } from './Form.styles';
import FormButtons from './FormButtons';
import Inputs from './Inputs';
import { Group, InputProps } from './Inputs/models';
-import { useStyles } from './Form.styles';
export enum GroupDirection {
Horizontal = 'horizontal',
@@ -17,7 +18,7 @@ export enum GroupDirection {
}
export type FormProps = {
- Buttons?: React.ComponentType;
+ Buttons?: ComponentType;
areGroupsOpen?: boolean;
children?: JSX.Element;
className?: string;
@@ -30,7 +31,7 @@ export type FormProps = {
isLoading?: boolean;
submit: (values: T, bag: FormikHelpers) => void | Promise;
validate?: (values: FormikValues) => void;
- validationSchema: Yup.SchemaOf;
+ validationSchema: Schema;
} & Omit, 'isInitialValid'>;
const Form = ({
diff --git a/centreon/packages/ui/src/Form/FormButtons.tsx b/centreon/packages/ui/src/Form/FormButtons.tsx
index 95a66de89e..eca5e27204 100644
--- a/centreon/packages/ui/src/Form/FormButtons.tsx
+++ b/centreon/packages/ui/src/Form/FormButtons.tsx
@@ -1,14 +1,14 @@
import { useState } from 'react';
-import { useTranslation } from 'react-i18next';
import { FormikValues, useFormikContext } from 'formik';
import { not } from 'ramda';
+import { useTranslation } from 'react-i18next';
import { makeStyles } from 'tss-react/mui';
import { Button } from '@mui/material';
import SaveButton from '../Button/Save';
-import { useMemoComponent, getNormalizedId } from '../utils';
+import { getNormalizedId, useMemoComponent } from '../utils';
import {
labelReset,
diff --git a/centreon/packages/ui/src/Form/Inputs/Autocomplete.tsx b/centreon/packages/ui/src/Form/Inputs/Autocomplete.tsx
index f963e1e3f7..6d2239eafa 100644
--- a/centreon/packages/ui/src/Form/Inputs/Autocomplete.tsx
+++ b/centreon/packages/ui/src/Form/Inputs/Autocomplete.tsx
@@ -1,16 +1,16 @@
import { useCallback, useMemo, useState } from 'react';
import { FormikValues, useFormikContext } from 'formik';
-import { equals, isNil, map, not, path, prop, type } from 'ramda';
+import { path, equals, isNil, map, not, prop, type } from 'ramda';
import { useTranslation } from 'react-i18next';
import { FormHelperText, Stack } from '@mui/material';
+import { SelectEntry } from '../../InputField/Select';
import SingleAutocompleteField from '../../InputField/Select/Autocomplete';
-import { labelPressEnterToAccept } from '../translatedLabels';
import MultiAutocompleteField from '../../InputField/Select/Autocomplete/Multi';
import { useMemoComponent } from '../../utils';
-import { SelectEntry } from '../../InputField/Select';
+import { labelPressEnterToAccept } from '../translatedLabels';
import { InputPropsWithoutGroup, InputType } from './models';
diff --git a/centreon/packages/ui/src/Form/Inputs/Checkbox.tsx b/centreon/packages/ui/src/Form/Inputs/Checkbox.tsx
index 535e14df1f..755a8d5bf8 100644
--- a/centreon/packages/ui/src/Form/Inputs/Checkbox.tsx
+++ b/centreon/packages/ui/src/Form/Inputs/Checkbox.tsx
@@ -5,8 +5,8 @@ import { path, split } from 'ramda';
import { Box } from '@mui/material';
-import { Checkbox as CheckboxComponent } from '../../Checkbox';
import { useMemoComponent } from '../..';
+import { Checkbox as CheckboxComponent } from '../../Checkbox';
import { InputPropsWithoutGroup } from './models';
diff --git a/centreon/packages/ui/src/Form/Inputs/CheckboxGroup.tsx b/centreon/packages/ui/src/Form/Inputs/CheckboxGroup.tsx
index d0d6e5f5a5..6ba57dd53d 100644
--- a/centreon/packages/ui/src/Form/Inputs/CheckboxGroup.tsx
+++ b/centreon/packages/ui/src/Form/Inputs/CheckboxGroup.tsx
@@ -1,12 +1,12 @@
import { ChangeEvent, useEffect } from 'react';
import { FormikValues, useFormikContext } from 'formik';
-import { equals, includes, path, split } from 'ramda';
+import { path, equals, includes, split } from 'ramda';
import { Box, Typography } from '@mui/material';
-import { CheckboxGroup as CheckboxGroupComponent } from '../../Checkbox';
import { useMemoComponent } from '../..';
+import { CheckboxGroup as CheckboxGroupComponent } from '../../Checkbox';
import { InputPropsWithoutGroup } from './models';
diff --git a/centreon/packages/ui/src/Form/Inputs/ConnectedAutocomplete.tsx b/centreon/packages/ui/src/Form/Inputs/ConnectedAutocomplete.tsx
index 4160116573..8aff3a3273 100644
--- a/centreon/packages/ui/src/Form/Inputs/ConnectedAutocomplete.tsx
+++ b/centreon/packages/ui/src/Form/Inputs/ConnectedAutocomplete.tsx
@@ -1,7 +1,7 @@
import { useCallback, useMemo } from 'react';
import { FormikValues, useFormikContext } from 'formik';
-import { equals, isEmpty, path, split } from 'ramda';
+import { path, equals, isEmpty, propEq, reject, split } from 'ramda';
import { useTranslation } from 'react-i18next';
import {
@@ -102,9 +102,21 @@ const ConnectedAutocomplete = ({
[isMultiple]
);
+ const deleteItem = (_, option): void => {
+ const newValue = reject(propEq(option.id, 'id'), value);
+
+ setFieldValue(fieldName, newValue);
+ };
+
+ const chipProps = connectedAutocomplete && {
+ color: connectedAutocomplete?.chipColor || 'default',
+ onDelete: deleteItem
+ };
+
return useMemoComponent({
Component: (
,
(props: InputPropsWithoutGroup) => JSX.Element | null
>([
+ [equals(InputType.Switch) as (b: InputType) => boolean, always(SwitchInput)],
+ [equals(InputType.Radio) as (b: InputType) => boolean, always(RadioInput)],
[
- R.equals(InputType.Switch) as (b: InputType) => boolean,
- R.always(SwitchInput)
- ],
- [
- R.equals(InputType.Radio) as (b: InputType) => boolean,
- R.always(RadioInput)
- ],
- [
- R.equals(InputType.SingleAutocomplete) as (b: InputType) => boolean,
- R.always(Autocomplete)
- ],
- [
- R.equals(InputType.MultiAutocomplete) as (b: InputType) => boolean,
- R.always(Autocomplete)
+ equals(InputType.SingleAutocomplete) as (b: InputType) => boolean,
+ always(Autocomplete)
],
[
- R.equals(InputType.MultiConnectedAutocomplete) as (b: InputType) => boolean,
- R.always(ConnectedAutocomplete)
+ equals(InputType.MultiAutocomplete) as (b: InputType) => boolean,
+ always(Autocomplete)
],
[
- R.equals(InputType.SingleConnectedAutocomplete) as (
- b: InputType
- ) => boolean,
- R.always(ConnectedAutocomplete)
+ equals(InputType.MultiConnectedAutocomplete) as (b: InputType) => boolean,
+ always(ConnectedAutocomplete)
],
[
- R.equals(InputType.FieldsTable) as (b: InputType) => boolean,
- R.always(FieldsTable)
+ equals(InputType.SingleConnectedAutocomplete) as (b: InputType) => boolean,
+ always(ConnectedAutocomplete)
],
- [R.equals(InputType.Grid) as (b: InputType) => boolean, R.always(Grid)],
- [R.equals(InputType.Custom) as (b: InputType) => boolean, R.always(Custom)],
[
- R.equals(InputType.Checkbox) as (b: InputType) => boolean,
- R.always(Checkbox)
+ equals(InputType.FieldsTable) as (b: InputType) => boolean,
+ always(FieldsTable)
],
+ [equals(InputType.Grid) as (b: InputType) => boolean, always(Grid)],
+ [equals(InputType.Custom) as (b: InputType) => boolean, always(Custom)],
+ [equals(InputType.Checkbox) as (b: InputType) => boolean, always(Checkbox)],
[
- R.equals(InputType.CheckboxGroup) as (b: InputType) => boolean,
- R.always(CheckboxGroup)
+ equals(InputType.CheckboxGroup) as (b: InputType) => boolean,
+ always(CheckboxGroup)
],
- [R.equals(InputType.List) as (b: InputType) => boolean, R.always(List)],
- [R.T, R.always(TextInput)]
+ [equals(InputType.List) as (b: InputType) => boolean, always(List)],
+ [T, always(TextInput)]
]);
interface StylesProps {
@@ -86,13 +96,13 @@ const useStyles = makeStyles()((theme, { groupDirection }) => ({
justifyContent: 'flex-end'
},
divider: {
- margin: R.equals(groupDirection, GroupDirection.Horizontal)
+ margin: equals(groupDirection, GroupDirection.Horizontal)
? theme.spacing(0, 2)
: theme.spacing(2, 0)
},
groups: {
display: 'flex',
- flexDirection: R.equals(groupDirection, GroupDirection.Horizontal)
+ flexDirection: equals(groupDirection, GroupDirection.Horizontal)
? 'row'
: 'column'
},
@@ -129,9 +139,9 @@ const Inputs = ({
const { classes, cx } = useStyles({ groupDirection });
const formikContext = useFormikContext();
- const groupsName = R.pluck('name', groups);
+ const groupsName = pluck('name', groups);
- const visibleInputs = R.filter(
+ const visibleInputs = filter(
({ hideInput }) =>
formikContext ? !hideInput?.(formikContext?.values) || false : true,
inputs
@@ -139,30 +149,30 @@ const Inputs = ({
const inputsByGroup = useMemo(
() =>
- R.groupBy(
- ({ group }) => R.find(R.equals(group), groupsName) as string,
+ groupBy(
+ ({ group }) => find(equals(group), groupsName) as string,
visibleInputs
),
[visibleInputs]
) as Record>;
const sortedGroupNames = useMemo(() => {
- const sortedGroups = R.sort(R.ascend(R.prop('order')), groups);
+ const sortedGroups = sort(ascend(prop('order')), groups);
- const usedGroups = R.filter(
- ({ name }) => R.any(R.equals(name), R.keys(inputsByGroup)),
+ const usedGroups = filter(
+ ({ name }) => any(equals(name), keys(inputsByGroup)),
sortedGroups
);
- return R.pluck('name', usedGroups);
+ return pluck('name', usedGroups);
}, []);
const sortedInputsByGroup = useMemo(
() =>
- R.reduce>>(
+ reduce>>(
(acc, value) => ({
...acc,
- [value]: R.sort(
+ [value]: sort(
(a, b) => (b?.required ? 1 : 0) - (a?.required ? 1 : 0),
inputsByGroup[value]
)
@@ -173,24 +183,24 @@ const Inputs = ({
[visibleInputs]
);
- const lastGroup = useMemo(() => R.last(sortedGroupNames), []);
+ const lastGroup = useMemo(() => last(sortedGroupNames), []);
const normalizedInputsByGroup = (
- R.isEmpty(sortedInputsByGroup)
+ isEmpty(sortedInputsByGroup)
? [[null, visibleInputs]]
- : R.toPairs(sortedInputsByGroup)
+ : toPairs(sortedInputsByGroup)
) as Array<[string | null, Array]>;
return (
{normalizedInputsByGroup.map(([groupName, groupedInputs], index) => {
- const hasGroupTitle = R.not(R.isNil(groupName));
+ const hasGroupTitle = not(isNil(groupName));
const groupProps = hasGroupTitle
- ? R.find(R.propEq(groupName, 'name'), groups)
+ ? find(propEq(groupName, 'name'), groups)
: ({} as Group);
- const isFirstElement = areGroupsOpen || R.equals(index, 0);
+ const isFirstElement = areGroupsOpen || equals(index, 0);
return (
@@ -240,18 +250,17 @@ const Inputs = ({
- {hasGroupTitle &&
- R.not(R.equals(lastGroup, groupName as string)) && (
-
- )}
+ {hasGroupTitle && not(equals(lastGroup, groupName as string)) && (
+
+ )}
);
})}
diff --git a/centreon/packages/ui/src/Form/Inputs/models.ts b/centreon/packages/ui/src/Form/Inputs/models.ts
index 53a2ac2b17..f58224c262 100644
--- a/centreon/packages/ui/src/Form/Inputs/models.ts
+++ b/centreon/packages/ui/src/Form/Inputs/models.ts
@@ -6,20 +6,20 @@ import { SelectEntry } from '../../InputField/Select';
import { ConditionsSearchParameter } from '../../api/buildListingEndpoint/models';
export enum InputType {
- Switch,
- Radio,
- Text,
- SingleAutocomplete,
- MultiAutocomplete,
- Password,
- SingleConnectedAutocomplete,
- MultiConnectedAutocomplete,
- FieldsTable,
- Grid,
- Custom,
- Checkbox,
- CheckboxGroup,
- List
+ Switch = 0,
+ Radio = 1,
+ Text = 2,
+ SingleAutocomplete = 3,
+ MultiAutocomplete = 4,
+ Password = 5,
+ SingleConnectedAutocomplete = 6,
+ MultiConnectedAutocomplete = 7,
+ FieldsTable = 8,
+ Grid = 9,
+ Custom = 10,
+ Checkbox = 11,
+ CheckboxGroup = 12,
+ List = 13
}
interface FieldsTableGetRequiredProps {
@@ -46,6 +46,7 @@ export interface InputProps {
};
connectedAutocomplete?: {
additionalConditionParameters: Array;
+ chipColor?: string;
endpoint?: string;
filterKey?: string;
getRenderedOptionText?: (option) => string | JSX.Element;
diff --git a/centreon/packages/ui/src/Form/storiesData.tsx b/centreon/packages/ui/src/Form/storiesData.tsx
index 613d8e6bee..9299c98ca9 100644
--- a/centreon/packages/ui/src/Form/storiesData.tsx
+++ b/centreon/packages/ui/src/Form/storiesData.tsx
@@ -1,14 +1,14 @@
import { FormikValues, useFormikContext } from 'formik';
-import * as Yup from 'yup';
import { equals, prop } from 'ramda';
-import { Typography } from '@mui/material';
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
import MailIcon from '@mui/icons-material/MailOutline';
+import { Typography } from '@mui/material';
import { SelectEntry } from '../InputField/Select';
import { Listing } from '../api/models';
+import { array, boolean, number, object, string } from 'yup';
import {
Group,
InputProps,
@@ -43,46 +43,42 @@ export interface BasicForm {
sports: Array;
}
-const selectEntryValidationSchema = Yup.object().shape({
- id: Yup.number().required('Required'),
- name: Yup.string().required('Required')
+const selectEntryValidationSchema = object().shape({
+ id: number().required('Required'),
+ name: string().required('Required')
});
-export const basicFormValidationSchema = Yup.object().shape({
- active: Yup.boolean().required('Active is required'),
- activeSortableFieldsTable: Yup.boolean().required(
+export const basicFormValidationSchema = object().shape({
+ active: boolean().required('Active is required'),
+ activeSortableFieldsTable: boolean().required(
'Active Sortable FieldsTable is required'
),
- animals: Yup.array().of(selectEntryValidationSchema.required('Required')),
- anotherText: Yup.string(),
- certificate: Yup.string(),
+ animals: array().of(selectEntryValidationSchema.required('Required')),
+ anotherText: string(),
+ certificate: string(),
class: selectEntryValidationSchema.nullable().required('Required'),
- custom: Yup.string().required('Custom is required'),
- email: Yup.string().email('Invalid email').required('Email is required'),
+ custom: string().required('Custom is required'),
+ email: string().email('Invalid email').required('Email is required'),
group: selectEntryValidationSchema.nullable().required('Required'),
- inviteUsers: Yup.array().of(
- Yup.object({
- email: Yup.string()
- .email('Invalid user email')
- .required('Email is required'),
+ inviteUsers: array().of(
+ object({
+ email: string().email('Invalid user email').required('Email is required'),
role: selectEntryValidationSchema
})
),
- inviteUsers2: Yup.array().of(Yup.string().email('Invalid user email')),
- isForced: Yup.boolean().required('Is forced is required'),
- language: Yup.string().required('Language is required'),
- name: Yup.string().required('Name is required'),
- password: Yup.string().required('Password is required'),
- roleMapping: Yup.array().of(
- Yup.object({
+ inviteUsers2: array().of(string().email('Invalid user email')),
+ isForced: boolean().required('Is forced is required'),
+ language: string().required('Language is required'),
+ name: string().required('Name is required'),
+ password: string().required('Password is required'),
+ roleMapping: array().of(
+ object({
role: selectEntryValidationSchema,
- value: Yup.string().required('Role value is required')
+ value: string().required('Role value is required')
})
),
- scopes: Yup.array().of(
- Yup.string().min(3, '3 characters min').required('Required')
- ),
- sports: Yup.array().of(selectEntryValidationSchema.required('Required'))
+ scopes: array().of(string().min(3, '3 characters min').required('Required')),
+ sports: array().of(selectEntryValidationSchema.required('Required'))
});
const roleEntries: Array = [
diff --git a/centreon/packages/ui/src/Form/storiesData.tsx-E b/centreon/packages/ui/src/Form/storiesData.tsx-E
new file mode 100644
index 0000000000..a8fd7e8258
--- /dev/null
+++ b/centreon/packages/ui/src/Form/storiesData.tsx-E
@@ -0,0 +1,481 @@
+import { FormikValues, useFormikContext } from 'formik';
+import { equals, prop } from 'ramda';
+
+import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
+import MailIcon from '@mui/icons-material/MailOutline';
+import { Typography } from '@mui/material';
+
+import { SelectEntry } from '../InputField/Select';
+import { Listing } from '../api/models';
+
+import {
+ Group,
+ InputProps,
+ InputPropsWithoutGroup,
+ InputType
+} from './Inputs/models';
+import { object } from ';
+
+export interface BasicForm {
+ active: boolean;
+ activeSortableFieldsTable: boolean;
+ animals: Array;
+ anotherText: string;
+ certificate: string;
+ class: { id: number; name: string } | null;
+ custom: string;
+ email: string;
+ group: { id: number; name: string } | null;
+ inviteUsers: Array<{
+ role: SelectEntry;
+ user: string;
+ }>;
+ inviteUsers2: Array;
+ isForced: boolean;
+ language: string;
+ name: string;
+ password: string;
+ roleMapping: Array<{
+ role: SelectEntry;
+ value: string;
+ }>;
+ scopes: Array;
+ sports: Array;
+}
+
+const selectEntryValidationSchema = object().shape({
+ id: number().required('Required'),
+ name: string().required('Required')
+});
+
+export const basicFormValidationSchema = object().shape({
+ active: boolean().required('Active is required'),
+ activeSortableFieldsTable: boolean().required(
+ 'Active Sortable FieldsTable is required'
+ ),
+ animals: array().of(selectEntryValidationSchema.required('Required')),
+ anotherText: string(),
+ certificate: string(),
+ class: selectEntryValidationSchema.nullable().required('Required'),
+ custom: string().required('Custom is required'),
+ email: string().email('Invalid email').required('Email is required'),
+ group: selectEntryValidationSchema.nullable().required('Required'),
+ inviteUsers: array().of(
+ object({
+ email: string()
+ .email('Invalid user email')
+ .required('Email is required'),
+ role: selectEntryValidationSchema
+ })
+ ),
+ inviteUsers2: array().of(string().email('Invalid user email')),
+ isForced: boolean().required('Is forced is required'),
+ language: string().required('Language is required'),
+ name: string().required('Name is required'),
+ password: string().required('Password is required'),
+ roleMapping: array().of(
+ object({
+ role: selectEntryValidationSchema,
+ value: string().required('Role value is required')
+ })
+ ),
+ scopes: array().of(
+ string().min(3, '3 characters min').required('Required')
+ ),
+ sports: Yup.array().of(selectEntryValidationSchema.required('Required'))
+});
+
+const roleEntries: Array = [
+ {
+ id: 1,
+ name: 'Administrator'
+ },
+ {
+ id: 2,
+ name: 'User'
+ },
+ {
+ id: 3,
+ name: 'Editor'
+ }
+];
+
+export const basicFormInitialValues = {
+ active: false,
+ activeSortableFieldsTable: false,
+ animals: [],
+ certificate: '',
+ class: { id: 0, name: 'Class 0' },
+ custom: '',
+ email: '',
+ group: null,
+ inviteUsers: [],
+ inviteUsers2: [],
+ isForced: false,
+ language: 'French',
+ name: '',
+ notifications: {
+ channels: { Icon: MailIcon, checked: true, label: 'mail' },
+ hostevents: ['ok', 'warning'],
+ includeServices: { checked: true, label: 'Include services for this host' }
+ },
+ password: '',
+ roleMapping: [
+ {
+ priority: 0,
+ role: roleEntries[0],
+ value: 'example'
+ },
+ {
+ priority: 1,
+ role: roleEntries[1],
+ value: 'example2'
+ },
+ {
+ priority: 2,
+ role: roleEntries[2],
+ value: 'example3'
+ }
+ ],
+ scopes: [],
+ sports: []
+};
+
+export const classOptions = [...Array(10).keys()].map((idx) => ({
+ id: idx,
+ name: `Class ${idx}`
+}));
+
+export const sportOptions = [...Array(10).keys()].map((idx) => ({
+ id: idx,
+ name: `Sport ${idx}`
+}));
+
+export const basicFormGroups: Array = [
+ {
+ name: 'First group',
+ order: 1
+ },
+ {
+ EndIcon: () => ,
+ TooltipContent: (): JSX.Element => Tooltip content ,
+ name: 'Second group',
+ order: 2
+ },
+ {
+ name: 'Third group',
+ order: 3
+ }
+];
+
+export const basicFormInputs: Array = [
+ {
+ fieldName: 'name',
+ group: 'First group',
+ label: 'Name',
+ type: InputType.Text
+ },
+ {
+ fieldName: 'email',
+ group: 'First group',
+ label: 'Email',
+ text: {
+ endAdornment: ,
+ placeholder: 'Your email here'
+ },
+ type: InputType.Text
+ },
+ {
+ fieldName: 'active',
+ group: 'Second group',
+ label: 'Active',
+ type: InputType.Switch
+ },
+ {
+ additionalLabel: 'This a very special label',
+ fieldName: 'password',
+ group: 'First group',
+ hideInput: (values) => values.active,
+ label: 'Password',
+ type: InputType.Password
+ },
+ {
+ fieldName: 'language',
+ group: 'First group',
+ label: 'Language',
+ radio: {
+ options: [
+ {
+ label: 'French',
+ value: 'French'
+ },
+ {
+ label: 'English',
+ value: 'English'
+ }
+ ]
+ },
+ type: InputType.Radio
+ },
+ {
+ additionalLabel: 'Notifications',
+ fieldName: '',
+ grid: {
+ alignItems: 'center',
+ columns: [
+ {
+ checkbox: {
+ direction: 'horizontal'
+ },
+ fieldName: 'notifications.channels',
+ label: 'channels',
+ type: InputType.Checkbox
+ },
+ {
+ fieldName: 'notifications.includeServices',
+ label: 'Iclude services',
+ type: InputType.Checkbox
+ },
+ {
+ checkbox: {
+ direction: 'horizontal',
+ labelPlacement: 'top',
+ options: ['ok', 'warning', 'critical', 'unknown']
+ },
+ fieldName: 'notifications.hostevents',
+ label: 'host events',
+ type: InputType.CheckboxGroup
+ }
+ ]
+ },
+ group: 'Third group',
+ label: 'Notifications',
+ type: InputType.Grid
+ },
+ {
+ fieldName: 'anotherText',
+ group: 'First group',
+ hideInput: ({ language }) => equals(language, 'French'),
+ label: 'Another Text input',
+ type: InputType.Text
+ },
+ {
+ fieldName: 'isForced',
+ group: 'First group',
+ label: 'Is Forced?',
+ radio: {
+ options: [
+ {
+ label: 'Is not forced',
+ value: false
+ },
+ {
+ label: 'Is forced',
+ value: true
+ }
+ ]
+ },
+ type: InputType.Radio
+ },
+ {
+ fieldName: '',
+ grid: {
+ columns: [
+ {
+ autocomplete: {
+ options: classOptions
+ },
+ fieldName: 'class',
+ label: 'Class (Single autocomplete)',
+ type: InputType.SingleAutocomplete
+ },
+ {
+ autocomplete: {
+ options: sportOptions
+ },
+ fieldName: 'sports',
+ label: 'Sports (Multi autocomplete)',
+ type: InputType.MultiAutocomplete
+ }
+ ]
+ },
+ group: 'First group',
+ label: 'autocompletes',
+ type: InputType.Grid
+ },
+ {
+ autocomplete: {
+ creatable: true,
+ options: []
+ },
+ fieldName: 'scopes',
+ group: 'First group',
+ label: 'Scopes (Multi autocomplete that allows value creation)',
+ type: InputType.MultiAutocomplete
+ },
+ {
+ fieldName: '',
+ grid: {
+ columns: [
+ {
+ connectedAutocomplete: {
+ additionalConditionParameters: [],
+ endpoint: 'endpoint'
+ },
+ fieldName: 'group',
+ label: 'Group (Single connected autocomplete)',
+ type: InputType.SingleConnectedAutocomplete
+ },
+ {
+ connectedAutocomplete: {
+ additionalConditionParameters: [],
+ endpoint: 'endpoint'
+ },
+ fieldName: 'animals',
+ label: 'Animals (Multi connected autocomplete)',
+ type: InputType.MultiConnectedAutocomplete
+ }
+ ],
+ gridTemplateColumns: '400px 1fr'
+ },
+ group: 'First group',
+ label: 'connected autocompletes',
+ type: InputType.Grid
+ },
+ {
+ custom: {
+ Component: ({ label }: InputPropsWithoutGroup): JSX.Element => (
+ This is a {label} component
+ )
+ },
+ fieldName: 'custom',
+ group: 'Second group',
+ label: 'Custom',
+ type: InputType.Custom
+ },
+ {
+ fieldName: 'inviteUsers',
+ fieldsTable: {
+ columns: [
+ {
+ fieldName: 'email',
+ label: 'Email',
+ required: true,
+ type: InputType.Text
+ },
+ {
+ autocomplete: {
+ creatable: false,
+ options: roleEntries
+ },
+ fieldName: 'role',
+ label: 'Role',
+ type: InputType.SingleAutocomplete
+ }
+ ],
+ defaultRowValue: {
+ email: 'example@test.fr',
+ role: null
+ },
+ deleteLabel: 'Delete'
+ },
+ group: 'First group',
+ label: 'inviteUsers',
+ type: InputType.FieldsTable
+ },
+ {
+ fieldName: 'inviteUsers2',
+ fieldsTable: {
+ columns: [
+ {
+ fieldName: 'email',
+ label: 'Email',
+ required: true,
+ type: InputType.Text
+ }
+ ],
+ defaultRowValue: 'example',
+ deleteLabel: 'Delete',
+ hasSingleValue: true
+ },
+ group: 'First group',
+ label: 'inviteUsers2',
+ type: InputType.FieldsTable
+ },
+ {
+ fieldName: 'activeSortableFieldsTable',
+ group: 'First group',
+ label: 'Active Sortable Fields Table',
+ type: InputType.Switch
+ },
+ {
+ fieldName: 'roleMapping',
+ fieldsTable: {
+ columns: [
+ {
+ fieldName: 'value',
+ label: 'RoleValue',
+ required: true,
+ type: InputType.Text
+ },
+ {
+ autocomplete: {
+ creatable: false,
+ options: roleEntries
+ },
+ fieldName: 'role',
+ label: 'RoleAcl',
+ type: InputType.SingleAutocomplete
+ }
+ ],
+ defaultRowValue: {
+ role: null,
+ value: ''
+ },
+ deleteLabel: 'Delete',
+ getSortable: (values: FormikValues): boolean =>
+ prop('activeSortableFieldsTable', values)
+ },
+ group: 'First group',
+ label: 'roleMapping',
+ type: InputType.FieldsTable
+ },
+ {
+ fieldName: 'certificate',
+ group: 'First group',
+ label: 'Certificate',
+ text: {
+ multilineRows: 4
+ },
+ type: InputType.Text
+ }
+];
+
+export const CustomButton = (): JSX.Element => {
+ const { dirty, isValid } = useFormikContext();
+
+ return (
+
+ Has form changed? {JSON.stringify(dirty)}
+ Is valid? {JSON.stringify(isValid)}
+
+ );
+};
+
+const buildEntities = (from): Array => {
+ return Array(10)
+ .fill(0)
+ .map((_, index) => ({
+ id: from + index,
+ name: `Entity ${from + index}`
+ }));
+};
+
+export const buildResult = (page): Listing => ({
+ meta: {
+ limit: 10,
+ page,
+ total: 40
+ },
+ result: buildEntities((page - 1) * 10)
+});
diff --git a/centreon/packages/ui/src/Graph/BarChart/BarChart.cypress.spec.tsx b/centreon/packages/ui/src/Graph/BarChart/BarChart.cypress.spec.tsx
new file mode 100644
index 0000000000..500c11efc9
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/BarChart.cypress.spec.tsx
@@ -0,0 +1,283 @@
+import { renderHook } from '@testing-library/react';
+import dayjs from 'dayjs';
+import { useAtomValue } from 'jotai';
+
+import { userAtom } from '@centreon/ui-context';
+
+import dataPingService from '../mockedData/pingService.json';
+import dataPingServiceMixedStacked from '../mockedData/pingServiceMixedStacked.json';
+import dataPingServiceStacked from '../mockedData/pingServiceStacked.json';
+
+import BarChart, { BarChartProps } from './BarChart';
+
+const defaultStart = new Date(
+ dayjs(Date.now()).subtract(24, 'hour').toDate().getTime()
+).toISOString();
+
+const defaultEnd = new Date(Date.now()).toISOString();
+
+const defaultArgs = {
+ end: defaultEnd,
+ height: 500,
+ loading: false,
+ start: defaultStart
+};
+
+const initialize = ({
+ data = dataPingService,
+ legend,
+ tooltip,
+ axis,
+ orientation,
+ barStyle
+}: Pick<
+ BarChartProps,
+ 'data' | 'legend' | 'axis' | 'barStyle' | 'orientation' | 'tooltip'
+>): void => {
+ cy.adjustViewport();
+
+ cy.mount({
+ Component: (
+
+
+
+ )
+ });
+
+ cy.viewport('macbook-13');
+};
+
+const checkWidth = (orientation): void => {
+ if (orientation === 'vertical') {
+ cy.get('g[class*="visx-rows"] > line')
+ .eq(0)
+ .should('have.attr', 'x2')
+ .and('equal', '1135');
+
+ return;
+ }
+ cy.get('g[class*="visx-rows"] > line')
+ .eq(0)
+ .should('have.attr', 'x2')
+ .and('equal', '1170');
+};
+
+describe('Bar chart', () => {
+ ['horizontal', 'vertical'].forEach((orientation) => {
+ it(`displays the bar chart ${orientation}ly`, () => {
+ initialize({ orientation });
+ const userData = renderHook(() => useAtomValue(userAtom));
+ userData.result.current.locale = 'en';
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.08644').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it(`displays the bar chart ${orientation}ly centered in zero`, () => {
+ initialize({ axis: { isCenteredZero: true }, orientation });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.08644').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it(`displays the stacked bar chart ${orientation}ly`, () => {
+ initialize({ data: dataPingServiceStacked, orientation });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.16196').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it(`displays bar chart ${orientation}ly with a mix of stacked and non-stacked data`, () => {
+ initialize({ data: dataPingServiceMixedStacked, orientation });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.08644').should('be.visible');
+ });
+
+ it(`displays the stacked bar chart ${orientation}ly centered in zero`, () => {
+ initialize({
+ axis: { isCenteredZero: true },
+ data: dataPingServiceStacked,
+ orientation
+ });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.16196').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it(`displays bar chart ${orientation}ly with a mix of stacked and non-stacked data centered in zero`, () => {
+ initialize({
+ axis: { isCenteredZero: true },
+ data: dataPingServiceMixedStacked,
+ orientation
+ });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.08644').should('be.visible');
+ });
+
+ it(`displays bar chart ${orientation}ly with a custom style`, () => {
+ initialize({
+ barStyle: { opacity: 0.5, radius: 0.5 },
+ data: dataPingServiceMixedStacked,
+ orientation
+ });
+
+ checkWidth(orientation);
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.08644').should('be.visible');
+ });
+ });
+
+ it('displays a tooltip when a single bar is hovered', () => {
+ initialize({
+ orientation: 'horizontal'
+ });
+
+ checkWidth('horizontal');
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-10-0-7650.368581547736').realHover();
+
+ cy.contains('06/19/2024').should('be.visible');
+ cy.contains('Centreon-Server: Round-Trip Maximum Time').should(
+ 'be.visible'
+ );
+ cy.contains('7.47 KB').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('does not display a tooltip when a bar is hovered and a props is set', () => {
+ initialize({
+ data: dataPingServiceStacked,
+ orientation: 'horizontal',
+ tooltip: {
+ mode: 'hidden',
+ sortOrder: 'descending'
+ }
+ });
+
+ checkWidth('horizontal');
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-1-0-0.05296').realHover();
+
+ cy.contains('06/19/2024').should('not.exist');
+
+ cy.findByTestId('stacked-bar-3-0-0.12340000000000001').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays a tooltip when a stacked bar is hovered', () => {
+ initialize({
+ data: dataPingServiceStacked,
+ orientation: 'horizontal',
+ tooltip: {
+ mode: 'all',
+ sortOrder: 'ascending'
+ }
+ });
+
+ checkWidth('horizontal');
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-1-0-0.05296').realHover();
+
+ cy.contains('06/19/2024').should('be.visible');
+ cy.contains('Centreon-Server: Round-Trip Maximum Time').should(
+ 'be.visible'
+ );
+ cy.contains('Centreon-Server: Round-Trip Average Time').should(
+ 'be.visible'
+ );
+ cy.contains('Centreon-Server: Round-Trip Minimum Time').should(
+ 'be.visible'
+ );
+ cy.contains('0.05 ms').should('be.visible');
+ cy.contains('0.02 ms').should('be.visible');
+ cy.contains('0.11 ms').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.16196').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays a tooltip with a single metric when a stacked bar is hovered and a prop is set', () => {
+ initialize({
+ data: dataPingServiceStacked,
+ orientation: 'horizontal',
+ tooltip: {
+ mode: 'single',
+ sortOrder: 'descending'
+ }
+ });
+
+ checkWidth('horizontal');
+ cy.contains('0 ms').should('be.visible');
+ cy.contains('20').should('be.visible');
+ cy.contains(':40 AM').should('be.visible');
+
+ cy.findByTestId('stacked-bar-1-0-0.05296').realHover();
+
+ cy.contains('06/19/2024').should('be.visible');
+ cy.contains('Centreon-Server: Round-Trip Average Time').should(
+ 'be.visible'
+ );
+ cy.contains('0.05 ms').should('be.visible');
+
+ cy.findByTestId('stacked-bar-3-0-0.16196').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+});
diff --git a/centreon/packages/ui/src/Graph/BarChart/BarChart.stories.tsx b/centreon/packages/ui/src/Graph/BarChart/BarChart.stories.tsx
new file mode 100644
index 0000000000..45f30c111e
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/BarChart.stories.tsx
@@ -0,0 +1,213 @@
+import { Meta, StoryObj } from '@storybook/react';
+import dayjs from 'dayjs';
+
+import { LineChartData } from '../common/models';
+import dataPingService from '../mockedData/pingService.json';
+import dataPingServiceMixedStacked from '../mockedData/pingServiceMixedStacked.json';
+import dataPingServiceStacked from '../mockedData/pingServiceStacked.json';
+
+import BarChart from './BarChart';
+
+const meta: Meta = {
+ component: BarChart
+};
+export default meta;
+
+type Story = StoryObj;
+
+const defaultStart = new Date(
+ dayjs(Date.now()).subtract(24, 'hour').toDate().getTime()
+).toISOString();
+
+const defaultEnd = new Date(Date.now()).toISOString();
+
+const defaultArgs = {
+ end: defaultEnd,
+ height: 500,
+ loading: false,
+ start: defaultStart
+};
+
+const Template = (args): JSX.Element => (
+
+);
+
+export const Default: Story = {
+ args: defaultArgs,
+ render: Template
+};
+
+export const withCenteredZero: Story = {
+ args: {
+ ...defaultArgs,
+ axis: {
+ isCenteredZero: true
+ }
+ },
+ render: Template
+};
+
+export const vertical: Story = {
+ args: {
+ ...defaultArgs,
+ height: 800,
+ orientation: 'vertical'
+ },
+ render: Template
+};
+
+export const verticalCenteredZero: Story = {
+ args: {
+ ...defaultArgs,
+ axis: {
+ isCenteredZero: true
+ },
+ height: 800,
+ orientation: 'vertical'
+ },
+ render: Template
+};
+
+export const stacked: Story = {
+ args: {
+ ...defaultArgs,
+ data: dataPingServiceStacked
+ },
+ render: Template
+};
+
+export const stackedVertical: Story = {
+ args: {
+ ...defaultArgs,
+ data: dataPingServiceStacked,
+ height: 800,
+ orientation: 'vertical'
+ },
+ render: Template
+};
+
+export const stackedCenteredZero: Story = {
+ args: {
+ ...defaultArgs,
+ axis: {
+ isCenteredZero: true
+ },
+ data: dataPingServiceStacked
+ },
+ render: Template
+};
+
+export const stackedVerticalCenteredZero: Story = {
+ args: {
+ ...defaultArgs,
+ axis: {
+ isCenteredZero: true
+ },
+ data: dataPingServiceStacked,
+ height: 800,
+ orientation: 'vertical'
+ },
+ render: Template
+};
+
+export const thresholds: Story = {
+ args: {
+ ...defaultArgs,
+ thresholdUnit: 'ms',
+ thresholds: {
+ critical: [
+ {
+ label: 'critical 1',
+ value: 0.1
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning 1',
+ value: 0.05
+ }
+ ]
+ }
+ },
+ render: Template
+};
+
+export const thresholdsVertical: Story = {
+ args: {
+ ...defaultArgs,
+ axis: {
+ isCenteredZero: true
+ },
+ orientation: 'vertical',
+ thresholdUnit: 'ms',
+ thresholds: {
+ critical: [
+ {
+ label: 'critical 1',
+ value: 0.1
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning 1',
+ value: 0.05
+ }
+ ]
+ }
+ },
+ render: Template
+};
+
+export const thresholdStacked: Story = {
+ args: {
+ ...defaultArgs,
+ data: dataPingServiceStacked,
+ thresholdUnit: 'ms',
+ thresholds: {
+ critical: [
+ {
+ label: 'critical 1',
+ value: 0.1
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning 1',
+ value: 0.05
+ }
+ ]
+ }
+ },
+ render: Template
+};
+
+export const customBarStyle: Story = {
+ args: {
+ ...defaultArgs,
+ barStyle: {
+ opacity: 0.5,
+ radius: 0.5
+ }
+ },
+ render: Template
+};
+
+export const mixedStacked: Story = {
+ args: {
+ ...defaultArgs,
+ data: dataPingServiceMixedStacked
+ },
+ render: Template
+};
+
+export const mixedStackedVertical: Story = {
+ args: {
+ ...defaultArgs,
+ data: dataPingServiceMixedStacked,
+ orientation: 'vertical'
+ },
+ render: Template
+};
diff --git a/centreon/packages/ui/src/Graph/BarChart/BarChart.tsx b/centreon/packages/ui/src/Graph/BarChart/BarChart.tsx
new file mode 100644
index 0000000000..6e705e73a5
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/BarChart.tsx
@@ -0,0 +1,104 @@
+import { useRef } from 'react';
+
+import dayjs from 'dayjs';
+import 'dayjs/locale/en';
+import 'dayjs/locale/es';
+import 'dayjs/locale/fr';
+import 'dayjs/locale/pt';
+import localizedFormat from 'dayjs/plugin/localizedFormat';
+import timezonePlugin from 'dayjs/plugin/timezone';
+import utcPlugin from 'dayjs/plugin/utc';
+import { Provider } from 'jotai';
+
+import { Box } from '@mui/material';
+
+import { ParentSize } from '../../ParentSize';
+import LoadingSkeleton from '../Chart/LoadingSkeleton';
+import { LineChartProps } from '../Chart/models';
+import useChartData from '../Chart/useChartData';
+import { LineChartData, Thresholds } from '../common/models';
+
+import ResponsiveBarChart from './ResponsiveBarChart';
+import { BarStyle } from './models';
+
+dayjs.extend(localizedFormat);
+dayjs.extend(utcPlugin);
+dayjs.extend(timezonePlugin);
+
+export interface BarChartProps
+ extends Partial<
+ Pick
+ > {
+ barStyle?: BarStyle;
+ data?: LineChartData;
+ end: string;
+ limitLegend?: false | number;
+ loading: boolean;
+ orientation: 'vertical' | 'horizontal' | 'auto';
+ start: string;
+ thresholdUnit?: string;
+ thresholds?: Thresholds;
+}
+
+const BarChart = ({
+ data,
+ end,
+ start,
+ height = 500,
+ tooltip,
+ axis,
+ legend,
+ loading,
+ limitLegend,
+ thresholdUnit,
+ thresholds,
+ orientation = 'horizontal',
+ header,
+ barStyle = {
+ opacity: 1,
+ radius: 0.2
+ }
+}: BarChartProps): JSX.Element => {
+ const { adjustedData } = useChartData({ data, end, start });
+ const lineChartRef = useRef(null);
+
+ if (loading && !adjustedData) {
+ return (
+
+ );
+ }
+
+ return (
+
+
+
+ {({ height: responsiveHeight, width }) => (
+
+ )}
+
+
+
+ );
+};
+
+export default BarChart;
diff --git a/centreon/packages/ui/src/Graph/BarChart/BarGroup.tsx b/centreon/packages/ui/src/Graph/BarChart/BarGroup.tsx
new file mode 100644
index 0000000000..48bda98a59
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/BarGroup.tsx
@@ -0,0 +1,239 @@
+import { memo, useMemo } from 'react';
+
+import { Group } from '@visx/group';
+import { scaleBand, scaleOrdinal } from '@visx/scale';
+import { BarGroupHorizontal, BarGroup as VisxBarGroup } from '@visx/shape';
+import { ScaleLinear } from 'd3-scale';
+import { difference, equals, keys, omit, pick, pluck, uniq } from 'ramda';
+
+import { useDeepMemo } from '../../utils';
+import {
+ getSortedStackedLines,
+ getTime,
+ getTimeSeriesForLines,
+ getUnits
+} from '../common/timeSeries';
+import { Line, TimeValue } from '../common/timeSeries/models';
+
+import BarStack from './BarStack';
+import { BarStyle } from './models';
+
+interface Props {
+ barStyle: BarStyle;
+ isTooltipHidden: boolean;
+ lines: Array;
+ orientation: 'horizontal' | 'vertical';
+ size: number;
+ timeSeries: Array;
+ xScale;
+ yScalesPerUnit: Record>;
+}
+
+const BarGroup = ({
+ orientation,
+ timeSeries,
+ size,
+ lines,
+ xScale,
+ yScalesPerUnit,
+ isTooltipHidden,
+ barStyle
+}: Props): JSX.Element => {
+ const isHorizontal = equals(orientation, 'horizontal');
+
+ const [firstUnit] = getUnits(lines);
+
+ const BarComponent = useMemo(
+ () => (isHorizontal ? VisxBarGroup : BarGroupHorizontal),
+ [isHorizontal]
+ );
+
+ const stackedLines = getSortedStackedLines(lines);
+ const stackedUnits = uniq(pluck('unit', stackedLines));
+ const notStackedLines = difference(lines, stackedLines);
+
+ const stackedKeys = stackedUnits.reduce(
+ (acc, unit) => ({
+ ...acc,
+ [`stacked-${unit}`]: null
+ }),
+ {}
+ );
+ const stackedLinesTimeSeriesPerUnit = stackedUnits.reduce(
+ (acc, stackedUnit) => {
+ const relatedLines = stackedLines.filter(({ unit }) =>
+ equals(unit, stackedUnit)
+ );
+
+ return {
+ ...acc,
+ [stackedUnit]: {
+ lines: relatedLines,
+ timeSeries: getTimeSeriesForLines({
+ lines: relatedLines,
+ timeSeries
+ })
+ }
+ };
+ },
+ {}
+ );
+
+ const notStackedTimeSeries = getTimeSeriesForLines({
+ lines: notStackedLines,
+ timeSeries
+ });
+
+ const normalizedTimeSeries = notStackedTimeSeries.map((timeSerie) => ({
+ ...timeSerie,
+ ...stackedKeys
+ }));
+
+ const lineKeys = useDeepMemo({
+ deps: [normalizedTimeSeries],
+ variable: keys(omit(['timeTick'], normalizedTimeSeries[0]))
+ });
+ const colors = useDeepMemo({
+ deps: [lineKeys, lines],
+ variable: lineKeys.map((key) => {
+ const metric = lines.find(({ metric_id }) =>
+ equals(metric_id, Number(key))
+ );
+
+ return metric?.lineColor || '';
+ })
+ });
+
+ const colorScale = useMemo(
+ () =>
+ scaleOrdinal({
+ domain: lineKeys,
+ range: colors
+ }),
+ [...lineKeys, ...colors]
+ );
+ const metricScale = useMemo(
+ () =>
+ scaleBand({
+ domain: lineKeys,
+ padding: 0.1,
+ range: [0, xScale.bandwidth()]
+ }),
+ [...lineKeys, xScale.bandwidth()]
+ );
+
+ const placeholderScale = yScalesPerUnit[firstUnit];
+
+ const barComponentBaseProps = useMemo(
+ () =>
+ isHorizontal
+ ? {
+ x0: getTime,
+ x0Scale: xScale,
+ x1Scale: metricScale,
+ yScale: placeholderScale
+ }
+ : {
+ xScale: placeholderScale,
+ y0: getTime,
+ y0Scale: xScale,
+ y1Scale: metricScale
+ },
+ [isHorizontal, placeholderScale, xScale, metricScale]
+ );
+
+ return (
+
+ color={colorScale}
+ data={normalizedTimeSeries}
+ height={size}
+ keys={lineKeys}
+ {...barComponentBaseProps}
+ >
+ {(barGroups) =>
+ barGroups.map((barGroup) => (
+
+ {barGroup.bars.map((bar) => {
+ const isStackedBar = bar.key.startsWith('stacked-');
+ const linesBar = isStackedBar
+ ? stackedLinesTimeSeriesPerUnit[bar.key.replace('stacked-', '')]
+ .lines
+ : (notStackedLines.find(({ metric_id }) =>
+ equals(metric_id, Number(bar.key))
+ ) as Line);
+ const timeSeriesBar = isStackedBar
+ ? stackedLinesTimeSeriesPerUnit[bar.key.replace('stacked-', '')]
+ .timeSeries
+ : notStackedTimeSeries.map((timeSerie) => ({
+ timeTick: timeSerie.timeTick,
+ [bar.key]: timeSerie[Number(bar.key)]
+ }));
+
+ return isStackedBar ? (
+
+ ) : (
+
+ );
+ })}
+
+ ))
+ }
+
+ );
+};
+
+const propsToMemoize = [
+ 'orientation',
+ 'timeSeries',
+ 'size',
+ 'lines',
+ 'secondUnit',
+ 'isCenteredZero',
+ 'barStyle'
+];
+
+export default memo(BarGroup, (prevProps, nextProps) => {
+ const prevYScale = prevProps.yScalesPerUnit;
+ const prevXScale = [
+ ...prevProps.xScale.domain(),
+ ...prevProps.xScale.range()
+ ];
+
+ const nextYScale = nextProps.yScalesPerUnit;
+ const nextXScale = [
+ ...nextProps.xScale.domain(),
+ ...nextProps.xScale.range()
+ ];
+
+ return (
+ equals(pick(propsToMemoize, prevProps), pick(propsToMemoize, nextProps)) &&
+ equals(prevYScale, nextYScale) &&
+ equals(prevXScale, nextXScale)
+ );
+});
diff --git a/centreon/packages/ui/src/Graph/BarChart/BarStack.tsx b/centreon/packages/ui/src/Graph/BarChart/BarStack.tsx
new file mode 100644
index 0000000000..6597a73532
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/BarStack.tsx
@@ -0,0 +1,141 @@
+import { memo } from 'react';
+
+import { scaleBand } from '@visx/scale';
+import { BarRounded } from '@visx/shape';
+import { dec, equals, gt, pick } from 'ramda';
+
+import { BarStyle } from './models';
+import { UseBarStackProps, useBarStack } from './useBarStack';
+
+const xScale = scaleBand({
+ domain: [0, 0],
+ padding: 0,
+ range: [0, 0]
+});
+
+interface Props extends Omit {
+ barIndex: number;
+ barPadding: number;
+ barStyle: BarStyle;
+ barWidth: number;
+ isTooltipHidden: boolean;
+}
+
+const getPadding = ({ padding, size, isNegativeValue }): number => {
+ if (!isNegativeValue) {
+ return padding;
+ }
+
+ return padding + size;
+};
+
+const BarStack = ({
+ timeSeries,
+ isHorizontal,
+ yScale,
+ lines,
+ barWidth,
+ barPadding,
+ barIndex,
+ isTooltipHidden,
+ barStyle = { opacity: 1, radius: 0.2 }
+}: Props): JSX.Element => {
+ const {
+ BarStackComponent,
+ commonBarStackProps,
+ colorScale,
+ lineKeys,
+ exitBar,
+ hoverBar
+ } = useBarStack({ isHorizontal, lines, timeSeries, xScale, yScale });
+
+ return (
+
+ {(barStacks) => {
+ return barStacks.map((barStack, index) =>
+ barStack.bars.map((bar) => {
+ const shouldApplyRadiusOnBottom = equals(index, 0);
+ const shouldApplyRadiusOnTop = equals(index, dec(barStacks.length));
+ const isNegativeValue = gt(0, bar.bar[1]);
+
+ const barRoundedProps = {
+ [isHorizontal ? 'bottom' : 'left']: shouldApplyRadiusOnBottom,
+ [isHorizontal ? 'top' : 'right']: shouldApplyRadiusOnTop
+ };
+
+ return (
+
+ );
+ })
+ );
+ }}
+
+ );
+};
+
+const propsToMemoize = [
+ 'timeSeries',
+ 'isHorizontal',
+ 'barWidth',
+ 'lines',
+ 'barPadding',
+ 'barIndex',
+ 'isTooltipHidden',
+ 'barStyle'
+];
+
+export default memo(BarStack, (prevProps, nextProps) => {
+ const prevYScaleDomain = prevProps.yScale.domain();
+ const prevYScaleRange = prevProps.yScale.range();
+ const nextYScaleDomain = nextProps.yScale.domain();
+ const nextYScaleRange = nextProps.yScale.range();
+
+ return (
+ equals(
+ [...prevYScaleDomain, ...prevYScaleRange],
+ [...nextYScaleDomain, ...nextYScaleRange]
+ ) &&
+ equals(pick(propsToMemoize, prevProps), pick(propsToMemoize, nextProps))
+ );
+});
diff --git a/centreon/packages/ui/src/Graph/BarChart/ResponsiveBarChart.tsx b/centreon/packages/ui/src/Graph/BarChart/ResponsiveBarChart.tsx
new file mode 100644
index 0000000000..88983b8298
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/ResponsiveBarChart.tsx
@@ -0,0 +1,253 @@
+import { MutableRefObject, useEffect, useMemo, useRef, useState } from 'react';
+
+import { useAtom } from 'jotai';
+import { equals, flatten, gte, has, isNil, pluck } from 'ramda';
+
+import { Skeleton } from '@mui/material';
+
+import { Tooltip } from '../../components';
+import { useDeepCompare } from '../../utils';
+import { margin } from '../Chart/common';
+import { Data, LineChartProps } from '../Chart/models';
+import { useIntersection } from '../Chart/useChartIntersection';
+import BaseChart from '../common/BaseChart/BaseChart';
+import ChartSvgWrapper from '../common/BaseChart/ChartSvgWrapper';
+import { useComputeBaseChartDimensions } from '../common/BaseChart/useComputeBaseChartDimensions';
+import Thresholds from '../common/Thresholds/Thresholds';
+import { Thresholds as ThresholdsModel } from '../common/models';
+import {
+ getUnits,
+ getXScaleBand,
+ getYScalePerUnit
+} from '../common/timeSeries';
+import { Line } from '../common/timeSeries/models';
+import { useTooltipStyles } from '../common/useTooltipStyles';
+
+import BarGroup from './BarGroup';
+import BarChartTooltip from './Tooltip/BarChartTooltip';
+import { tooltipDataAtom } from './atoms';
+import { BarStyle } from './models';
+
+interface Props
+ extends Pick {
+ barStyle: BarStyle;
+ graphData: Data;
+ graphRef: MutableRefObject;
+ height: number;
+ limitLegend?: false | number;
+ orientation: 'vertical' | 'horizontal' | 'auto';
+ thresholdUnit?: string;
+ thresholds?: ThresholdsModel;
+ width: number;
+}
+
+const ResponsiveBarChart = ({
+ graphRef,
+ graphData,
+ legend,
+ height,
+ width,
+ axis,
+ thresholdUnit,
+ thresholds,
+ header,
+ limitLegend,
+ orientation,
+ tooltip,
+ barStyle
+}: Props): JSX.Element => {
+ const { title, timeSeries, baseAxis, lines } = graphData;
+
+ const { classes, cx } = useTooltipStyles();
+
+ const [linesGraph, setLinesGraph] = useState>(lines);
+ const graphSvgRef = useRef(null);
+
+ const [tooltipData, setTooltipData] = useAtom(tooltipDataAtom);
+
+ const { isInViewport } = useIntersection({ element: graphRef?.current });
+
+ const displayedLines = useMemo(
+ () => linesGraph.filter(({ display }) => display),
+ [linesGraph]
+ );
+
+ const [firstUnit, secondUnit] = getUnits(displayedLines);
+ const allUnits = getUnits(lines);
+
+ const { legendRef, graphWidth, graphHeight } = useComputeBaseChartDimensions({
+ hasSecondUnit: Boolean(secondUnit),
+ height,
+ legendDisplay: legend?.display,
+ legendPlacement: legend?.placement,
+ width
+ });
+
+ const thresholdValues = flatten([
+ pluck('value', thresholds?.warning || []),
+ pluck('value', thresholds?.critical || [])
+ ]);
+
+ const isHorizontal = useMemo(() => {
+ if (!equals(orientation, 'auto')) {
+ return equals(orientation, 'horizontal');
+ }
+
+ return gte(graphWidth, graphHeight + 60);
+ }, [orientation, graphWidth, graphHeight]);
+
+ const xScale = useMemo(
+ () =>
+ getXScaleBand({
+ dataTime: timeSeries,
+ valueWidth: isHorizontal ? graphWidth : graphHeight - 30
+ }),
+ [timeSeries, graphWidth, isHorizontal, graphHeight]
+ );
+
+ const yScalesPerUnit = useMemo(
+ () =>
+ getYScalePerUnit({
+ dataLines: displayedLines,
+ dataTimeSeries: timeSeries,
+ isCenteredZero: axis?.isCenteredZero,
+ isHorizontal,
+ scale: axis?.scale,
+ scaleLogarithmicBase: axis?.scaleLogarithmicBase,
+ thresholdUnit,
+ thresholds: (thresholds?.enabled && thresholdValues) || [],
+ valueGraphHeight:
+ (isHorizontal ? graphHeight : graphWidth) - margin.bottom
+ }),
+ [
+ displayedLines,
+ timeSeries,
+ graphHeight,
+ thresholdValues,
+ graphWidth,
+ thresholds?.enabled,
+ axis?.isCenteredZero,
+ axis?.scale,
+ axis?.scaleLogarithmicBase
+ ]
+ );
+
+ const leftScale = yScalesPerUnit[firstUnit];
+ const rightScale = yScalesPerUnit[secondUnit];
+
+ useEffect(
+ () => {
+ setLinesGraph(lines);
+ },
+ useDeepCompare([lines])
+ );
+
+ const displayLegend = legend?.display ?? true;
+
+ const showGridLines = useMemo(
+ () => isNil(axis?.showGridLines) || axis?.showGridLines,
+ [axis?.showGridLines]
+ );
+
+ if (!isInViewport) {
+ return (
+
+ );
+ }
+
+ const isTooltipHidden = equals(tooltip?.mode, 'hidden');
+
+ return (
+
+
+ }
+ open={!equals(tooltip?.mode, 'hidden') && Boolean(tooltipData)}
+ placement="top"
+ >
+
+
+ <>
+
+ {thresholds?.enabled && (
+ setTooltipData(null)}
+ isHorizontal={isHorizontal}
+ showTooltip={({ tooltipData: thresholdLabel }) =>
+ setTooltipData({
+ thresholdLabel
+ })
+ }
+ thresholdUnit={thresholdUnit}
+ thresholds={thresholds as ThresholdsModel}
+ width={isHorizontal ? graphWidth : graphHeight - margin.top}
+ yScalesPerUnit={yScalesPerUnit}
+ />
+ )}
+ >
+
+
+
+
+ );
+};
+
+export default ResponsiveBarChart;
diff --git a/centreon/packages/ui/src/Graph/BarChart/Tooltip/BarChartTooltip.tsx b/centreon/packages/ui/src/Graph/BarChart/Tooltip/BarChartTooltip.tsx
new file mode 100644
index 0000000000..651857d2cc
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/Tooltip/BarChartTooltip.tsx
@@ -0,0 +1,122 @@
+import { useAtomValue } from 'jotai';
+import {
+ path,
+ T,
+ always,
+ cond,
+ equals,
+ filter,
+ gt,
+ has,
+ isNil,
+ prop,
+ reverse,
+ sortBy
+} from 'ramda';
+
+import { Box, Typography } from '@mui/material';
+
+import { useLocaleDateTimeFormat } from '../../../utils';
+import { Tooltip } from '../../Chart/models';
+import { formatMetricValueWithUnit } from '../../common/timeSeries';
+import { TimeValue } from '../../common/timeSeries/models';
+import { tooltipDataAtom } from '../atoms';
+
+import { useBarChartTooltipStyles } from './useBarChartTooltipStyles';
+
+interface Props extends Partial> {
+ base: number;
+ timeSeries: Array;
+}
+
+const BarChartTooltip = ({
+ timeSeries,
+ base,
+ mode,
+ sortOrder
+}: Props): JSX.Element | null => {
+ const { classes } = useBarChartTooltipStyles();
+ const { toDate, toTime } = useLocaleDateTimeFormat();
+ const tooltipData = useAtomValue(tooltipDataAtom);
+
+ if (isNil(tooltipData)) {
+ return null;
+ }
+
+ if (has('thresholdLabel', tooltipData)) {
+ return {tooltipData.thresholdLabel} ;
+ }
+
+ const date = timeSeries[tooltipData.index].timeTick;
+ const formattedDateTime = `${toDate(date)} / ${toTime(date)}`;
+
+ const isSingleMode = equals(mode, 'single');
+
+ const filteredMetrics = isSingleMode
+ ? filter(
+ ({ metric }) => equals(metric.metric_id, tooltipData.highlightedMetric),
+ tooltipData.data
+ )
+ : tooltipData.data;
+
+ const displayHighLightedMetric = gt(filteredMetrics.length, 1);
+
+ const sortedMetrics = cond([
+ [equals('name'), always(sortBy(path(['metric', 'name']), filteredMetrics))],
+ [equals('ascending'), always(sortBy(prop('value'), filteredMetrics))],
+ [
+ equals('descending'),
+ always(reverse(sortBy(prop('value'), filteredMetrics)))
+ ],
+ [T, always(filteredMetrics)]
+ ])(sortOrder);
+
+ return (
+
+
+ {formattedDateTime}
+
+
+ {sortedMetrics.map(({ metric, value }) => (
+
+
+
+ {metric.name}
+
+
+ {formatMetricValueWithUnit({
+ base,
+ unit: metric.unit,
+ value
+ })}
+
+
+ ))}
+
+
+ );
+};
+
+export default BarChartTooltip;
diff --git a/centreon/packages/ui/src/Graph/BarChart/Tooltip/useBarChartTooltipStyles.ts b/centreon/packages/ui/src/Graph/BarChart/Tooltip/useBarChartTooltipStyles.ts
new file mode 100644
index 0000000000..ec8a5bdd03
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/Tooltip/useBarChartTooltipStyles.ts
@@ -0,0 +1,28 @@
+import { makeStyles } from 'tss-react/mui';
+
+export const useBarChartTooltipStyles = makeStyles()((theme) => ({
+ metric: {
+ alignItems: 'center',
+ display: 'flex',
+ gap: theme.spacing(1),
+ weidth: '100%'
+ },
+ metricColorBox: {
+ borderRadius: theme.shape.borderRadius,
+ flexShrink: 0,
+ height: theme.spacing(1.5),
+ width: theme.spacing(1.5)
+ },
+ metricName: {
+ flexGrow: 1
+ },
+ metrics: {
+ display: 'flex',
+ flexDirection: 'column',
+ marginTop: theme.spacing(0.5),
+ width: '100%'
+ },
+ tooltipContainer: {
+ padding: theme.spacing(1)
+ }
+}));
diff --git a/centreon/packages/ui/src/Graph/BarChart/atoms.ts b/centreon/packages/ui/src/Graph/BarChart/atoms.ts
new file mode 100644
index 0000000000..4f71ab8724
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/atoms.ts
@@ -0,0 +1,5 @@
+import { atom } from 'jotai';
+
+import { TooltipData } from './models';
+
+export const tooltipDataAtom = atom(null);
diff --git a/centreon/packages/ui/src/Graph/BarChart/models.ts b/centreon/packages/ui/src/Graph/BarChart/models.ts
new file mode 100644
index 0000000000..0fb0d30582
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/models.ts
@@ -0,0 +1,21 @@
+import { Line } from '../common/timeSeries/models';
+
+export type TooltipData =
+ | {
+ data: Array<{
+ metric: Line;
+ value: number | null;
+ }>;
+ highlightedMetric: number;
+ index: number;
+ }
+ | {
+ thresholdLabel: string;
+ };
+
+export interface BarStyle {
+ /** The opacity of the bar between 0 and 1. */
+ opacity: number;
+ /** The radius of a bar between 0 and 0.5. Does not work for stacked bars */
+ radius: number;
+}
diff --git a/centreon/packages/ui/src/Graph/BarChart/useBarChartStyles.tsx b/centreon/packages/ui/src/Graph/BarChart/useBarChartStyles.tsx
new file mode 100644
index 0000000000..ae27d66e1f
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/useBarChartStyles.tsx
@@ -0,0 +1,5 @@
+import { makeStyles } from 'tss-react/mui';
+
+export const useBarChartStyles = makeStyles()({
+ tooltipChildren: { height: '100%', width: '100%' }
+});
diff --git a/centreon/packages/ui/src/Graph/BarChart/useBarStack.ts b/centreon/packages/ui/src/Graph/BarChart/useBarStack.ts
new file mode 100644
index 0000000000..f60265c71c
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/BarChart/useBarStack.ts
@@ -0,0 +1,114 @@
+import { useCallback, useMemo } from 'react';
+
+import { scaleOrdinal } from '@visx/scale';
+import { BarStack, BarStackHorizontal } from '@visx/shape';
+import { useSetAtom } from 'jotai';
+import { equals, keys, omit } from 'ramda';
+
+import { useDeepMemo } from '../../utils';
+import { Line, TimeValue } from '../common/timeSeries/models';
+
+import { tooltipDataAtom } from './atoms';
+
+interface HoverBarProps {
+ barIndex: number;
+ highlightedMetric: number;
+}
+
+export interface UseBarStackProps {
+ isHorizontal: boolean;
+ lines: Array;
+ timeSeries: Array;
+ xScale;
+ yScale;
+}
+
+interface UseBarStackState {
+ BarStackComponent: typeof BarStack | typeof BarStackHorizontal;
+ colorScale;
+ commonBarStackProps;
+ exitBar: () => void;
+ hoverBar: (props: HoverBarProps) => () => void;
+ lineKeys: Array;
+}
+
+export const useBarStack = ({
+ timeSeries,
+ isHorizontal,
+ lines,
+ yScale,
+ xScale
+}: UseBarStackProps): UseBarStackState => {
+ const setTooltipData = useSetAtom(tooltipDataAtom);
+
+ const BarStackComponent = useMemo(
+ () => (isHorizontal ? BarStack : BarStackHorizontal),
+ [isHorizontal]
+ );
+
+ const lineKeys = useDeepMemo({
+ deps: [timeSeries],
+ variable: keys(omit(['timeTick'], timeSeries[0]))
+ });
+ const colors = useDeepMemo({
+ deps: [lineKeys, lines],
+ variable: lineKeys.map((key) => {
+ const metric = lines.find(({ metric_id }) =>
+ equals(metric_id, Number(key))
+ );
+
+ return metric?.lineColor || '';
+ })
+ });
+
+ const colorScale = useMemo(
+ () =>
+ scaleOrdinal({
+ domain: lineKeys,
+ range: colors
+ }),
+ [...lineKeys, ...colors]
+ );
+
+ const commonBarStackProps = isHorizontal
+ ? {
+ x: (d) => d.timeTick,
+ xScale,
+ yScale
+ }
+ : {
+ xScale: yScale,
+ y: (d) => d.timeTick,
+ yScale: xScale
+ };
+
+ const hoverBar = useCallback(
+ ({ highlightedMetric, barIndex }: HoverBarProps) =>
+ (): void => {
+ setTooltipData({
+ data: lines.map((metric) => {
+ return {
+ metric,
+ value: timeSeries[barIndex][metric.metric_id]
+ };
+ }),
+ highlightedMetric,
+ index: barIndex
+ });
+ },
+ []
+ );
+
+ const exitBar = useCallback((): void => {
+ setTooltipData(null);
+ }, []);
+
+ return {
+ BarStackComponent,
+ colorScale,
+ commonBarStackProps,
+ exitBar,
+ hoverBar,
+ lineKeys
+ };
+};
diff --git a/centreon/packages/ui/src/Graph/BarStack/BarStack.cypress.spec.tsx b/centreon/packages/ui/src/Graph/BarStack/BarStack.cypress.spec.tsx
index 36caa8ce6d..8ea667f376 100644
--- a/centreon/packages/ui/src/Graph/BarStack/BarStack.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Graph/BarStack/BarStack.cypress.spec.tsx
@@ -1,7 +1,7 @@
import numeral from 'numeral';
import BarStack from './BarStack';
-import { BarType, BarStackProps } from './models';
+import { BarStackProps, BarType } from './models';
const defaultData = [
{ color: '#88B922', label: 'Ok', value: 148 },
@@ -55,7 +55,7 @@ describe('Bar stack', () => {
it('adjusts size based on the provided width and height', () => {
initialize({ displayLegend: false, height: '300px', width: '300px' });
- cy.findByTestId('barStack').should('have.css', 'height', '300px');
+ cy.findByTestId('barStack').should('have.css', 'height', '270px');
cy.makeSnapshot();
});
diff --git a/centreon/packages/ui/src/Graph/BarStack/BarStack.stories.tsx b/centreon/packages/ui/src/Graph/BarStack/BarStack.stories.tsx
index 64a90c226a..acd7614720 100644
--- a/centreon/packages/ui/src/Graph/BarStack/BarStack.stories.tsx
+++ b/centreon/packages/ui/src/Graph/BarStack/BarStack.stories.tsx
@@ -1,7 +1,7 @@
import { Meta, StoryObj } from '@storybook/react';
-import { BarType } from './models';
import ResponsiveBarStack from './ResponsiveBarStack';
+import { BarType } from './models';
import { BarStack } from '.';
@@ -50,6 +50,10 @@ const Template = (args): JSX.Element => {
return ;
};
+const SmallTemplate = (args): JSX.Element => {
+ return ;
+};
+
export const Vertical: Story = {
args: { data, title: 'hosts' },
render: Template
@@ -123,3 +127,14 @@ export const HorizontalWithoutLegend: Story = {
},
render: Template
};
+
+export const SmallDisplay: Story = {
+ args: {
+ TooltipContent,
+ data,
+ displayValues: true,
+ title: 'hosts',
+ variant: 'horizontal'
+ },
+ render: SmallTemplate
+};
diff --git a/centreon/packages/ui/src/Graph/BarStack/BarStack.styles.ts b/centreon/packages/ui/src/Graph/BarStack/BarStack.styles.ts
index 8fbecb9dc5..6197d4ba8d 100644
--- a/centreon/packages/ui/src/Graph/BarStack/BarStack.styles.ts
+++ b/centreon/packages/ui/src/Graph/BarStack/BarStack.styles.ts
@@ -13,12 +13,16 @@ export const useBarStackStyles = makeStyles()((theme) => ({
gap: theme.spacing(1.5),
justifyContent: 'center'
},
+ smallTitle: {
+ fontSize: theme.typography.body1.fontSize
+ },
svgContainer: {
alignItems: 'center',
backgroundColor: theme.palette.background.panelGroups,
borderRadius: theme.spacing(1.25),
display: 'flex',
- justifyContent: 'center'
+ justifyContent: 'center',
+ padding: theme.spacing(1)
},
svgWrapper: {
alignItems: 'center',
diff --git a/centreon/packages/ui/src/Graph/BarStack/ResponsiveBarStack.tsx b/centreon/packages/ui/src/Graph/BarStack/ResponsiveBarStack.tsx
index 8a28c7541b..d3834eba9d 100644
--- a/centreon/packages/ui/src/Graph/BarStack/ResponsiveBarStack.tsx
+++ b/centreon/packages/ui/src/Graph/BarStack/ResponsiveBarStack.tsx
@@ -1,19 +1,19 @@
import { useRef } from 'react';
-import { BarStack as BarStackVertical, BarStackHorizontal } from '@visx/shape';
import { Group } from '@visx/group';
-import numeral from 'numeral';
+import { BarStackHorizontal, BarStack as BarStackVertical } from '@visx/shape';
import { Text } from '@visx/text';
+import numeral from 'numeral';
+import { equals, lt } from 'ramda';
import { useTranslation } from 'react-i18next';
-import { equals } from 'ramda';
import { Tooltip } from '../../components';
-import { LegendProps } from '../Legend/models';
import { Legend as LegendComponent } from '../Legend';
+import { LegendProps } from '../Legend/models';
import { getValueByUnit } from '../common/utils';
-import { BarStackProps } from './models';
import { useBarStackStyles } from './BarStack.styles';
+import { BarStackProps } from './models';
import useResponsiveBarStack from './useResponsiveBarStack';
const DefaultLengd = ({ scale, direction }: LegendProps): JSX.Element => (
@@ -33,10 +33,11 @@ const ResponsiveBarStack = ({
unit = 'number',
displayValues,
variant = 'vertical',
- legendDirection = 'column'
+ legendDirection = 'column',
+ tooltipProps = {}
}: BarStackProps & { height: number; width: number }): JSX.Element => {
const { t } = useTranslation();
- const { classes } = useBarStackStyles();
+ const { classes, cx } = useBarStackStyles();
const titleRef = useRef(null);
const legendRef = useRef(null);
@@ -50,7 +51,6 @@ const ResponsiveBarStack = ({
total,
xScale,
yScale,
- svgWrapperWidth,
svgContainerSize,
isVerticalBar
} = useResponsiveBarStack({
@@ -68,24 +68,28 @@ const ResponsiveBarStack = ({
? BarStackVertical
: BarStackHorizontal;
+ const isSmallHeight = isVerticalBar ? lt(height, 190) : lt(height, 100);
+ const isSmallWidth = isVerticalBar ? lt(width, 80) : lt(width, 350);
+ const mustDisplayLegend = isSmallWidth ? false : displayLegend;
+
return (
-
-
+
+
{title && (
-
+
{`${numeral(total).format('0a').toUpperCase()} `} {t(title)}
)}
)
}
@@ -147,7 +152,11 @@ const ResponsiveBarStack = ({
isVerticalBar ? 'right-start' : 'bottom-start'
}
>
-
+ undefined}
+ >
- {displayLegend && (
+ {mustDisplayLegend && (
void;
size?: number;
title?: string;
+ tooltipProps?: object;
unit?: 'percentage' | 'number';
variant?: 'vertical' | 'horizontal';
};
diff --git a/centreon/packages/ui/src/Graph/BarStack/useResponsiveBarStack.ts b/centreon/packages/ui/src/Graph/BarStack/useResponsiveBarStack.ts
index 6b9065c7d9..abb5f37e46 100644
--- a/centreon/packages/ui/src/Graph/BarStack/useResponsiveBarStack.ts
+++ b/centreon/packages/ui/src/Graph/BarStack/useResponsiveBarStack.ts
@@ -1,8 +1,8 @@
import { scaleBand, scaleLinear, scaleOrdinal } from '@visx/scale';
-import { equals, pluck } from 'ramda';
+import { equals, gt, pluck } from 'ramda';
-import { getValueByUnit } from '../common/utils';
import { LegendScale } from '../Legend/models';
+import { getValueByUnit } from '../common/utils';
import { BarType } from './models';
@@ -11,7 +11,7 @@ interface Size {
width: number;
}
-interface useBarStackProps {
+interface UseBarStackProps {
data: Array;
height: number;
legendRef;
@@ -21,7 +21,7 @@ interface useBarStackProps {
variant?: 'vertical' | 'horizontal';
width: number;
}
-interface useBarStackState {
+interface UseBarStackState {
barSize: Size;
colorScale;
input;
@@ -29,7 +29,6 @@ interface useBarStackState {
keys: Array;
legendScale: LegendScale;
svgContainerSize: Size;
- svgWrapperWidth: number;
total: number;
xScale;
yScale;
@@ -44,7 +43,7 @@ const useResponsiveBarStack = ({
titleRef,
legendRef,
size
-}: useBarStackProps): useBarStackState => {
+}: UseBarStackProps): UseBarStackState => {
const isVerticalBar = equals(variant, 'vertical');
const heightOfTitle = titleRef.current?.offsetHeight || 0;
@@ -53,17 +52,15 @@ const useResponsiveBarStack = ({
const horizontalGap = widthOfLegend > 0 ? 12 : 0;
const verticalGap = heightOfTitle > 0 ? 8 : 0;
- const svgWrapperWidth = isVerticalBar
- ? size + 36
- : width - widthOfLegend - horizontalGap;
-
const svgContainerSize = {
height: isVerticalBar ? height - heightOfTitle - verticalGap : size,
width: isVerticalBar ? size : width - widthOfLegend - horizontalGap
};
const barSize = {
- height: svgContainerSize.height - 16,
+ height: gt(height / 2, svgContainerSize.height - 16)
+ ? svgContainerSize.height - 16
+ : svgContainerSize.height - 46,
width: svgContainerSize.width - 16
};
@@ -121,7 +118,6 @@ const useResponsiveBarStack = ({
keys,
legendScale,
svgContainerSize,
- svgWrapperWidth,
total,
xScale,
yScale
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Point.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Point.tsx
similarity index 95%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Point.tsx
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Point.tsx
index a2dc235859..3744d7858b 100644
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Point.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Point.tsx
@@ -5,7 +5,7 @@ interface Props {
radius: number;
timeTick: Date;
xScale;
- yPoint: number;
+ yPoint: number | null;
}
const Point = ({
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/index.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/index.tsx
new file mode 100644
index 0000000000..c59f194da1
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/index.tsx
@@ -0,0 +1,132 @@
+import { memo } from 'react';
+
+import { Shape } from '@visx/visx';
+import { ScaleLinear, ScaleTime } from 'd3-scale';
+import { equals, isNil, pick, prop } from 'ramda';
+
+import { getTime } from '../../../../common/timeSeries';
+import { TimeValue } from '../../../../common/timeSeries/models';
+import { getStrokeDashArray } from '../../../../common/utils';
+import { getCurveFactory, getFillColor } from '../../../common';
+
+interface Props {
+ areaColor: string;
+ curve: 'linear' | 'step' | 'natural';
+ dashLength?: number;
+ dashOffset?: number;
+ dotOffset?: number;
+ filled: boolean;
+ graphHeight: number;
+ highlight?: boolean;
+ lineColor: string;
+ lineWidth?: number;
+ metric_id: number;
+ shapeAreaClosed?: Record;
+ shapeLinePath?: Record;
+ timeSeries: Array;
+ transparency: number;
+ unit: string;
+ xScale: ScaleTime;
+ yScale: ScaleLinear;
+}
+
+const RegularLine = ({
+ filled,
+ timeSeries,
+ highlight,
+ metric_id,
+ lineColor,
+ unit,
+ yScale,
+ xScale,
+ areaColor,
+ transparency,
+ graphHeight,
+ curve,
+ lineWidth,
+ dotOffset,
+ dashLength,
+ dashOffset
+}: Props): JSX.Element => {
+ const curveType = getCurveFactory(curve);
+ const formattedLineWidth = lineWidth ?? 2;
+
+ const props = {
+ curve: curveType,
+ data: timeSeries,
+ defined: (value): boolean => !isNil(value[metric_id]),
+ opacity: 1,
+ stroke: lineColor,
+ strokeDasharray: getStrokeDashArray({
+ dashLength,
+ dashOffset,
+ dotOffset,
+ lineWidth: formattedLineWidth
+ }),
+ strokeWidth: highlight
+ ? Math.ceil((formattedLineWidth || 1) * 1.3)
+ : formattedLineWidth,
+ unit,
+ x: (timeValue): number => xScale(getTime(timeValue)) as number,
+ y: (timeValue): number => yScale(prop(metric_id, timeValue)) ?? null
+ };
+
+ if (filled) {
+ return (
+
+ data-metric={metric_id}
+ fill={getFillColor({ areaColor, transparency })}
+ fillRule="nonzero"
+ key={metric_id}
+ y0={Math.min(yScale(0), graphHeight)}
+ yScale={yScale}
+ {...props}
+ />
+ );
+ }
+
+ return data-metric={metric_id} {...props} />;
+};
+
+const memoizedProps = [
+ 'curve',
+ 'lineColor',
+ 'areaColor',
+ 'filled',
+ 'transparency',
+ 'lineWidth',
+ 'dotOffset',
+ 'dashLength',
+ 'dashOffset'
+];
+
+export default memo(RegularLine, (prevProps, nextProps) => {
+ const {
+ timeSeries: prevTimeSeries,
+ graphHeight: prevGraphHeight,
+ highlight: prevHighlight,
+ xScale: prevXScale,
+ yScale: prevYScale
+ } = prevProps;
+ const {
+ timeSeries: nextTimeSeries,
+ graphHeight: nextGraphHeight,
+ highlight: nextHighlight,
+ xScale: nextXScale,
+ yScale: nextYScale
+ } = nextProps;
+
+ const prevXScaleRange = prevXScale.range();
+ const nextXScaleRange = nextXScale.range();
+ const prevYScaleDomain = prevYScale.domain();
+ const nextYScaleDomain = nextYScale.domain();
+
+ return (
+ equals(prevTimeSeries, nextTimeSeries) &&
+ equals(prevGraphHeight, nextGraphHeight) &&
+ equals(prevHighlight, nextHighlight) &&
+ equals(prevXScaleRange, nextXScaleRange) &&
+ equals(prevYScaleDomain, nextYScaleDomain) &&
+ equals(pick(memoizedProps, prevProps), pick(memoizedProps, nextProps))
+ );
+});
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/useRegularLines.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/useRegularLines.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/useRegularLines.ts
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/useRegularLines.ts
index 677fae6fcd..73ba37623c 100644
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/useRegularLines.ts
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/RegularLines/useRegularLines.ts
@@ -1,7 +1,7 @@
import { difference } from 'ramda';
-import { Line } from '../../../../common/timeSeries/models';
import { getSortedStackedLines } from '../../../../common/timeSeries';
+import { Line } from '../../../../common/timeSeries/models';
interface RegularLines {
regularLines: Array;
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/index.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/index.tsx
new file mode 100644
index 0000000000..c5aa87bf8a
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/index.tsx
@@ -0,0 +1,140 @@
+import { Shape } from '@visx/visx';
+import { ScaleLinear, ScaleTime } from 'd3-scale';
+import { path, all, equals, isNil, map, not, nth, pipe, prop } from 'ramda';
+
+import { getDates, getTime } from '../../../../common/timeSeries';
+import { Line, TimeValue } from '../../../../common/timeSeries/models';
+import { getPointRadius, getStrokeDashArray } from '../../../../common/utils';
+import StackedAnchorPoint, {
+ getYAnchorPoint
+} from '../../../InteractiveComponents/AnchorPoint/StackedAnchorPoint';
+import { StackValue } from '../../../InteractiveComponents/AnchorPoint/models';
+import { getCurveFactory, getFillColor } from '../../../common';
+import Point from '../Point';
+
+interface Props {
+ areaTransparency?: number;
+ curve: 'linear' | 'step' | 'natural';
+ dashLength?: number;
+ dashOffset?: number;
+ displayAnchor: boolean;
+ dotOffset?: number;
+ lineWidth?: number;
+ lines: Array;
+ showArea?: boolean;
+ showPoints?: boolean;
+ timeSeries: Array;
+ xScale: ScaleTime;
+ yScale: ScaleLinear;
+}
+
+const StackLines = ({
+ timeSeries,
+ lines,
+ yScale,
+ xScale,
+ displayAnchor,
+ curve,
+ showPoints,
+ showArea,
+ areaTransparency,
+ lineWidth,
+ dashLength,
+ dashOffset,
+ dotOffset
+}: Props): JSX.Element => {
+ const curveType = getCurveFactory(curve);
+
+ const formattedLineWidth = lineWidth ?? 2;
+
+ return (
+ {
+ return pipe(
+ map(prop('metric_id')) as unknown as (
+ displayedLines
+ ) => Array,
+ all((metric_id) => pipe(path(['data', metric_id]), isNil, not)(d))
+ )(lines);
+ }}
+ keys={map(prop('metric_id'), lines)}
+ x={(d): number => xScale(getTime(d.data)) ?? 0}
+ y0={(d): number => yScale(d[0]) ?? 0}
+ y1={(d): number => yScale(d[1]) ?? 0}
+ >
+ {({ stacks, path: linePath }): Array => {
+ return stacks.map((stack, index) => {
+ const { areaColor, transparency, lineColor, highlight, metric_id } =
+ nth(index, lines) as Line;
+
+ const formattedTransparency = isNil(areaTransparency)
+ ? transparency || 80
+ : areaTransparency;
+
+ return (
+
+ {displayAnchor && (
+ }
+ timeSeries={timeSeries}
+ transparency={transparency}
+ xScale={xScale}
+ yScale={yScale}
+ />
+ )}
+ {showPoints &&
+ getDates(timeSeries).map((timeTick) => (
+ ,
+ timeTick,
+ yScale
+ })}
+ yScale={yScale}
+ />
+ ))}
+
+
+ );
+ });
+ }}
+
+ );
+};
+
+export default StackLines;
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/useStackedLines.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/useStackedLines.ts
new file mode 100644
index 0000000000..cc2c183c36
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/StackedLines/useStackedLines.ts
@@ -0,0 +1,67 @@
+import { equals, pluck, uniq } from 'ramda';
+
+import {
+ getInvertedStackedLines,
+ getNotInvertedStackedLines,
+ getTimeSeriesForLines
+} from '../../../../common/timeSeries';
+import { LinesData } from '../models';
+
+interface StackedLinesState {
+ invertedStackedLinesData: Record;
+ stackedLinesData: Record;
+}
+
+const useStackedLines = ({ lines, timeSeries }): StackedLinesState => {
+ const regularStackedLines = getNotInvertedStackedLines(lines);
+ const regularStackedUnits = uniq(pluck('unit', regularStackedLines));
+ const regularStackedLinesTimeSeriesPerUnit = regularStackedUnits.reduce(
+ (acc, stackedUnit) => {
+ const relatedLines = regularStackedLines.filter(({ unit }) =>
+ equals(unit, stackedUnit)
+ );
+
+ return {
+ ...acc,
+ [stackedUnit]: {
+ lines: relatedLines,
+ timeSeries: getTimeSeriesForLines({
+ lines: relatedLines,
+ timeSeries
+ })
+ }
+ };
+ },
+ {}
+ );
+
+ const invertedStackedLines = getInvertedStackedLines(lines);
+ const invertedStackedUnits = uniq(pluck('unit', invertedStackedLines));
+ const invertedStackedLinesTimeSeriesPerUnit = invertedStackedUnits.reduce(
+ (acc, stackedUnit) => {
+ const relatedLines = invertedStackedLines.filter(({ unit }) =>
+ equals(unit, stackedUnit)
+ );
+
+ return {
+ ...acc,
+ [stackedUnit]: {
+ lines: relatedLines,
+ timeSeries: getTimeSeriesForLines({
+ invert: true,
+ lines: relatedLines,
+ timeSeries
+ })
+ }
+ };
+ },
+ {}
+ );
+
+ return {
+ invertedStackedLinesData: invertedStackedLinesTimeSeriesPerUnit,
+ stackedLinesData: regularStackedLinesTimeSeriesPerUnit
+ };
+};
+
+export default useStackedLines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/BasicThreshold.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/BasicThreshold.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/BasicThreshold.tsx
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/BasicThreshold.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/Circle.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/Circle.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx
similarity index 91%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx
index 09f136bf21..a2efa7397a 100644
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx
@@ -3,9 +3,9 @@ import { ScaleLinear } from 'd3-scale';
import { useTheme } from '@mui/material/styles';
+import { LineChartData } from '../../../../common/models';
import { adjustGraphData } from '../../../helpers/index';
import { PatternOrientation } from '../../../models';
-import { LineChartData } from '../../../../common/models';
import BasicThreshold from './BasicThreshold';
import useScaleThreshold from './useScaleThreshold';
@@ -15,20 +15,18 @@ interface Props {
data: LineChartData;
graphHeight: number;
id: string;
- leftScale: ScaleLinear;
orientation?: Array;
- rightScale: ScaleLinear;
xScale: ScaleLinear;
+ yScalesPerUnit: Record>;
}
const ThresholdWithPatternLines = ({
graphHeight,
data,
orientation = ['diagonal'],
- leftScale,
- rightScale,
xScale,
id,
+ yScalesPerUnit,
curve
}: Props): JSX.Element | null => {
const theme = useTheme();
@@ -36,10 +34,9 @@ const ThresholdWithPatternLines = ({
const { lines, timeSeries } = adjustGraphData(data);
const result = useScaleThreshold({
- leftScale,
lines,
- rightScale,
- xScale
+ xScale,
+ yScalesPerUnit
});
if (!result) {
return null;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/helpers/index.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/helpers/index.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/helpers/index.ts
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/helpers/index.ts
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/index.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/index.tsx
new file mode 100644
index 0000000000..808246cdcf
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/index.tsx
@@ -0,0 +1,138 @@
+import { equals, isNil } from 'ramda';
+
+import { TimeValue } from '../../../../common/timeSeries/models';
+import { displayArea } from '../../../helpers/index';
+import {
+ PatternThreshold,
+ ThresholdType,
+ VariationThreshold
+} from '../../../models';
+
+import BasicThreshold from './BasicThreshold';
+import Circle from './Circle';
+import ThresholdWithPatternLines from './ThresholdWithPatternLines';
+import ThresholdWithVariation from './ThresholdWithVariation';
+import { WrapperThresholdLinesModel } from './models';
+import useScaleThreshold from './useScaleThreshold';
+
+interface Props extends WrapperThresholdLinesModel {
+ curve: 'linear' | 'natural' | 'step';
+ graphHeight: number;
+ timeSeries: Array;
+}
+
+const WrapperThresholdLines = ({
+ areaThresholdLines,
+ graphHeight,
+ lines,
+ timeSeries,
+ xScale,
+ curve,
+ yScalesPerUnit
+}: Props): JSX.Element | null => {
+ const data = useScaleThreshold({
+ areaThresholdLines,
+ lines,
+ xScale,
+ yScalesPerUnit
+ });
+
+ if (!data) {
+ return null;
+ }
+
+ const { getX, getY0, getY1, lineColorY0, lineColorY1, ...rest } = data;
+
+ const commonProps = {
+ curve,
+ fillAboveArea: lineColorY0,
+ fillBelowArea: lineColorY1,
+ getX,
+ graphHeight,
+ timeSeries
+ };
+
+ const thresholdLines = areaThresholdLines?.map((item, index) => {
+ const { type, id } = item;
+
+ if (equals(type, ThresholdType.basic)) {
+ return [
+ {
+ Component: BasicThreshold,
+ key: index,
+ props: { ...commonProps, getY0, getY1, id }
+ }
+ ];
+ }
+ if (equals(type, ThresholdType.variation)) {
+ const dataVariation = item as VariationThreshold;
+ if (!rest?.getY0Variation || !rest.getY1Variation || !rest.getYOrigin) {
+ return null;
+ }
+
+ return [
+ {
+ Component: ThresholdWithVariation,
+ key: index,
+ props: {
+ factors: dataVariation.factors,
+ ...commonProps,
+ ...rest
+ }
+ },
+ {
+ Component: Circle,
+ key: 'circle',
+ props: {
+ ...rest,
+ getCountDisplayedCircles: dataVariation?.getCountDisplayedCircles,
+ getX,
+ timeSeries
+ }
+ }
+ ];
+ }
+ if (equals(type, ThresholdType.pattern)) {
+ const dataPattern = item as PatternThreshold;
+
+ if (!displayArea(dataPattern?.data)) {
+ return null;
+ }
+
+ const { data: pattern } = dataPattern;
+
+ return pattern.map((element, ind) => ({
+ Component: ThresholdWithPatternLines,
+ key: ind,
+ props: {
+ data: element,
+ graphHeight,
+ key: ind,
+ orientation: dataPattern?.orientation,
+ xScale,
+ yScalesPerUnit
+ }
+ }));
+ }
+
+ return null;
+ });
+
+ const filteredThresholdLines = thresholdLines?.filter((item) => !isNil(item));
+
+ if (!filteredThresholdLines) {
+ return null;
+ }
+
+ return (
+
+ {filteredThresholdLines.map((element) =>
+ element?.map(({ Component, props, key }) => (
+
+ ))
+ )}
+
+ );
+};
+
+export default WrapperThresholdLines;
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/models.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/models.ts
new file mode 100644
index 0000000000..5d2cc743f0
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/models.ts
@@ -0,0 +1,104 @@
+import { ScaleLinear } from 'd3-scale';
+import { equals, reject } from 'ramda';
+
+import { Line, TimeValue } from '../../../../common/timeSeries/models';
+import { GlobalAreaLines, ThresholdType } from '../../../models';
+
+export interface Data {
+ lineColor: string;
+ metric: string;
+ yScale: ScaleLinear;
+}
+
+export interface Point {
+ x: number;
+ y: number;
+}
+
+export interface ArePointsOnline {
+ pointLower: Point;
+ pointOrigin: Point;
+ pointUpper: Point;
+}
+export interface Online extends ArePointsOnline {
+ maxDistance?: number;
+}
+
+export interface FactorsVariation {
+ currentFactorMultiplication: number;
+ simulatedFactorMultiplication: number;
+}
+
+export interface Result {
+ getX: (timeValue: TimeValue) => number;
+ getY0: (timeValue: TimeValue) => number;
+ getY1: (timeValue: TimeValue) => number;
+ lineColorY0: string;
+ lineColorY1: string;
+}
+
+export interface EnvelopeVariationFormula {
+ factorsData: FactorsVariation;
+ lowerRealValue: number;
+ upperRealValue: number;
+}
+
+export interface ThresholdLinesModel {
+ dataY0: Data;
+ dataY1: Data;
+ graphHeight: number;
+ timeSeries: Array;
+ xScale: ScaleLinear;
+}
+
+export interface LinesThreshold {
+ lineLower: Line;
+ lineOrigin: Line;
+ lineUpper: Line;
+}
+
+export interface WrapperThresholdLinesModel {
+ areaThresholdLines?: GlobalAreaLines['areaThresholdLines'];
+ lines: Array;
+ xScale: ScaleLinear;
+ yScalesPerUnit: Record>;
+}
+
+export interface ScaleVariationThreshold {
+ getY0Variation: (timeValue: TimeValue) => number;
+ getY1Variation: (timeValue: TimeValue) => number;
+ getYOrigin: (timeValue: TimeValue) => number;
+}
+
+export interface Circle extends ScaleVariationThreshold {
+ getCountDisplayedCircles?: (value: number) => void;
+ getX: (timeValue: TimeValue) => number;
+ timeSeries: Array;
+}
+
+export const lowerLineName = 'Lower Threshold';
+export const upperLineName = 'Upper Threshold';
+
+// upper,lower and origin
+export const requiredNumberLinesThreshold = 3;
+
+export const findLineOfOriginMetricThreshold = (
+ lines: Array
+): Array => {
+ const metrics = lines.map((line) => {
+ const { metric } = line;
+
+ return metric.includes('_upper_thresholds')
+ ? metric.replace('_upper_thresholds', '')
+ : null;
+ });
+
+ const originMetric = metrics.find((element) => element);
+
+ return reject((line: Line) => !equals(line.name, originMetric), lines);
+};
+
+export const canDisplayThreshold = (
+ areaThresholdLines: GlobalAreaLines['areaThresholdLines']
+): boolean =>
+ !!areaThresholdLines?.find((item) => item && item.type in ThresholdType);
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/useScaleThreshold.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/useScaleThreshold.ts
similarity index 88%
rename from centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/useScaleThreshold.ts
rename to centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/useScaleThreshold.ts
index e9efcdb8c7..ba4e28ff94 100644
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/useScaleThreshold.ts
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/Threshold/useScaleThreshold.ts
@@ -1,9 +1,9 @@
import { equals, isNil, prop } from 'ramda';
-import { ThresholdType, VariationThreshold } from '../../../models';
+import { getTime, getYScale } from '../../../../common/timeSeries';
import { TimeValue } from '../../../../common/timeSeries/models';
-import { getTime, getUnits, getYScale } from '../../../../common/timeSeries';
import { displayArea } from '../../../helpers/index';
+import { ThresholdType, VariationThreshold } from '../../../models';
import { envelopeVariationFormula } from './helpers';
import {
@@ -26,8 +26,7 @@ interface Result extends Partial {
const useScaleThreshold = ({
lines,
areaThresholdLines,
- leftScale,
- rightScale,
+ yScalesPerUnit,
xScale
}: WrapperThresholdLinesModel): Result | null => {
const getLinesThreshold = (): LinesThreshold | null => {
@@ -50,8 +49,6 @@ const useScaleThreshold = ({
const { lineUpper, lineLower, lineOrigin } = linesThreshold;
- const [, secondUnit, thirdUnit] = getUnits(lines);
-
const {
metric_id: metricY1,
unit: unitY1,
@@ -73,30 +70,21 @@ const useScaleThreshold = ({
} = lineOrigin;
const y1Scale = getYScale({
- hasMoreThanTwoUnits: !isNil(thirdUnit),
invert: invertY1,
- leftScale,
- rightScale,
- secondUnit,
- unit: unitY1
+ unit: unitY1,
+ yScalesPerUnit
});
const y0Scale = getYScale({
- hasMoreThanTwoUnits: !isNil(thirdUnit),
invert: invertY0,
- leftScale,
- rightScale,
- secondUnit,
- unit: unitY0
+ unit: unitY0,
+ yScalesPerUnit
});
const yScale = getYScale({
- hasMoreThanTwoUnits: !isNil(thirdUnit),
invert: invertYOrigin,
- leftScale,
- rightScale,
- secondUnit,
- unit: unitYOrigin
+ unit: unitYOrigin,
+ yScalesPerUnit
});
const getX = (timeValue: TimeValue): number => {
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/index.tsx b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/index.tsx
new file mode 100644
index 0000000000..77c8501fa8
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/index.tsx
@@ -0,0 +1,262 @@
+import { MutableRefObject } from 'react';
+
+import { ScaleLinear } from 'd3-scale';
+import { isNil } from 'ramda';
+
+import {
+ getDates,
+ getTimeSeriesForLines,
+ getYScale
+} from '../../../common/timeSeries';
+import { Line, TimeValue } from '../../../common/timeSeries/models';
+import { getPointRadius } from '../../../common/utils';
+import GuidingLines from '../../InteractiveComponents/AnchorPoint/GuidingLines';
+import RegularAnchorPoint, {
+ getYAnchorPoint
+} from '../../InteractiveComponents/AnchorPoint/RegularAnchorPoint';
+import { displayArea } from '../../helpers/index';
+import { DisplayAnchor, GlobalAreaLines } from '../../models';
+
+import Point from './Point';
+import RegularLine from './RegularLines';
+import useRegularLines from './RegularLines/useRegularLines';
+import StackedLines from './StackedLines';
+import useStackedLines from './StackedLines/useStackedLines';
+import WrapperThresholdLines from './Threshold';
+import {
+ canDisplayThreshold,
+ requiredNumberLinesThreshold
+} from './Threshold/models';
+
+interface Props extends GlobalAreaLines {
+ areaTransparency?: number;
+ curve: 'linear' | 'step' | 'natural';
+ dashLength?: number;
+ dashOffset?: number;
+ displayAnchor?: DisplayAnchor;
+ displayedLines: Array;
+ dotOffset?: number;
+ graphSvgRef: MutableRefObject;
+ height: number;
+ lineWidth?: number;
+ scale?: 'linear' | 'logarithmic';
+ scaleLogarithmicBase?: number;
+ showArea?: boolean;
+ showPoints?: boolean;
+ timeSeries: Array;
+ width: number;
+ xScale: ScaleLinear;
+ yScalesPerUnit: Record>;
+}
+
+const Lines = ({
+ areaTransparency,
+ height,
+ graphSvgRef,
+ width,
+ displayAnchor,
+ curve,
+ yScalesPerUnit,
+ xScale,
+ timeSeries,
+ displayedLines,
+ areaThresholdLines,
+ areaStackedLines,
+ areaRegularLines,
+ showArea,
+ showPoints,
+ lineWidth,
+ dotOffset,
+ dashLength,
+ dashOffset,
+ scale,
+ scaleLogarithmicBase
+}: Props): JSX.Element => {
+ const { stackedLinesData, invertedStackedLinesData } = useStackedLines({
+ lines: displayedLines,
+ timeSeries
+ });
+
+ const { regularLines } = useRegularLines({ lines: displayedLines });
+
+ const displayThresholdArea =
+ displayedLines?.length >= requiredNumberLinesThreshold &&
+ canDisplayThreshold(areaThresholdLines);
+
+ const displayAreaRegularLines =
+ (areaRegularLines?.display ?? true) && displayArea(regularLines);
+
+ const displayGuidingLines = displayAnchor?.displayGuidingLines ?? true;
+ const commonStackedLinesProps = {
+ areaTransparency,
+ curve,
+ dashLength,
+ dashOffset,
+ displayAnchor: displayGuidingLines,
+ dotOffset,
+ graphHeight: height,
+ graphSvgRef,
+ graphWidth: width,
+ lineWidth,
+ showArea,
+ showPoints,
+ xScale
+ };
+
+ return (
+
+ {displayGuidingLines && (
+
+ )}
+
+ {(areaStackedLines?.display ?? true) && (
+ <>
+ {Object.entries(stackedLinesData).map(
+ ([unit, { lines, timeSeries: stackedTimeSeries }]) => (
+
+ )
+ )}
+ {Object.entries(invertedStackedLinesData).map(
+ ([unit, { lines, timeSeries: stackedTimeSeries }]) => (
+
+ )
+ )}
+ >
+ )}
+
+ {displayThresholdArea && (
+
+ )}
+
+ {displayAreaRegularLines
+ ? regularLines.map(
+ ({
+ areaColor,
+ transparency,
+ lineColor,
+ filled,
+ unit,
+ highlight,
+ invert,
+ metric_id,
+ ...rest
+ }) => {
+ const yScale = getYScale({
+ invert,
+ scale,
+ scaleLogarithmicBase,
+ unit,
+ yScalesPerUnit
+ });
+ const relatedTimeSeries = getTimeSeriesForLines({
+ invert,
+ lines: [
+ {
+ areaColor,
+ filled,
+ highlight,
+ invert,
+ lineColor,
+ metric_id,
+ transparency,
+ unit,
+ ...rest
+ }
+ ],
+ timeSeries
+ });
+
+ return (
+
+ {displayGuidingLines && (
+
+ )}
+ {showPoints &&
+ getDates(relatedTimeSeries).map((timeTick) => (
+
+ ))}
+
+
+ );
+ }
+ )
+ : null}
+
+ );
+};
+
+export default Lines;
diff --git a/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/models.ts b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/models.ts
new file mode 100644
index 0000000000..479962a3f4
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/BasicComponents/Lines/models.ts
@@ -0,0 +1,42 @@
+import { ScaleLinear } from 'd3-scale';
+
+import { LineChartData } from '../../../common/models';
+import { Line, TimeValue } from '../../../common/timeSeries/models';
+
+import { FactorsVariation } from './Threshold/models';
+
+export interface ShapeGraphData {
+ [x: string]: unknown;
+ display: boolean;
+ leftScale?: ScaleLinear;
+ rightScale?: ScaleLinear;
+ xScale?: ScaleLinear;
+ yScale?: ScaleLinear;
+}
+
+export interface LinesData {
+ lines: Array;
+ timeSeries: Array;
+}
+
+export interface AreaStackedLines extends ShapeGraphData {
+ invertedStackedLinesData: LinesData;
+ stackedLinesData: LinesData;
+}
+
+export interface AreaRegularLines extends ShapeGraphData {
+ lines: Array;
+ timeSeries: Array;
+}
+
+export interface AreaThreshold extends AreaRegularLines {
+ dataExclusionPeriods?: Array;
+ factors?: FactorsVariation;
+ getCountDisplayedCircles?: (value: number) => void;
+}
+
+export interface Shape {
+ areaRegularLines: AreaRegularLines;
+ areaStackedLines: AreaStackedLines;
+ areaThreshold: AreaThreshold;
+}
diff --git a/centreon/packages/ui/src/Graph/Chart/Chart.cypress.spec.tsx b/centreon/packages/ui/src/Graph/Chart/Chart.cypress.spec.tsx
new file mode 100644
index 0000000000..76f5863bde
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/Chart.cypress.spec.tsx
@@ -0,0 +1,701 @@
+import { useState } from 'react';
+
+import { Provider, createStore } from 'jotai';
+
+import { userAtom } from '@centreon/ui-context';
+
+import { LineChartData } from '../common/models';
+import dataCurvesWithSameColor from '../mockedData/curvesWithSameColor.json';
+import dataLastDay from '../mockedData/lastDay.json';
+import dataLastDayWithIncompleteValues from '../mockedData/lastDayWithIncompleteValues.json';
+import dataLastDayWithNullValues from '../mockedData/lastDayWithNullValues.json';
+import dataPingServiceLinesBars from '../mockedData/pingServiceLinesBars.json';
+import dataPingServiceLinesBarsMixed from '../mockedData/pingServiceLinesBarsMixed.json';
+import dataPingServiceLinesBarsStacked from '../mockedData/pingServiceLinesBarsStacked.json';
+
+import { args as argumentsData } from './helpers/doc';
+import { LineChartProps } from './models';
+
+import WrapperChart from '.';
+
+interface Props
+ extends Pick {
+ data?: LineChartData;
+}
+
+const checkLegendInformation = (): void => {
+ cy.contains('hitratio').should('be.visible');
+ cy.contains('querytime').should('be.visible');
+ cy.contains('connTime').should('be.visible');
+ cy.contains('Min: 70.31').should('be.visible');
+ cy.contains('Min: 0.03').should('be.visible');
+ cy.contains('Max: 88.03').should('be.visible');
+ cy.contains('Max: 0.98').should('be.visible');
+ cy.contains('Max: 0.97').should('be.visible');
+ cy.contains('Avg: 78.07').should('be.visible');
+ cy.contains('Avg: 0.5').should('be.visible');
+ cy.contains('Avg: 0.51').should('be.visible');
+};
+
+const CustomUnitComponent = (props): JSX.Element => {
+ const [leftUnit, setLeftUnit] = useState('%');
+ const [rightUnit, setRightUnit] = useState('ms');
+
+ return (
+
+ );
+};
+
+const initialize = ({
+ data = dataLastDay,
+ tooltip,
+ legend,
+ axis,
+ lineStyle
+}: Props): void => {
+ cy.adjustViewport();
+
+ const store = createStore();
+ store.set(userAtom, {
+ alias: 'admin',
+ locale: 'en',
+ name: 'admin',
+ timezone: 'Europe/Paris'
+ });
+
+ cy.mount({
+ Component: (
+
+
+
+ )
+ });
+
+ cy.viewport('macbook-13');
+};
+
+const initializeCustomUnits = ({
+ data = dataLastDay,
+ tooltip,
+ legend,
+ axis,
+ lineStyle
+}: Props): void => {
+ cy.adjustViewport();
+
+ const store = createStore();
+ store.set(userAtom, {
+ alias: 'admin',
+ locale: 'en',
+ name: 'admin',
+ timezone: 'Europe/Paris'
+ });
+
+ cy.mount({
+ Component: (
+
+
+
+ )
+ });
+
+ cy.viewport('macbook-13');
+};
+
+const checkGraphWidth = (): void => {
+ cy.findByTestId('graph-interaction-zone')
+ .should('have.attr', 'width')
+ .and('equal', '1170');
+
+ cy.findByTestId('graph-interaction-zone')
+ .should('have.attr', 'height')
+ .and('equal', '393');
+};
+
+describe('Line chart', () => {
+ describe('Tooltip', () => {
+ it('displays a tooltip when the graph is hovered', () => {
+ initialize({});
+
+ checkGraphWidth();
+
+ cy.contains('oracle-buffer-hit-ratio graph on srv-oracle-users').should(
+ 'be.visible'
+ );
+ cy.contains('hitratio').should('be.visible');
+ cy.contains('querytime').should('be.visible');
+ cy.contains('connTime').should('be.visible');
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(250, 70);
+
+ cy.contains('06/18/2023').should('be.visible');
+
+ cy.contains('0.45 s').should('be.visible');
+ cy.contains('75.93%').should('be.visible');
+ cy.contains('0.43 s').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays a metric highlighted when the graph is hovered and the metric is the nearest point', () => {
+ initialize({});
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
+
+ cy.get('[data-metric="querytime"]').should(
+ 'have.attr',
+ 'data-highlight',
+ 'false'
+ );
+ cy.get('[data-metric="connTime"]').should(
+ 'have.attr',
+ 'data-highlight',
+ 'true'
+ );
+
+ cy.makeSnapshot();
+ });
+
+ it('does not display the tooltip when null values are hovered', () => {
+ initialize({ data: dataLastDayWithNullValues });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(1185, 100);
+
+ cy.get('[data-metric="querytime"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays the tooltip with defined values when the graph is hovered', () => {
+ initialize({ data: dataLastDayWithIncompleteValues });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(1152, 100);
+
+ cy.get('[data-metric="querytime"]').should('be.visible');
+ cy.get('[data-metric="hitratio"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays the tooltip a single metric when the corresponding prop is set', () => {
+ initialize({ tooltip: { mode: 'single', sortOrder: 'name' } });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
+
+ cy.get('[data-metric="connTime"]').should(
+ 'have.attr',
+ 'data-highlight',
+ 'true'
+ );
+ cy.get('[data-metric="hitratio"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('does not display the tooltip when the corresponding prop is set', () => {
+ initialize({ tooltip: { mode: 'hidden', sortOrder: 'name' } });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
+
+ cy.get('[data-metric="querytime"]').should('not.exist');
+ cy.get('[data-metric="connTime"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('sorts metrics by their value is ascending when the corresponding prop is set', () => {
+ initialize({ tooltip: { mode: 'all', sortOrder: 'ascending' } });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
+
+ cy.get('[data-metric="querytime"]').should('be.visible');
+ cy.get('[data-metric="connTime"]').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('sorts metrics by their value is descending when the corresponding prop is set', () => {
+ initialize({ tooltip: { mode: 'all', sortOrder: 'descending' } });
+
+ checkGraphWidth();
+
+ cy.contains('Min: 70.31').should('be.visible');
+
+ cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
+
+ cy.get('[data-metric="querytime"]').should('be.visible');
+ cy.get('[data-metric="connTime"]').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+ });
+
+ it('displays the curves with different shades when curves have same color', () => {
+ initialize({ data: dataCurvesWithSameColor });
+
+ cy.findByTestId('graph-interaction-zone')
+ .should('have.attr', 'width')
+ .and('equal', '1212');
+
+ cy.findByLabelText('Centreon-Server: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(41, 175, 238)');
+ cy.findByLabelText('Centreon-Server_5: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(83, 191, 241)');
+ cy.findByLabelText('Centreon-Server_4: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(8, 34, 47)');
+ cy.findByLabelText('Centreon-Server_3: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(16, 70, 95)');
+ cy.findByLabelText('Centreon-Server_2: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(24, 105, 142)');
+ cy.findByLabelText('Centreon-Server_1: Round-Trip Average Time')
+ .find('[data-icon="true"]')
+ .should('have.css', 'background-color', 'rgb(32, 140, 190)');
+
+ cy.get('[data-metric="1"]').should(
+ 'have.attr',
+ 'stroke',
+ 'rgb(41, 175, 238)'
+ );
+ cy.get('[data-metric="21"]').should(
+ 'have.attr',
+ 'stroke',
+ 'rgb(32, 140, 190)'
+ );
+ cy.get('[data-metric="17"]').should(
+ 'have.attr',
+ 'stroke',
+ 'rgb(24, 105, 142)'
+ );
+ cy.get('[data-metric="13"]').should(
+ 'have.attr',
+ 'stroke',
+ 'rgb(16, 70, 95)'
+ );
+ cy.get('[data-metric="9"]').should('have.attr', 'stroke', 'rgb(8, 34, 47)');
+ cy.get('[data-metric="5"]').should(
+ 'have.attr',
+ 'stroke',
+ 'rgb(83, 191, 241)'
+ );
+
+ cy.makeSnapshot();
+ });
+
+ describe('Legend', () => {
+ it('displays the legend in list mode when the corresponding props is set', () => {
+ initialize({ legend: { mode: 'list', placement: 'bottom' } });
+
+ cy.contains('Min:').should('not.exist');
+ cy.contains('Max:').should('not.exist');
+ cy.contains('Avg:').should('not.exist');
+
+ cy.get('[data-display-side="false"]').should('exist');
+ cy.get('[data-as-list="true"]').should('exist');
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays the legend on the left side of the graph when the corresponding prop is set', () => {
+ initialize({
+ legend: { mode: 'grid', placement: 'left' }
+ });
+
+ cy.get('[data-display-side="true"]').should('exist');
+ cy.get('[data-as-list="true"]').should('exist');
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays the legend on the right side of the graph as list when the corresponding props are set', () => {
+ initialize({ legend: { mode: 'list', placement: 'right' } });
+
+ cy.get('[data-display-side="true"]').should('exist');
+ cy.get('[data-as-list="true"]').should('exist');
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+ });
+
+ describe('Axis', () => {
+ it('does not display axis borders when the prop is set', () => {
+ initialize({ axis: { showBorder: false } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.get('line[class*="visx-axis-line"]')
+ .eq(0)
+ .should('have.attr', 'stroke-width')
+ .and('equal', '0');
+ cy.get('line[class*="visx-axis-line"]')
+ .eq(1)
+ .should('have.attr', 'stroke-width')
+ .and('equal', '0');
+ cy.get('line[class*="visx-axis-line"]')
+ .eq(2)
+ .should('have.attr', 'stroke-width')
+ .and('equal', '0');
+
+ cy.makeSnapshot();
+ });
+
+ it('does not display grids when the prop is set', () => {
+ initialize({ axis: { showGridLines: false } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.get('g[class="visx-group visx-rows"]').should('not.exist');
+ cy.get('g[class="visx-group visx-columns"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays only horizontal lines when the prop is set', () => {
+ initialize({ axis: { gridLinesType: 'horizontal' } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.get('g[class="visx-group visx-rows"]').should('be.visible');
+ cy.get('g[class="visx-group visx-columns"]').should('not.exist');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays only vertical lines when the prop is set', () => {
+ initialize({ axis: { gridLinesType: 'vertical' } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.get('g[class="visx-group visx-rows"]').should('not.exist');
+ cy.get('g[class="visx-group visx-columns"]').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('rotates the tick label when the props is set', () => {
+ initialize({ axis: { yAxisTickLabelRotation: -35 } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.get('text[transform="rotate(-35, -2, 312.508173777963)"]').should(
+ 'be.visible'
+ );
+
+ cy.makeSnapshot();
+ });
+
+ it('displays as centered to zero when the prop is set', () => {
+ initialize({ axis: { isCenteredZero: true } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+
+ cy.contains('0.9').should('be.visible');
+ cy.contains('-0.9').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+ });
+
+ describe('Line style', () => {
+ it('displays the curve in a natural style when the prop is set', () => {
+ initialize({ lineStyle: { curve: 'natural' } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('[data-metric="13536"]').should('be.visible');
+ cy.get('[data-metric="13534"]').should('be.visible');
+ cy.get('[data-metric="13535"]').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays the curve in a step style when the prop is set', () => {
+ initialize({ lineStyle: { curve: 'step' } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('[data-metric="13536"]').should('be.visible');
+ cy.get('[data-metric="13534"]').should('be.visible');
+ cy.get('[data-metric="13535"]').should('be.visible');
+ checkLegendInformation();
+
+ cy.makeSnapshot();
+ });
+
+ it('shows the area when the prop is set', () => {
+ initialize({ lineStyle: { showArea: true } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('path[fill="rgba(102, 153, 204, 0.19999999999999996)"]').should(
+ 'be.visible'
+ );
+
+ cy.get('[data-metric="13536"]').should('be.visible');
+ cy.get('[data-metric="13534"]').should('be.visible');
+ cy.get('[data-metric="13535"]').should('be.visible');
+
+ checkLegendInformation();
+
+ cy.makeSnapshot();
+ });
+
+ it('shows the area with a custom transparency when props are set', () => {
+ initialize({ lineStyle: { areaTransparency: 20, showArea: true } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('path[fill="rgba(102, 153, 204, 0.8)"]').should('be.visible');
+ });
+
+ it('shows points when the prop is set', () => {
+ initialize({ lineStyle: { showPoints: true } });
+
+ checkGraphWidth();
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('circle[cx="4.0625"]').should('be.visible');
+ cy.get('circle[cy="105.21757370835121"]').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays lines with a custom line width when the prop is set', () => {
+ initialize({ lineStyle: { lineWidth: 6 } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('path[stroke-width="6"]').should('have.length', 3);
+
+ cy.makeSnapshot();
+ });
+
+ it('displays lines with dots width when the prop is set', () => {
+ initialize({ lineStyle: { dotOffset: 10, lineWidth: 4 } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('path[stroke-width="4"]')
+ .should('have.attr', 'stroke-dasharray')
+ .and('equals', '4 10');
+ });
+
+ it('displays lines with dots width when the prop is set', () => {
+ initialize({ lineStyle: { dashLength: 5, dashOffset: 8 } });
+
+ checkGraphWidth();
+
+ cy.contains(':00 AM').should('be.visible');
+ cy.get('path[stroke-width="2"]')
+ .should('have.attr', 'stroke-dasharray')
+ .and('equals', '5 8');
+ });
+ });
+});
+
+describe('Lines and bars', () => {
+ it('displays lines and bars in the same chart', () => {
+ initialize({
+ data: dataPingServiceLinesBars
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-7650.368581547736').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-10').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays stacked lines and bars in the same chart', () => {
+ initialize({
+ data: dataPingServiceLinesBarsStacked
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-6835').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-14920.328518673756').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays mixed lines and bars in the same chart', () => {
+ initialize({
+ data: dataPingServiceLinesBarsMixed
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-7650.368581547736').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-10').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays lines and bars in the same chart centered in zero', () => {
+ initialize({
+ axis: {
+ isCenteredZero: true
+ },
+ data: dataPingServiceLinesBars
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-7650.368581547736').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-10').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays stacked lines and bars in the same chart centered in zero', () => {
+ initialize({
+ axis: {
+ isCenteredZero: true
+ },
+ data: dataPingServiceLinesBarsStacked
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-6835').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-14920.328518673756').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('displays mixed lines and bars in the same chart centered in zero', () => {
+ initialize({
+ axis: {
+ isCenteredZero: true
+ },
+ data: dataPingServiceLinesBarsMixed
+ });
+
+ checkGraphWidth();
+
+ cy.get('path[data-metric="1"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.get('path[data-metric="3"]').should('be.visible');
+ cy.findByTestId('stacked-bar-10-0-7650.368581547736').should('be.visible');
+ cy.findByTestId('stacked-bar-2-0-10').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+
+ it('changes the unit on the left or right scales when a new unit is selected', () => {
+ initializeCustomUnits({
+ data: dataPingServiceLinesBarsMixed
+ });
+
+ checkGraphWidth();
+
+ cy.findAllByTestId('unit-selector').eq(0).parent().click();
+ cy.findByLabelText('B').click();
+
+ cy.findAllByTestId('unit-selector').eq(0).should('have.value', 'B');
+ cy.contains('8.79 KB').should('be.visible');
+
+ cy.findAllByTestId('unit-selector').eq(1).parent().click();
+ cy.findByLabelText('%').click();
+
+ cy.findAllByTestId('unit-selector').eq(1).should('have.value', '%');
+ cy.contains('20').should('be.visible');
+
+ cy.makeSnapshot();
+ });
+});
diff --git a/centreon/packages/ui/src/Graph/Chart/Chart.stories.tsx b/centreon/packages/ui/src/Graph/Chart/Chart.stories.tsx
new file mode 100644
index 0000000000..5dbc2e603d
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/Chart.stories.tsx
@@ -0,0 +1,697 @@
+import { useEffect, useState } from 'react';
+
+import { Meta, StoryObj } from '@storybook/react';
+
+import { Button } from '@mui/material';
+import ButtonGroup from '@mui/material/ButtonGroup';
+import Switch from '@mui/material/Switch';
+import Tooltip from '@mui/material/Tooltip';
+
+import { useLocaleDateTimeFormat } from '@centreon/ui';
+
+import TimePeriod from '../../TimePeriods';
+import { LineChartData } from '../common/models';
+import annotationData from '../mockedData/annotationData.json';
+import dataCurvesSameColor from '../mockedData/curvesWithSameColor.json';
+import exclusionPeriodFirstPeriod from '../mockedData/exclusionPeriodFirstPeriod.json';
+import exclusionPeriodSecondPeriod from '../mockedData/exclusionPeriodSecondPeriod.json';
+import exclusionPeriodThirdPeriod from '../mockedData/exclusionPeriodThirdPeriod.json';
+import dataLastDay from '../mockedData/lastDay.json';
+import dataLastDayForword from '../mockedData/lastDayForward.json';
+import dataLastDayThreshold from '../mockedData/lastDayThreshold.json';
+import dataLastDayWithLotOfUnits from '../mockedData/lastDayWithLotOfUnits.json';
+import dataLastMonth from '../mockedData/lastMonth.json';
+import dataLastWeek from '../mockedData/lastWeek.json';
+import dataPingServiceLinesBars from '../mockedData/pingServiceLinesBars.json';
+import dataPingServiceLinesBarsMixed from '../mockedData/pingServiceLinesBarsMixed.json';
+import dataPingServiceLinesBarsStacked from '../mockedData/pingServiceLinesBarsStacked.json';
+import dataZoomPreview from '../mockedData/zoomPreview.json';
+
+import { dateTimeFormat } from './common';
+import {
+ argTypes,
+ args as argumentsData,
+ defaultEnd,
+ defaultLast7days,
+ defaultLastMonth,
+ defaultStart,
+ lastDayForwardDate,
+ zoomPreviewDate
+} from './helpers/doc';
+import { Interval, ThresholdType, TooltipData } from './models';
+
+import WrapperChart from '.';
+
+const meta: Meta = {
+ component: WrapperChart
+};
+export default meta;
+
+type Story = StoryObj;
+
+interface Random {
+ max: number;
+ min: number;
+}
+
+const Threshold = (args): JSX.Element => {
+ const [currentFactorMultiplication, setCurrentFactorMultiplication] =
+ useState(2.5);
+ const [countedCircles, setCountedCircles] = useState();
+
+ const getRandomInt = ({ min, max }: Random): number => {
+ return Math.floor(Math.random() * (max - min) + min);
+ };
+
+ const handleClick = (): void => {
+ setCurrentFactorMultiplication(getRandomInt({ max: 5, min: 1 }));
+ };
+
+ const getCountDisplayedCircles = (value: number): void => {
+ setCountedCircles(value);
+ };
+
+ return (
+ <>
+
+ change envelope size randomly
+
+
+
+ >
+ );
+};
+
+const ExternalComponent = (tooltipData): JSX.Element => {
+ const { hideTooltip, data } = tooltipData;
+ const { format } = useLocaleDateTimeFormat();
+
+ return (
+ <>
+ External component
+
+
+ {format({
+ date: data,
+ formatString: dateTimeFormat
+ })}
+
+
+ hideTooltip()}>
+ hide tooltip
+
+ >
+ );
+};
+
+const LineChartAndCLS = (args): JSX.Element => {
+ const [data, setData] = useState(null);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ setTimeout(() => {
+ setLoading(false);
+ setData(dataLastDayThreshold as unknown as LineChartData);
+ }, 100000);
+ }, []);
+
+ return (
+
+ );
+};
+
+interface TimePeriodSwitchProps {
+ getDataSwitch: (value: boolean) => void;
+}
+
+const TimePeriodSwitch = ({
+ getDataSwitch
+}: TimePeriodSwitchProps): JSX.Element => {
+ const [checked, setChecked] = useState(false);
+
+ const handleChange = (event: React.ChangeEvent): void => {
+ setChecked(event.target.checked);
+ };
+
+ useEffect(() => {
+ getDataSwitch?.(checked);
+ }, [checked]);
+
+ return (
+
+ );
+};
+
+const LineChartAndTimePeriod = (args): JSX.Element => {
+ const [currentData, setCurrentData] = useState();
+ const [start, setStart] = useState();
+ const [end, setEnd] = useState();
+ const [displayAnnotation, setDisplayAnnotation] = useState();
+ const [adjustedTimePeriodInterval, setAdjustedTimePeriodInterval] =
+ useState();
+
+ const getParameters = (interval): void => {
+ setStart(interval.start);
+ setEnd(interval.end);
+ };
+
+ useEffect(() => {
+ if (!start || !end) {
+ return;
+ }
+ if (start.includes(lastDayForwardDate)) {
+ setCurrentData(dataLastDayForword as unknown as LineChartData);
+
+ return;
+ }
+
+ if (start.includes(`${defaultStart.split('T')[0]}`)) {
+ setCurrentData(dataLastDayThreshold as unknown as LineChartData);
+
+ return;
+ }
+ if (start.includes(defaultLast7days.split('T')[0])) {
+ setCurrentData(dataLastWeek as unknown as LineChartData);
+
+ return;
+ }
+ if (start.includes(defaultLastMonth.split('T')[0])) {
+ setCurrentData(dataLastMonth as unknown as LineChartData);
+
+ return;
+ }
+ if (start.includes(zoomPreviewDate)) {
+ setCurrentData(dataZoomPreview as unknown as LineChartData);
+ }
+ }, [start, end, adjustedTimePeriodInterval]);
+
+ const getInterval = (interval: Interval): void => {
+ setAdjustedTimePeriodInterval(interval);
+ };
+
+ const getDataSwitch = (value): void => {
+ setDisplayAnnotation(value);
+ };
+
+ const annotationEventData = displayAnnotation && {
+ data: annotationData.result
+ };
+
+ return (
+ <>
+
+ }
+ />
+ (
+
+ )
+ }}
+ zoomPreview={{ enable: true, getInterval }}
+ />
+ >
+ );
+};
+
+const LineChartAndExclusionPeriod = (args): JSX.Element => {
+ const [dataExclusionPeriods, setDataExclusionPeriods] = useState<
+ Array
+ >([exclusionPeriodFirstPeriod as unknown as LineChartData]);
+
+ const handleClick = (data): void => {
+ setDataExclusionPeriods([...dataExclusionPeriods, data]);
+ };
+
+ return (
+ <>
+ Add exclusion periods:
+
+ handleClick(exclusionPeriodSecondPeriod)}>
+ first
+
+ handleClick(exclusionPeriodThirdPeriod)}>
+ second
+
+
+
+ >
+ );
+};
+
+const Template: Story = {
+ render: (args) => (
+
+ )
+};
+
+const WithTimePeriod = {
+ render: (args): JSX.Element =>
+};
+
+const LineChartWithExclusionPeriod: Story = {
+ render: (args) =>
+};
+
+const LineChartWithEnvelopVariation: Story = {
+ render: (args) =>
+};
+
+const LineChartWithCLS: Story = {
+ render: (args) =>
+};
+
+export const LineChart: Story = {
+ ...Template,
+ argTypes,
+ args: argumentsData
+};
+
+export const LineChartWithStepCurve: Story = {
+ ...Template,
+ argTypes,
+ args: {
+ ...argumentsData,
+ lineStyle: {
+ curve: 'step'
+ }
+ }
+};
+
+export const LineChartWithTimePeriod: Story = {
+ ...WithTimePeriod,
+ args: {
+ end: defaultEnd,
+ height: 500,
+ start: defaultStart
+ },
+ parameters: {
+ chromatic: { disableSnapshot: true }
+ }
+};
+
+export const WithEnvelopVariation: Story = {
+ ...LineChartWithEnvelopVariation,
+ args: {
+ end: defaultEnd,
+ height: 500,
+ start: defaultStart
+ }
+};
+
+export const withExclusionPeriods: Story = {
+ ...LineChartWithExclusionPeriod,
+ args: {
+ end: defaultEnd,
+ height: 500,
+ start: defaultStart
+ }
+};
+
+export const withCLS: Story = {
+ ...LineChartWithCLS,
+ args: {
+ end: defaultEnd,
+ height: 500,
+ start: defaultStart
+ }
+};
+
+export const withThresholds: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ thresholds: {
+ critical: [
+ {
+ label: 'critical',
+ value: 350
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning',
+ value: 300
+ }
+ ]
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const withThresholdsAndUnit: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ thresholdUnit: '%',
+ thresholds: {
+ critical: [
+ {
+ label: 'critical',
+ value: 79
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning',
+ value: 65
+ }
+ ]
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const thresholdsRange: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ thresholdUnit: '%',
+ thresholds: {
+ critical: [
+ {
+ label: 'critical 1',
+ value: 60
+ },
+ {
+ label: 'critical 2',
+ value: 79
+ }
+ ],
+ enabled: true,
+ warning: [
+ {
+ label: 'warning 1',
+ value: 20
+ },
+ {
+ label: 'warning 2',
+ value: 30
+ }
+ ]
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const LineChartWithSameColorCurves: Story = {
+ ...Template,
+ argTypes,
+ args: argumentsData,
+ render: (args) => (
+
+ )
+};
+
+export const zeroCentered: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ axis: {
+ isCenteredZero: true
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const customLines: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ lineStyle: {
+ areaTransparency: 10,
+ dashLength: 10,
+ dashOffset: 10,
+ lineWidth: 3,
+ showArea: true,
+ showPoints: true
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const customLinesAndBars: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ barStyle: {
+ opacity: 0.5,
+ radius: 0.5
+ },
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: true
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const multipleUnits: Story = {
+ argTypes,
+ args: argumentsData,
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBars: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: true
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBarsStacked: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: false
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBarsMixed: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: false
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBarsCenteredZero: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ axis: {
+ isCenteredZero: true
+ },
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: true
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBarsStackedCenteredZero: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ axis: {
+ isCenteredZero: true
+ },
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: false
+ }
+ },
+ render: (args) => (
+
+ )
+};
+
+export const linesAndBarsMixedCenteredZero: Story = {
+ argTypes,
+ args: {
+ ...argumentsData,
+ axis: {
+ isCenteredZero: true
+ },
+ lineStyle: {
+ curve: 'natural',
+ lineWidth: 2,
+ showPoints: false
+ }
+ },
+ render: (args) => (
+
+ )
+};
+const CustomYUnits = (props): JSX.Element => {
+ const [leftUnit, setLeftUnit] = useState('b');
+ const [rightUnit, setRightUnit] = useState('ms');
+
+ return (
+
+ );
+};
+
+export const customYUnits: Story = {
+ argTypes,
+ args: argumentsData,
+ render: (args) =>
+};
diff --git a/centreon/packages/ui/src/Graph/Chart/Chart.styles.ts b/centreon/packages/ui/src/Graph/Chart/Chart.styles.ts
new file mode 100644
index 0000000000..83ce44de12
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/Chart.styles.ts
@@ -0,0 +1,5 @@
+import { makeStyles } from 'tss-react/mui';
+
+export const useChartStyles = makeStyles()({
+ tooltipChildren: { height: '100%', width: '100%' }
+});
diff --git a/centreon/packages/ui/src/Graph/Chart/Chart.tsx b/centreon/packages/ui/src/Graph/Chart/Chart.tsx
new file mode 100644
index 0000000000..eb77891938
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/Chart.tsx
@@ -0,0 +1,337 @@
+import { MutableRefObject, useEffect, useMemo, useRef, useState } from 'react';
+
+import { useAtom } from 'jotai';
+import { equals, flatten, isNil, pluck, reject } from 'ramda';
+
+import { ClickAwayListener, Skeleton } from '@mui/material';
+
+import { useDeepCompare } from '../../utils';
+import BarGroup from '../BarChart/BarGroup';
+import BaseChart from '../common/BaseChart/BaseChart';
+import ChartSvgWrapper from '../common/BaseChart/ChartSvgWrapper';
+import { useComputeBaseChartDimensions } from '../common/BaseChart/useComputeBaseChartDimensions';
+import Thresholds from '../common/Thresholds/Thresholds';
+import { Thresholds as ThresholdsModel } from '../common/models';
+import {
+ getUnits,
+ getXScale,
+ getXScaleBand,
+ getYScalePerUnit
+} from '../common/timeSeries';
+import { Line } from '../common/timeSeries/models';
+
+import Lines from './BasicComponents/Lines';
+import {
+ canDisplayThreshold,
+ findLineOfOriginMetricThreshold,
+ lowerLineName,
+ upperLineName
+} from './BasicComponents/Lines/Threshold/models';
+import { useChartStyles } from './Chart.styles';
+import InteractionWithGraph from './InteractiveComponents';
+import GraphValueTooltip from './InteractiveComponents/GraphValueTooltip/GraphValueTooltip';
+import GraphTooltip from './InteractiveComponents/Tooltip';
+import useGraphTooltip from './InteractiveComponents/Tooltip/useGraphTooltip';
+import { margin } from './common';
+import { thresholdTooltipAtom } from './graphAtoms';
+import { Data, GlobalAreaLines, GraphInterval, LineChartProps } from './models';
+import { useIntersection } from './useChartIntersection';
+
+interface Props extends LineChartProps {
+ graphData: Data;
+ graphInterval: GraphInterval;
+ graphRef: MutableRefObject;
+ limitLegend?: false | number;
+ shapeLines?: GlobalAreaLines;
+ thresholdUnit?: string;
+ thresholds?: ThresholdsModel;
+}
+
+const filterLines = (lines: Array, displayThreshold): Array => {
+ if (!displayThreshold) {
+ return lines;
+ }
+ const lineOriginMetric = findLineOfOriginMetricThreshold(lines);
+
+ const findLinesUpperLower = lines.map((line) =>
+ equals(line.name, lowerLineName) || equals(line.name, upperLineName)
+ ? line
+ : null
+ );
+
+ const linesUpperLower = reject((element) => !element, findLinesUpperLower);
+
+ return [...lineOriginMetric, ...linesUpperLower] as Array;
+};
+
+const Chart = ({
+ graphData,
+ height = 500,
+ width,
+ shapeLines,
+ axis,
+ displayAnchor,
+ zoomPreview,
+ graphInterval,
+ timeShiftZones,
+ annotationEvent,
+ tooltip,
+ legend,
+ graphRef,
+ header,
+ lineStyle,
+ barStyle = {
+ opacity: 1,
+ radius: 0.2
+ },
+ thresholds,
+ thresholdUnit,
+ limitLegend
+}: Props): JSX.Element => {
+ const { classes } = useChartStyles();
+
+ const { title, timeSeries, baseAxis, lines } = graphData;
+
+ const [linesGraph, setLinesGraph] = useState>(
+ filterLines(lines, canDisplayThreshold(shapeLines?.areaThresholdLines))
+ );
+ const graphSvgRef = useRef(null);
+
+ const [thresholdTooltip, setThresholdTooltip] = useAtom(thresholdTooltipAtom);
+
+ const { isInViewport } = useIntersection({ element: graphRef?.current });
+
+ const thresholdValues = flatten([
+ pluck('value', thresholds?.warning || []),
+ pluck('value', thresholds?.critical || [])
+ ]);
+
+ const displayedLines = useMemo(
+ () => linesGraph.filter(({ display }) => display),
+ [linesGraph]
+ );
+ const [firstUnit, secondUnit] = useMemo(
+ () => getUnits(displayedLines),
+ [displayedLines]
+ );
+
+ const { legendRef, graphWidth, graphHeight } = useComputeBaseChartDimensions({
+ hasSecondUnit: Boolean(secondUnit),
+ height,
+ legendDisplay: legend?.display,
+ legendHeight: legend?.height,
+ legendPlacement: legend?.placement,
+ width
+ });
+
+ const xScale = useMemo(
+ () =>
+ getXScale({
+ dataTime: timeSeries,
+ valueWidth: graphWidth
+ }),
+ [timeSeries, graphWidth]
+ );
+
+ const xScaleBand = useMemo(
+ () =>
+ getXScaleBand({
+ dataTime: timeSeries,
+ valueWidth: graphWidth
+ }),
+ [timeSeries, graphWidth, graphHeight]
+ );
+
+ const yScalesPerUnit = useMemo(
+ () =>
+ getYScalePerUnit({
+ dataLines: linesGraph,
+ dataTimeSeries: timeSeries,
+ isCenteredZero: axis?.isCenteredZero,
+ scale: axis?.scale,
+ scaleLogarithmicBase: axis?.scaleLogarithmicBase,
+ thresholdUnit,
+ thresholds: (thresholds?.enabled && thresholdValues) || [],
+ valueGraphHeight: graphHeight - margin.bottom
+ }),
+ [
+ linesGraph,
+ timeSeries,
+ graphHeight,
+ thresholdValues,
+ thresholds?.enabled,
+ axis?.isCenteredZero,
+ axis?.scale,
+ axis?.scaleLogarithmicBase
+ ]
+ );
+
+ const leftScale = yScalesPerUnit[axis?.axisYLeft?.unit ?? firstUnit];
+ const rightScale = yScalesPerUnit[axis?.axisYRight?.unit ?? secondUnit];
+
+ const linesDisplayedAsLine = useMemo(
+ () =>
+ displayedLines.filter(
+ ({ displayAs }) => isNil(displayAs) || equals(displayAs, 'line')
+ ),
+ [displayedLines]
+ );
+
+ const linesDisplayedAsBar = useMemo(
+ () => displayedLines.filter(({ displayAs }) => equals(displayAs, 'bar')),
+ [displayedLines]
+ );
+
+ const allUnits = getUnits(linesGraph);
+
+ useEffect(
+ () => {
+ setLinesGraph(
+ filterLines(lines, canDisplayThreshold(shapeLines?.areaThresholdLines))
+ );
+ },
+ useDeepCompare([lines])
+ );
+
+ const graphTooltipData = useGraphTooltip({
+ graphWidth,
+ timeSeries,
+ xScale
+ });
+
+ const displayLegend = legend?.display ?? true;
+ const displayTooltip = !isNil(tooltip?.renderComponent);
+
+ const showGridLines = useMemo(
+ () => isNil(axis?.showGridLines) || axis?.showGridLines,
+ [axis?.showGridLines]
+ );
+
+ if (!isInViewport) {
+ return (
+
+ );
+ }
+
+ return (
+
+ <>
+
+
+
+
+ <>
+
+
+
+ {thresholds?.enabled && (
+ setThresholdTooltip(null)}
+ showTooltip={({ tooltipData: thresholdLabel }) =>
+ setThresholdTooltip({
+ thresholdLabel
+ })
+ }
+ thresholdUnit={thresholdUnit}
+ thresholds={thresholds as ThresholdsModel}
+ width={graphWidth}
+ yScalesPerUnit={yScalesPerUnit}
+ />
+ )}
+ >
+
+
+
+
+ {displayTooltip && }
+ >
+
+ );
+};
+
+export default Chart;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/GuidingLines.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/GuidingLines.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx
similarity index 93%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx
index a7e596a3cc..ca230275d1 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx
@@ -4,8 +4,8 @@ import { isNil, prop } from 'ramda';
import { bisectDate, getDates } from '../../../common/timeSeries';
import { TimeValue } from '../../../common/timeSeries/models';
-import useTickGraph from './useTickGraph';
import { GetYAnchorPoint } from './models';
+import useTickGraph from './useTickGraph';
import AnchorPoint from '.';
@@ -22,10 +22,14 @@ export const getYAnchorPoint = ({
timeSeries,
yScale,
metric_id
-}: GetYAnchorPoint): number => {
+}: GetYAnchorPoint): number | null => {
const index = bisectDate(getDates(timeSeries), timeTick);
const timeValue = timeSeries[index];
+ if (isNil(timeValue)) {
+ return null;
+ }
+
return yScale(prop(metric_id, timeValue) as number);
};
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx
similarity index 92%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx
index 4729cabc83..fa7918c61f 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx
@@ -34,9 +34,14 @@ export const getYAnchorPoint = ({
timeTick,
stackValues,
yScale
-}: GetYAnchorPoint): number => {
+}: GetYAnchorPoint): number | null => {
const index = bisectDate(getStackedDates(stackValues), timeTick);
const timeValue = stackValues[index];
+ const { key } = stackValues;
+
+ if (isNil(timeValue.data[key])) {
+ return null;
+ }
return yScale(timeValue[1] as number);
};
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/index.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/index.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/index.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/models.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/models.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/models.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/models.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/useTickGraph.ts
similarity index 97%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/useTickGraph.ts
index c4e4f2ecf0..c35467d2f1 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/AnchorPoint/useTickGraph.ts
@@ -3,10 +3,10 @@ import { useEffect, useState } from 'react';
import { ScaleLinear } from 'd3-scale';
import { useAtomValue } from 'jotai';
-import useAxisY from '../../BasicComponents/Axes/useAxisY';
-import { margin } from '../../common';
+import useAxisY from '../../../common/Axes/useAxisY';
import { getTimeValue } from '../../../common/timeSeries';
import { Line, TimeValue } from '../../../common/timeSeries/models';
+import { margin } from '../../common';
import { mousePositionAtom } from '../interactionWithGraphAtoms';
interface AnchorPointResult {
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Area.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Area.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Area.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Area.tsx
index 19ac579a98..785232d320 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Area.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Area.tsx
@@ -1,7 +1,7 @@
import { Shape } from '@visx/visx';
import { ScaleTime } from 'd3-scale';
-import { max, pick, prop } from 'ramda';
import { useAtom, useAtomValue } from 'jotai';
+import { max, pick, prop } from 'ramda';
import { makeStyles } from 'tss-react/mui';
import { useLocaleDateTimeFormat, useMemoComponent } from '@centreon/ui';
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Line.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Line.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Line.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Line.tsx
index 59629717d9..a0f89766d5 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Line.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/Line.tsx
@@ -1,7 +1,7 @@
import { Shape } from '@visx/visx';
import { ScaleTime } from 'd3-scale';
-import { pick } from 'ramda';
import { useAtomValue } from 'jotai';
+import { pick } from 'ramda';
import { makeStyles } from 'tss-react/mui';
import { useLocaleDateTimeFormat, useMemoComponent } from '@centreon/ui';
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/index.tsx
new file mode 100644
index 0000000000..48c88572df
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Annotation/index.tsx
@@ -0,0 +1,81 @@
+import { useSetAtom } from 'jotai';
+import { useTranslation } from 'react-i18next';
+import { makeStyles } from 'tss-react/mui';
+
+import { Paper, Tooltip, Typography } from '@mui/material';
+
+import { truncate } from '../../../helpers';
+import { labelBy } from '../../../translatedLabels';
+import { annotationHoveredAtom } from '../annotationsAtoms';
+import { TimelineEvent } from '../models';
+
+const yMargin = -32;
+const iconSize = 20;
+
+const useStyles = makeStyles()((theme) => ({
+ tooltip: {
+ backgroundColor: 'transparent'
+ },
+ tooltipContent: {
+ padding: theme.spacing(1)
+ }
+}));
+
+export interface Props {
+ annotationHoveredId: number;
+ event: TimelineEvent;
+ header: string;
+ icon: JSX.Element;
+ marker: JSX.Element;
+ xIcon: number;
+}
+
+const Annotation = ({
+ icon,
+ header,
+ event,
+ xIcon,
+ marker,
+ annotationHoveredId
+}: Props): JSX.Element => {
+ const { classes } = useStyles();
+ const { t } = useTranslation();
+
+ const setAnnotationHovered = useSetAtom(annotationHoveredAtom);
+
+ const content = `${truncate(event.content)} (${t(labelBy)} ${
+ event.contact?.name
+ })`;
+
+ return (
+
+
+ {header}
+ {content}
+
+ }
+ >
+
+ setAnnotationHovered(() => ({ annotationHoveredId, event }))
+ }
+ onMouseLeave={(): void => setAnnotationHovered(() => undefined)}
+ >
+
+ {icon}
+
+
+ {marker}
+
+ );
+};
+
+export default Annotation;
+export { yMargin, iconSize };
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Area/Downtime.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Area/Downtime.tsx
new file mode 100644
index 0000000000..53de30d729
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Area/Downtime.tsx
@@ -0,0 +1,27 @@
+import { useTranslation } from 'react-i18next';
+
+import { useTheme } from '@mui/material';
+
+import { DowntimeIcon } from '../../../../../Icon';
+import { labelDowntime } from '../../../translatedLabels';
+import EventAnnotations from '../EventAnnotations';
+import { Args } from '../models';
+
+const DowntimeAnnotations = (props: Args): JSX.Element => {
+ const { t } = useTranslation();
+ const theme = useTheme();
+
+ const color = theme.palette.action.inDowntime;
+
+ return (
+
+ );
+};
+
+export default DowntimeAnnotations;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/EventAnnotations.tsx
similarity index 96%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/EventAnnotations.tsx
index 9cc5ba3bf2..e9ba4754ce 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/EventAnnotations.tsx
@@ -1,9 +1,9 @@
-import { filter, propEq, isNil } from 'ramda';
import { ScaleTime } from 'd3-scale';
+import { filter, isNil, propEq } from 'ramda';
-import { TimelineEvent } from './models';
-import LineAnnotation from './Annotation/Line';
import AreaAnnotation from './Annotation/Area';
+import LineAnnotation from './Annotation/Line';
+import { TimelineEvent } from './models';
interface Props {
Icon: (props) => JSX.Element | null;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Comments.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Line/Comments.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Comments.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Line/Comments.tsx
index 15588c803f..d76151cd99 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Comments.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/Line/Comments.tsx
@@ -1,7 +1,7 @@
import { useTranslation } from 'react-i18next';
-import { useTheme } from '@mui/material';
import IconComment from '@mui/icons-material/Comment';
+import { useTheme } from '@mui/material';
import { labelComment } from '../../../translatedLabels';
import EventAnnotations from '../EventAnnotations';
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/annotationsAtoms.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/annotationsAtoms.ts
similarity index 99%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/annotationsAtoms.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/annotationsAtoms.ts
index 5d1f2946bf..98b43d3bfd 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/annotationsAtoms.ts
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/annotationsAtoms.ts
@@ -1,6 +1,9 @@
import { ScaleTime } from 'd3-scale';
import { atom } from 'jotai';
import {
+ Pred,
+ T,
+ __,
always,
both,
cond,
@@ -14,10 +17,7 @@ import {
lte,
not,
or,
- pipe,
- Pred,
- T,
- __
+ pipe
} from 'ramda';
import { alpha } from '@mui/material';
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/index.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/index.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/index.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/models.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/models.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/models.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/models.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/useAnnotation.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/useAnnotation.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/useAnnotation.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Annotations/useAnnotation.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Bar.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Bar.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Bar.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Bar.tsx
index 89b881c612..b4fc3a78e6 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Bar.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Bar.tsx
@@ -1,5 +1,5 @@
-import { Shape } from '@visx/visx';
import { AddSVGProps } from '@visx/shape/lib/types';
+import { Shape } from '@visx/visx';
interface BarProps {
className?: string;
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx
new file mode 100644
index 0000000000..2c84f106fa
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx
@@ -0,0 +1,61 @@
+import { equals } from 'ramda';
+
+import { Typography } from '@mui/material';
+
+import { Tooltip as MuiTooltip } from '../../../../components/Tooltip';
+import { useTooltipStyles } from '../../../common/useTooltipStyles';
+import { ThresholdTooltip, Tooltip } from '../../models';
+
+import GraphValueTooltipContent from './GraphValueTooltipContent';
+
+interface Props {
+ baseAxis: number;
+ children: JSX.Element;
+ thresholdTooltip: ThresholdTooltip | null;
+ tooltip?: Tooltip;
+}
+
+const GraphValueTooltip = ({
+ children,
+ tooltip,
+ baseAxis,
+ thresholdTooltip
+}: Props): JSX.Element => {
+ const { classes, cx } = useTooltipStyles();
+
+ if (thresholdTooltip) {
+ return (
+ {thresholdTooltip?.thresholdLabel}}
+ >
+ {children}
+
+ );
+ }
+
+ return (
+
+ )
+ }
+ >
+ {children}
+
+ );
+};
+
+export default GraphValueTooltip;
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltipContent.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltipContent.tsx
new file mode 100644
index 0000000000..128a77e89e
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/GraphValueTooltipContent.tsx
@@ -0,0 +1,74 @@
+import { useAtomValue } from 'jotai';
+import { equals, isNil } from 'ramda';
+
+import { Box, Typography } from '@mui/material';
+
+import { formatMetricValueWithUnit } from '../../../common/timeSeries';
+import { Tooltip } from '../../models';
+import { mousePositionAtom } from '../interactionWithGraphAtoms';
+
+import { useGraphValueTooltip } from './useGraphValueTooltip';
+import { useGraphValueTooltipStyles } from './useGraphValueTooltipStyles';
+
+interface Props extends Pick {
+ base: number;
+ isSingleMode: boolean;
+}
+
+const GraphValueTooltipContent = ({
+ base,
+ isSingleMode,
+ sortOrder
+}: Props): JSX.Element | null => {
+ const { classes } = useGraphValueTooltipStyles();
+ const mousePosition = useAtomValue(mousePositionAtom);
+
+ const graphValue = useGraphValueTooltip({ isSingleMode, sortOrder });
+
+ if (isNil(graphValue) || isNil(mousePosition)) {
+ return null;
+ }
+
+ return (
+
+
{graphValue.dateTime}
+
+ {graphValue.metrics.map(({ unit, color, id, value, name }) => {
+ const isMetricHighlighted = equals(
+ id,
+ graphValue.highlightedMetricId
+ );
+
+ return (
+
+
+
+ {name}
+
+
+ {formatMetricValueWithUnit({
+ base,
+ unit,
+ value
+ })}
+
+
+ );
+ })}
+
+
+ );
+};
+
+export default GraphValueTooltipContent;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts
similarity index 93%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts
index d74443b869..7ad0fe89fe 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts
@@ -1,5 +1,6 @@
import { useAtomValue } from 'jotai';
import {
+ T,
always,
cond,
equals,
@@ -10,9 +11,9 @@ import {
sortBy
} from 'ramda';
-import { graphTooltipDataAtom } from '../interactionWithGraphAtoms';
import { useLocaleDateTimeFormat } from '../../../../utils';
import { GraphTooltipData, Tooltip } from '../../models';
+import { graphTooltipDataAtom } from '../interactionWithGraphAtoms';
interface UseGraphValueTooltipState extends Omit {
dateTime: string;
@@ -29,7 +30,7 @@ export const useGraphValueTooltip = ({
const { toDate, toTime } = useLocaleDateTimeFormat();
const graphTooltipData = useAtomValue(graphTooltipDataAtom);
- if (isNil(graphTooltipData)) {
+ if (isNil(graphTooltipData) || isNil(graphTooltipData.metrics)) {
return null;
}
@@ -48,7 +49,8 @@ export const useGraphValueTooltip = ({
[
equals('descending'),
always(reverse(sortBy(prop('value'), filteredMetrics)))
- ]
+ ],
+ [T, always(filteredMetrics)]
])(sortOrder);
return {
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltipStyles.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltipStyles.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltipStyles.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltipStyles.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/index.tsx
new file mode 100644
index 0000000000..ceec039449
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/index.tsx
@@ -0,0 +1,84 @@
+import { useState } from 'react';
+
+import { equals, isNil, negate } from 'ramda';
+
+import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';
+import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
+
+import { margin } from '../../common';
+import { GraphInterval, Interval } from '../../models';
+
+import TimeShiftIcon, { timeShiftIconSize } from './TimeShiftIcon';
+import TimeShiftZone from './TimeShiftZone';
+import { TimeShiftDirection } from './models';
+
+interface Props {
+ getInterval?: (args: Interval) => void;
+ graphHeight: number;
+ graphInterval: GraphInterval;
+ graphWidth: number;
+}
+
+const TimeShiftZones = ({
+ graphHeight,
+ graphWidth,
+ getInterval,
+ graphInterval
+}: Props): JSX.Element => {
+ const [directionHovered, setDirectionHovered] =
+ useState(null);
+
+ const marginLeft = margin.left;
+
+ const isBackward = equals(directionHovered, TimeShiftDirection.backward);
+ const displayIcon = !isNil(directionHovered);
+ const propsIcon = { color: 'primary' as const };
+
+ const xIcon = isBackward
+ ? negate(marginLeft)
+ : graphWidth + timeShiftIconSize / 2;
+
+ const yIcon = graphHeight / 2 - timeShiftIconSize / 2;
+
+ const Icon = isBackward ? (
+
+ ) : (
+
+ );
+ const ariaLabelIcon = isBackward ? 'labelBackward' : 'labelForward';
+
+ const commonData = {
+ getInterval,
+ graphHeight,
+ graphInterval,
+ graphWidth
+ };
+
+ return (
+ <>
+
+
+ {displayIcon && (
+
+ )}
+ >
+ );
+};
+
+export default TimeShiftZones;
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/models.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/models.ts
new file mode 100644
index 0000000000..7c75ac2828
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/models.ts
@@ -0,0 +1,12 @@
+import { GraphInterval, GraphIntervalProperty } from '../../models';
+
+export enum TimeShiftDirection {
+ backward = 0,
+ forward = 1
+}
+
+export interface GetShiftDate {
+ property: GraphIntervalProperty;
+ timePeriod: GraphInterval;
+ timeShiftDirection: TimeShiftDirection;
+}
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/index.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/index.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/index.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/models.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/models.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/models.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/models.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/useGraphTooltip.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/useGraphTooltip.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/useGraphTooltip.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/useGraphTooltip.ts
index e4224ba058..67894615f5 100644
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Tooltip/useGraphTooltip.ts
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/Tooltip/useGraphTooltip.ts
@@ -4,8 +4,8 @@ import { Event, Tooltip } from '@visx/visx';
import { ScaleLinear } from 'd3-scale';
import { useAtomValue } from 'jotai';
-import { getDate } from '../../helpers/index';
import { TimeValue } from '../../../common/timeSeries/models';
+import { getDate } from '../../helpers/index';
import { applyingZoomAtomAtom } from '../ZoomPreview/zoomPreviewAtoms';
import { eventMouseUpAtom } from '../interactionWithGraphAtoms';
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/index.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/index.tsx
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/index.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/models.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/models.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/models.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/models.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/useZoomPreview.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/useZoomPreview.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/useZoomPreview.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/useZoomPreview.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts
diff --git a/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/index.tsx b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/index.tsx
new file mode 100644
index 0000000000..a70ef93eac
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/index.tsx
@@ -0,0 +1,279 @@
+import { MutableRefObject } from 'react';
+
+import { Event } from '@visx/visx';
+import { ScaleLinear, ScaleTime } from 'd3-scale';
+import { useSetAtom } from 'jotai';
+import {
+ all,
+ equals,
+ find,
+ isEmpty,
+ isNil,
+ keys,
+ map,
+ negate,
+ pick,
+ pipe,
+ pluck,
+ reduce,
+ toPairs,
+ values
+} from 'ramda';
+import { makeStyles } from 'tss-react/mui';
+
+import {
+ formatMetricName,
+ getLineForMetric,
+ getLinesForMetrics,
+ getTimeValue,
+ getYScale
+} from '../../common/timeSeries';
+import { Line, TimeValue } from '../../common/timeSeries/models';
+import { margin } from '../common';
+import {
+ AnnotationEvent,
+ GraphInterval,
+ InteractedZone,
+ InteractedZone as ZoomPreviewModel
+} from '../models';
+
+import Annotations from './Annotations';
+import { TimelineEvent } from './Annotations/models';
+import Bar from './Bar';
+import TimeShiftZones from './TimeShiftZones';
+import ZoomPreview from './ZoomPreview';
+import {
+ MousePosition,
+ changeMousePositionDerivedAtom,
+ eventMouseDownAtom,
+ eventMouseLeaveAtom,
+ eventMouseUpAtom,
+ graphTooltipDataAtom
+} from './interactionWithGraphAtoms';
+
+const useStyles = makeStyles()(() => ({
+ overlay: {
+ cursor: 'crosshair'
+ }
+}));
+
+interface CommonData {
+ graphHeight: number;
+ graphSvgRef: MutableRefObject;
+ graphWidth: number;
+ lines;
+ timeSeries: Array;
+ xScale: ScaleTime;
+ yScalesPerUnit: Record>;
+}
+
+interface TimeShiftZonesData extends InteractedZone {
+ graphInterval: GraphInterval;
+}
+
+interface Props {
+ annotationData?: AnnotationEvent;
+ commonData: CommonData;
+ timeShiftZonesData: TimeShiftZonesData;
+ zoomData: ZoomPreviewModel;
+}
+
+const InteractionWithGraph = ({
+ zoomData,
+ commonData,
+ annotationData,
+ timeShiftZonesData
+}: Props): JSX.Element => {
+ const { classes } = useStyles();
+
+ const setEventMouseDown = useSetAtom(eventMouseDownAtom);
+ const setEventMouseUp = useSetAtom(eventMouseUpAtom);
+ const setEventMouseLeave = useSetAtom(eventMouseLeaveAtom);
+ const changeMousePosition = useSetAtom(changeMousePositionDerivedAtom);
+ const setGraphTooltipData = useSetAtom(graphTooltipDataAtom);
+
+ const {
+ graphHeight,
+ graphWidth,
+ graphSvgRef,
+ xScale,
+ timeSeries,
+ lines,
+ yScalesPerUnit
+ } = commonData;
+
+ const displayZoomPreview = zoomData?.enable ?? true;
+
+ const displayEventAnnotations =
+ !isNil(annotationData?.data) && !isEmpty(annotationData?.data);
+ const displayTimeShiftZones = timeShiftZonesData?.enable ?? true;
+
+ const mouseLeave = (event): void => {
+ setEventMouseLeave(event);
+ setEventMouseDown(null);
+ updateMousePosition(null);
+ setGraphTooltipData(null);
+ };
+
+ const mouseUp = (event): void => {
+ setEventMouseUp(event);
+ setEventMouseDown(null);
+ };
+
+ const mouseMove = (event): void => {
+ const mousePoint = Event.localPoint(
+ graphSvgRef?.current as SVGSVGElement,
+ event
+ );
+ if (!mousePoint) {
+ return;
+ }
+ updateMousePosition([mousePoint.x, mousePoint.y]);
+ };
+
+ const mouseDown = (event): void => {
+ setEventMouseDown(event);
+ };
+
+ const updateMousePosition = (pointPosition: MousePosition): void => {
+ if (isNil(pointPosition)) {
+ changeMousePosition({
+ position: null
+ });
+ setGraphTooltipData(null);
+
+ return;
+ }
+ const timeValue = getTimeValue({
+ timeSeries,
+ x: pointPosition[0],
+ xScale
+ });
+
+ if (isNil(timeValue)) {
+ changeMousePosition({
+ position: null
+ });
+ setGraphTooltipData(null);
+
+ return;
+ }
+
+ const date = timeValue.timeTick;
+ const displayedMetricIds = pluck('metric_id', lines);
+ const filteredMetricsValue = pick(displayedMetricIds, timeValue);
+ const areAllValuesEmpty = pipe(values, all(isNil))(filteredMetricsValue);
+
+ const linesData = getLinesForMetrics({
+ lines,
+ metricIds: keys(filteredMetricsValue).map(Number)
+ });
+
+ if (areAllValuesEmpty) {
+ changeMousePosition({ position: pointPosition });
+ setGraphTooltipData(null);
+
+ return;
+ }
+
+ const distanceWithPointPositionPerMetric = reduce(
+ (acc, [metricId, value]) => {
+ if (isNil(value)) {
+ return acc;
+ }
+
+ const lineData = getLineForMetric({
+ lines,
+ metric_id: Number(metricId)
+ });
+ const yScale = getYScale({
+ invert: (lineData as Line).invert,
+ unit: (lineData as Line).unit,
+ yScalesPerUnit
+ });
+
+ const y0 = yScale(value);
+
+ const diffBetweenY0AndPointPosition = Math.abs(
+ y0 + margin.top - pointPosition[1]
+ );
+
+ return {
+ ...acc,
+ [metricId]: diffBetweenY0AndPointPosition
+ };
+ },
+ {},
+ Object.entries(filteredMetricsValue)
+ );
+
+ const nearestY0 = Math.min(...values(distanceWithPointPositionPerMetric));
+
+ const nearestLine = pipe(
+ toPairs,
+ find(([, y0]) => equals(y0, nearestY0)) as () => [string, number]
+ )(distanceWithPointPositionPerMetric);
+
+ changeMousePosition({ position: pointPosition });
+ setGraphTooltipData({
+ date,
+ highlightedMetricId: Number(nearestLine[0]),
+ metrics: map(
+ ({ metric_id, color, unit, legend, name, invert }) => ({
+ color,
+ id: metric_id,
+ name: formatMetricName({ legend, name }),
+ unit,
+ value: invert
+ ? negate(timeValue?.[metric_id])
+ : timeValue?.[metric_id]
+ }),
+ linesData
+ ).filter(({ value }) => !isNil(value))
+ });
+ };
+
+ return (
+
+ {displayZoomPreview && (
+
+ )}
+ {displayEventAnnotations && (
+ }
+ graphHeight={graphHeight}
+ graphSvgRef={graphSvgRef}
+ graphWidth={graphWidth}
+ xScale={xScale}
+ />
+ )}
+ {displayTimeShiftZones && (
+
+ )}
+
+
+ );
+};
+
+export default InteractionWithGraph;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/interactionWithGraphAtoms.ts b/centreon/packages/ui/src/Graph/Chart/InteractiveComponents/interactionWithGraphAtoms.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/interactionWithGraphAtoms.ts
rename to centreon/packages/ui/src/Graph/Chart/InteractiveComponents/interactionWithGraphAtoms.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/Legend.styles.ts b/centreon/packages/ui/src/Graph/Chart/Legend/Legend.styles.ts
similarity index 96%
rename from centreon/packages/ui/src/Graph/LineChart/Legend/Legend.styles.ts
rename to centreon/packages/ui/src/Graph/Chart/Legend/Legend.styles.ts
index ecd56836c2..862d5ee7f7 100644
--- a/centreon/packages/ui/src/Graph/LineChart/Legend/Legend.styles.ts
+++ b/centreon/packages/ui/src/Graph/Chart/Legend/Legend.styles.ts
@@ -16,7 +16,7 @@ export const useStyles = makeStyles()(
color: theme.typography.body1.color
},
item: {
- width: 'max-content'
+ width: '100%'
},
items: {
'&[data-as-list="true"]': {
@@ -93,10 +93,7 @@ export const useLegendHeaderStyles = makeStyles()(
width: theme.spacing(1.5)
},
legendName: {
- maxWidth: '75%'
- },
- legendNameSide: {
- maxWidth: '95%'
+ width: '91%'
},
markerAndLegendName: {
alignItems: 'center',
@@ -113,11 +110,15 @@ export const useLegendHeaderStyles = makeStyles()(
text: {
fontSize: '0.75rem',
fontWeight: theme.typography.fontWeightMedium,
- lineHeight: 1
+ lineHeight: 1,
+ maxWidth: '250px'
},
textList: {
fontSize: '0.75rem',
fontWeight: theme.typography.fontWeightMedium
+ },
+ textListBottom: {
+ width: 'auto'
}
})
);
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/LegendContent.tsx b/centreon/packages/ui/src/Graph/Chart/Legend/LegendContent.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/Legend/LegendContent.tsx
rename to centreon/packages/ui/src/Graph/Chart/Legend/LegendContent.tsx
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/LegendHeader.tsx b/centreon/packages/ui/src/Graph/Chart/Legend/LegendHeader.tsx
similarity index 85%
rename from centreon/packages/ui/src/Graph/LineChart/Legend/LegendHeader.tsx
rename to centreon/packages/ui/src/Graph/Chart/Legend/LegendHeader.tsx
index 057f23f37f..3b23f2572a 100644
--- a/centreon/packages/ui/src/Graph/LineChart/Legend/LegendHeader.tsx
+++ b/centreon/packages/ui/src/Graph/Chart/Legend/LegendHeader.tsx
@@ -5,12 +5,12 @@ import {
formatMetricName,
formatMetricValue
} from '../../..';
-import { Line } from '../../common/timeSeries/models';
import { Tooltip } from '../../../components';
+import { Line } from '../../common/timeSeries/models';
import { useLegendHeaderStyles } from './Legend.styles';
-import { LegendDisplayMode } from './models';
import LegendContent from './LegendContent';
+import { LegendDisplayMode } from './models';
interface Props {
color: string;
@@ -19,6 +19,7 @@ interface Props {
isListMode: boolean;
line: Line;
minMaxAvg?;
+ unit: string;
value?: string | null;
}
@@ -29,7 +30,8 @@ const LegendHeader = ({
value,
minMaxAvg,
isListMode,
- isDisplayedOnSide
+ isDisplayedOnSide,
+ unit
}: Props): JSX.Element => {
const { classes, cx } = useLegendHeaderStyles({ color });
@@ -74,10 +76,11 @@ const LegendHeader = ({
className={cx(classes.icon, { [classes.disabled]: disabled })}
/>
{metricName}
+
+ {unit}
+
diff --git a/centreon/packages/ui/src/Graph/Chart/Legend/index.tsx b/centreon/packages/ui/src/Graph/Chart/Legend/index.tsx
new file mode 100644
index 0000000000..6cb4b178b8
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/Legend/index.tsx
@@ -0,0 +1,209 @@
+import { Dispatch, ReactNode, SetStateAction, useMemo } from 'react';
+
+import { equals, lt, prop, slice, sortBy } from 'ramda';
+
+import { Box, alpha, useTheme } from '@mui/material';
+
+import { useMemoComponent } from '@centreon/ui';
+
+import { formatMetricValue } from '../../common/timeSeries';
+import { Line } from '../../common/timeSeries/models';
+import { margin } from '../common';
+import { LegendModel } from '../models';
+import { labelAvg, labelMax, labelMin } from '../translatedLabels';
+
+import { useStyles } from './Legend.styles';
+import LegendContent from './LegendContent';
+import LegendHeader from './LegendHeader';
+import { GetMetricValueProps, LegendDisplayMode } from './models';
+import useLegend from './useLegend';
+
+interface Props extends Pick
{
+ base: number;
+ height: number | null;
+ limitLegend?: false | number;
+ lines: Array;
+ renderExtraComponent?: ReactNode;
+ setLinesGraph: Dispatch | null>>;
+ shouldDisplayLegendInCompactMode: boolean;
+ toggable?: boolean;
+}
+
+const MainLegend = ({
+ lines,
+ base,
+ toggable = true,
+ limitLegend = false,
+ renderExtraComponent,
+ setLinesGraph,
+ shouldDisplayLegendInCompactMode,
+ placement,
+ height,
+ mode
+}: Props): JSX.Element => {
+ const { classes, cx } = useStyles({ limitLegendRows: Boolean(limitLegend) });
+ const theme = useTheme();
+
+ const { selectMetricLine, clearHighlight, highlightLine, toggleMetricLine } =
+ useLegend({ lines, setLinesGraph });
+
+ const sortedData = sortBy(prop('metric_id'), lines);
+
+ const isListMode = useMemo(() => equals(mode, 'list'), [mode]);
+
+ const displayedLines = limitLegend
+ ? slice(0, limitLegend, sortedData)
+ : sortedData;
+
+ const getMetricValue = ({ value, unit }: GetMetricValueProps): string =>
+ formatMetricValue({
+ base,
+ unit,
+ value
+ }) || 'N/A';
+
+ const selectMetric = ({ event, metric_id }): void => {
+ if (!toggable) {
+ return;
+ }
+
+ if (event.ctrlKey || event.metaKey) {
+ toggleMetricLine(metric_id);
+
+ return;
+ }
+
+ selectMetricLine(metric_id);
+ };
+
+ const itemMode =
+ !isListMode && shouldDisplayLegendInCompactMode
+ ? LegendDisplayMode.Compact
+ : LegendDisplayMode.Normal;
+
+ const legendMaxHeight = useMemo(() => {
+ if (!isListMode || !equals(placement, 'bottom')) {
+ return 'none';
+ }
+
+ if (lt(height || 0, 220)) {
+ return 40;
+ }
+
+ return 90;
+ }, [height, isListMode, placement]);
+
+ const overflow = equals(legendMaxHeight, 'none') ? 'hidden' : 'auto';
+
+ return (
+
+
+ {displayedLines.map((line) => {
+ const { color, display, highlight, metric_id, unit } = line;
+
+ const markerColor = display
+ ? color
+ : alpha(theme.palette.text.disabled, 0.2);
+
+ const minMaxAvg = [
+ {
+ label: labelMin,
+ value: line.minimum_value
+ },
+ {
+ label: labelMax,
+ value: line.maximum_value
+ },
+ {
+ label: labelAvg,
+ value: line.average_value
+ }
+ ];
+
+ return (
+
selectMetric({ event, metric_id })}
+ onMouseEnter={(): void => highlightLine(metric_id)}
+ onMouseLeave={(): void => clearHighlight()}
+ >
+
+ {!shouldDisplayLegendInCompactMode && !isListMode && (
+
+
+ {minMaxAvg.map(({ label, value }) => (
+
+ ))}
+
+
+ )}
+
+ );
+ })}
+
+ {renderExtraComponent}
+
+ );
+};
+
+const Legend = (props: Props): JSX.Element => {
+ const {
+ toggable,
+ limitLegend,
+ lines,
+ base,
+ shouldDisplayLegendInCompactMode,
+ placement,
+ height,
+ mode
+ } = props;
+
+ return useMemoComponent({
+ Component: ,
+ memoProps: [
+ lines,
+ base,
+ toggable,
+ limitLegend,
+ shouldDisplayLegendInCompactMode,
+ placement,
+ height,
+ mode
+ ]
+ });
+};
+
+export default Legend;
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/models.ts b/centreon/packages/ui/src/Graph/Chart/Legend/models.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/Legend/models.ts
rename to centreon/packages/ui/src/Graph/Chart/Legend/models.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/useLegend.ts b/centreon/packages/ui/src/Graph/Chart/Legend/useLegend.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/Legend/useLegend.ts
rename to centreon/packages/ui/src/Graph/Chart/Legend/useLegend.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/LoadingSkeleton.tsx b/centreon/packages/ui/src/Graph/Chart/LoadingSkeleton.tsx
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/LoadingSkeleton.tsx
rename to centreon/packages/ui/src/Graph/Chart/LoadingSkeleton.tsx
diff --git a/centreon/packages/ui/src/Graph/Chart/common/index.ts b/centreon/packages/ui/src/Graph/Chart/common/index.ts
new file mode 100644
index 0000000000..40aa7ccf12
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/common/index.ts
@@ -0,0 +1,52 @@
+import { always, cond, equals, isNil } from 'ramda';
+
+import { alpha } from '@mui/material';
+import { curveCatmullRom, curveLinear, curveStep } from '@visx/curve';
+
+const commonTickLabelProps = {
+ fontFamily: 'Roboto, sans-serif',
+ fontSize: 10,
+ textAnchor: 'middle'
+};
+
+const margin = { bottom: 30, left: 50, right: 50, top: 30 };
+
+interface FillColor {
+ areaColor: string;
+ transparency: number;
+}
+
+const getFillColor = ({
+ transparency,
+ areaColor
+}: FillColor): string | undefined => {
+ return !isNil(transparency)
+ ? alpha(areaColor, 1 - transparency * 0.01)
+ : undefined;
+};
+
+const dateFormat = 'L';
+const timeFormat = 'LT';
+const dateTimeFormat = `${dateFormat} ${timeFormat}`;
+const maxLinesDisplayedLegend = 11;
+
+const getCurveFactory = (
+ curve: 'linear' | 'step' | 'natural'
+): typeof curveLinear => {
+ return cond([
+ [equals('linear'), always(curveLinear)],
+ [equals('step'), always(curveStep)],
+ [equals('natural'), always(curveCatmullRom)]
+ ])(curve);
+};
+
+export {
+ commonTickLabelProps,
+ margin,
+ getFillColor,
+ dateFormat,
+ timeFormat,
+ dateTimeFormat,
+ maxLinesDisplayedLegend,
+ getCurveFactory
+};
diff --git a/centreon/packages/ui/src/Graph/Chart/graphAtoms.ts b/centreon/packages/ui/src/Graph/Chart/graphAtoms.ts
new file mode 100644
index 0000000000..77e07700a6
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/graphAtoms.ts
@@ -0,0 +1,6 @@
+import { atom } from 'jotai';
+
+import { ThresholdTooltip } from './models';
+
+export const timeTickGraphAtom = atom(null);
+export const thresholdTooltipAtom = atom(null);
diff --git a/centreon/packages/ui/src/Graph/LineChart/helpers/doc.ts b/centreon/packages/ui/src/Graph/Chart/helpers/doc.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/helpers/doc.ts
rename to centreon/packages/ui/src/Graph/Chart/helpers/doc.ts
diff --git a/centreon/packages/ui/src/Graph/Chart/helpers/index.ts b/centreon/packages/ui/src/Graph/Chart/helpers/index.ts
new file mode 100644
index 0000000000..eadeee5f1e
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/helpers/index.ts
@@ -0,0 +1,66 @@
+import dayjs from 'dayjs';
+import durationPlugin from 'dayjs/plugin/duration';
+import { gt, gte, isEmpty, isNil, prop, propEq, reject, sortBy } from 'ramda';
+
+import { LineChartData } from '../../common/models';
+import {
+ getLineData,
+ getTimeSeries,
+ getTimeValue
+} from '../../common/timeSeries';
+import { LinesData } from '../BasicComponents/Lines/models';
+import { dateFormat, timeFormat } from '../common';
+import { GetDate, GraphInterval } from '../models';
+
+dayjs.extend(durationPlugin);
+
+export const adjustGraphData = (graphData: LineChartData): LinesData => {
+ const lines = getLineData(graphData);
+ const sortedLines = sortBy(prop('name'), lines);
+ const displayedLines = reject(propEq(false, 'display'), sortedLines);
+
+ const timeSeries = getTimeSeries(graphData);
+
+ return { lines: displayedLines, timeSeries };
+};
+
+export const getXAxisTickFormat = (graphInterval: GraphInterval): string => {
+ if (
+ isNil(graphInterval) ||
+ isNil(graphInterval?.start) ||
+ isNil(graphInterval?.end)
+ ) {
+ return timeFormat;
+ }
+ const { end, start } = graphInterval;
+ const numberDays = dayjs.duration(dayjs(end).diff(dayjs(start))).asDays();
+
+ return gte(numberDays, 2) ? dateFormat : timeFormat;
+};
+
+export const truncate = (content?: string): string => {
+ const maxLength = 180;
+
+ if (isNil(content)) {
+ return '';
+ }
+
+ if (gt(content.length, maxLength)) {
+ return `${content.substring(0, maxLength)}...`;
+ }
+
+ return content;
+};
+
+export const displayArea = (data: unknown): boolean =>
+ !isEmpty(data) && !isNil(data);
+
+export const getDate = ({ positionX, xScale, timeSeries }: GetDate): Date => {
+ const { timeTick } = getTimeValue({
+ timeSeries,
+ x: positionX,
+ xScale
+ });
+
+ return new Date(timeTick);
+};
diff --git a/centreon/packages/ui/src/Graph/Chart/index.tsx b/centreon/packages/ui/src/Graph/Chart/index.tsx
new file mode 100644
index 0000000000..f7af208b16
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/index.tsx
@@ -0,0 +1,121 @@
+import { MutableRefObject, memo, useRef } from 'react';
+
+import dayjs from 'dayjs';
+import 'dayjs/locale/en';
+import 'dayjs/locale/es';
+import 'dayjs/locale/fr';
+import 'dayjs/locale/pt';
+import localizedFormat from 'dayjs/plugin/localizedFormat';
+import timezonePlugin from 'dayjs/plugin/timezone';
+import utcPlugin from 'dayjs/plugin/utc';
+import { equals } from 'ramda';
+
+import { ParentSize } from '../..';
+import Loading from '../../LoadingSkeleton';
+import { LineChartData, Thresholds } from '../common/models';
+
+import Chart from './Chart';
+import LoadingSkeleton from './LoadingSkeleton';
+import { GlobalAreaLines, LineChartProps } from './models';
+import useChartData from './useChartData';
+
+dayjs.extend(localizedFormat);
+dayjs.extend(utcPlugin);
+dayjs.extend(timezonePlugin);
+
+interface Props extends Partial {
+ data?: LineChartData;
+ end: string;
+ limitLegend?: false | number;
+ loading: boolean;
+ shapeLines?: GlobalAreaLines;
+ start: string;
+ thresholdUnit?: string;
+ thresholds?: Thresholds;
+}
+
+const WrapperChart = ({
+ end,
+ start,
+ height = 500,
+ width,
+ shapeLines,
+ axis,
+ displayAnchor,
+ zoomPreview,
+ data,
+ loading,
+ timeShiftZones,
+ tooltip = {
+ mode: 'all',
+ sortOrder: 'name'
+ },
+ annotationEvent,
+ legend = {
+ display: true,
+ mode: 'grid',
+ placement: 'bottom'
+ },
+ header,
+ lineStyle,
+ barStyle,
+ thresholds,
+ thresholdUnit,
+ limitLegend
+}: Props): JSX.Element | null => {
+ const { adjustedData } = useChartData({ data, end, start });
+ const lineChartRef = useRef(null);
+
+ if (loading && !adjustedData) {
+ return (
+
+ );
+ }
+
+ if (!adjustedData) {
+ return ;
+ }
+
+ return (
+ }
+ style={{ height: '100%', overflow: 'hidden', width: '100%' }}
+ >
+
+ {({
+ height: responsiveHeight,
+ width: responsiveWidth
+ }): JSX.Element => {
+ return (
+
+ );
+ }}
+
+
+ );
+};
+
+export default memo(WrapperChart, equals);
diff --git a/centreon/packages/ui/src/Graph/Chart/models.ts b/centreon/packages/ui/src/Graph/Chart/models.ts
new file mode 100644
index 0000000000..6abce40b77
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Chart/models.ts
@@ -0,0 +1,185 @@
+import { ReactNode } from 'react';
+
+import { ScaleLinear } from 'd3-scale';
+
+import { BarStyle } from '../BarChart/models';
+import { AxisX, Axis as AxisYLeft, AxisYRight } from '../common/Axes/models';
+import { LineChartData } from '../common/models';
+import { Line, TimeValue } from '../common/timeSeries/models';
+
+import { FactorsVariation } from './BasicComponents/Lines/Threshold/models';
+import {
+ AreaRegularLines,
+ AreaStackedLines
+} from './BasicComponents/Lines/models';
+import { TimelineEvent } from './InteractiveComponents/Annotations/models';
+
+export interface LineChartEndpoint {
+ baseUrl: string;
+ queryParameters: GraphInterval;
+}
+export interface Data {
+ baseAxis: number;
+ lines: Array;
+ timeSeries: Array;
+ title: string;
+}
+
+export enum GraphIntervalProperty {
+ end = 'end',
+ start = 'start'
+}
+
+export interface Interval {
+ end: Date;
+ start: Date;
+}
+
+export interface GraphInterval {
+ end?: string;
+ start?: string;
+}
+
+export interface ShapeLines {
+ areaRegularLines?: AreaRegularLines;
+ areaStackedLines?: AreaStackedLines;
+}
+
+export interface ChartAxis {
+ axisX?: AxisX;
+ axisYLeft?: AxisYLeft;
+ axisYRight?: AxisYRight;
+ gridLinesType?: 'horizontal' | 'vertical' | 'all';
+ isCenteredZero?: boolean;
+ scale?: 'linear' | 'logarithmic';
+ scaleLogarithmicBase?: number;
+ showBorder?: boolean;
+ showGridLines?: boolean;
+ yAxisTickLabelRotation?: number;
+}
+
+export interface InteractedZone {
+ enable?: boolean;
+ getInterval?: (data: Interval) => void;
+}
+
+export interface TooltipData {
+ data: Date;
+ hideTooltip: () => void;
+ tooltipOpen: boolean;
+}
+export interface ThresholdTooltip {
+ thresholdLabel?: string;
+}
+export interface Tooltip {
+ mode: 'all' | 'single' | 'hidden';
+ renderComponent?: (args: TooltipData) => ReactNode;
+ sortOrder: 'name' | 'ascending' | 'descending';
+}
+
+export interface AnnotationEvent {
+ data?: Array;
+}
+
+export interface LineChartHeader {
+ displayTitle?: boolean;
+ extraComponent?: ReactNode;
+}
+
+export interface DisplayAnchor {
+ displayGuidingLines?: boolean;
+ displayTooltipsGuidingLines?: boolean;
+}
+
+export interface LineStyle {
+ areaTransparency?: number;
+ curve?: 'linear' | 'step' | 'natural';
+ dashLength?: number;
+ dashOffset?: number;
+ dotOffset?: number;
+ lineWidth?: number;
+ pathStyle?: 'solid' | 'dash' | 'dotted';
+ showArea?: boolean;
+ showPoints?: boolean;
+}
+
+export interface LineChartProps {
+ annotationEvent?: AnnotationEvent;
+ axis?: ChartAxis;
+ barStyle?: BarStyle;
+ displayAnchor?: DisplayAnchor;
+ header?: LineChartHeader;
+ height?: number | null;
+ legend?: LegendModel;
+ lineStyle?: LineStyle;
+ timeShiftZones?: InteractedZone;
+ tooltip?: Tooltip;
+ width: number;
+ zoomPreview?: InteractedZone;
+}
+
+export interface Area {
+ display: boolean;
+}
+
+export type PatternOrientation =
+ | 'diagonal'
+ | 'diagonalRightToLeft'
+ | 'horizontal'
+ | 'vertical';
+
+export enum ThresholdType {
+ basic = 'basic',
+ pattern = 'pattern',
+ variation = 'variation'
+}
+
+export interface PatternThreshold {
+ data: Array;
+ orientation?: Array;
+ type: ThresholdType.pattern;
+}
+export interface VariationThreshold {
+ displayCircles?: boolean;
+ factors: FactorsVariation;
+ getCountDisplayedCircles?: (value: number) => void;
+ type: ThresholdType.variation;
+}
+
+export interface BasicThreshold {
+ id?: string;
+ type: ThresholdType.basic;
+}
+
+export interface GlobalAreaLines {
+ areaRegularLines?: Area;
+ areaStackedLines?: Area;
+ areaThresholdLines?: Array<
+ PatternThreshold | VariationThreshold | BasicThreshold
+ >;
+}
+export interface LegendModel {
+ display?: boolean;
+ height?: number;
+ mode: 'grid' | 'list';
+ placement: 'bottom' | 'left' | 'right';
+ renderExtraComponent?: ReactNode;
+}
+
+export interface GetDate {
+ positionX: number;
+ timeSeries: Array;
+ xScale: ScaleLinear;
+}
+
+export interface GraphTooltipData {
+ date: string;
+ highlightedMetricId: number | null;
+ metrics: Array<{
+ color: string;
+ id: number;
+ name: string;
+ unit: string;
+ value: number;
+ }>;
+}
diff --git a/centreon/packages/ui/src/Graph/LineChart/translatedLabels.ts b/centreon/packages/ui/src/Graph/Chart/translatedLabels.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/translatedLabels.ts
rename to centreon/packages/ui/src/Graph/Chart/translatedLabels.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/useLineChartData.ts b/centreon/packages/ui/src/Graph/Chart/useChartData.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/useLineChartData.ts
rename to centreon/packages/ui/src/Graph/Chart/useChartData.ts
diff --git a/centreon/packages/ui/src/Graph/LineChart/useLineChartIntersection.ts b/centreon/packages/ui/src/Graph/Chart/useChartIntersection.ts
similarity index 100%
rename from centreon/packages/ui/src/Graph/LineChart/useLineChartIntersection.ts
rename to centreon/packages/ui/src/Graph/Chart/useChartIntersection.ts
diff --git a/centreon/packages/ui/src/Graph/Gauge/AnimatedPie.tsx b/centreon/packages/ui/src/Graph/Gauge/AnimatedPie.tsx
index 99c68370a9..53ebfb3396 100644
--- a/centreon/packages/ui/src/Graph/Gauge/AnimatedPie.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/AnimatedPie.tsx
@@ -1,5 +1,5 @@
+import { animated, to, useTransition } from '@react-spring/web';
import { PieArcDatum, ProvidedProps } from '@visx/shape/lib/shapes/Pie';
-import { useTransition, to, animated } from '@react-spring/web';
import { equals, includes, isNil, pluck } from 'ramda';
import { Typography } from '@mui/material';
@@ -85,7 +85,9 @@ const AnimatedPie = ({
'label',
thresholds[thresholdType as 'warning' | 'critical']
).map((label) => (
- {label}
+
+ {label}
+
))}
),
diff --git a/centreon/packages/ui/src/Graph/Gauge/Gauge.cypress.spec.tsx b/centreon/packages/ui/src/Graph/Gauge/Gauge.cypress.spec.tsx
index b4eb266ed2..579e793fcd 100644
--- a/centreon/packages/ui/src/Graph/Gauge/Gauge.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/Gauge.cypress.spec.tsx
@@ -1,12 +1,12 @@
-import dataLastWeek from '../LineChart/mockedData/lastWeek.json';
import {
criticalThresholds,
rangedThresholds,
successThresholds,
warningThresholds
} from '../common/testUtils';
+import dataLastWeek from '../mockedData/lastWeek.json';
-import { Props, Gauge } from './Gauge';
+import { Gauge, Props } from './Gauge';
const initialize = (
args: Omit
diff --git a/centreon/packages/ui/src/Graph/Gauge/Gauge.stories.tsx b/centreon/packages/ui/src/Graph/Gauge/Gauge.stories.tsx
index 0b9fc970ba..e75e09514d 100644
--- a/centreon/packages/ui/src/Graph/Gauge/Gauge.stories.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/Gauge.stories.tsx
@@ -1,6 +1,6 @@
import { Meta, StoryObj } from '@storybook/react';
-import dataLastWeek from '../LineChart/mockedData/lastWeek.json';
+import dataLastWeek from '../mockedData/lastWeek.json';
import { Gauge } from './Gauge';
@@ -12,8 +12,16 @@ export default meta;
type Story = StoryObj;
const Template = (props): JSX.Element => (
-
-
+
);
diff --git a/centreon/packages/ui/src/Graph/Gauge/PieData.tsx b/centreon/packages/ui/src/Graph/Gauge/PieData.tsx
index 4cf14fb677..5809e22ebb 100644
--- a/centreon/packages/ui/src/Graph/Gauge/PieData.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/PieData.tsx
@@ -6,9 +6,10 @@ import { useTheme } from '@mui/material';
import { getColorFromDataAndTresholds } from '../common/utils';
-import { thresholdThickness } from './Thresholds';
import AnimatedPie from './AnimatedPie';
+import { thresholdThickness } from './Thresholds';
import { GaugeProps } from './models';
+import { angles } from './utils';
const dataThickness = 45;
@@ -37,15 +38,19 @@ const PieData = ({
range: [pieColor, 'transparent']
});
+ const dataThicknessFactor = radius / dataThickness / 3;
+ const thresholdThicknessFactor = radius / thresholdThickness / 15;
+
return (
-1}
pieValue={identity}
- startAngle={Math.PI / 2}
>
{(pie) => (
diff --git a/centreon/packages/ui/src/Graph/Gauge/ResponsiveGauge.tsx b/centreon/packages/ui/src/Graph/Gauge/ResponsiveGauge.tsx
index 6eb963674a..fa0f453731 100644
--- a/centreon/packages/ui/src/Graph/Gauge/ResponsiveGauge.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/ResponsiveGauge.tsx
@@ -1,18 +1,20 @@
import { useRef } from 'react';
import { Group } from '@visx/group';
-import { flatten, head, pluck } from 'ramda';
import { Tooltip } from '@visx/visx';
+import { flatten, head, pluck } from 'ramda';
-import { Box, Fade, useTheme } from '@mui/material';
+import { Box, useTheme } from '@mui/material';
-import { Metric } from '../common/timeSeries/models';
+import { Tooltip as MuiTooltip } from '../../components/Tooltip';
+import { margins } from '../common/margins';
import { formatMetricValueWithUnit } from '../common/timeSeries';
+import { Metric } from '../common/timeSeries/models';
+import { useTooltipStyles } from '../common/useTooltipStyles';
import { getColorFromDataAndTresholds } from '../common/utils';
-import { margins } from '../common/margins';
-import Thresholds from './Thresholds';
import PieData from './PieData';
+import Thresholds from './Thresholds';
import { GaugeProps } from './models';
interface Props extends Pick {
@@ -22,11 +24,6 @@ interface Props extends Pick {
width: number;
}
-const baseStyles = {
- ...Tooltip.defaultStyles,
- textAlign: 'center'
-};
-
const ResponsiveGauge = ({
width,
height,
@@ -35,24 +32,21 @@ const ResponsiveGauge = ({
displayAsRaw,
baseColor
}: Props): JSX.Element => {
+ const { classes } = useTooltipStyles();
const svgRef = useRef(null);
const theme = useTheme();
- const {
- showTooltip,
- hideTooltip,
- tooltipOpen,
- tooltipLeft,
- tooltipTop,
- tooltipData
- } = Tooltip.useTooltip();
+ const { showTooltip, hideTooltip, tooltipOpen, tooltipData } =
+ Tooltip.useTooltip();
const innerWidth = width - margins.left - margins.right;
const innerHeight = height - margins.top - margins.bottom;
const centerY = innerHeight / 2;
const centerX = innerWidth / 2;
- const radius = Math.min(innerWidth, innerHeight) / 2;
+ const baseSize = Math.min(width, height);
+ const heightOverWidthRatio = height / width;
+ const radius = baseSize / (heightOverWidthRatio > 0.9 ? 2 : 1.8);
const thresholdValues = thresholds.enabled
? flatten([
pluck('value', thresholds.warning),
@@ -72,11 +66,6 @@ const ResponsiveGauge = ({
thresholds
});
- const svgTop = svgRef.current?.getBoundingClientRect().top || 0;
- const svgLeft = svgRef.current?.getBoundingClientRect().left || 0;
-
- const isSmallWidget = height < 240;
-
const gaugeValue = formatMetricValueWithUnit({
base: 1000,
isRaw: displayAsRaw,
@@ -93,54 +82,51 @@ const ResponsiveGauge = ({
width: '100%'
}}
>
-
-
-
-
-
-
- {gaugeValue}
-
-
-
-
- {tooltipData}
-
-
+
+
+
+
+
+
+ {gaugeValue}
+
+
+
+
);
};
diff --git a/centreon/packages/ui/src/Graph/Gauge/Thresholds.tsx b/centreon/packages/ui/src/Graph/Gauge/Thresholds.tsx
index baa99fb3d8..af2aba55a3 100644
--- a/centreon/packages/ui/src/Graph/Gauge/Thresholds.tsx
+++ b/centreon/packages/ui/src/Graph/Gauge/Thresholds.tsx
@@ -6,6 +6,7 @@ import { useTheme } from '@mui/material';
import AnimatedPie from './AnimatedPie';
import { GaugeProps } from './models';
+import { angles } from './utils';
export const thresholdThickness = 12;
@@ -83,18 +84,19 @@ const Thresholds = ({
}
];
+ const thresholdThicknessFactor = radius / thresholdThickness / 15;
+
return (
<>
{arcs.map(({ thresholdArc, thresholdScaleOrdinal }) => (
-1}
pieValue={(d) => d.value}
- startAngle={Math.PI / 2}
>
{(pie) => (
diff --git a/centreon/packages/ui/src/Graph/Gauge/models.ts b/centreon/packages/ui/src/Graph/Gauge/models.ts
index b99342f587..ee573264c0 100644
--- a/centreon/packages/ui/src/Graph/Gauge/models.ts
+++ b/centreon/packages/ui/src/Graph/Gauge/models.ts
@@ -14,7 +14,7 @@ export interface GaugeProps {
}
export enum ThresholdType {
- Warning,
- Error,
- Success
+ Warning = 0,
+ Error = 1,
+ Success = 2
}
diff --git a/centreon/packages/ui/src/Graph/Gauge/utils.ts b/centreon/packages/ui/src/Graph/Gauge/utils.ts
new file mode 100644
index 0000000000..149907a70f
--- /dev/null
+++ b/centreon/packages/ui/src/Graph/Gauge/utils.ts
@@ -0,0 +1,4 @@
+export const angles = {
+ endAngle: -(2 * Math.PI) / 3,
+ startAngle: (2 * Math.PI) / 3
+};
diff --git a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.cypress.spec.tsx b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.cypress.spec.tsx
index 73376a2f76..49f3410571 100644
--- a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.cypress.spec.tsx
@@ -85,7 +85,7 @@ describe('HeatMap', () => {
cy.findByTestId(dataIds[0]).trigger('mouseover');
- cy.contains(`This is the tooltip for Server-Service Counter-53`).should(
+ cy.contains('This is the tooltip for Server-Service Counter-53').should(
'be.visible'
);
});
@@ -102,13 +102,13 @@ describe('HeatMap', () => {
cy.findByTestId(dataIds[0]).trigger('mouseover');
- cy.contains(`This is the tooltip for Server-Service Counter-53`).should(
+ cy.contains('This is the tooltip for Server-Service Counter-53').should(
'not.exist'
);
cy.findByTestId(dataIds[1]).trigger('mouseover');
- cy.contains(`This is the tooltip for Server-Service Counter-779`).should(
+ cy.contains('This is the tooltip for Server-Service Counter-779').should(
'be.visible'
);
});
diff --git a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.stories.tsx b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.stories.tsx
index fa3ab4c306..9b1877ca41 100644
--- a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.stories.tsx
+++ b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.stories.tsx
@@ -55,17 +55,10 @@ const Template = (args): JSX.Element => {
return ;
};
-const TileContent = ({
- data,
- backgroundColor
-}: {
- backgroundColor: string;
- data: Data;
-}): JSX.Element => (
+const TileContent = ({ data }: { data: Data }): JSX.Element => (
({
width: '100%'
},
heatMapTileContent: {
- height: `calc(100% - ${theme.spacing(1)})`,
- width: `calc(100% - ${theme.spacing(1)})`
+ height: '100%',
+ position: 'relative',
+ width: '100%'
},
heatMapTooltip: {
backgroundColor: theme.palette.background.paper,
diff --git a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.tsx b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.tsx
index 484e54338f..8266860821 100644
--- a/centreon/packages/ui/src/Graph/HeatMap/HeatMap.tsx
+++ b/centreon/packages/ui/src/Graph/HeatMap/HeatMap.tsx
@@ -5,7 +5,9 @@ import { HeatMapProps } from './model';
const HeatMap =
(props: HeatMapProps): JSX.Element => (
- {({ width }) => {...props} width={width} />}
+ {({ width, height }) => (
+ {...props} height={height} width={width} />
+ )}
);
diff --git a/centreon/packages/ui/src/Graph/HeatMap/HeatMapData.json b/centreon/packages/ui/src/Graph/HeatMap/HeatMapData.json
index ee11deaaa3..66c1798d27 100644
--- a/centreon/packages/ui/src/Graph/HeatMap/HeatMapData.json
+++ b/centreon/packages/ui/src/Graph/HeatMap/HeatMapData.json
@@ -134,4 +134,4 @@
"counter": 28
}
}
-]
\ No newline at end of file
+]
diff --git a/centreon/packages/ui/src/Graph/HeatMap/ResponsiveHeatMap.tsx b/centreon/packages/ui/src/Graph/HeatMap/ResponsiveHeatMap.tsx
index 132abd38fe..f358f5c5c8 100644
--- a/centreon/packages/ui/src/Graph/HeatMap/ResponsiveHeatMap.tsx
+++ b/centreon/packages/ui/src/Graph/HeatMap/ResponsiveHeatMap.tsx
@@ -7,8 +7,8 @@ import { Box } from '@mui/material';
import { Tooltip } from '../../components';
-import { HeatMapProps } from './model';
import { useHeatMapStyles } from './HeatMap.styles';
+import { HeatMapProps } from './model';
const gap = 8;
const maxTileSize = 120;
@@ -21,8 +21,12 @@ const ResponsiveHeatMap = ({
arrowClassName,
tooltipContent,
tileSizeFixed,
- displayTooltipCondition = T
-}: HeatMapProps & { width: number }): JSX.Element | null => {
+ displayTooltipCondition = T,
+ height
+}: HeatMapProps & {
+ height: number;
+ width: number;
+}): JSX.Element | null => {
const { classes, cx } = useHeatMapStyles();
const tileSize = useMemo(() => {
@@ -40,7 +44,11 @@ const ResponsiveHeatMap = ({
const theoricalTotalTilesWidth =
tilesLength * tileWidth + (tilesLength - 1) * gap;
- if (lt(width, 680) && gt(maxTotalTilesWidth, width) && !tileSizeFixed) {
+ if (
+ (lt(height, maxTileSize) ||
+ (lt(width, 680) && gt(maxTotalTilesWidth, width))) &&
+ !tileSizeFixed
+ ) {
return smallestTileSize;
}
@@ -49,7 +57,7 @@ const ResponsiveHeatMap = ({
}
return tileSizeFixed ? maxTileSize : tileWidth;
- }, [width, tiles]);
+ }, [width, tiles, height]);
const isSmallestSize = equals(tileSize, smallestTileSize);
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/UnitLabel.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/UnitLabel.tsx
deleted file mode 100644
index 1f1232ef73..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/UnitLabel.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { commonTickLabelProps } from '../../common';
-
-interface UnitLabelProps {
- unit: string;
- x: number;
- y?: number;
-}
-
-const UnitLabel = ({ x, y = 16, unit }: UnitLabelProps): JSX.Element => (
-
- {unit}
-
-);
-
-export default UnitLabel;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/index.tsx
deleted file mode 100644
index 93189a1ad4..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/index.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import { Axis } from '@visx/visx';
-import { ScaleLinear } from 'd3-scale';
-import { isNil } from 'ramda';
-
-import { useLocaleDateTimeFormat } from '@centreon/ui';
-
-import { getXAxisTickFormat } from '../../helpers';
-import { GraphInterval } from '../../models';
-import { getUnits } from '../../../common/timeSeries';
-
-import UnitLabel from './UnitLabel';
-import { Data } from './models';
-import useAxisY from './useAxisY';
-
-interface Props {
- data: Data;
- graphInterval: GraphInterval;
- height: number;
- leftScale: ScaleLinear;
- rightScale: ScaleLinear;
- width: number;
- xScale: ScaleLinear;
-}
-
-const Axes = ({
- height,
- width,
- data,
- rightScale,
- leftScale,
- xScale,
- graphInterval
-}: Props): JSX.Element => {
- const { format } = useLocaleDateTimeFormat();
- const { lines, showBorder, yAxisTickLabelRotation } = data;
-
- const { axisLeft, axisRight } = useAxisY({ data, graphHeight: height });
-
- const [firstUnit, secondUnit, thirdUnit] = getUnits(lines);
-
- const xTickCount = Math.min(Math.ceil(width / 82), 12);
-
- const tickFormat =
- data?.axisX?.xAxisTickFormat ?? getXAxisTickFormat(graphInterval);
-
- const formatAxisTick = (tick): string =>
- format({ date: new Date(tick), formatString: tickFormat });
-
- const hasMoreThanTwoUnits = !isNil(thirdUnit);
- const displayAxisRight = !isNil(secondUnit) && !hasMoreThanTwoUnits;
-
- return (
-
-
-
- {axisLeft.displayUnit && }
-
- ({
- ...axisLeft.tickLabelProps(),
- angle: yAxisTickLabelRotation
- })}
- tickLength={2}
- />
-
- {displayAxisRight && (
- ({
- ...axisRight.tickLabelProps(),
- angle: yAxisTickLabelRotation
- })}
- tickLength={2}
- />
- )}
- {axisRight.displayUnit && }
-
- );
-};
-
-export default Axes;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/models.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/models.ts
deleted file mode 100644
index 02bde40b72..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/models.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { Line, TimeValue } from '../../../common/timeSeries/models';
-import { LineChartAxis } from '../../models';
-
-export interface LabelProps {
- [x: string]: unknown;
- textAnchor?: string;
-}
-
-export interface Axis {
- displayUnit?: boolean;
-}
-
-export interface AxisYRight extends Axis {
- display?: boolean;
-}
-
-export interface AxisX {
- xAxisTickFormat?: string;
-}
-export interface Data
- extends Omit {
- axisX?: AxisX;
- axisYLeft?: Axis;
- axisYRight?: AxisYRight;
- baseAxis: number;
- lines: Array;
- timeSeries: Array;
-}
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/useAxisY.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/useAxisY.ts
deleted file mode 100644
index dfe65b4991..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Axes/useAxisY.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import { isNil } from 'ramda';
-import { Axis } from '@visx/visx';
-
-import { useTheme } from '@mui/material';
-
-import { formatMetricValue, getUnits } from '../../../common/timeSeries';
-import { commonTickLabelProps } from '../../common';
-
-import { Data, LabelProps } from './models';
-
-interface AxisYData {
- displayUnit: boolean;
- numTicks?: number;
- tickFormat: (value: unknown) => string;
- tickLabelProps: Axis.TickLabelProps;
-}
-
-interface AxisRightData extends AxisYData {
- display: boolean;
-}
-
-interface AxisY {
- axisLeft: AxisYData;
- axisRight: AxisRightData;
-}
-
-interface Props {
- data: Omit;
- graphHeight?: number;
-}
-
-const useAxisY = ({ data, graphHeight }: Props): AxisY => {
- const theme = useTheme();
-
- const { lines } = data;
- const [firstUnit, secondUnit, thirdUnit] = getUnits(lines);
-
- const numTicks = graphHeight && Math.ceil(graphHeight / 30);
-
- const hasMoreThanTwoUnits = !isNil(thirdUnit);
- const hasTwoUnits = !isNil(secondUnit) && !hasMoreThanTwoUnits;
-
- const displayAxisRight = data?.axisYRight?.display ?? hasTwoUnits;
- const displayUnitAxisRight = data?.axisYRight?.displayUnit ?? hasTwoUnits;
- const displayUnitAxisLeft =
- data?.axisYLeft?.displayUnit ?? !hasMoreThanTwoUnits;
-
- const formatTick =
- ({ unit }) =>
- (value): string => {
- if (isNil(value)) {
- return '';
- }
-
- return formatMetricValue({ base: data.baseAxis, unit, value }) as string;
- };
-
- const labelProps = ({
- textAnchor,
- ...rest
- }: LabelProps): Record => ({
- ...commonTickLabelProps,
- textAnchor,
- ...rest
- });
-
- const tickLabelPropsAxisLeft = (): Record =>
- labelProps({
- dx: theme.spacing(-1),
- dy: theme.spacing(0.5),
- textAnchor: 'end'
- });
-
- const tickLabelPropsAxisRight = (): Record =>
- labelProps({
- dx: theme.spacing(0.5),
- dy: theme.spacing(0.5),
- textAnchor: 'start'
- });
-
- return {
- axisLeft: {
- displayUnit: displayUnitAxisLeft,
- numTicks,
- tickFormat: formatTick({
- unit: hasMoreThanTwoUnits ? '' : firstUnit
- }),
- tickLabelProps: tickLabelPropsAxisLeft
- },
- axisRight: {
- display: displayAxisRight,
- displayUnit: displayUnitAxisRight,
- numTicks,
- tickFormat: formatTick({ unit: secondUnit }),
- tickLabelProps: tickLabelPropsAxisRight
- }
- };
-};
-
-export default useAxisY;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Grids/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Grids/index.tsx
deleted file mode 100644
index fccd54d8ff..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Grids/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { useMemo } from 'react';
-
-import { Grid } from '@visx/visx';
-import { ScaleLinear } from 'd3-scale';
-import { includes } from 'ramda';
-
-import { LineChartAxis } from '../../models';
-
-interface Props extends Pick {
- height: number;
- leftScale: ScaleLinear;
- width: number;
- xScale: ScaleLinear;
-}
-
-const Grids = ({
- height,
- width,
- leftScale,
- xScale,
- gridLinesType
-}: Props): JSX.Element => {
- const displayRows = useMemo(
- () => includes(gridLinesType, ['all', 'horizontal', undefined]),
- [gridLinesType]
- );
- const displayColumns = useMemo(
- () => includes(gridLinesType, ['all', 'vertical', undefined]),
- [gridLinesType]
- );
-
- return (
-
- {displayRows && (
-
- )}
- {displayColumns && (
-
- )}
-
- );
-};
-
-export default Grids;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx
deleted file mode 100644
index f71759a6e4..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import { memo } from 'react';
-
-import { Shape } from '@visx/visx';
-import { ScaleLinear, ScaleTime } from 'd3-scale';
-import { equals, isNil, pick, prop } from 'ramda';
-
-import { getTime } from '../../../../common/timeSeries';
-import { TimeValue } from '../../../../common/timeSeries/models';
-import { getCurveFactory, getFillColor } from '../../../common';
-import { getStrokeDashArray } from '../../../../common/utils';
-
-interface Props {
- areaColor: string;
- curve: 'linear' | 'step' | 'natural';
- dashLength?: number;
- dashOffset?: number;
- dotOffset?: number;
- filled: boolean;
- graphHeight: number;
- highlight?: boolean;
- lineColor: string;
- lineWidth?: number;
- metric_id: number;
- shapeAreaClosed?: Record;
- shapeLinePath?: Record;
- timeSeries: Array;
- transparency: number;
- unit: string;
- xScale: ScaleTime;
- yScale: ScaleLinear;
-}
-
-const RegularLine = ({
- filled,
- timeSeries,
- highlight,
- metric_id,
- lineColor,
- unit,
- yScale,
- xScale,
- areaColor,
- transparency,
- graphHeight,
- curve,
- lineWidth,
- dotOffset,
- dashLength,
- dashOffset
-}: Props): JSX.Element => {
- const curveType = getCurveFactory(curve);
- const formattedLineWidth = lineWidth ?? 2;
-
- const props = {
- curve: curveType,
- data: timeSeries,
- defined: (value): boolean => !isNil(value[metric_id]),
- opacity: 1,
- stroke: lineColor,
- strokeDasharray: getStrokeDashArray({
- dashLength,
- dashOffset,
- dotOffset,
- lineWidth: formattedLineWidth
- }),
- strokeWidth: highlight
- ? Math.ceil((formattedLineWidth || 1) * 1.3)
- : formattedLineWidth,
- unit,
- x: (timeValue): number => xScale(getTime(timeValue)) as number,
- y: (timeValue): number => yScale(prop(metric_id, timeValue)) ?? null
- };
-
- if (filled) {
- return (
-
- data-metric={metric_id}
- fill={getFillColor({ areaColor, transparency })}
- fillRule="nonzero"
- key={metric_id}
- y0={Math.min(yScale(0), graphHeight)}
- yScale={yScale}
- {...props}
- />
- );
- }
-
- return data-metric={metric_id} {...props} />;
-};
-
-const memoizedProps = [
- 'curve',
- 'lineColor',
- 'areaColor',
- 'filled',
- 'transparency',
- 'lineWidth',
- 'dotOffset',
- 'dashLength',
- 'dashOffset'
-];
-
-export default memo(RegularLine, (prevProps, nextProps) => {
- const {
- timeSeries: prevTimeSeries,
- graphHeight: prevGraphHeight,
- highlight: prevHighlight,
- xScale: prevXScale,
- yScale: prevYScale
- } = prevProps;
- const {
- timeSeries: nextTimeSeries,
- graphHeight: nextGraphHeight,
- highlight: nextHighlight,
- xScale: nextXScale,
- yScale: nextYScale
- } = nextProps;
-
- const prevXScaleRange = prevXScale.range();
- const nextXScaleRange = nextXScale.range();
- const prevYScaleDomain = prevYScale.domain();
- const nextYScaleDomain = nextYScale.domain();
-
- return (
- equals(prevTimeSeries, nextTimeSeries) &&
- equals(prevGraphHeight, nextGraphHeight) &&
- equals(prevHighlight, nextHighlight) &&
- equals(prevXScaleRange, nextXScaleRange) &&
- equals(prevYScaleDomain, nextYScaleDomain) &&
- equals(pick(memoizedProps, prevProps), pick(memoizedProps, nextProps))
- );
-});
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx
deleted file mode 100644
index 8a55ccd70d..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx
+++ /dev/null
@@ -1,140 +0,0 @@
-import { Shape } from '@visx/visx';
-import { ScaleLinear, ScaleTime } from 'd3-scale';
-import { all, equals, isNil, map, not, nth, path, pipe, prop } from 'ramda';
-
-import StackedAnchorPoint, {
- getYAnchorPoint
-} from '../../../InteractiveComponents/AnchorPoint/StackedAnchorPoint';
-import { StackValue } from '../../../InteractiveComponents/AnchorPoint/models';
-import { getCurveFactory, getFillColor } from '../../../common';
-import { getDates, getTime } from '../../../../common/timeSeries';
-import { Line, TimeValue } from '../../../../common/timeSeries/models';
-import Point from '../Point';
-import { getPointRadius, getStrokeDashArray } from '../../../../common/utils';
-
-interface Props {
- areaTransparency?: number;
- curve: 'linear' | 'step' | 'natural';
- dashLength?: number;
- dashOffset?: number;
- displayAnchor: boolean;
- dotOffset?: number;
- lineWidth?: number;
- lines: Array;
- showArea?: boolean;
- showPoints?: boolean;
- timeSeries: Array;
- xScale: ScaleTime;
- yScale: ScaleLinear;
-}
-
-const StackLines = ({
- timeSeries,
- lines,
- yScale,
- xScale,
- displayAnchor,
- curve,
- showPoints,
- showArea,
- areaTransparency,
- lineWidth,
- dashLength,
- dashOffset,
- dotOffset
-}: Props): JSX.Element => {
- const curveType = getCurveFactory(curve);
-
- const formattedLineWidth = lineWidth ?? 2;
-
- return (
- {
- return pipe(
- map(prop('metric_id')) as unknown as (
- displayedLines
- ) => Array,
- all((metric_id) => pipe(path(['data', metric_id]), isNil, not)(d))
- )(lines);
- }}
- keys={map(prop('metric_id'), lines)}
- x={(d): number => xScale(getTime(d.data)) ?? 0}
- y0={(d): number => yScale(d[0]) ?? 0}
- y1={(d): number => yScale(d[1]) ?? 0}
- >
- {({ stacks, path: linePath }): Array => {
- return stacks.map((stack, index) => {
- const { areaColor, transparency, lineColor, highlight, metric_id } =
- nth(index, lines) as Line;
-
- const formattedTransparency = isNil(areaTransparency)
- ? transparency || 80
- : areaTransparency;
-
- return (
-
- {displayAnchor && (
- }
- timeSeries={timeSeries}
- transparency={transparency}
- xScale={xScale}
- yScale={yScale}
- />
- )}
- {showPoints &&
- getDates(timeSeries).map((timeTick) => (
- ,
- timeTick,
- yScale
- })}
- yScale={yScale}
- />
- ))}
-
-
- );
- });
- }}
-
- );
-};
-
-export default StackLines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/useStackedLines.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/useStackedLines.ts
deleted file mode 100644
index 8dc712c304..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/StackedLines/useStackedLines.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import {
- getInvertedStackedLines,
- getNotInvertedStackedLines,
- getTimeSeriesForLines
-} from '../../../../common/timeSeries';
-import { LinesData } from '../models';
-
-interface StackedLines {
- invertedStackedLinesData: LinesData;
- stackedLinesData: LinesData;
-}
-
-const useStackedLines = ({ lines, timeSeries }): StackedLines => {
- const regularStackedLines = getNotInvertedStackedLines(lines);
-
- const regularStackedTimeSeries = getTimeSeriesForLines({
- lines: regularStackedLines,
- timeSeries
- });
-
- const invertedStackedLines = getInvertedStackedLines(lines);
- const invertedStackedTimeSeries = getTimeSeriesForLines({
- lines: invertedStackedLines,
- timeSeries
- });
-
- return {
- invertedStackedLinesData: {
- lines: invertedStackedLines,
- timeSeries: invertedStackedTimeSeries
- },
- stackedLinesData: {
- lines: regularStackedLines,
- timeSeries: regularStackedTimeSeries
- }
- };
-};
-
-export default useStackedLines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx
deleted file mode 100644
index e2a4a6d9f4..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx
+++ /dev/null
@@ -1,141 +0,0 @@
-import { equals, isNil } from 'ramda';
-
-import { displayArea } from '../../../helpers/index';
-import {
- PatternThreshold,
- ThresholdType,
- VariationThreshold
-} from '../../../models';
-import { TimeValue } from '../../../../common/timeSeries/models';
-
-import BasicThreshold from './BasicThreshold';
-import Circle from './Circle';
-import ThresholdWithPatternLines from './ThresholdWithPatternLines';
-import ThresholdWithVariation from './ThresholdWithVariation';
-import { WrapperThresholdLinesModel } from './models';
-import useScaleThreshold from './useScaleThreshold';
-
-interface Props extends WrapperThresholdLinesModel {
- curve: 'linear' | 'natural' | 'step';
- graphHeight: number;
- timeSeries: Array;
-}
-
-const WrapperThresholdLines = ({
- areaThresholdLines,
- graphHeight,
- leftScale,
- lines,
- rightScale,
- timeSeries,
- xScale,
- curve
-}: Props): JSX.Element | null => {
- const data = useScaleThreshold({
- areaThresholdLines,
- leftScale,
- lines,
- rightScale,
- xScale
- });
-
- if (!data) {
- return null;
- }
-
- const { getX, getY0, getY1, lineColorY0, lineColorY1, ...rest } = data;
-
- const commonProps = {
- curve,
- fillAboveArea: lineColorY0,
- fillBelowArea: lineColorY1,
- getX,
- graphHeight,
- timeSeries
- };
-
- const thresholdLines = areaThresholdLines?.map((item, index) => {
- const { type } = item;
-
- if (equals(type, ThresholdType.basic)) {
- return [
- {
- Component: BasicThreshold,
- key: index,
- props: { ...commonProps, getY0, getY1 }
- }
- ];
- }
- if (equals(type, ThresholdType.variation)) {
- const dataVariation = item as VariationThreshold;
- if (!rest?.getY0Variation || !rest.getY1Variation || !rest.getYOrigin) {
- return null;
- }
-
- return [
- {
- Component: ThresholdWithVariation,
- key: index,
- props: {
- factors: dataVariation.factors,
- ...commonProps,
- ...rest
- }
- },
- {
- Component: Circle,
- key: 'circle',
- props: {
- ...rest,
- getCountDisplayedCircles: dataVariation?.getCountDisplayedCircles,
- getX,
- timeSeries
- }
- }
- ];
- }
- if (equals(type, ThresholdType.pattern)) {
- const dataPattern = item as PatternThreshold;
-
- if (!displayArea(dataPattern?.data)) {
- return null;
- }
-
- const { data: pattern } = dataPattern;
-
- return pattern.map((element, ind) => ({
- Component: ThresholdWithPatternLines,
- key: ind,
- props: {
- data: element,
- graphHeight,
- key: ind,
- leftScale,
- orientation: dataPattern?.orientation,
- rightScale,
- xScale
- }
- }));
- }
-
- return null;
- });
-
- const filteredThresholdLines = thresholdLines?.filter((item) => !isNil(item));
-
- if (!filteredThresholdLines) {
- return null;
- }
-
- return (
-
- {filteredThresholdLines.map((element) =>
- element?.map(({ Component, props, key }) => (
-
- ))
- )}
-
- );
-};
-
-export default WrapperThresholdLines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/models.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/models.ts
deleted file mode 100644
index f50a1032e4..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/Threshold/models.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-import { ScaleLinear } from 'd3-scale';
-import { equals, reject } from 'ramda';
-
-import { GlobalAreaLines, ThresholdType } from '../../../models';
-import { Line, TimeValue } from '../../../../common/timeSeries/models';
-
-export interface Data {
- lineColor: string;
- metric: string;
- yScale: ScaleLinear;
-}
-
-export interface Point {
- x: number;
- y: number;
-}
-
-export interface ArePointsOnline {
- pointLower: Point;
- pointOrigin: Point;
- pointUpper: Point;
-}
-export interface Online extends ArePointsOnline {
- maxDistance?: number;
-}
-
-export interface FactorsVariation {
- currentFactorMultiplication: number;
- simulatedFactorMultiplication: number;
-}
-
-export interface Result {
- getX: (timeValue: TimeValue) => number;
- getY0: (timeValue: TimeValue) => number;
- getY1: (timeValue: TimeValue) => number;
- lineColorY0: string;
- lineColorY1: string;
-}
-
-export interface EnvelopeVariationFormula {
- factorsData: FactorsVariation;
- lowerRealValue: number;
- upperRealValue: number;
-}
-
-export interface ThresholdLinesModel {
- dataY0: Data;
- dataY1: Data;
- graphHeight: number;
- timeSeries: Array;
- xScale: ScaleLinear;
-}
-
-export interface LinesThreshold {
- lineLower: Line;
- lineOrigin: Line;
- lineUpper: Line;
-}
-
-export interface WrapperThresholdLinesModel {
- areaThresholdLines?: GlobalAreaLines['areaThresholdLines'];
- leftScale: ScaleLinear;
- lines: Array;
- rightScale: ScaleLinear;
- xScale: ScaleLinear;
-}
-
-export interface ScaleVariationThreshold {
- getY0Variation: (timeValue: TimeValue) => number;
- getY1Variation: (timeValue: TimeValue) => number;
- getYOrigin: (timeValue: TimeValue) => number;
-}
-
-export interface Circle extends ScaleVariationThreshold {
- getCountDisplayedCircles?: (value: number) => void;
- getX: (timeValue: TimeValue) => number;
- timeSeries: Array;
-}
-
-export const lowerLineName = 'Lower Threshold';
-export const upperLineName = 'Upper Threshold';
-
-// upper,lower and origin
-export const requiredNumberLinesThreshold = 3;
-
-export const findLineOfOriginMetricThreshold = (
- lines: Array
-): Array => {
- const metrics = lines.map((line) => {
- const { metric } = line;
-
- return metric.includes('_upper_thresholds')
- ? metric.replace('_upper_thresholds', '')
- : null;
- });
-
- const originMetric = metrics.find((element) => element);
-
- return reject((line: Line) => !equals(line.name, originMetric), lines);
-};
-
-export const canDisplayThreshold = (
- areaThresholdLines: GlobalAreaLines['areaThresholdLines']
-): boolean =>
- !!areaThresholdLines?.find((item) => item && item.type in ThresholdType);
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/index.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/index.tsx
deleted file mode 100644
index de5e71a307..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/index.tsx
+++ /dev/null
@@ -1,241 +0,0 @@
-import { MutableRefObject } from 'react';
-
-import { ScaleLinear } from 'd3-scale';
-import { isNil } from 'ramda';
-
-import { getPointRadius } from '../../../common/utils';
-import GuidingLines from '../../InteractiveComponents/AnchorPoint/GuidingLines';
-import RegularAnchorPoint, {
- getYAnchorPoint
-} from '../../InteractiveComponents/AnchorPoint/RegularAnchorPoint';
-import { displayArea } from '../../helpers/index';
-import { DisplayAnchor, GlobalAreaLines } from '../../models';
-import {
- getDates,
- getStackedYScale,
- getUnits,
- getYScale
-} from '../../../common/timeSeries';
-import { Line, TimeValue } from '../../../common/timeSeries/models';
-
-import RegularLine from './RegularLines';
-import useRegularLines from './RegularLines/useRegularLines';
-import StackedLines from './StackedLines';
-import useStackedLines from './StackedLines/useStackedLines';
-import WrapperThresholdLines from './Threshold';
-import {
- canDisplayThreshold,
- requiredNumberLinesThreshold
-} from './Threshold/models';
-import Point from './Point';
-
-interface Props extends GlobalAreaLines {
- areaTransparency?: number;
- curve: 'linear' | 'step' | 'natural';
- dashLength?: number;
- dashOffset?: number;
- displayAnchor?: DisplayAnchor;
- displayedLines: Array;
- dotOffset?: number;
- graphSvgRef: MutableRefObject;
- height: number;
- leftScale: ScaleLinear;
- lineWidth?: number;
- rightScale: ScaleLinear;
- showArea?: boolean;
- showPoints?: boolean;
- timeSeries: Array;
- width: number;
- xScale: ScaleLinear;
-}
-
-const Lines = ({
- areaTransparency,
- height,
- graphSvgRef,
- width,
- displayAnchor,
- leftScale,
- rightScale,
- curve,
- xScale,
- timeSeries,
- displayedLines,
- areaThresholdLines,
- areaStackedLines,
- areaRegularLines,
- showArea,
- showPoints,
- lineWidth,
- dotOffset,
- dashLength,
- dashOffset
-}: Props): JSX.Element => {
- const { stackedLinesData, invertedStackedLinesData } = useStackedLines({
- lines: displayedLines,
- timeSeries
- });
-
- const { regularLines } = useRegularLines({ lines: displayedLines });
-
- const displayThresholdArea =
- displayedLines?.length >= requiredNumberLinesThreshold &&
- canDisplayThreshold(areaThresholdLines);
-
- const displayAreaRegularLines =
- (areaRegularLines?.display ?? true) && displayArea(regularLines);
-
- const stackedYScale = getStackedYScale({
- leftScale,
- rightScale
- });
-
- const displayGuidingLines = displayAnchor?.displayGuidingLines ?? true;
- const commonStackedLinesProps = {
- areaTransparency,
- curve,
- dashLength,
- dashOffset,
- displayAnchor: displayGuidingLines,
- dotOffset,
- graphHeight: height,
- graphSvgRef,
- graphWidth: width,
- lineWidth,
- showArea,
- showPoints,
- xScale,
- yScale: stackedYScale
- };
-
- return (
-
- {displayGuidingLines && (
-
- )}
-
- {(areaStackedLines?.display ?? true) && (
- <>
- {displayArea(stackedLinesData.lines) && (
-
- )}
-
- {displayArea(invertedStackedLinesData.lines) && (
-
- )}
- >
- )}
-
- {displayThresholdArea && (
-
- )}
-
- {displayAreaRegularLines
- ? regularLines.map(
- ({
- areaColor,
- transparency,
- lineColor,
- filled,
- unit,
- highlight,
- invert,
- metric_id
- }) => {
- const [, secondUnit, thirdUnit] = getUnits(
- regularLines as Array
- );
- const yScale = getYScale({
- hasMoreThanTwoUnits: !isNil(thirdUnit),
- invert,
- leftScale,
- rightScale,
- secondUnit,
- unit
- });
-
- return (
-
- {displayGuidingLines && (
-
- )}
- {showPoints &&
- getDates(timeSeries).map((timeTick) => (
-
- ))}
-
-
- );
- }
- )
- : null}
-
- );
-};
-
-export default Lines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/models.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/models.ts
deleted file mode 100644
index 9250a8d2a5..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Lines/models.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { ScaleLinear } from 'd3-scale';
-
-import { Line, TimeValue } from '../../../common/timeSeries/models';
-import { LineChartData } from '../../../common/models';
-
-import { FactorsVariation } from './Threshold/models';
-
-export interface ShapeGraphData {
- [x: string]: unknown;
- display: boolean;
- leftScale?: ScaleLinear;
- rightScale?: ScaleLinear;
- xScale?: ScaleLinear;
- yScale?: ScaleLinear;
-}
-
-export interface LinesData {
- lines: Array;
- timeSeries: Array;
-}
-
-export interface AreaStackedLines extends ShapeGraphData {
- invertedStackedLinesData: LinesData;
- stackedLinesData: LinesData;
-}
-
-export interface AreaRegularLines extends ShapeGraphData {
- lines: Array;
- timeSeries: Array;
-}
-
-export interface AreaThreshold extends AreaRegularLines {
- dataExclusionPeriods?: Array;
- factors?: FactorsVariation;
- getCountDisplayedCircles?: (value: number) => void;
-}
-
-export interface Shape {
- areaRegularLines: AreaRegularLines;
- areaStackedLines: AreaStackedLines;
- areaThreshold: AreaThreshold;
-}
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Thresholds.tsx b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Thresholds.tsx
deleted file mode 100644
index 3dac78f2ac..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/Thresholds.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import { equals, isNil } from 'ramda';
-
-import { getUnits, getYScale } from '../../common/timeSeries';
-import { Line } from '../../common/timeSeries/models';
-import { Thresholds as ThresholdsModel } from '../../common/models';
-
-import { ThresholdLine } from './ThresholdLine';
-
-interface Props {
- displayedLines: Array;
- hideTooltip: () => void;
- leftScale: (value: number) => number;
- rightScale: (value: number) => number;
- showTooltip: (props) => void;
- thresholdUnit?: string;
- thresholds: ThresholdsModel;
- width: number;
-}
-
-const Thresholds = ({
- thresholds,
- leftScale,
- rightScale,
- width,
- displayedLines,
- thresholdUnit,
- showTooltip,
- hideTooltip
-}: Props): JSX.Element => {
- const [firstUnit, secondUnit, thirdUnit] = getUnits(
- displayedLines as Array
- );
-
- const shouldUseRightScale = equals(thresholdUnit, secondUnit);
-
- const yScale = shouldUseRightScale
- ? rightScale
- : getYScale({
- hasMoreThanTwoUnits: !isNil(thirdUnit),
- invert: null,
- leftScale,
- rightScale,
- secondUnit,
- unit: firstUnit
- });
-
- return (
- <>
- {thresholds.warning.map(({ value, label }) => (
-
- ))}
- {thresholds.critical.map(({ value, label }) => (
-
- ))}
- >
- );
-};
-
-export default Thresholds;
diff --git a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/useFilterLines.ts b/centreon/packages/ui/src/Graph/LineChart/BasicComponents/useFilterLines.ts
deleted file mode 100644
index 34fc94f673..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/BasicComponents/useFilterLines.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { Dispatch, SetStateAction, useEffect } from 'react';
-
-import { equals, propEq, reject } from 'ramda';
-
-import { Line } from '../../common/timeSeries/models';
-
-import {
- findLineOfOriginMetricThreshold,
- lowerLineName,
- upperLineName
-} from './Lines/Threshold/models';
-
-interface UseFilterLines {
- displayThreshold?: boolean;
- lines: Array;
- linesGraph: Array | null;
- setLinesGraph: Dispatch | null>>;
-}
-
-interface Result {
- displayedLines: Array;
- newLines: Array;
-}
-
-const useFilterLines = ({
- displayThreshold = false,
- lines,
- linesGraph,
- setLinesGraph
-}: UseFilterLines): Result => {
- const displayedLines = reject(propEq(false, 'display'), linesGraph ?? lines);
- const filterLines = (): Array => {
- const lineOriginMetric = findLineOfOriginMetricThreshold(lines);
-
- const findLinesUpperLower = lines.map((line) =>
- equals(line.name, lowerLineName) || equals(line.name, upperLineName)
- ? line
- : null
- );
-
- const linesUpperLower = reject((element) => !element, findLinesUpperLower);
-
- return [...lineOriginMetric, ...linesUpperLower] as Array;
- };
-
- useEffect(() => {
- const filteredLines = filterLines();
- if (!lines || !displayThreshold) {
- setLinesGraph(lines);
-
- return;
- }
-
- setLinesGraph(filteredLines);
- }, [lines, displayThreshold]);
-
- return { displayedLines, newLines: linesGraph ?? lines };
-};
-
-export default useFilterLines;
diff --git a/centreon/packages/ui/src/Graph/LineChart/Header/index.tsx b/centreon/packages/ui/src/Graph/LineChart/Header/index.tsx
deleted file mode 100644
index cade2ed743..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/Header/index.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import Typography from '@mui/material/Typography';
-
-import { useMemoComponent } from '@centreon/ui';
-
-import { useStyles } from '../LineChart.styles';
-import { LineChartHeader } from '../models';
-
-interface Props {
- header?: LineChartHeader;
- title: string;
-}
-
-const Header = ({ title, header }: Props): JSX.Element => {
- const { classes } = useStyles();
-
- const displayTitle = header?.displayTitle ?? true;
-
- return useMemoComponent({
- Component: (
-
-
-
- {displayTitle && (
-
- {title}
-
- )}
-
- {header?.extraComponent}
-
- ),
-
- memoProps: [title, header]
- });
-};
-
-export default Header;
diff --git a/centreon/packages/ui/src/Graph/LineChart/Icons/Downtime.tsx b/centreon/packages/ui/src/Graph/LineChart/Icons/Downtime.tsx
deleted file mode 100644
index b48c5f3c78..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/Icons/Downtime.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { SvgIcon, SvgIconProps } from '@mui/material';
-
-import { ReactComponent as IconDowntime } from '../../../@assets/icons/downtime.icon.svg';
-
-const Downtime = (props: SvgIconProps): JSX.Element => (
-
-);
-
-export default Downtime;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx
deleted file mode 100644
index 4d0b8eb827..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import { useTranslation } from 'react-i18next';
-import { useSetAtom } from 'jotai';
-import { makeStyles } from 'tss-react/mui';
-
-import { Tooltip, Paper, Typography } from '@mui/material';
-
-import { truncate } from '../../../helpers';
-import { labelBy } from '../../../translatedLabels';
-import { TimelineEvent } from '../models';
-import { annotationHoveredAtom } from '../annotationsAtoms';
-
-const yMargin = -32;
-const iconSize = 20;
-
-const useStyles = makeStyles()((theme) => ({
- tooltip: {
- backgroundColor: 'transparent'
- },
- tooltipContent: {
- padding: theme.spacing(1)
- }
-}));
-
-export interface Props {
- annotationHoveredId: number;
- event: TimelineEvent;
- header: string;
- icon: JSX.Element;
- marker: JSX.Element;
- xIcon: number;
-}
-
-const Annotation = ({
- icon,
- header,
- event,
- xIcon,
- marker,
- annotationHoveredId
-}: Props): JSX.Element => {
- const { classes } = useStyles();
- const { t } = useTranslation();
-
- const setAnnotationHovered = useSetAtom(annotationHoveredAtom);
-
- const content = `${truncate(event.content)} (${t(labelBy)} ${
- event.contact?.name
- })`;
-
- return (
-
-
- {header}
- {content}
-
- }
- >
-
- setAnnotationHovered(() => ({ annotationHoveredId, event }))
- }
- onMouseLeave={(): void => setAnnotationHovered(() => undefined)}
- >
-
- {icon}
-
-
- {marker}
-
- );
-};
-
-export default Annotation;
-export { yMargin, iconSize };
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Area/Downtime.tsx b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Area/Downtime.tsx
deleted file mode 100644
index d03b0eafd4..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/Annotations/Area/Downtime.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useTranslation } from 'react-i18next';
-
-import { useTheme } from '@mui/material';
-
-import IconDowntime from '../../../Icons/Downtime';
-import { labelDowntime } from '../../../translatedLabels';
-import EventAnnotations from '../EventAnnotations';
-import { Args } from '../models';
-
-const DowntimeAnnotations = (props: Args): JSX.Element => {
- const { t } = useTranslation();
- const theme = useTheme();
-
- const color = theme.palette.action.inDowntime;
-
- return (
-
- );
-};
-
-export default DowntimeAnnotations;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx
deleted file mode 100644
index 3410413c8f..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import { useAtomValue } from 'jotai';
-import { equals, isNil } from 'ramda';
-
-import { Box, Typography } from '@mui/material';
-
-import { mousePositionAtom } from '../interactionWithGraphAtoms';
-import { formatMetricValueWithUnit } from '../../../common/timeSeries';
-import { Tooltip } from '../../models';
-
-import { useGraphValueTooltip } from './useGraphValueTooltip';
-import { useGraphValueTooltipStyles } from './useGraphValueTooltipStyles';
-
-interface Props extends Pick {
- base: number;
- isSingleMode: boolean;
-}
-
-const GraphValueTooltip = ({
- base,
- isSingleMode,
- sortOrder
-}: Props): JSX.Element | null => {
- const { classes } = useGraphValueTooltipStyles();
- const mousePosition = useAtomValue(mousePositionAtom);
-
- const graphValue = useGraphValueTooltip({ isSingleMode, sortOrder });
-
- if (isNil(graphValue) || isNil(mousePosition)) {
- return null;
- }
-
- return (
-
-
{graphValue.dateTime}
-
- {graphValue.metrics.map(({ unit, color, id, value, name }) => {
- const isMetricHighlighted = equals(
- id,
- graphValue.highlightedMetricId
- );
-
- return (
-
-
-
- {name}
-
-
- {formatMetricValueWithUnit({
- base,
- unit,
- value
- })}
-
-
- );
- })}
-
-
- );
-};
-
-export default GraphValueTooltip;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/index.tsx b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/index.tsx
deleted file mode 100644
index fa371a0014..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/index.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import { useState } from 'react';
-
-import { equals, isNil, negate } from 'ramda';
-
-import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';
-import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
-
-import { GraphInterval, Interval } from '../../models';
-import { margin } from '../../common';
-
-import TimeShiftIcon, { timeShiftIconSize } from './TimeShiftIcon';
-import TimeShiftZone from './TimeShiftZone';
-import { TimeShiftDirection } from './models';
-
-interface Props {
- getInterval?: (args: Interval) => void;
- graphHeight: number;
- graphInterval: GraphInterval;
- graphWidth: number;
-}
-
-const TimeShiftZones = ({
- graphHeight,
- graphWidth,
- getInterval,
- graphInterval
-}: Props): JSX.Element => {
- const [directionHovered, setDirectionHovered] =
- useState(null);
-
- const marginLeft = margin.left;
-
- const isBackward = equals(directionHovered, TimeShiftDirection.backward);
- const displayIcon = !isNil(directionHovered);
- const propsIcon = { color: 'primary' as const };
-
- const xIcon = isBackward
- ? negate(marginLeft)
- : graphWidth + timeShiftIconSize / 2;
-
- const yIcon = graphHeight / 2 - timeShiftIconSize / 2;
-
- const Icon = isBackward ? (
-
- ) : (
-
- );
- const ariaLabelIcon = isBackward ? 'labelBackward' : 'labelForward';
-
- const commonData = {
- getInterval,
- graphHeight,
- graphInterval,
- graphWidth
- };
-
- return (
- <>
-
-
- {displayIcon && (
-
- )}
- >
- );
-};
-
-export default TimeShiftZones;
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/models.ts b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/models.ts
deleted file mode 100644
index 8808950255..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/models.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { GraphInterval, GraphIntervalProperty } from '../../models';
-
-export enum TimeShiftDirection {
- backward,
- forward
-}
-
-export interface GetShiftDate {
- property: GraphIntervalProperty;
- timePeriod: GraphInterval;
- timeShiftDirection: TimeShiftDirection;
-}
diff --git a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/index.tsx b/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/index.tsx
deleted file mode 100644
index a4f712ce1d..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/InteractiveComponents/index.tsx
+++ /dev/null
@@ -1,283 +0,0 @@
-import { MutableRefObject } from 'react';
-
-import { Event } from '@visx/visx';
-import { ScaleTime } from 'd3-scale';
-import { useSetAtom } from 'jotai';
-import {
- all,
- equals,
- find,
- isEmpty,
- isNil,
- keys,
- map,
- pick,
- pipe,
- pluck,
- reduce,
- toPairs,
- values
-} from 'ramda';
-import { makeStyles } from 'tss-react/mui';
-
-import {
- AnnotationEvent,
- GraphInterval,
- InteractedZone,
- InteractedZone as ZoomPreviewModel
-} from '../models';
-import {
- formatMetricName,
- getLineForMetric,
- getLinesForMetrics,
- getTimeValue,
- getUnits,
- getYScale
-} from '../../common/timeSeries';
-import { Line, TimeValue } from '../../common/timeSeries/models';
-import { margin } from '../common';
-
-import Annotations from './Annotations';
-import { TimelineEvent } from './Annotations/models';
-import Bar from './Bar';
-import TimeShiftZones from './TimeShiftZones';
-import ZoomPreview from './ZoomPreview';
-import {
- MousePosition,
- changeMousePositionDerivedAtom,
- eventMouseDownAtom,
- eventMouseLeaveAtom,
- eventMouseUpAtom,
- graphTooltipDataAtom
-} from './interactionWithGraphAtoms';
-
-const useStyles = makeStyles()(() => ({
- overlay: {
- cursor: 'crosshair'
- }
-}));
-
-interface CommonData {
- graphHeight: number;
- graphSvgRef: MutableRefObject;
- graphWidth: number;
- leftScale;
- lines;
- rightScale;
- timeSeries: Array;
- xScale: ScaleTime;
-}
-
-interface TimeShiftZonesData extends InteractedZone {
- graphInterval: GraphInterval;
-}
-
-interface Props {
- annotationData?: AnnotationEvent;
- commonData: CommonData;
- timeShiftZonesData: TimeShiftZonesData;
- zoomData: ZoomPreviewModel;
-}
-
-const InteractionWithGraph = ({
- zoomData,
- commonData,
- annotationData,
- timeShiftZonesData
-}: Props): JSX.Element => {
- const { classes } = useStyles();
-
- const setEventMouseDown = useSetAtom(eventMouseDownAtom);
- const setEventMouseUp = useSetAtom(eventMouseUpAtom);
- const setEventMouseLeave = useSetAtom(eventMouseLeaveAtom);
- const changeMousePosition = useSetAtom(changeMousePositionDerivedAtom);
- const setGraphTooltipData = useSetAtom(graphTooltipDataAtom);
-
- const {
- graphHeight,
- graphWidth,
- graphSvgRef,
- xScale,
- timeSeries,
- leftScale,
- rightScale,
- lines
- } = commonData;
-
- const displayZoomPreview = zoomData?.enable ?? true;
-
- const displayEventAnnotations =
- !isNil(annotationData?.data) && !isEmpty(annotationData?.data);
- const displayTimeShiftZones = timeShiftZonesData?.enable ?? true;
-
- const mouseLeave = (event): void => {
- setEventMouseLeave(event);
- setEventMouseDown(null);
- updateMousePosition(null);
- setGraphTooltipData(null);
- };
-
- const mouseUp = (event): void => {
- setEventMouseUp(event);
- setEventMouseDown(null);
- };
-
- const mouseMove = (event): void => {
- const mousePoint = Event.localPoint(
- graphSvgRef?.current as SVGSVGElement,
- event
- );
- if (!mousePoint) {
- return;
- }
- updateMousePosition([mousePoint.x, mousePoint.y]);
- };
-
- const mouseDown = (event): void => {
- setEventMouseDown(event);
- };
-
- const updateMousePosition = (pointPosition: MousePosition): void => {
- if (isNil(pointPosition)) {
- changeMousePosition({
- position: null
- });
- setGraphTooltipData(null);
-
- return;
- }
- const timeValue = getTimeValue({
- timeSeries,
- x: pointPosition[0],
- xScale
- });
-
- if (isNil(timeValue)) {
- changeMousePosition({
- position: null
- });
- setGraphTooltipData(null);
-
- return;
- }
-
- const date = timeValue.timeTick;
- const displayedMetricIds = pluck('metric_id', lines);
- const filteredMetricsValue = pick(displayedMetricIds, timeValue);
- const [, secondUnit, thirdUnit] = getUnits(lines as Array);
- const areAllValuesEmpty = pipe(values, all(isNil))(filteredMetricsValue);
-
- const linesData = getLinesForMetrics({
- lines,
- metricIds: keys(filteredMetricsValue).map(Number)
- });
-
- if (areAllValuesEmpty) {
- changeMousePosition({ position: pointPosition });
- setGraphTooltipData(null);
-
- return;
- }
-
- const distanceWithPointPositionPerMetric = reduce(
- (acc, [metricId, value]) => {
- if (isNil(value)) {
- return acc;
- }
-
- const lineData = getLineForMetric({
- lines,
- metric_id: Number(metricId)
- });
- const yScale = getYScale({
- hasMoreThanTwoUnits: Boolean(thirdUnit),
- invert: (lineData as Line).invert,
- leftScale,
- rightScale,
- secondUnit,
- unit: (lineData as Line).unit
- });
-
- const y0 = yScale(value);
-
- const diffBetweenY0AndPointPosition = Math.abs(
- y0 + margin.top - pointPosition[1]
- );
-
- return {
- ...acc,
- [metricId]: diffBetweenY0AndPointPosition
- };
- },
- {},
- Object.entries(filteredMetricsValue)
- );
-
- const nearestY0 = Math.min(...values(distanceWithPointPositionPerMetric));
-
- const nearestLine = pipe(
- toPairs,
- find(([, y0]) => equals(y0, nearestY0)) as () => [string, number]
- )(distanceWithPointPositionPerMetric);
-
- changeMousePosition({ position: pointPosition });
- setGraphTooltipData({
- date,
- highlightedMetricId: Number(nearestLine[0]),
- metrics: map(
- ({ metric_id, color, unit, legend, name }) => ({
- color,
- id: metric_id,
- name: formatMetricName({ legend, name }),
- unit,
- value: timeValue?.[metric_id]
- }),
- linesData
- ).filter(({ value }) => !isNil(value))
- });
- };
-
- return (
-
- {displayZoomPreview && (
-
- )}
- {displayEventAnnotations && (
- }
- graphHeight={graphHeight}
- graphSvgRef={graphSvgRef}
- graphWidth={graphWidth}
- xScale={xScale}
- />
- )}
- {displayTimeShiftZones && (
-
- )}
-
-
- );
-};
-
-export default InteractionWithGraph;
diff --git a/centreon/packages/ui/src/Graph/LineChart/Legend/index.tsx b/centreon/packages/ui/src/Graph/LineChart/Legend/index.tsx
deleted file mode 100644
index 397564bed5..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/Legend/index.tsx
+++ /dev/null
@@ -1,192 +0,0 @@
-import { Dispatch, ReactNode, SetStateAction, useMemo } from 'react';
-
-import { equals, prop, slice, sortBy } from 'ramda';
-
-import { Box, alpha, useTheme } from '@mui/material';
-
-import { useMemoComponent } from '@centreon/ui';
-
-import { formatMetricValue } from '../../common/timeSeries';
-import { Line } from '../../common/timeSeries/models';
-import { labelAvg, labelMax, labelMin } from '../translatedLabels';
-import { LegendModel } from '../models';
-import { margin } from '../common';
-
-import { useStyles } from './Legend.styles';
-import LegendHeader from './LegendHeader';
-import { GetMetricValueProps, LegendDisplayMode } from './models';
-import useLegend from './useLegend';
-import LegendContent from './LegendContent';
-
-interface Props extends Pick {
- base: number;
- height: number | null;
- limitLegend?: false | number;
- lines: Array;
- renderExtraComponent?: ReactNode;
- setLinesGraph: Dispatch | null>>;
- shouldDisplayLegendInCompactMode: boolean;
- toggable?: boolean;
-}
-
-const MainLegend = ({
- lines,
- base,
- toggable = true,
- limitLegend = false,
- renderExtraComponent,
- setLinesGraph,
- shouldDisplayLegendInCompactMode,
- placement,
- height,
- mode
-}: Props): JSX.Element => {
- const { classes, cx } = useStyles({ limitLegendRows: Boolean(limitLegend) });
- const theme = useTheme();
-
- const { selectMetricLine, clearHighlight, highlightLine, toggleMetricLine } =
- useLegend({ lines, setLinesGraph });
-
- const sortedData = sortBy(prop('metric_id'), lines);
-
- const isListMode = useMemo(() => equals(mode, 'list'), [mode]);
-
- const displayedLines = limitLegend
- ? slice(0, limitLegend, sortedData)
- : sortedData;
-
- const getMetricValue = ({ value, unit }: GetMetricValueProps): string =>
- formatMetricValue({
- base,
- unit,
- value
- }) || 'N/A';
-
- const selectMetric = ({ event, metric_id }): void => {
- if (!toggable) {
- return;
- }
-
- if (event.ctrlKey || event.metaKey) {
- toggleMetricLine(metric_id);
-
- return;
- }
-
- selectMetricLine(metric_id);
- };
-
- const itemMode =
- !isListMode && shouldDisplayLegendInCompactMode
- ? LegendDisplayMode.Compact
- : LegendDisplayMode.Normal;
-
- return (
-
-
- {displayedLines.map((line) => {
- const { color, display, highlight, metric_id } = line;
-
- const markerColor = display
- ? color
- : alpha(theme.palette.text.disabled, 0.2);
-
- const minMaxAvg = [
- {
- label: labelMin,
- value: line.minimum_value
- },
- {
- label: labelMax,
- value: line.maximum_value
- },
- {
- label: labelAvg,
- value: line.average_value
- }
- ];
-
- return (
-
selectMetric({ event, metric_id })}
- onMouseEnter={(): void => highlightLine(metric_id)}
- onMouseLeave={(): void => clearHighlight()}
- >
-
- {!shouldDisplayLegendInCompactMode && !isListMode && (
-
-
- {minMaxAvg.map(({ label, value }) => (
-
- ))}
-
-
- )}
-
- );
- })}
-
- {renderExtraComponent}
-
- );
-};
-
-const Legend = (props: Props): JSX.Element => {
- const {
- toggable,
- limitLegend,
- lines,
- base,
- shouldDisplayLegendInCompactMode,
- placement,
- height,
- mode
- } = props;
-
- return useMemoComponent({
- Component: ,
- memoProps: [
- lines,
- base,
- toggable,
- limitLegend,
- shouldDisplayLegendInCompactMode,
- placement,
- height,
- mode
- ]
- });
-};
-
-export default Legend;
diff --git a/centreon/packages/ui/src/Graph/LineChart/LineChart.cypress.spec.tsx b/centreon/packages/ui/src/Graph/LineChart/LineChart.cypress.spec.tsx
deleted file mode 100644
index 7d76d6f89c..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/LineChart.cypress.spec.tsx
+++ /dev/null
@@ -1,407 +0,0 @@
-import { LineChartData } from '../common/models';
-
-import dataLastDay from './mockedData/lastDay.json';
-import dataLastDayWithNullValues from './mockedData/lastDayWithNullValues.json';
-import dataLastDayWithIncompleteValues from './mockedData/lastDayWithIncompleteValues.json';
-import dataCurvesWithSameColor from './mockedData/curvesWithSameColor.json';
-import { args as argumentsData } from './helpers/doc';
-import { LineChartProps } from './models';
-
-import WrapperLineChart from '.';
-
-interface Props
- extends Pick {
- data?: LineChartData;
-}
-
-const initialize = ({
- data = dataLastDay,
- tooltip,
- legend,
- axis,
- lineStyle
-}: Props): void => {
- cy.mount({
- Component: (
-
- )
- });
-};
-
-describe('Line chart', () => {
- describe('Tooltip', () => {
- it('displays a tooltip when the graph is hovered', () => {
- initialize({});
-
- cy.contains('oracle-buffer-hit-ratio graph on srv-oracle-users').should(
- 'be.visible'
- );
- cy.contains('hitratio').should('be.visible');
- cy.contains('querytime').should('be.visible');
- cy.contains('connTime').should('be.visible');
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(250, 70);
-
- cy.contains('06/18/2023').should('be.visible');
-
- cy.contains('0.45 s').should('be.visible');
- cy.contains('75.93%').should('be.visible');
- cy.contains('0.43 s').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays a metric highlighted when the graph is hovered and the metric is the nearest point', () => {
- initialize({});
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
-
- cy.get('[data-metric="querytime"]').should(
- 'have.attr',
- 'data-highlight',
- 'false'
- );
- cy.get('[data-metric="connTime"]').should(
- 'have.attr',
- 'data-highlight',
- 'true'
- );
-
- cy.makeSnapshot();
- });
-
- it('does not display the tooltip when null values are hovered', () => {
- initialize({ data: dataLastDayWithNullValues });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(1185, 100);
-
- cy.get('[data-metric="querytime"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('displays the tooltip with defined values whent the graph is hovered', () => {
- initialize({ data: dataLastDayWithIncompleteValues });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(1162, 100);
-
- cy.get('[data-metric="querytime"]').should('be.visible');
- cy.get('[data-metric="hitratio"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('displays the tooltip a single metric when the corresponding prop is set', () => {
- initialize({ tooltip: { mode: 'single', sortOrder: 'name' } });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
-
- cy.get('[data-metric="connTime"]').should(
- 'have.attr',
- 'data-highlight',
- 'true'
- );
- cy.get('[data-metric="hitratio"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('does not display the tooltip when the corresponding prop is set', () => {
- initialize({ tooltip: { mode: 'hidden', sortOrder: 'name' } });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
-
- cy.get('[data-metric="querytime"]').should('not.exist');
- cy.get('[data-metric="connTime"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('sorts metrics by their value is ascending when the corresponding prop is set', () => {
- initialize({ tooltip: { mode: 'all', sortOrder: 'ascending' } });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
-
- cy.get('[data-metric="querytime"]').should('be.visible');
- cy.get('[data-metric="connTime"]').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('sorts metrics by their value is descending when the corresponding prop is set', () => {
- initialize({ tooltip: { mode: 'all', sortOrder: 'descending' } });
-
- cy.contains('Min: 70.31').should('be.visible');
-
- cy.findByTestId('graph-interaction-zone').realMouseMove(452, 26);
-
- cy.get('[data-metric="querytime"]').should('be.visible');
- cy.get('[data-metric="connTime"]').should('be.visible');
-
- cy.makeSnapshot();
- });
- });
-
- it('displays the curves with different shades when curves have same color', () => {
- initialize({ data: dataCurvesWithSameColor });
-
- cy.findByLabelText('Centreon-Server: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(41, 175, 238)');
- cy.findByLabelText('Centreon-Server_5: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(83, 191, 241)');
- cy.findByLabelText('Centreon-Server_4: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(8, 34, 47)');
- cy.findByLabelText('Centreon-Server_3: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(16, 70, 95)');
- cy.findByLabelText('Centreon-Server_2: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(24, 105, 142)');
- cy.findByLabelText('Centreon-Server_1: Round-Trip Average Time')
- .find('[data-icon="true"]')
- .should('have.css', 'background-color', 'rgb(32, 140, 190)');
-
- cy.get('[data-metric="1"]').should(
- 'have.attr',
- 'stroke',
- 'rgb(41, 175, 238)'
- );
- cy.get('[data-metric="21"]').should(
- 'have.attr',
- 'stroke',
- 'rgb(32, 140, 190)'
- );
- cy.get('[data-metric="17"]').should(
- 'have.attr',
- 'stroke',
- 'rgb(24, 105, 142)'
- );
- cy.get('[data-metric="13"]').should(
- 'have.attr',
- 'stroke',
- 'rgb(16, 70, 95)'
- );
- cy.get('[data-metric="9"]').should('have.attr', 'stroke', 'rgb(8, 34, 47)');
- cy.get('[data-metric="5"]').should(
- 'have.attr',
- 'stroke',
- 'rgb(83, 191, 241)'
- );
-
- cy.makeSnapshot();
- });
-
- describe('Legend', () => {
- it('displays the legend in list mode when the corresponding props is set', () => {
- initialize({ legend: { mode: 'list', placement: 'bottom' } });
-
- cy.contains('Min:').should('not.exist');
- cy.contains('Max:').should('not.exist');
- cy.contains('Avg:').should('not.exist');
-
- cy.get('[data-display-side="false"]').should('exist');
- cy.get('[data-as-list="true"]').should('exist');
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays the legend on the left side of the graph when the corresponding prop is set', () => {
- initialize({ legend: { mode: 'grid', placement: 'left' } });
-
- cy.get('[data-display-side="true"]').should('exist');
- cy.get('[data-as-list="true"]').should('exist');
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays the legend on the right side of the graph as list when the corresponding props are set', () => {
- initialize({ legend: { mode: 'list', placement: 'right' } });
-
- cy.get('[data-display-side="true"]').should('exist');
- cy.get('[data-as-list="true"]').should('exist');
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.makeSnapshot();
- });
- });
-
- describe('Axis', () => {
- it('does not display axis borders when the prop is set', () => {
- initialize({ axis: { showBorder: false } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.get('line[class*="visx-axis-line"]')
- .eq(0)
- .should('have.attr', 'stroke-width')
- .and('equal', '0');
- cy.get('line[class*="visx-axis-line"]')
- .eq(1)
- .should('have.attr', 'stroke-width')
- .and('equal', '0');
- cy.get('line[class*="visx-axis-line"]')
- .eq(2)
- .should('have.attr', 'stroke-width')
- .and('equal', '0');
-
- cy.makeSnapshot();
- });
-
- it('does not display grids when the prop is set', () => {
- initialize({ axis: { showGridLines: false } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.get('g[class="visx-group visx-rows"]').should('not.exist');
- cy.get('g[class="visx-group visx-columns"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('displays only horizontal lines when the prop is set', () => {
- initialize({ axis: { gridLinesType: 'horizontal' } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.get('g[class="visx-group visx-rows"]').should('be.visible');
- cy.get('g[class="visx-group visx-columns"]').should('not.exist');
-
- cy.makeSnapshot();
- });
-
- it('displays only vertical lines when the prop is set', () => {
- initialize({ axis: { gridLinesType: 'vertical' } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.get('g[class="visx-group visx-rows"]').should('not.exist');
- cy.get('g[class="visx-group visx-columns"]').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('rotates the tick label when the props is set', () => {
- initialize({ axis: { yAxisTickLabelRotation: -35 } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.get('text[transform="rotate(-35, -2, 388)"]').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays as centered to zero when the prop is set', () => {
- initialize({ axis: { isCenteredZero: true } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.contains('0.9').should('be.visible');
- cy.contains('-0.9').should('be.visible');
-
- cy.makeSnapshot();
- });
- });
-
- describe('Line style', () => {
- it('displays the curve in a natural style when the prop is set', () => {
- initialize({ lineStyle: { curve: 'natural' } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays the curve in a step style when the prop is set', () => {
- initialize({ lineStyle: { curve: 'step' } });
-
- cy.contains('9:00 AM').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('shows the area when the prop is set', () => {
- initialize({ lineStyle: { showArea: true } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('path[fill="rgba(102, 153, 204, 0.19999999999999996)"]').should(
- 'be.visible'
- );
-
- cy.makeSnapshot();
- });
-
- it('shows the area with a custom transparency when props are set', () => {
- initialize({ lineStyle: { areaTransparency: 20, showArea: true } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('path[fill="rgba(102, 153, 204, 0.8)"]').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('shows points when the prop is set', () => {
- initialize({ lineStyle: { showPoints: true } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('circle[cx="4.0625"]').should('be.visible');
- cy.get('circle[cy="163.69430856642046"]').should('be.visible');
-
- cy.makeSnapshot();
- });
-
- it('displays lines with a custom line width when the prop is set', () => {
- initialize({ lineStyle: { lineWidth: 6 } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('path[stroke-width="6"]').should('have.length', 3);
-
- cy.makeSnapshot();
- });
-
- it('displays lines with dots width when the prop is set', () => {
- initialize({ lineStyle: { dotOffset: 10, lineWidth: 4 } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('path[stroke-width="4"]')
- .should('have.attr', 'stroke-dasharray')
- .and('equals', '4 10');
- });
-
- it('displays lines with dots width when the prop is set', () => {
- initialize({ lineStyle: { dashLength: 5, dashOffset: 8 } });
-
- cy.contains('9:00 AM').should('be.visible');
- cy.get('path[stroke-width="2"]')
- .should('have.attr', 'stroke-dasharray')
- .and('equals', '5 8');
- });
- });
-});
diff --git a/centreon/packages/ui/src/Graph/LineChart/LineChart.styles.ts b/centreon/packages/ui/src/Graph/LineChart/LineChart.styles.ts
deleted file mode 100644
index dd1a4fc4d2..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/LineChart.styles.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { makeStyles } from 'tss-react/mui';
-
-const useStyles = makeStyles()((theme) => ({
- container: {
- '& .visx-axis-bottom': {
- '& .visx-axis-tick': {
- '& .visx-line': {
- stroke: theme.palette.text.primary
- },
- text: {
- fill: theme.palette.text.primary
- }
- }
- },
- '& .visx-axis-line': {
- stroke: theme.palette.text.primary
- },
- '& .visx-axis-right': {
- '& .visx-axis-tick': {
- '& .visx-line': {
- stroke: theme.palette.text.primary
- }
- }
- },
- '& .visx-columns': {
- '& .visx-line': {
- stroke: theme.palette.divider
- }
- },
- '& .visx-rows': {
- '& .visx-line': {
- stroke: theme.palette.divider
- }
- },
- fill: theme.palette.text.primary,
- position: 'relative'
- },
- graphValueTooltip: {
- backgroundColor: theme.palette.background.paper,
- borderRadius: theme.shape.borderRadius,
- boxShadow: theme.shadows[3],
- color: theme.palette.text.primary,
- maxWidth: 'none',
- padding: 0
- },
- header: {
- display: 'grid',
- gridTemplateColumns: '0.4fr 1fr 0.4fr',
- width: '100%'
- }
-}));
-
-export { useStyles };
diff --git a/centreon/packages/ui/src/Graph/LineChart/LineChart.tsx b/centreon/packages/ui/src/Graph/LineChart/LineChart.tsx
deleted file mode 100644
index bca63f774f..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/LineChart.tsx
+++ /dev/null
@@ -1,403 +0,0 @@
-import { MutableRefObject, useMemo, useRef, useState } from 'react';
-
-import { Group, Tooltip } from '@visx/visx';
-import { equals, flatten, gt, isNil, lte, pluck, reduce } from 'ramda';
-
-import {
- ClickAwayListener,
- Fade,
- Skeleton,
- Stack,
- useTheme
-} from '@mui/material';
-
-import {
- getLeftScale,
- getRightScale,
- getUnits,
- getXScale
-} from '../common/timeSeries';
-import { Line } from '../common/timeSeries/models';
-import { Thresholds as ThresholdsModel } from '../common/models';
-import { Tooltip as MuiTooltip } from '../../components/Tooltip';
-
-import Axes from './BasicComponents/Axes';
-import Grids from './BasicComponents/Grids';
-import Lines from './BasicComponents/Lines';
-import { canDisplayThreshold } from './BasicComponents/Lines/Threshold/models';
-import useFilterLines from './BasicComponents/useFilterLines';
-import { useStyles } from './LineChart.styles';
-import Header from './Header';
-import InteractionWithGraph from './InteractiveComponents';
-import GraphTooltip from './InteractiveComponents/Tooltip';
-import useGraphTooltip from './InteractiveComponents/Tooltip/useGraphTooltip';
-import Legend from './Legend';
-import { margin } from './common';
-import { Data, GlobalAreaLines, GraphInterval, LineChartProps } from './models';
-import { useIntersection } from './useLineChartIntersection';
-import Thresholds from './BasicComponents/Thresholds';
-import { legendWidth } from './Legend/Legend.styles';
-import GraphValueTooltip from './InteractiveComponents/GraphValueTooltip/GraphValueTooltip';
-
-const extraMargin = 10;
-
-interface Props extends LineChartProps {
- graphData: Data;
- graphInterval: GraphInterval;
- graphRef: MutableRefObject;
- limitLegend?: false | number;
- shapeLines?: GlobalAreaLines;
- thresholdUnit?: string;
- thresholds?: ThresholdsModel;
-}
-
-const baseStyles = {
- ...Tooltip.defaultStyles,
- textAlign: 'center'
-};
-
-const LineChart = ({
- graphData,
- height = 500,
- width,
- shapeLines,
- axis,
- displayAnchor,
- zoomPreview,
- graphInterval,
- timeShiftZones,
- annotationEvent,
- tooltip,
- legend,
- graphRef,
- header,
- lineStyle,
- thresholds,
- thresholdUnit,
- limitLegend
-}: Props): JSX.Element => {
- const { classes } = useStyles();
-
- const theme = useTheme();
-
- const [linesGraph, setLinesGraph] = useState | null>(null);
- const graphSvgRef = useRef(null);
-
- const { isInViewport } = useIntersection({ element: graphRef?.current });
-
- const legendRef = useRef(null);
-
- const {
- tooltipOpen: thresholdTooltipOpen,
- tooltipLeft: thresholdTooltipLeft,
- tooltipTop: thresholdTooltipTop,
- tooltipData: thresholdTooltipData,
- hideTooltip: hideThresholdTooltip,
- showTooltip: showThresholdTooltip
- } = Tooltip.useTooltip();
-
- const { title, timeSeries, baseAxis, lines } = graphData;
-
- const thresholdValues = flatten([
- pluck('value', thresholds?.warning || []),
- pluck('value', thresholds?.critical || [])
- ]);
-
- const { displayedLines, newLines } = useFilterLines({
- displayThreshold: canDisplayThreshold(shapeLines?.areaThresholdLines),
- lines,
- linesGraph,
- setLinesGraph
- });
-
- const legendBoundingHeight =
- !equals(legend?.display, false) &&
- (isNil(legend?.placement) || equals(legend?.placement, 'bottom'))
- ? legendRef.current?.getBoundingClientRect().height || 0
- : 0;
- const legendBoundingWidth =
- !equals(legend?.display, false) &&
- (equals(legend?.placement, 'left') || equals(legend?.placement, 'right'))
- ? legendRef.current?.getBoundingClientRect().width || 0
- : 0;
-
- const [, secondUnit] = getUnits(displayedLines);
-
- const graphWidth =
- width > 0
- ? width -
- margin.left -
- (secondUnit ? margin.right : 8) -
- extraMargin -
- legendBoundingWidth
- : 0;
- const graphHeight =
- (height || 0) > 0
- ? (height || 0) - margin.top - 5 - legendBoundingHeight
- : 0;
-
- const xScale = useMemo(
- () =>
- getXScale({
- dataTime: timeSeries,
- valueWidth: graphWidth
- }),
- [timeSeries, graphWidth]
- );
-
- const leftScale = useMemo(
- () =>
- getLeftScale({
- dataLines: displayedLines,
- dataTimeSeries: timeSeries,
- isCenteredZero: axis?.isCenteredZero,
- scale: axis?.scale,
- scaleLogarithmicBase: axis?.scaleLogarithmicBase,
- thresholdUnit,
- thresholds: (thresholds?.enabled && thresholdValues) || [],
- valueGraphHeight: graphHeight - 35
- }),
- [
- displayedLines,
- timeSeries,
- graphHeight,
- thresholdValues,
- axis?.isCenteredZero,
- axis?.scale,
- axis?.scaleLogarithmicBase
- ]
- );
-
- const rightScale = useMemo(
- () =>
- getRightScale({
- dataLines: displayedLines,
- dataTimeSeries: timeSeries,
- isCenteredZero: axis?.isCenteredZero,
- scale: axis?.scale,
- scaleLogarithmicBase: axis?.scaleLogarithmicBase,
- thresholdUnit,
- thresholds: (thresholds?.enabled && thresholdValues) || [],
- valueGraphHeight: graphHeight - 35
- }),
- [
- timeSeries,
- displayedLines,
- graphHeight,
- axis?.isCenteredZero,
- axis?.scale,
- axis?.scaleLogarithmicBase
- ]
- );
-
- const graphTooltipData = useGraphTooltip({
- graphWidth,
- timeSeries,
- xScale
- });
-
- const displayLegend = legend?.display ?? true;
- const displayTooltip = !isNil(tooltip?.renderComponent);
-
- const legendItemsWidth = reduce(
- (acc) => acc + legendWidth * 8 + 24,
- 0,
- displayedLines
- );
-
- const displayLegendInBottom =
- isNil(legend?.placement) || equals(legend?.placement, 'bottom');
-
- const shouldDisplayLegendInCompactMode =
- lte(graphWidth, 808) &&
- gt(legendItemsWidth, graphWidth) &&
- displayLegendInBottom;
-
- const showGridLines = useMemo(
- () => isNil(axis?.showGridLines) || axis?.showGridLines,
- [axis?.showGridLines]
- );
-
- if (!isInViewport) {
- return (
-
- );
- }
-
- return (
- <>
-
-
-
- )
- }
- >
-
-
- {displayLegend &&
- (equals(legend?.placement, 'left') ||
- equals(legend?.placement, 'right')) && (
-
-
-
- )}
-
-
- {showGridLines && (
-
- )}
-
-
-
-
-
-
- {thresholds?.enabled && (
-
- )}
-
-
-
- {displayTooltip && (
-
- )}
-
-
- {thresholdTooltipData}
-
-
-
-
-
- {displayLegend && displayLegendInBottom && (
-
-
-
- )}
- >
- );
-};
-
-export default LineChart;
diff --git a/centreon/packages/ui/src/Graph/LineChart/common/index.ts b/centreon/packages/ui/src/Graph/LineChart/common/index.ts
deleted file mode 100644
index 80e40f5d99..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/common/index.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import * as Curve from '@visx/curve';
-import { always, cond, equals, isNil } from 'ramda';
-
-import { alpha } from '@mui/material';
-
-const commonTickLabelProps = {
- fontFamily: 'Roboto, sans-serif',
- fontSize: 10,
- textAnchor: 'middle'
-};
-
-const margin = { bottom: 30, left: 50, right: 50, top: 30 };
-
-interface FillColor {
- areaColor: string;
- transparency: number;
-}
-
-const getFillColor = ({
- transparency,
- areaColor
-}: FillColor): string | undefined => {
- return !isNil(transparency)
- ? alpha(areaColor, 1 - transparency * 0.01)
- : undefined;
-};
-
-const dateFormat = 'L';
-const timeFormat = 'LT';
-const dateTimeFormat = `${dateFormat} ${timeFormat}`;
-const maxLinesDisplayedLegend = 11;
-
-const getCurveFactory = (
- curve: 'linear' | 'step' | 'natural'
-): typeof Curve.curveLinear => {
- return cond([
- [equals('linear'), always(Curve.curveLinear)],
- [equals('step'), always(Curve.curveStep)],
- [equals('natural'), always(Curve.curveCatmullRom)]
- ])(curve);
-};
-
-export {
- commonTickLabelProps,
- margin,
- getFillColor,
- dateFormat,
- timeFormat,
- dateTimeFormat,
- maxLinesDisplayedLegend,
- getCurveFactory
-};
diff --git a/centreon/packages/ui/src/Graph/LineChart/graphAtoms.ts b/centreon/packages/ui/src/Graph/LineChart/graphAtoms.ts
deleted file mode 100644
index 8e9ff5d233..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/graphAtoms.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { atom } from 'jotai';
-
-export const timeTickGraphAtom = atom(null);
diff --git a/centreon/packages/ui/src/Graph/LineChart/helpers/index.ts b/centreon/packages/ui/src/Graph/LineChart/helpers/index.ts
deleted file mode 100644
index 2ac5061750..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/helpers/index.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import dayjs from 'dayjs';
-import { gt, gte, isEmpty, isNil, prop, propEq, reject, sortBy } from 'ramda';
-
-import { LinesData } from '../BasicComponents/Lines/models';
-import { dateFormat, timeFormat } from '../common';
-import { GetDate, GraphInterval } from '../models';
-import {
- getLineData,
- getTimeSeries,
- getTimeValue
-} from '../../common/timeSeries';
-import { LineChartData } from '../../common/models';
-
-export const adjustGraphData = (graphData: LineChartData): LinesData => {
- const lines = getLineData(graphData);
- const sortedLines = sortBy(prop('name'), lines);
- const displayedLines = reject(propEq(false, 'display'), sortedLines);
-
- const timeSeries = getTimeSeries(graphData);
-
- return { lines: displayedLines, timeSeries };
-};
-
-export const getXAxisTickFormat = (graphInterval: GraphInterval): string => {
- if (
- isNil(graphInterval) ||
- isNil(graphInterval?.start) ||
- isNil(graphInterval?.end)
- ) {
- return timeFormat;
- }
- const { end, start } = graphInterval;
- const numberDays = dayjs.duration(dayjs(end).diff(dayjs(start))).asDays();
-
- return gte(numberDays, 2) ? dateFormat : timeFormat;
-};
-
-export const truncate = (content?: string): string => {
- const maxLength = 180;
-
- if (isNil(content)) {
- return '';
- }
-
- if (gt(content.length, maxLength)) {
- return `${content.substring(0, maxLength)}...`;
- }
-
- return content;
-};
-
-export const displayArea = (data: unknown): boolean =>
- !isEmpty(data) && !isNil(data);
-
-export const getDate = ({ positionX, xScale, timeSeries }: GetDate): Date => {
- const { timeTick } = getTimeValue({
- timeSeries,
- x: positionX,
- xScale
- });
-
- return new Date(timeTick);
-};
diff --git a/centreon/packages/ui/src/Graph/LineChart/index.stories.tsx b/centreon/packages/ui/src/Graph/LineChart/index.stories.tsx
deleted file mode 100644
index ddf162db52..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/index.stories.tsx
+++ /dev/null
@@ -1,502 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { Meta, StoryObj } from '@storybook/react';
-
-import { Button } from '@mui/material';
-import ButtonGroup from '@mui/material/ButtonGroup';
-import Switch from '@mui/material/Switch';
-import Tooltip from '@mui/material/Tooltip';
-
-import { useLocaleDateTimeFormat } from '@centreon/ui';
-
-import TimePeriod from '../../TimePeriods';
-import { LineChartData } from '../common/models';
-
-import { dateTimeFormat } from './common';
-import {
- argTypes,
- args as argumentsData,
- defaultEnd,
- defaultLast7days,
- defaultLastMonth,
- defaultStart,
- lastDayForwardDate,
- zoomPreviewDate
-} from './helpers/doc';
-import annotationData from './mockedData/annotationData.json';
-import exclusionPeriodFirstPeriod from './mockedData/exclusionPeriodFirstPeriod.json';
-import exclusionPeriodSecondPeriod from './mockedData/exclusionPeriodSecondPeriod.json';
-import exclusionPeriodThirdPeriod from './mockedData/exclusionPeriodThirdPeriod.json';
-import dataLastDayForword from './mockedData/lastDayForward.json';
-import dataLastDayThreshold from './mockedData/lastDayThreshold.json';
-import dataLastMonth from './mockedData/lastMonth.json';
-import dataLastWeek from './mockedData/lastWeek.json';
-import dataZoomPreview from './mockedData/zoomPreview.json';
-import dataLastDay from './mockedData/lastDay.json';
-import dataCurvesSameColor from './mockedData/curvesWithSameColor.json';
-import { Interval, ThresholdType, TooltipData } from './models';
-
-import WrapperLineChart from './index';
-
-const meta: Meta = {
- component: WrapperLineChart
-};
-export default meta;
-
-type Story = StoryObj;
-
-interface Random {
- max: number;
- min: number;
-}
-
-const Threshold = (args): JSX.Element => {
- const [currentFactorMultiplication, setCurrentFactorMultiplication] =
- useState(2.5);
- const [countedCircles, setCountedCircles] = useState();
-
- const getRandomInt = ({ min, max }: Random): number => {
- return Math.floor(Math.random() * (max - min) + min);
- };
-
- const handleClick = (): void => {
- setCurrentFactorMultiplication(getRandomInt({ max: 5, min: 1 }));
- };
-
- const getCountDisplayedCircles = (value: number): void => {
- setCountedCircles(value);
- };
-
- return (
- <>
-
- change envelope size randomly
-
-
-
- >
- );
-};
-
-const ExternalComponent = (tooltipData): JSX.Element => {
- const { hideTooltip, data } = tooltipData;
- const { format } = useLocaleDateTimeFormat();
-
- return (
- <>
- External component
-
-
- {format({
- date: data,
- formatString: dateTimeFormat
- })}
-
-
- hideTooltip()}>
- hide tooltip
-
- >
- );
-};
-
-const LineChartAndCLS = (args): JSX.Element => {
- const [data, setData] = useState(null);
- const [loading, setLoading] = useState(true);
-
- useEffect(() => {
- setTimeout(() => {
- setLoading(false);
- setData(dataLastDayThreshold as unknown as LineChartData);
- }, 100000);
- }, []);
-
- return (
-
- );
-};
-
-interface TimePeriodSwitchProps {
- getDataSwitch: (value: boolean) => void;
-}
-
-const TimePeriodSwitch = ({
- getDataSwitch
-}: TimePeriodSwitchProps): JSX.Element => {
- const [checked, setChecked] = useState(false);
-
- const handleChange = (event: React.ChangeEvent): void => {
- setChecked(event.target.checked);
- };
-
- useEffect(() => {
- getDataSwitch?.(checked);
- }, [checked]);
-
- return (
-
- );
-};
-
-const LineChartAndTimePeriod = (args): JSX.Element => {
- const [currentData, setCurrentData] = useState();
- const [start, setStart] = useState();
- const [end, setEnd] = useState();
- const [displayAnnotation, setDisplayAnnotation] = useState();
- const [adjustedTimePeriodInterval, setAdjustedTimePeriodInterval] =
- useState();
-
- const getParameters = (interval): void => {
- setStart(interval.start);
- setEnd(interval.end);
- };
-
- useEffect(() => {
- if (!start || !end) {
- return;
- }
- if (start.includes(lastDayForwardDate)) {
- setCurrentData(dataLastDayForword as unknown as LineChartData);
-
- return;
- }
-
- if (start.includes(`${defaultStart.split('T')[0]}`)) {
- setCurrentData(dataLastDayThreshold as unknown as LineChartData);
-
- return;
- }
- if (start.includes(defaultLast7days.split('T')[0])) {
- setCurrentData(dataLastWeek as unknown as LineChartData);
-
- return;
- }
- if (start.includes(defaultLastMonth.split('T')[0])) {
- setCurrentData(dataLastMonth as unknown as LineChartData);
-
- return;
- }
- if (start.includes(zoomPreviewDate)) {
- setCurrentData(dataZoomPreview as unknown as LineChartData);
- }
- }, [start, end, adjustedTimePeriodInterval]);
-
- const getInterval = (interval: Interval): void => {
- setAdjustedTimePeriodInterval(interval);
- };
-
- const getDataSwitch = (value): void => {
- setDisplayAnnotation(value);
- };
-
- const annotationEventData = displayAnnotation && {
- data: annotationData.result
- };
-
- return (
- <>
-
- }
- />
- (
-
- )
- }}
- zoomPreview={{ enable: true, getInterval }}
- />
- >
- );
-};
-
-const LineChartAndExclusionPeriod = (args): JSX.Element => {
- const [dataExclusionPeriods, setDataExclusionPeriods] = useState<
- Array
- >([exclusionPeriodFirstPeriod as unknown as LineChartData]);
-
- const handleClick = (data): void => {
- setDataExclusionPeriods([...dataExclusionPeriods, data]);
- };
-
- return (
- <>
- Add exclusion periods:
-
- handleClick(exclusionPeriodSecondPeriod)}>
- first
-
- handleClick(exclusionPeriodThirdPeriod)}>
- second
-
-
-
- >
- );
-};
-
-const Template: Story = {
- render: (args) => (
-
- )
-};
-
-const WithTimePeriod = {
- render: (args): JSX.Element =>
-};
-
-const LineChartWithExclusionPeriod: Story = {
- render: (args) =>
-};
-
-const LineChartWithEnvelopVariation: Story = {
- render: (args) =>
-};
-
-const LineChartWithCLS: Story = {
- render: (args) =>
-};
-
-export const LineChart: Story = {
- ...Template,
- argTypes,
- args: argumentsData
-};
-
-export const LineChartWithStepCurve: Story = {
- ...Template,
- argTypes,
- args: {
- ...argumentsData,
- curve: 'step'
- }
-};
-
-export const LineChartWithTimePeriod: Story = {
- ...WithTimePeriod,
- args: {
- end: defaultEnd,
- height: 500,
- start: defaultStart
- },
- parameters: {
- chromatic: { disableSnapshot: true }
- }
-};
-
-export const WithEnvelopVariation: Story = {
- ...LineChartWithEnvelopVariation,
- args: {
- end: defaultEnd,
- height: 500,
- start: defaultStart
- }
-};
-
-export const withExclusionPeriods: Story = {
- ...LineChartWithExclusionPeriod,
- args: {
- end: defaultEnd,
- height: 500,
- start: defaultStart
- }
-};
-
-export const withCLS: Story = {
- ...LineChartWithCLS,
- args: {
- end: defaultEnd,
- height: 500,
- start: defaultStart
- }
-};
-
-export const withThresholds: Story = {
- argTypes,
- args: {
- ...argumentsData,
- thresholds: {
- critical: [
- {
- label: 'critical',
- value: 350
- }
- ],
- enabled: true,
- warning: [
- {
- label: 'warning',
- value: 300
- }
- ]
- }
- },
- render: (args) => (
-
- )
-};
-
-export const withThresholdsAndUnit: Story = {
- argTypes,
- args: {
- ...argumentsData,
- thresholdUnit: '%',
- thresholds: {
- critical: [
- {
- label: 'critical',
- value: 79
- }
- ],
- enabled: true,
- warning: [
- {
- label: 'warning',
- value: 65
- }
- ]
- }
- },
- render: (args) => (
-
- )
-};
-
-export const thresholdsRange: Story = {
- argTypes,
- args: {
- ...argumentsData,
- thresholdUnit: '%',
- thresholds: {
- critical: [
- {
- label: 'critical 1',
- value: 60
- },
- {
- label: 'critical 2',
- value: 79
- }
- ],
- enabled: true,
- warning: [
- {
- label: 'warning 1',
- value: 20
- },
- {
- label: 'warning 2',
- value: 30
- }
- ]
- }
- },
- render: (args) => (
-
- )
-};
-
-export const LineChartWithSameColorCurves: Story = {
- ...Template,
- argTypes,
- args: {
- ...argumentsData,
- lineStyle: {
- areaTransparency: 10,
- dashLength: 10,
- dashOffset: 10,
- lineWidth: 9,
- showArea: true,
- showPoints: true
- }
- },
- render: (args) => (
-
- )
-};
diff --git a/centreon/packages/ui/src/Graph/LineChart/index.tsx b/centreon/packages/ui/src/Graph/LineChart/index.tsx
deleted file mode 100644
index fa20058c80..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/index.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-import { MutableRefObject, useRef } from 'react';
-
-import dayjs from 'dayjs';
-import 'dayjs/locale/en';
-import 'dayjs/locale/es';
-import 'dayjs/locale/fr';
-import 'dayjs/locale/pt';
-import localizedFormat from 'dayjs/plugin/localizedFormat';
-import timezonePlugin from 'dayjs/plugin/timezone';
-import utcPlugin from 'dayjs/plugin/utc';
-
-import { ParentSize } from '../..';
-import { LineChartData, Thresholds } from '../common/models';
-
-import LineChart from './LineChart';
-import LoadingSkeleton from './LoadingSkeleton';
-import { GlobalAreaLines, LineChartProps } from './models';
-import useLineChartData from './useLineChartData';
-
-dayjs.extend(localizedFormat);
-dayjs.extend(utcPlugin);
-dayjs.extend(timezonePlugin);
-
-interface Props extends Partial {
- data?: LineChartData;
- end: string;
- limitLegend?: false | number;
- loading: boolean;
- shapeLines?: GlobalAreaLines;
- start: string;
- thresholdUnit?: string;
- thresholds?: Thresholds;
-}
-
-const WrapperLineChart = ({
- end,
- start,
- height = 500,
- width,
- shapeLines,
- axis,
- displayAnchor,
- zoomPreview,
- data,
- loading,
- timeShiftZones,
- tooltip = {
- mode: 'all',
- sortOrder: 'name'
- },
- annotationEvent,
- legend = {
- display: true,
- mode: 'grid',
- placement: 'bottom'
- },
- header,
- lineStyle,
- thresholds,
- thresholdUnit,
- limitLegend
-}: Props): JSX.Element | null => {
- const { adjustedData } = useLineChartData({ data, end, start });
- const lineChartRef = useRef(null);
-
- if (loading && !adjustedData) {
- return (
-
- );
- }
-
- if (!adjustedData) {
- return null;
- }
-
- return (
- }
- style={{ height: '100%', overflow: 'hidden', width: '100%' }}
- >
-
- {({
- height: responsiveHeight,
- width: responsiveWidth
- }): JSX.Element => {
- return (
-
- );
- }}
-
-
- );
-};
-
-export default WrapperLineChart;
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/annotationData.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/annotationData.json
deleted file mode 100644
index 1ac3819318..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/annotationData.json
+++ /dev/null
@@ -1,326 +0,0 @@
-
-{
- "result": [
- {
- "id": 78662735,
- "type": "comment",
- "date": "2023-06-07T20:07:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 85.149% (memory used)",
- "contact": "nouha",
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "tries": 1
- },
- {
- "id": 78662642,
- "type": "comment",
- "date": "2023-06-07T19:57:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.908% (memory used)",
- "contact": "nouha",
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 3
- },
- {
- "id": 78662621,
- "type": "comment",
- "date": "2023-06-07T19:56:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 82.956% (memory used)",
- "contact": "nouha",
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 2
- },
- {
- "id": 78662612,
- "type": "downtime",
- "date": "2023-06-07T19:55:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.341% (memory used)",
- "contact": "nouha",
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 1
- },
- {
- "id": 78662414,
- "type": "downtime",
- "date": "2023-06-07T19:45:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 85.217% (memory used)",
- "contact": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "tries": 1
- },
- {
- "id": 78661672,
- "type": "downtime",
- "date": "2023-06-07T19:05:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.467% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 3
- },
- {
- "id": 78661660,
- "type": "acknowledgement",
- "date": "2023-06-07T19:04:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 83.731% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 2
- },
- {
- "id": 78661625,
- "type": "acknowledgement",
- "date": "2023-06-07T19:03:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.825% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 1
- },
- {
- "id": 78659281,
- "type": "acknowledgement",
- "date": "2023-06-07T17:18:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 86.132% (memory used)",
- "contact": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "tries": 1
- },
- {
- "id": 78658829,
- "type": "acknowledgement",
- "date": "2023-06-07T16:58:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 82.638% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 3
- },
- {
- "id": 78658821,
- "type": "event",
- "date": "2023-06-07T16:57:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 83.353% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 2
- },
- {
- "id": 78658804,
- "type": "event",
- "date": "2023-06-07T16:56:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.231% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 1
- },
- {
- "id": 78658665,
- "type": "event",
- "date": "2023-06-07T16:51:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 85.792% (memory used)",
- "contact": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "tries": 1
- },
- {
- "id": 78650736,
- "type": "event",
- "date": "2023-06-07T11:06:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 81.780% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 3
- },
- {
- "id": 78650731,
- "type": "event",
- "date": "2023-06-07T11:05:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 82.828% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 2
- },
- {
- "id": 78650689,
- "type": "event",
- "date": "2023-06-07T11:04:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.561% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 1
- },
- {
- "id": 78650260,
- "type": "event",
- "date": "2023-06-07T10:44:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 85.529% (memory used)",
- "contact": null,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 5
- },
- "tries": 1
- },
- {
- "id": 78650158,
- "type": "event",
- "date": "2023-06-07T10:39:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.905% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 3
- },
- {
- "id": 78650096,
- "type": "event",
- "date": "2023-06-07T10:38:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 84.210% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 2
- },
- {
- "id": 78650057,
- "type": "event",
- "date": "2023-06-07T10:37:28+02:00",
- "start_date": null,
- "end_date": null,
- "content": "Shared pool hit ratio = 83.771% (memory used)",
- "contact": null,
- "status": {
- "code": 1,
- "name": "WARNING",
- "severity_code": 2
- },
- "tries": 1
- }
- ],
- "meta": {
- "page": 1,
- "limit": 20,
- "search": {
- "$and": [
- {
- "date": {
- "$gt": "2023-06-06T19:27:15.554Z"
- }
- },
- {
- "date": {
- "$lt": "2023-06-07T19:27:15.554Z"
- }
- }
- ]
- },
- "sort_by": {},
- "total": 44
- }
-}
-
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodFirstPeriod.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodFirstPeriod.json
deleted file mode 100644
index 014cca593a..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodFirstPeriod.json
+++ /dev/null
@@ -1,588 +0,0 @@
-{
- "global": {
- "title": "anomaly-nbr-connect graph on fw-brasilia",
- "start": "2023-06-14T21:02:27+02:00",
- "end": "2023-06-15T00:02:58+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 1,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 152032,
- "metric_id": 15165,
- "metric": "connection",
- "metric_legend": "connection",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#993366"
- },
- "legend": "connection",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 22.203333333,
- 27.576666667,
- 27.406666667,
- 22.22,
- 25.78,
- 15.846666667,
- 15.39,
- 22.373333333,
- 20.813333333,
- 23.983333333,
- 28.186666667,
- 26.61,
- 26,
- 22.813333333,
- 18.016666667,
- 13.813333333,
- 16.186666667,
- 17.796666667,
- 21.983333333,
- 14.236666667,
- 23.153333333,
- 17.236666667,
- 15,
- 20.576666667,
- 22.796666667,
- 27.78,
- 28.203333333,
- 27.203333333,
- 14.253333333,
- 13.39,
- 21.17,
- 19.813333333,
- 22.186666667,
- 14.236666667,
- 22.356666667,
- 15.44,
- 14.593333333
- ],
- "prints": [
- [
- "Last:14.59"
- ],
- [
- "Min:13.39"
- ],
- [
- "Max:28.20"
- ],
- [
- "Average:20.77"
- ]
- ],
- "last_value": 14.59,
- "minimum_value": 13.39,
- "maximum_value": 28.2,
- "average_value": 20.77
- },
- {
- "index_id": 152032,
- "metric_id": 16196,
- "metric": "connection_fit",
- "metric_legend": "connection_fit",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9933ff"
- },
- "legend": "connection_fit",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527
- ],
- "prints": [
- [
- "Last:19.35"
- ],
- [
- "Min:18.93"
- ],
- [
- "Max:19.49"
- ],
- [
- "Average:19.10"
- ]
- ],
- "last_value": 19.35,
- "minimum_value": 18.93,
- "maximum_value": 19.49,
- "average_value": 19.1
- },
- {
- "index_id": 152032,
- "metric_id": 16197,
- "metric": "connection_lower_margin",
- "metric_legend": "connection_lower_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#00ff99"
- },
- "legend": "connection_lower_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88
- ],
- "prints": [
- [
- "Last:-17.88"
- ],
- [
- "Min:-17.88"
- ],
- [
- "Max:-17.88"
- ],
- [
- "Average:-17.88"
- ]
- ],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 16198,
- "metric": "connection_upper_margin",
- "metric_legend": "connection_upper_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9900ff"
- },
- "legend": "connection_upper_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15
- ],
- "prints": [
- [
- "Last:10.15"
- ],
- [
- "Min:10.15"
- ],
- [
- "Max:10.15"
- ],
- [
- "Average:10.15"
- ]
- ],
- "last_value": 10.15,
- "minimum_value": 10.15,
- "maximum_value": 10.15,
- "average_value": 10.15
- },
- {
- "index_id": 152032,
- "metric_id": 15177,
- "metric": "connection_lower_thresholds",
- "metric_legend": "connection_lower_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 50,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Lower Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_lower_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Lower Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Lower Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 15178,
- "metric": "connection_upper_thresholds",
- "metric_legend": "connection_upper_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 51,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Upper Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_upper_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Upper Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Upper Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- }
- ],
- "times": [
- "2023-06-14T21:05:00+02:00",
- "2023-06-14T21:10:00+02:00",
- "2023-06-14T21:15:00+02:00",
- "2023-06-14T21:20:00+02:00",
- "2023-06-14T21:25:00+02:00",
- "2023-06-14T21:30:00+02:00",
- "2023-06-14T21:35:00+02:00",
- "2023-06-14T21:40:00+02:00",
- "2023-06-14T21:45:00+02:00",
- "2023-06-14T21:50:00+02:00",
- "2023-06-14T21:55:00+02:00",
- "2023-06-14T22:00:00+02:00",
- "2023-06-14T22:05:00+02:00",
- "2023-06-14T22:10:00+02:00",
- "2023-06-14T22:15:00+02:00",
- "2023-06-14T22:20:00+02:00",
- "2023-06-14T22:25:00+02:00",
- "2023-06-14T22:30:00+02:00",
- "2023-06-14T22:35:00+02:00",
- "2023-06-14T22:40:00+02:00",
- "2023-06-14T22:45:00+02:00",
- "2023-06-14T22:50:00+02:00",
- "2023-06-14T22:55:00+02:00",
- "2023-06-14T23:00:00+02:00",
- "2023-06-14T23:05:00+02:00",
- "2023-06-14T23:10:00+02:00",
- "2023-06-14T23:15:00+02:00",
- "2023-06-14T23:20:00+02:00",
- "2023-06-14T23:25:00+02:00",
- "2023-06-14T23:30:00+02:00",
- "2023-06-14T23:35:00+02:00",
- "2023-06-14T23:40:00+02:00",
- "2023-06-14T23:45:00+02:00",
- "2023-06-14T23:50:00+02:00",
- "2023-06-14T23:55:00+02:00",
- "2023-06-15T00:00:00+02:00",
- "2023-06-15T00:05:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodSecondPeriod.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodSecondPeriod.json
deleted file mode 100644
index 49d85042b9..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodSecondPeriod.json
+++ /dev/null
@@ -1,588 +0,0 @@
-{
- "global": {
- "title": "anomaly-nbr-connect graph on fw-brasilia",
- "start": "2023-06-15T12:02:17+02:00",
- "end": "2023-06-15T15:00:01+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 1,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 152032,
- "metric_id": 15165,
- "metric": "connection",
- "metric_legend": "connection",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#993366"
- },
- "legend": "connection",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 90.506666667,
- 124.84,
- 131.21333333,
- 175.1,
- 155.07333333,
- 116.39333333,
- 101.31333333,
- 141.41333333,
- 156.46,
- 131.38,
- 162.25333333,
- 182.70666667,
- 181.82,
- 124.62,
- 96.646666667,
- 96.413333333,
- 124.22,
- 146.96666667,
- 140.75333333,
- 106.12,
- 144.83333333,
- 152.43333333,
- 97.293333333,
- 96.44,
- 142.32,
- 142.33333333,
- 103.74,
- 118.54,
- 145.55333333,
- 122.16666667,
- 109.15333333,
- 134.74666667,
- 117.19333333,
- 122.83333333,
- 152.28,
- 170.50666667,
- 93.506666667
- ],
- "prints": [
- [
- "Last:93.51"
- ],
- [
- "Min:90.51"
- ],
- [
- "Max:182.71"
- ],
- [
- "Average:131.14"
- ]
- ],
- "last_value": 93.51,
- "minimum_value": 90.51,
- "maximum_value": 182.71,
- "average_value": 131.14
- },
- {
- "index_id": 152032,
- "metric_id": 16196,
- "metric": "connection_fit",
- "metric_legend": "connection_fit",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9933ff"
- },
- "legend": "connection_fit",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.57226667,
- 131.52453333,
- 131.4426,
- 131.36806667,
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.57226667,
- 131.52453333,
- 131.4426,
- 131.36806667,
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.59546667,
- 131.67353333,
- 131.7416,
- 131.79193333,
- 131.8
- ],
- "prints": [
- [
- "Last:131.80"
- ],
- [
- "Min:131.30"
- ],
- [
- "Max:131.80"
- ],
- [
- "Average:131.44"
- ]
- ],
- "last_value": 131.8,
- "minimum_value": 131.3,
- "maximum_value": 131.8,
- "average_value": 131.44
- },
- {
- "index_id": 152032,
- "metric_id": 16197,
- "metric": "connection_lower_margin",
- "metric_legend": "connection_lower_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#00ff99"
- },
- "legend": "connection_lower_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84
- ],
- "prints": [
- [
- "Last:-92.84"
- ],
- [
- "Min:-92.84"
- ],
- [
- "Max:-92.84"
- ],
- [
- "Average:-92.84"
- ]
- ],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 16198,
- "metric": "connection_upper_margin",
- "metric_legend": "connection_upper_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9900ff"
- },
- "legend": "connection_upper_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19
- ],
- "prints": [
- [
- "Last:80.19"
- ],
- [
- "Min:80.19"
- ],
- [
- "Max:80.19"
- ],
- [
- "Average:80.19"
- ]
- ],
- "last_value": 80.19,
- "minimum_value": 80.19,
- "maximum_value": 80.19,
- "average_value": 80.19
- },
- {
- "index_id": 152032,
- "metric_id": 15177,
- "metric": "connection_lower_thresholds",
- "metric_legend": "connection_lower_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 50,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Lower Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_lower_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Lower Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Lower Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.94966667,
- -147.00546667,
- -147.08546667,
- -147.15386667,
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.94966667,
- -147.00546667,
- -147.08546667,
- -147.15386667,
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.92453333,
- -146.8484,
- -146.78646667,
- -146.72806667,
- -146.72
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 15178,
- "metric": "connection_upper_thresholds",
- "metric_legend": "connection_upper_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 51,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Upper Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_upper_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Upper Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Upper Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.14033333,
- 372.08453333,
- 372.0026,
- 371.92806667,
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.14033333,
- 372.08453333,
- 372.0026,
- 371.92806667,
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.16353333,
- 372.23353333,
- 372.3016,
- 372.35386667,
- 372.37
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- }
- ],
- "times": [
- "2023-06-15T12:05:00+02:00",
- "2023-06-15T12:10:00+02:00",
- "2023-06-15T12:15:00+02:00",
- "2023-06-15T12:20:00+02:00",
- "2023-06-15T12:25:00+02:00",
- "2023-06-15T12:30:00+02:00",
- "2023-06-15T12:35:00+02:00",
- "2023-06-15T12:40:00+02:00",
- "2023-06-15T12:45:00+02:00",
- "2023-06-15T12:50:00+02:00",
- "2023-06-15T12:55:00+02:00",
- "2023-06-15T13:00:00+02:00",
- "2023-06-15T13:05:00+02:00",
- "2023-06-15T13:10:00+02:00",
- "2023-06-15T13:15:00+02:00",
- "2023-06-15T13:20:00+02:00",
- "2023-06-15T13:25:00+02:00",
- "2023-06-15T13:30:00+02:00",
- "2023-06-15T13:35:00+02:00",
- "2023-06-15T13:40:00+02:00",
- "2023-06-15T13:45:00+02:00",
- "2023-06-15T13:50:00+02:00",
- "2023-06-15T13:55:00+02:00",
- "2023-06-15T14:00:00+02:00",
- "2023-06-15T14:05:00+02:00",
- "2023-06-15T14:10:00+02:00",
- "2023-06-15T14:15:00+02:00",
- "2023-06-15T14:20:00+02:00",
- "2023-06-15T14:25:00+02:00",
- "2023-06-15T14:30:00+02:00",
- "2023-06-15T14:35:00+02:00",
- "2023-06-15T14:40:00+02:00",
- "2023-06-15T14:45:00+02:00",
- "2023-06-15T14:50:00+02:00",
- "2023-06-15T14:55:00+02:00",
- "2023-06-15T15:00:00+02:00",
- "2023-06-15T15:05:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodThirdPeriod.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodThirdPeriod.json
deleted file mode 100644
index 5487f34502..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/exclusionPeriodThirdPeriod.json
+++ /dev/null
@@ -1,581 +0,0 @@
-{
- "global": {
- "title": "anomaly-nbr-connect graph on fw-brasilia",
- "start": "2023-06-15T06:00:41+02:00",
- "end": "2023-06-15T08:58:26+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 1,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 152032,
- "metric_id": 15165,
- "metric": "connection",
- "metric_legend": "connection",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#993366"
- },
- "legend": "connection",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 11,
- 18.933333333,
- 25.76,
- 15.1,
- 15.173333333,
- 21.553333333,
- 27.76,
- 24.24,
- 15.86,
- 17.966666667,
- 24.553333333,
- 16.48,
- 24.313333333,
- 22.24,
- 22.586666667,
- 27.76,
- 18.686666667,
- 19.966666667,
- 23.38,
- 13.686666667,
- 23.693333333,
- 23.033333333,
- 25.173333333,
- 22.826666667,
- 19.62,
- 11.86,
- 17.14,
- 18.206666667,
- 19.586666667,
- 26.346666667,
- 28.793333333,
- 18.686666667,
- 11.24,
- 16.346666667,
- 15.62,
- 83.226666667
- ],
- "prints": [
- [
- "Last:83.23"
- ],
- [
- "Min:11.00"
- ],
- [
- "Max:83.23"
- ],
- [
- "Average:21.90"
- ]
- ],
- "last_value": 83.23,
- "minimum_value": 11,
- "maximum_value": 83.23,
- "average_value": 21.9
- },
- {
- "index_id": 152032,
- "metric_id": 16196,
- "metric": "connection_fit",
- "metric_legend": "connection_fit",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9933ff"
- },
- "legend": "connection_fit",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 19.97,
- 19.97,
- 19.97,
- 19.977933333,
- 19.987933333,
- 20.005866667,
- 20.065533333,
- 20.1276,
- 20.179666667,
- 20.150333333,
- 20.108266667,
- 20.0762,
- 20.07,
- 20.07,
- 20.07,
- 20.077933333,
- 20.087933333,
- 20.105866667,
- 20.165533333,
- 20.2276,
- 20.24,
- 20.041666667,
- 19.783733333,
- 19.571333333,
- 19.53,
- 19.53,
- 19.537933333,
- 19.547933333,
- 19.557933333,
- 19.567933333,
- 19.5938,
- 19.631733333,
- 19.8304,
- 20.7368,
- 21.808866667,
- 27.519866667
- ],
- "prints": [
- [
- "Last:27.52"
- ],
- [
- "Min:19.53"
- ],
- [
- "Max:27.52"
- ],
- [
- "Average:20.21"
- ]
- ],
- "last_value": 27.52,
- "minimum_value": 19.53,
- "maximum_value": 27.52,
- "average_value": 20.21
- },
- {
- "index_id": 152032,
- "metric_id": 16197,
- "metric": "connection_lower_margin",
- "metric_legend": "connection_lower_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#00ff99"
- },
- "legend": "connection_lower_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -21.9736
- ],
- "prints": [
- [
- "Last:-21.97"
- ],
- [
- "Min:-21.97"
- ],
- [
- "Max:-17.88"
- ],
- [
- "Average:-17.99"
- ]
- ],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 16198,
- "metric": "connection_upper_margin",
- "metric_legend": "connection_upper_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9900ff"
- },
- "legend": "connection_upper_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 13.9818
- ],
- "prints": [
- [
- "Last:13.98"
- ],
- [
- "Min:10.15"
- ],
- [
- "Max:13.98"
- ],
- [
- "Average:10.26"
- ]
- ],
- "last_value": 13.98,
- "minimum_value": 10.15,
- "maximum_value": 13.98,
- "average_value": 10.26
- },
- {
- "index_id": 152032,
- "metric_id": 15177,
- "metric": "connection_lower_thresholds",
- "metric_legend": "connection_lower_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 50,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Lower Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_lower_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Lower Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Lower Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- -33.67,
- -33.67,
- -33.67,
- -33.662066667,
- -33.652066667,
- -33.6262,
- -33.5724,
- -33.504466667,
- -33.458266667,
- -33.481733333,
- -33.529666667,
- -33.5638,
- -33.57,
- -33.57,
- -33.57,
- -33.562066667,
- -33.552066667,
- -33.5262,
- -33.4724,
- -33.404466667,
- -33.39,
- -33.596266667,
- -33.848333333,
- -34.058666667,
- -34.1,
- -34.1,
- -34.1,
- -34.092066667,
- -34.082066667,
- -34.064133333,
- -34.0362,
- -34.0062,
- -33.801666667,
- -32.901133333,
- -31.831133333,
- -38.408866667
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 15178,
- "metric": "connection_upper_thresholds",
- "metric_legend": "connection_upper_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 51,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Upper Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_upper_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Upper Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Upper Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- 50.42,
- 50.42,
- 50.427933333,
- 50.437933333,
- 50.447933333,
- 50.465866667,
- 50.525533333,
- 50.5876,
- 50.631733333,
- 50.608266667,
- 50.568266667,
- 50.528266667,
- 50.52,
- 50.52,
- 50.527933333,
- 50.537933333,
- 50.547933333,
- 50.565866667,
- 50.625533333,
- 50.6876,
- 50.7,
- 50.501666667,
- 50.243733333,
- 50.031333333,
- 49.99,
- 49.99,
- 49.99,
- 49.997933333,
- 50.007933333,
- 50.025866667,
- 50.0538,
- 50.0838,
- 50.288333333,
- 51.188866667,
- 52.2668,
- 69.4594
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- }
- ],
- "times": [
- "2023-06-15T06:05:00+02:00",
- "2023-06-15T06:10:00+02:00",
- "2023-06-15T06:15:00+02:00",
- "2023-06-15T06:20:00+02:00",
- "2023-06-15T06:25:00+02:00",
- "2023-06-15T06:30:00+02:00",
- "2023-06-15T06:35:00+02:00",
- "2023-06-15T06:40:00+02:00",
- "2023-06-15T06:45:00+02:00",
- "2023-06-15T06:50:00+02:00",
- "2023-06-15T06:55:00+02:00",
- "2023-06-15T07:00:00+02:00",
- "2023-06-15T07:05:00+02:00",
- "2023-06-15T07:10:00+02:00",
- "2023-06-15T07:15:00+02:00",
- "2023-06-15T07:20:00+02:00",
- "2023-06-15T07:25:00+02:00",
- "2023-06-15T07:30:00+02:00",
- "2023-06-15T07:35:00+02:00",
- "2023-06-15T07:40:00+02:00",
- "2023-06-15T07:45:00+02:00",
- "2023-06-15T07:50:00+02:00",
- "2023-06-15T07:55:00+02:00",
- "2023-06-15T08:00:00+02:00",
- "2023-06-15T08:05:00+02:00",
- "2023-06-15T08:10:00+02:00",
- "2023-06-15T08:15:00+02:00",
- "2023-06-15T08:20:00+02:00",
- "2023-06-15T08:25:00+02:00",
- "2023-06-15T08:30:00+02:00",
- "2023-06-15T08:35:00+02:00",
- "2023-06-15T08:40:00+02:00",
- "2023-06-15T08:45:00+02:00",
- "2023-06-15T08:50:00+02:00",
- "2023-06-15T08:55:00+02:00",
- "2023-06-15T09:00:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDay.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDay.json
deleted file mode 100644
index 9cff4d3e4f..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDay.json
+++ /dev/null
@@ -1,1326 +0,0 @@
-{
- "global": {
- "title": "oracle-buffer-hit-ratio graph on srv-oracle-users",
- "start": "2023-06-18T17:04:46+02:00",
- "end": "2023-06-19T17:04:46+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 0,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 5614,
- "metric_id": 13536,
- "metric": "connTime",
- "metric_legend": "connTime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#6699cc"
- },
- "legend": "connTime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.53123333333,
- 0.56452,
- 0.5341,
- 0.51537666667,
- 0.25730333333,
- 0.48611333333,
- 0.41435666667,
- 0.42371,
- 0.55438333333,
- 0.60211,
- 0.72619,
- 0.67167333333,
- 0.63883333333,
- 0.52027666667,
- 0.67368666667,
- 0.83443333333,
- 0.86102333333,
- 0.76291666667,
- 0.39081666667,
- 0.22492333333,
- 0.64388333333,
- 0.81007666667,
- 0.61811333333,
- 0.58901,
- 0.58737333333,
- 0.60651333333,
- 0.74783333333,
- 0.92823,
- 0.89503333333,
- 0.82551333333,
- 0.75017333333,
- 0.33549666667,
- 0.40213666667,
- 0.60645666667,
- 0.55312666667,
- 0.31503666667,
- 0.078203333333,
- 0.44113,
- 0.35953666667,
- 0.41073333333,
- 0.8358,
- 0.86683333333,
- 0.68390666667,
- 0.28047333333,
- 0.0607,
- 0.49994666667,
- 0.75459666667,
- 0.51677333333,
- 0.63137,
- 0.74141666667,
- 0.60566666667,
- 0.32040666667,
- 0.15528666667,
- 0.43645333333,
- 0.65261666667,
- 0.46921666667,
- 0.60091666667,
- 0.47360333333,
- 0.10643,
- 0.29183,
- 0.35995,
- 0.40254333333,
- 0.58827666667,
- 0.45241333333,
- 0.24455333333,
- 0.18674,
- 0.13640333333,
- 0.34897666667,
- 0.55044,
- 0.52277666667,
- 0.69064333333,
- 0.56236333333,
- 0.39762,
- 0.65475666667,
- 0.58477,
- 0.49433,
- 0.28894333333,
- 0.49294333333,
- 0.64683,
- 0.35607666667,
- 0.55465,
- 0.45637333333,
- 0.54171666667,
- 0.42502666667,
- 0.30588,
- 0.32094,
- 0.22269333333,
- 0.44262,
- 0.62073333333,
- 0.60227666667,
- 0.32498333333,
- 0.25148,
- 0.47383333333,
- 0.30778333333,
- 0.26413666667,
- 0.58817,
- 0.42611,
- 0.44147,
- 0.70327,
- 0.61590333333,
- 0.67324333333,
- 0.71732333333,
- 0.38394,
- 0.23022,
- 0.32007333333,
- 0.37968,
- 0.32084666667,
- 0.54738333333,
- 0.85402666667,
- 0.72061666667,
- 0.69251666667,
- 0.87611666667,
- 0.83591333333,
- 0.36148,
- 0.45470333333,
- 0.68843,
- 0.52516,
- 0.50904666667,
- 0.51209333333,
- 0.6553,
- 0.85674333333,
- 0.51166,
- 0.4353,
- 0.76875333333,
- 0.78365666667,
- 0.71250666667,
- 0.81178666667,
- 0.67356666667,
- 0.48919333333,
- 0.55755,
- 0.50259333333,
- 0.28751333333,
- 0.56895666667,
- 0.46348666667,
- 0.065866666667,
- 0.56505666667,
- 0.90545333333,
- 0.80578666667,
- 0.5926,
- 0.60521333333,
- 0.80492333333,
- 0.46766666667,
- 0.45899,
- 0.67702333333,
- 0.35113666667,
- 0.47643666667,
- 0.71041666667,
- 0.55792,
- 0.73992,
- 0.76518,
- 0.35002333333,
- 0.26003,
- 0.55407333333,
- 0.76546333333,
- 0.37679,
- 0.067946666667,
- 0.34679,
- 0.26,
- 0.66257333333,
- 0.40848,
- 0.53458333333,
- 0.51552,
- 0.61109,
- 0.85858333333,
- 0.68362,
- 0.27503333333,
- 0.2019,
- 0.13221333333,
- 0.79457,
- 0.69949666667,
- 0.35275333333,
- 0.81529,
- 0.078553333333,
- 0.03339,
- 0.39325333333,
- 0.40176333333,
- 0.14054333333,
- 0.32028666667,
- 0.33053666667,
- 0.89415666667,
- 0.35837666667,
- 0.85846,
- 0.44418,
- 0.29612333333,
- 0.84746333333,
- 0.69179,
- 0.15608666667,
- 0.46017333333,
- 0.52039333333,
- 0.04379,
- 0.20713333333,
- 0.69767,
- 0.073123333333,
- 0.72342666667,
- 0.16706,
- 0.56104666667,
- 0.7642,
- 0.84448,
- 0.12149,
- 0.84398666667,
- 0.17495,
- 0.73171,
- 0.31948666667,
- 0.86547,
- 0.51050333333,
- 0.73184,
- 0.24332,
- 0.64512333333,
- 0.87497666667,
- 0.64631666667,
- 0.93808666667,
- 0.40630666667,
- 0.58898666667,
- 0.079853333333,
- 0.52536666667,
- 0.24560333333,
- 0.08881,
- 0.59968333333,
- 0.76672666667,
- 0.12605,
- 0.57891,
- 0.3994,
- 0.93223,
- 0.91706,
- 0.73287333333,
- 0.35697666667,
- 0.76189,
- 0.53946666667,
- 0.80423333333,
- 0.89725,
- 0.11539666667,
- 0.29745333333,
- 0.77966666667,
- 0.71089333333,
- 0.26618666667,
- 0.66581333333,
- 0.72693,
- 0.2858,
- 0.21299,
- 0.19799666667,
- 0.73068666667,
- 0.48692,
- 0.5738,
- 0.060393333333,
- 0.36694333333,
- 0.29905,
- 0.70373,
- 0.59026666667,
- 0.95010333333,
- 0.96899666667,
- 0.18778333333,
- 0.44893666667,
- 0.54063333333,
- 0.30962666667,
- 0.67226,
- 0.8979,
- 0.61484,
- 0.75435333333,
- 0.21677,
- 0.25687,
- 0.73120666667,
- 0.20676666667,
- 0.32435333333,
- 0.44787666667,
- 0.89004333333,
- 0.48926333333,
- 0.36620666667,
- 0.53720333333,
- 0.77175333333,
- 0.81031333333,
- 0.68735,
- 0.29566333333,
- 0.64441333333,
- 0.53196,
- 0.57447666667,
- 0.050853333333,
- 0.28769333333,
- 0.17988666667,
- 0.10621333333,
- 0.49249333333,
- 0.81975,
- 0.48222,
- 0.25617333333,
- 0.75395,
- 0.36961,
- 0.53932333333,
- 0.65789666667,
- 0.32339333333,
- null
- ],
- "prints": [
- [
- "Last:0.32"
- ],
- [
- "Min:0.03"
- ],
- [
- "Max:0.97"
- ],
- [
- "Average:0.51"
- ]
- ],
- "last_value": 0.32,
- "minimum_value": 0.03,
- "maximum_value": 0.97,
- "average_value": 0.51
- },
- {
- "index_id": 5614,
- "metric_id": 13534,
- "metric": "hitratio",
- "metric_legend": "hitratio",
- "unit": "%",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#cc9999"
- },
- "legend": "hitratio",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 80.192446667,
- 80.324963333,
- 80.31374,
- 80.043863333,
- 78.97382,
- 78.01196,
- 77.85379,
- 77.311446667,
- 77.518806667,
- 77.363833333,
- 76.410303333,
- 75.385206667,
- 75.470793333,
- 75.444866667,
- 74.902366667,
- 74.787096667,
- 73.424696667,
- 72.984073333,
- 73.127803333,
- 72.06457,
- 71.092996667,
- 70.652853333,
- 72.838793333,
- 74.3249,
- 74.690726667,
- 75.462586667,
- 74.87943,
- 75.429203333,
- 76.836436667,
- 77.9801,
- 78.159586667,
- 77.133953333,
- 76.139193333,
- 76.100923333,
- 75.977446667,
- 75.897756667,
- 75.158033333,
- 73.702993333,
- 72.387816667,
- 71.130253333,
- 70.39241,
- 71.103633333,
- 71.842186667,
- 72.052586667,
- 71.766026667,
- 71.548363333,
- 71.128753333,
- 72.8407,
- 74.584996667,
- 73.229936667,
- 71.78108,
- 71.673396667,
- 71.184396667,
- 70.4531,
- 70.344756667,
- 72.715336667,
- 74.256866667,
- 73.24873,
- 73.652976667,
- 75.191423333,
- 75.63962,
- 74.709446667,
- 74.725396667,
- 75.930556667,
- 77.090426667,
- 77.774146667,
- 78.34251,
- 79.083023333,
- 79.19294,
- 79.902196667,
- 80.164726667,
- 79.28103,
- 78.529063333,
- 77.409276667,
- 75.7148,
- 75.432493333,
- 76.331206667,
- 76.05935,
- 76.290816667,
- 76.174896667,
- 74.520766667,
- 74.641866667,
- 75.632723333,
- 75.710626667,
- 74.692966667,
- 73.84993,
- 73.685023333,
- 73.59346,
- 73.485723333,
- 74.233233333,
- 76.036953333,
- 77.343543333,
- 77.40446,
- 77.324593333,
- 77.389233333,
- 76.69522,
- 75.906923333,
- 75.531203333,
- 75.230936667,
- 74.892196667,
- 75.257436667,
- 76.047326667,
- 76.83612,
- 76.4245,
- 74.62692,
- 73.454276667,
- 73.838346667,
- 74.91667,
- 75.654806667,
- 75.07332,
- 73.51074,
- 72.497866667,
- 72.15109,
- 71.317343333,
- 71.56787,
- 72.18692,
- 71.37498,
- 70.426836667,
- 70.611836667,
- 71.692516667,
- 72.545326667,
- 71.79552,
- 70.463443333,
- 70.393413333,
- 72.92507,
- 75.238116667,
- 74.41566,
- 72.43751,
- 70.750156667,
- 70.50232,
- 73.044236667,
- 75.752553333,
- 76.848816667,
- 77.010526667,
- 77.599906667,
- 77.768733333,
- 77.314866667,
- 77.01545,
- 77.704426667,
- 78.521463333,
- 79.173236667,
- 79.92521,
- 80.769776667,
- 82.234066667,
- 83.11997,
- 82.61005,
- 82.86877,
- 83.577323333,
- 84.011146667,
- 84.565116667,
- 84.8117,
- 85.159493333,
- 84.523926667,
- 83.279573333,
- 82.95924,
- 83.57027,
- 84.89847,
- 83.853206667,
- 84.676703333,
- 86.10003,
- 85.350266667,
- 84.94219,
- 85.116616667,
- 84.75833,
- 83.948586667,
- 83.637406667,
- 83.2102,
- 82.458723333,
- 82.4267,
- 83.49822,
- 83.83907,
- 82.507316667,
- 82.858513333,
- 84.26815,
- 83.920333333,
- 84.255026667,
- 82.74865,
- 82.445566667,
- 81.86038,
- 80.631133333,
- 81.62438,
- 81.23579,
- 80.95778,
- 79.499446667,
- 78.88417,
- 78.406263333,
- 76.631363333,
- 75.627376667,
- 75.485826667,
- 73.82354,
- 72.111716667,
- 70.308843333,
- 74.6297,
- 75.690653333,
- 74.810816667,
- 75.50583,
- 76.246803333,
- 77.157083333,
- 77.98975,
- 77.812933333,
- 77.722826667,
- 79.01059,
- 79.221413333,
- 80.305683333,
- 80.499336667,
- 78.993733333,
- 80.18652,
- 81.94138,
- 83.55718,
- 82.897013333,
- 82.29185,
- 81.54342,
- 82.708416667,
- 83.576366667,
- 83.04722,
- 83.864086667,
- 83.699626667,
- 82.20913,
- 81.32802,
- 79.87446,
- 79.22439,
- 77.4626,
- 78.31997,
- 76.586803333,
- 77.81823,
- 77.163863333,
- 77.913456667,
- 79.026213333,
- 77.37621,
- 78.781353333,
- 79.298723333,
- 78.798236667,
- 79.785363333,
- 80.425,
- 81.082246667,
- 82.75068,
- 83.45285,
- 82.340293333,
- 82.654883333,
- 82.498793333,
- 81.795116667,
- 82.371406667,
- 80.786006667,
- 79.975043333,
- 80.537633333,
- 78.944543333,
- 77.60028,
- 76.822273333,
- 75.409623333,
- 74.17238,
- 75.874883333,
- 77.656453333,
- 76.133693333,
- 75.23148,
- 76.698886667,
- 76.538843333,
- 77.68948,
- 77.99752,
- 79.06483,
- 79.920213333,
- 80.295163333,
- 82.13812,
- 81.25856,
- 79.891413333,
- 80.126633333,
- 79.632393333,
- 81.009086667,
- 81.655146667,
- 82.30286,
- 83.57457,
- 83.236493333,
- 83.495466667,
- 82.422156667,
- 82.68833,
- 83.218446667,
- 84.335683333,
- 85.520996667,
- 85.508586667,
- 85.91827,
- 84.19682,
- 86.29191,
- 87.191866667,
- 87.270053333,
- 88.025836667,
- 87.42611,
- 86.863723333,
- 86.564723333,
- 87.268263333,
- null
- ],
- "prints": [
- [
- "Last:87.27"
- ],
- [
- "Min:70.31"
- ],
- [
- "Max:88.03"
- ],
- [
- "Average:78.07"
- ]
- ],
- "last_value": 87.27,
- "minimum_value": 70.31,
- "maximum_value": 88.03,
- "average_value": 78.07
- },
- {
- "index_id": 5614,
- "metric_id": 13535,
- "metric": "querytime",
- "metric_legend": "querytime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#00ffcc"
- },
- "legend": "querytime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.29714333333,
- 0.69919666667,
- 0.79321666667,
- 0.71506,
- 0.5782,
- 0.48894666667,
- 0.67059333333,
- 0.54513333333,
- 0.63351666667,
- 0.83608666667,
- 0.5301,
- 0.27967333333,
- 0.37714333333,
- 0.59969333333,
- 0.48521,
- 0.59266333333,
- 0.53817,
- 0.1465,
- 0.16135,
- 0.3028,
- 0.19724333333,
- 0.17198333333,
- 0.33685666667,
- 0.24265333333,
- 0.34326666667,
- 0.76181,
- 0.73900333333,
- 0.67112333333,
- 0.59812333333,
- 0.52067666667,
- 0.77137333333,
- 0.47664333333,
- 0.046403333333,
- 0.24118333333,
- 0.53058333333,
- 0.57370333333,
- 0.47472333333,
- 0.19977,
- 0.44531,
- 0.80133,
- 0.3802,
- 0.034383333333,
- 0.23191333333,
- 0.32398666667,
- 0.22054333333,
- 0.35904666667,
- 0.24970666667,
- 0.29793666667,
- 0.69748666667,
- 0.54007333333,
- 0.28856,
- 0.18591333333,
- 0.28871666667,
- 0.43670333333,
- 0.31626666667,
- 0.3028,
- 0.47199333333,
- 0.56091666667,
- 0.39671,
- 0.44483,
- 0.61814,
- 0.61943,
- 0.71691,
- 0.4302,
- 0.11944666667,
- 0.42061,
- 0.39272666667,
- 0.19695,
- 0.16065,
- 0.34680666667,
- 0.39646,
- 0.48262,
- 0.40757,
- 0.14027,
- 0.29311333333,
- 0.57186,
- 0.76852,
- 0.8357,
- 0.90495,
- 0.50284,
- 0.46309,
- 0.73553666667,
- 0.41647333333,
- 0.47040333333,
- 0.79052,
- 0.53166333333,
- 0.46984666667,
- 0.69507333333,
- 0.81015333333,
- 0.68305,
- 0.44918,
- 0.42194333333,
- 0.44094333333,
- 0.22025666667,
- 0.48985,
- 0.86948,
- 0.89493,
- 0.60076,
- 0.20515333333,
- 0.56671333333,
- 0.53818333333,
- 0.18702666667,
- 0.56491333333,
- 0.91616666667,
- 0.48051333333,
- 0.35035666667,
- 0.78203666667,
- 0.88262,
- 0.69741,
- 0.67662,
- 0.55486333333,
- 0.28368666667,
- 0.46458333333,
- 0.84172,
- 0.71890333333,
- 0.63952333333,
- 0.87039666667,
- 0.54808,
- 0.56612666667,
- 0.63758666667,
- 0.37719666667,
- 0.68918666667,
- 0.88794,
- 0.90652666667,
- 0.97649666667,
- 0.78016,
- 0.36409,
- 0.34504333333,
- 0.60541666667,
- 0.58179,
- 0.70434333333,
- 0.53593666667,
- 0.53723333333,
- 0.50562666667,
- 0.36219666667,
- 0.36345666667,
- 0.61732333333,
- 0.77207666667,
- 0.30536333333,
- 0.22801666667,
- 0.30937,
- 0.32652666667,
- 0.50535,
- 0.60912,
- 0.50587666667,
- 0.27743666667,
- 0.51364333333,
- 0.50690666667,
- 0.15515333333,
- 0.39111333333,
- 0.4863,
- 0.52368,
- 0.34827333333,
- 0.2388,
- 0.57008333333,
- 0.60963666667,
- 0.73512333333,
- 0.7397,
- 0.89249666667,
- 0.71656666667,
- 0.53072,
- 0.66387333333,
- 0.61843,
- 0.30160333333,
- 0.74331,
- 0.17412666667,
- 0.83096666667,
- 0.17164666667,
- 0.12400333333,
- 0.30874333333,
- 0.31753666667,
- 0.54321666667,
- 0.24991333333,
- 0.29325,
- 0.87885333333,
- 0.14124333333,
- 0.22927333333,
- 0.87817666667,
- 0.73802333333,
- 0.94914,
- 0.86089333333,
- 0.49467,
- 0.076276666667,
- 0.33023333333,
- 0.68270666667,
- 0.78202,
- 0.64673,
- 0.4965,
- 0.21815666667,
- 0.073196666667,
- 0.34646333333,
- 0.23888666667,
- 0.79677333333,
- 0.91694333333,
- 0.80389,
- 0.16613333333,
- 0.10015,
- 0.77488,
- 0.90486666667,
- 0.07169,
- 0.72866333333,
- 0.65142333333,
- 0.41378333333,
- 0.92684,
- 0.66168333333,
- 0.47534,
- 0.73346,
- 0.42083,
- 0.23695666667,
- 0.22677,
- 0.08573,
- 0.55321,
- 0.80721333333,
- 0.43997,
- 0.22795,
- 0.34503666667,
- 0.73733666667,
- 0.90842333333,
- 0.88768333333,
- 0.08724,
- 0.25737333333,
- 0.25853333333,
- 0.27085,
- 0.39665,
- 0.34975333333,
- 0.17418333333,
- 0.90513,
- 0.89959666667,
- 0.65670333333,
- 0.92508,
- 0.49195,
- 0.63128,
- 0.15663333333,
- 0.059676666667,
- 0.11686333333,
- 0.16909,
- 0.33827666667,
- 0.77581,
- 0.43058666667,
- 0.097993333333,
- 0.090543333333,
- 0.44194333333,
- 0.12752,
- 0.34368333333,
- 0.90045666667,
- 0.85451333333,
- 0.13603333333,
- 0.87106666667,
- 0.24542333333,
- 0.65059,
- 0.18116666667,
- 0.77148333333,
- 0.88124666667,
- 0.86107,
- 0.31515666667,
- 0.91171666667,
- 0.37591333333,
- 0.34916,
- 0.77019333333,
- 0.62402666667,
- 0.48065666667,
- 0.22993333333,
- 0.89142,
- 0.085606666667,
- 0.70465333333,
- 0.50069666667,
- 0.27494333333,
- 0.88125,
- 0.55443333333,
- 0.38727,
- 0.76749333333,
- 0.83601,
- 0.71435,
- 0.53133666667,
- 0.33418,
- 0.44919,
- 0.86442,
- 0.19165,
- 0.82827,
- 0.32092,
- 0.23609333333,
- 0.45102333333,
- 0.75873,
- 0.23588666667,
- 0.41906666667,
- 0.357,
- 0.32246333333,
- 0.64624666667,
- null
- ],
- "prints": [
- [
- "Last:0.65"
- ],
- [
- "Min:0.03"
- ],
- [
- "Max:0.98"
- ],
- [
- "Average:0.50"
- ]
- ],
- "last_value": 0.65,
- "minimum_value": 0.03,
- "maximum_value": 0.98,
- "average_value": 0.5
- }
- ],
- "times": [
- "2023-06-18T17:05:00+02:00",
- "2023-06-18T17:10:00+02:00",
- "2023-06-18T17:15:00+02:00",
- "2023-06-18T17:20:00+02:00",
- "2023-06-18T17:25:00+02:00",
- "2023-06-18T17:30:00+02:00",
- "2023-06-18T17:35:00+02:00",
- "2023-06-18T17:40:00+02:00",
- "2023-06-18T17:45:00+02:00",
- "2023-06-18T17:50:00+02:00",
- "2023-06-18T17:55:00+02:00",
- "2023-06-18T18:00:00+02:00",
- "2023-06-18T18:05:00+02:00",
- "2023-06-18T18:10:00+02:00",
- "2023-06-18T18:15:00+02:00",
- "2023-06-18T18:20:00+02:00",
- "2023-06-18T18:25:00+02:00",
- "2023-06-18T18:30:00+02:00",
- "2023-06-18T18:35:00+02:00",
- "2023-06-18T18:40:00+02:00",
- "2023-06-18T18:45:00+02:00",
- "2023-06-18T18:50:00+02:00",
- "2023-06-18T18:55:00+02:00",
- "2023-06-18T19:00:00+02:00",
- "2023-06-18T19:05:00+02:00",
- "2023-06-18T19:10:00+02:00",
- "2023-06-18T19:15:00+02:00",
- "2023-06-18T19:20:00+02:00",
- "2023-06-18T19:25:00+02:00",
- "2023-06-18T19:30:00+02:00",
- "2023-06-18T19:35:00+02:00",
- "2023-06-18T19:40:00+02:00",
- "2023-06-18T19:45:00+02:00",
- "2023-06-18T19:50:00+02:00",
- "2023-06-18T19:55:00+02:00",
- "2023-06-18T20:00:00+02:00",
- "2023-06-18T20:05:00+02:00",
- "2023-06-18T20:10:00+02:00",
- "2023-06-18T20:15:00+02:00",
- "2023-06-18T20:20:00+02:00",
- "2023-06-18T20:25:00+02:00",
- "2023-06-18T20:30:00+02:00",
- "2023-06-18T20:35:00+02:00",
- "2023-06-18T20:40:00+02:00",
- "2023-06-18T20:45:00+02:00",
- "2023-06-18T20:50:00+02:00",
- "2023-06-18T20:55:00+02:00",
- "2023-06-18T21:00:00+02:00",
- "2023-06-18T21:05:00+02:00",
- "2023-06-18T21:10:00+02:00",
- "2023-06-18T21:15:00+02:00",
- "2023-06-18T21:20:00+02:00",
- "2023-06-18T21:25:00+02:00",
- "2023-06-18T21:30:00+02:00",
- "2023-06-18T21:35:00+02:00",
- "2023-06-18T21:40:00+02:00",
- "2023-06-18T21:45:00+02:00",
- "2023-06-18T21:50:00+02:00",
- "2023-06-18T21:55:00+02:00",
- "2023-06-18T22:00:00+02:00",
- "2023-06-18T22:05:00+02:00",
- "2023-06-18T22:10:00+02:00",
- "2023-06-18T22:15:00+02:00",
- "2023-06-18T22:20:00+02:00",
- "2023-06-18T22:25:00+02:00",
- "2023-06-18T22:30:00+02:00",
- "2023-06-18T22:35:00+02:00",
- "2023-06-18T22:40:00+02:00",
- "2023-06-18T22:45:00+02:00",
- "2023-06-18T22:50:00+02:00",
- "2023-06-18T22:55:00+02:00",
- "2023-06-18T23:00:00+02:00",
- "2023-06-18T23:05:00+02:00",
- "2023-06-18T23:10:00+02:00",
- "2023-06-18T23:15:00+02:00",
- "2023-06-18T23:20:00+02:00",
- "2023-06-18T23:25:00+02:00",
- "2023-06-18T23:30:00+02:00",
- "2023-06-18T23:35:00+02:00",
- "2023-06-18T23:40:00+02:00",
- "2023-06-18T23:45:00+02:00",
- "2023-06-18T23:50:00+02:00",
- "2023-06-18T23:55:00+02:00",
- "2023-06-19T00:00:00+02:00",
- "2023-06-19T00:05:00+02:00",
- "2023-06-19T00:10:00+02:00",
- "2023-06-19T00:15:00+02:00",
- "2023-06-19T00:20:00+02:00",
- "2023-06-19T00:25:00+02:00",
- "2023-06-19T00:30:00+02:00",
- "2023-06-19T00:35:00+02:00",
- "2023-06-19T00:40:00+02:00",
- "2023-06-19T00:45:00+02:00",
- "2023-06-19T00:50:00+02:00",
- "2023-06-19T00:55:00+02:00",
- "2023-06-19T01:00:00+02:00",
- "2023-06-19T01:05:00+02:00",
- "2023-06-19T01:10:00+02:00",
- "2023-06-19T01:15:00+02:00",
- "2023-06-19T01:20:00+02:00",
- "2023-06-19T01:25:00+02:00",
- "2023-06-19T01:30:00+02:00",
- "2023-06-19T01:35:00+02:00",
- "2023-06-19T01:40:00+02:00",
- "2023-06-19T01:45:00+02:00",
- "2023-06-19T01:50:00+02:00",
- "2023-06-19T01:55:00+02:00",
- "2023-06-19T02:00:00+02:00",
- "2023-06-19T02:05:00+02:00",
- "2023-06-19T02:10:00+02:00",
- "2023-06-19T02:15:00+02:00",
- "2023-06-19T02:20:00+02:00",
- "2023-06-19T02:25:00+02:00",
- "2023-06-19T02:30:00+02:00",
- "2023-06-19T02:35:00+02:00",
- "2023-06-19T02:40:00+02:00",
- "2023-06-19T02:45:00+02:00",
- "2023-06-19T02:50:00+02:00",
- "2023-06-19T02:55:00+02:00",
- "2023-06-19T03:00:00+02:00",
- "2023-06-19T03:05:00+02:00",
- "2023-06-19T03:10:00+02:00",
- "2023-06-19T03:15:00+02:00",
- "2023-06-19T03:20:00+02:00",
- "2023-06-19T03:25:00+02:00",
- "2023-06-19T03:30:00+02:00",
- "2023-06-19T03:35:00+02:00",
- "2023-06-19T03:40:00+02:00",
- "2023-06-19T03:45:00+02:00",
- "2023-06-19T03:50:00+02:00",
- "2023-06-19T03:55:00+02:00",
- "2023-06-19T04:00:00+02:00",
- "2023-06-19T04:05:00+02:00",
- "2023-06-19T04:10:00+02:00",
- "2023-06-19T04:15:00+02:00",
- "2023-06-19T04:20:00+02:00",
- "2023-06-19T04:25:00+02:00",
- "2023-06-19T04:30:00+02:00",
- "2023-06-19T04:35:00+02:00",
- "2023-06-19T04:40:00+02:00",
- "2023-06-19T04:45:00+02:00",
- "2023-06-19T04:50:00+02:00",
- "2023-06-19T04:55:00+02:00",
- "2023-06-19T05:00:00+02:00",
- "2023-06-19T05:05:00+02:00",
- "2023-06-19T05:10:00+02:00",
- "2023-06-19T05:15:00+02:00",
- "2023-06-19T05:20:00+02:00",
- "2023-06-19T05:25:00+02:00",
- "2023-06-19T05:30:00+02:00",
- "2023-06-19T05:35:00+02:00",
- "2023-06-19T05:40:00+02:00",
- "2023-06-19T05:45:00+02:00",
- "2023-06-19T05:50:00+02:00",
- "2023-06-19T05:55:00+02:00",
- "2023-06-19T06:00:00+02:00",
- "2023-06-19T06:05:00+02:00",
- "2023-06-19T06:10:00+02:00",
- "2023-06-19T06:15:00+02:00",
- "2023-06-19T06:20:00+02:00",
- "2023-06-19T06:25:00+02:00",
- "2023-06-19T06:30:00+02:00",
- "2023-06-19T06:35:00+02:00",
- "2023-06-19T06:40:00+02:00",
- "2023-06-19T06:45:00+02:00",
- "2023-06-19T06:50:00+02:00",
- "2023-06-19T06:55:00+02:00",
- "2023-06-19T07:00:00+02:00",
- "2023-06-19T07:05:00+02:00",
- "2023-06-19T07:10:00+02:00",
- "2023-06-19T07:15:00+02:00",
- "2023-06-19T07:20:00+02:00",
- "2023-06-19T07:25:00+02:00",
- "2023-06-19T07:30:00+02:00",
- "2023-06-19T07:35:00+02:00",
- "2023-06-19T07:40:00+02:00",
- "2023-06-19T07:45:00+02:00",
- "2023-06-19T07:50:00+02:00",
- "2023-06-19T07:55:00+02:00",
- "2023-06-19T08:00:00+02:00",
- "2023-06-19T08:05:00+02:00",
- "2023-06-19T08:10:00+02:00",
- "2023-06-19T08:15:00+02:00",
- "2023-06-19T08:20:00+02:00",
- "2023-06-19T08:25:00+02:00",
- "2023-06-19T08:30:00+02:00",
- "2023-06-19T08:35:00+02:00",
- "2023-06-19T08:40:00+02:00",
- "2023-06-19T08:45:00+02:00",
- "2023-06-19T08:50:00+02:00",
- "2023-06-19T08:55:00+02:00",
- "2023-06-19T09:00:00+02:00",
- "2023-06-19T09:05:00+02:00",
- "2023-06-19T09:10:00+02:00",
- "2023-06-19T09:15:00+02:00",
- "2023-06-19T09:20:00+02:00",
- "2023-06-19T09:25:00+02:00",
- "2023-06-19T09:30:00+02:00",
- "2023-06-19T09:35:00+02:00",
- "2023-06-19T09:40:00+02:00",
- "2023-06-19T09:45:00+02:00",
- "2023-06-19T09:50:00+02:00",
- "2023-06-19T09:55:00+02:00",
- "2023-06-19T10:00:00+02:00",
- "2023-06-19T10:05:00+02:00",
- "2023-06-19T10:10:00+02:00",
- "2023-06-19T10:15:00+02:00",
- "2023-06-19T10:20:00+02:00",
- "2023-06-19T10:25:00+02:00",
- "2023-06-19T10:30:00+02:00",
- "2023-06-19T10:35:00+02:00",
- "2023-06-19T10:40:00+02:00",
- "2023-06-19T10:45:00+02:00",
- "2023-06-19T10:50:00+02:00",
- "2023-06-19T10:55:00+02:00",
- "2023-06-19T11:00:00+02:00",
- "2023-06-19T11:05:00+02:00",
- "2023-06-19T11:10:00+02:00",
- "2023-06-19T11:15:00+02:00",
- "2023-06-19T11:20:00+02:00",
- "2023-06-19T11:25:00+02:00",
- "2023-06-19T11:30:00+02:00",
- "2023-06-19T11:35:00+02:00",
- "2023-06-19T11:40:00+02:00",
- "2023-06-19T11:45:00+02:00",
- "2023-06-19T11:50:00+02:00",
- "2023-06-19T11:55:00+02:00",
- "2023-06-19T12:00:00+02:00",
- "2023-06-19T12:05:00+02:00",
- "2023-06-19T12:10:00+02:00",
- "2023-06-19T12:15:00+02:00",
- "2023-06-19T12:20:00+02:00",
- "2023-06-19T12:25:00+02:00",
- "2023-06-19T12:30:00+02:00",
- "2023-06-19T12:35:00+02:00",
- "2023-06-19T12:40:00+02:00",
- "2023-06-19T12:45:00+02:00",
- "2023-06-19T12:50:00+02:00",
- "2023-06-19T12:55:00+02:00",
- "2023-06-19T13:00:00+02:00",
- "2023-06-19T13:05:00+02:00",
- "2023-06-19T13:10:00+02:00",
- "2023-06-19T13:15:00+02:00",
- "2023-06-19T13:20:00+02:00",
- "2023-06-19T13:25:00+02:00",
- "2023-06-19T13:30:00+02:00",
- "2023-06-19T13:35:00+02:00",
- "2023-06-19T13:40:00+02:00",
- "2023-06-19T13:45:00+02:00",
- "2023-06-19T13:50:00+02:00",
- "2023-06-19T13:55:00+02:00",
- "2023-06-19T14:00:00+02:00",
- "2023-06-19T14:05:00+02:00",
- "2023-06-19T14:10:00+02:00",
- "2023-06-19T14:15:00+02:00",
- "2023-06-19T14:20:00+02:00",
- "2023-06-19T14:25:00+02:00",
- "2023-06-19T14:30:00+02:00",
- "2023-06-19T14:35:00+02:00",
- "2023-06-19T14:40:00+02:00",
- "2023-06-19T14:45:00+02:00",
- "2023-06-19T14:50:00+02:00",
- "2023-06-19T14:55:00+02:00",
- "2023-06-19T15:00:00+02:00",
- "2023-06-19T15:05:00+02:00",
- "2023-06-19T15:10:00+02:00",
- "2023-06-19T15:15:00+02:00",
- "2023-06-19T15:20:00+02:00",
- "2023-06-19T15:25:00+02:00",
- "2023-06-19T15:30:00+02:00",
- "2023-06-19T15:35:00+02:00",
- "2023-06-19T15:40:00+02:00",
- "2023-06-19T15:45:00+02:00",
- "2023-06-19T15:50:00+02:00",
- "2023-06-19T15:55:00+02:00",
- "2023-06-19T16:00:00+02:00",
- "2023-06-19T16:05:00+02:00",
- "2023-06-19T16:10:00+02:00",
- "2023-06-19T16:15:00+02:00",
- "2023-06-19T16:20:00+02:00",
- "2023-06-19T16:25:00+02:00",
- "2023-06-19T16:30:00+02:00",
- "2023-06-19T16:35:00+02:00",
- "2023-06-19T16:40:00+02:00",
- "2023-06-19T16:45:00+02:00",
- "2023-06-19T16:50:00+02:00",
- "2023-06-19T16:55:00+02:00",
- "2023-06-19T17:00:00+02:00",
- "2023-06-19T17:05:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayAreaStack.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayAreaStack.json
deleted file mode 100644
index a38097e316..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayAreaStack.json
+++ /dev/null
@@ -1,3106 +0,0 @@
-{
- "global": {
- "title": "memory-stats graph on srv-oracle-crm",
- "start": "2023-06-06T12:43:09+02:00",
- "end": "2023-06-07T12:43:09+02:00",
- "vertical-label": "Memory Usage",
- "base": 1024,
- "width": 550,
- "height": 140,
- "scaled": 1,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 5397,
- "metric_id": 13071,
- "metric": "mem_active",
- "metric_legend": "mem_active",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 25,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-active",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": "mem_active",
- "ds_color_line": "#E84017",
- "ds_color_line_mode": "0",
- "ds_color_area": "#E84017",
- "ds_color_area_warn": "#E84017",
- "ds_color_area_crit": "#E84017",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_active",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 1893820035,
- 2052146925.1,
- 2466085903,
- 2466085903,
- 2466085903,
- 2466085903,
- 2466085903,
- 2285190216.1,
- 1812246071,
- 1812246071,
- 2063947848.5,
- 2146317828,
- 641190915,
- 641190915,
- 641190915,
- 2311348047.5,
- 6240789467.9,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 976416823,
- 3746504548,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4136212707,
- 4045334676.2,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 4032549554,
- 2843304694.2,
- 2675996482,
- 3290636903.5,
- 3377107229,
- 3377107229,
- 3377107229,
- 3377107229,
- 1008975090.3,
- 675815816,
- 675815816,
- 675815816,
- 675815816,
- 675815816,
- 675815816,
- 675815816,
- 675815816,
- 5007167276.5,
- 5616520904,
- 5616520904,
- 5616520904,
- 5616520904,
- 5616520904,
- 5616520904,
- 5616520904,
- 5616520904,
- 6020516585.6,
- 3004905509.1,
- 2717449076.5,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 4013696655,
- 3518667258.2,
- 3477659444.3,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 4029339877,
- 2669352098.8,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 1176218664,
- 921214667.61,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 641245245,
- 531967203.39,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 410376143,
- 364244282.82,
- 312223249,
- 312223249,
- 312223249,
- 312223249,
- 312223249,
- 312223249,
- 312223249,
- 312223249,
- 191874059.65,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 56161144,
- 2507006790.8,
- 5270726350,
- 5270726350,
- 5270726350,
- 5270726350,
- 5357995355.7,
- 6141977364.6,
- 1153868339,
- 1153868339,
- 1153868339,
- 1435336547.7,
- 5174842749,
- 5174842749,
- 4977220904.4,
- 2351673540,
- 2351673540,
- 2351673540,
- 2439970914.3,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3613064601,
- 3633811544.1,
- 3738396850.5,
- 1465840195,
- 1465840195,
- 1465840195,
- 1465840195,
- 1465840195,
- 1174502940.9,
- 1130969788,
- 1130969788,
- 1130969788,
- 1130969788,
- 1130969788,
- 1130969788,
- 1130969788,
- 1116663662,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 1114525965,
- 496913723.64,
- 404626837,
- 404626837,
- 404626837,
- 404626837,
- 404626837,
- 404626837,
- 404626837,
- 5119506062,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5824028245,
- 5908740341.6,
- 5921398471,
- 5921398471,
- 5921398471,
- 5921398471,
- 5921398471,
- 5921398471,
- 5921398471,
- 6245118232.5,
- 6005456642,
- 4040032635,
- 2592658957,
- 2592658957,
- null
- ],
- "prints": [
- [
- "Last:2592658957.00"
- ],
- [
- "Average:2419187156.86"
- ]
- ],
- "last_value": 2592658957,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 2419187156.86
- },
- {
- "index_id": 5397,
- "metric_id": 13073,
- "metric": "mem_apps",
- "metric_legend": "mem_apps",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 26,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-apps",
- "ds_order": 2,
- "ds_hidecurve": null,
- "ds_name": "mem_apps",
- "ds_color_line": "#4BB846",
- "ds_color_line_mode": "0",
- "ds_color_area": "#4BB846",
- "ds_color_area_warn": "#4BB846",
- "ds_color_area_crit": "#4BB846",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_apps",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 2,
- "data": [
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 98553122,
- 212008185.56,
- 508631665,
- 508631665,
- 508631665,
- 508631665,
- 508631665,
- 404436836.74,
- 132023852,
- 132023852,
- 751679255.8,
- 2023984324.9,
- 1114786080,
- 1114786080,
- 1114786080,
- 1545614683,
- 2477236437.9,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 131631027,
- 1689936947,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1909166297,
- 1590469817.4,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 1545634191,
- 540868656.99,
- 399513810,
- 805884426.34,
- 863054437,
- 863054437,
- 863054437,
- 863054437,
- 561082446.51,
- 518599695,
- 518599695,
- 518599695,
- 518599695,
- 518599695,
- 518599695,
- 518599695,
- 518599695,
- 1357142860,
- 1475112811,
- 1475112811,
- 1475112811,
- 1475112811,
- 1475112811,
- 1475112811,
- 1475112811,
- 1475112811,
- 1844808332.4,
- 1834001095.6,
- 2325101374.9,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2897236369,
- 2780403570.1,
- 2660846348.1,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 2670413196,
- 1430911514,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 70060017,
- 69927619.973,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 69782261,
- 57749074.973,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 44360037,
- 29247892.94,
- 12206539,
- 12206539,
- 12206539,
- 12206539,
- 12206539,
- 12206539,
- 12206539,
- 12206539,
- 9103798.28,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 5604963,
- 1292535222.4,
- 2743754451,
- 2743754451,
- 2743754451,
- 2743754451,
- 2746719079.1,
- 2664862881,
- 1054057710,
- 1054057710,
- 1054057710,
- 1077191458.5,
- 1384539832,
- 1384539832,
- 1377460654.4,
- 1283408724,
- 1283408724,
- 1283408724,
- 1427368034.9,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3339970309,
- 3341758517.8,
- 3277555338.2,
- 2108933138,
- 2108933138,
- 2108933138,
- 2108933138,
- 2108933138,
- 1548430581.6,
- 1464677326,
- 1464677326,
- 1464677326,
- 1464677326,
- 1464677326,
- 1464677326,
- 1464677326,
- 300788359.3,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 126873916,
- 84415687.93,
- 78071355,
- 78071355,
- 78071355,
- 78071355,
- 78071355,
- 78071355,
- 78071355,
- 1014630991.2,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 1154576684,
- 2456071615.8,
- 2650547870,
- 2650547870,
- 2650547870,
- 2650547870,
- 2650547870,
- 2650547870,
- 2650547870,
- 2726291049,
- 1847897022.8,
- 477644310.52,
- 158057658,
- 158057658,
- null
- ],
- "prints": [
- [
- "Last:158057658.00"
- ],
- [
- "Average:1062901083.13"
- ]
- ],
- "last_value": 158057658,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 1062901083.13
- },
- {
- "index_id": 5397,
- "metric_id": 13070,
- "metric": "mem_mapped",
- "metric_legend": "mem_mapped",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 27,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-mapped",
- "ds_order": 3,
- "ds_hidecurve": null,
- "ds_name": "mem_mapped",
- "ds_color_line": "#39C3C6",
- "ds_color_line_mode": "0",
- "ds_color_area": "#39C3C6",
- "ds_color_area_warn": "#39C3C6",
- "ds_color_area_crit": "#39C3C6",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_mapped",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 3,
- "data": [
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 26075867,
- 30188011.807,
- 40939041,
- 40939041,
- 40939041,
- 40939041,
- 40939041,
- 40006741.287,
- 37569283,
- 37569283,
- 44363448.583,
- 50169994.46,
- 18910194,
- 18910194,
- 18910194,
- 44714711.123,
- 103907909.91,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 4288797,
- 134021342.32,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 152272689,
- 96299329.143,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 88424750,
- 50472420.157,
- 45133119,
- 95402405.987,
- 102474511,
- 102474511,
- 102474511,
- 102474511,
- 59306851.707,
- 53233835,
- 53233835,
- 53233835,
- 53233835,
- 53233835,
- 53233835,
- 53233835,
- 53233835,
- 139167265.92,
- 151256760,
- 151256760,
- 151256760,
- 151256760,
- 151256760,
- 151256760,
- 151256760,
- 151256760,
- 167520608.11,
- 87172020.61,
- 105523104.02,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 169023088,
- 125884231.76,
- 92215363.55,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 107249346,
- 71144807.53,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 31505559,
- 29477861.9,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 27251649,
- 18183509.593,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 8093608,
- 4702974.42,
- 879494,
- 879494,
- 879494,
- 879494,
- 879494,
- 879494,
- 879494,
- 879494,
- 486918.98,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 44228,
- 68949003.82,
- 146650134,
- 146650134,
- 146650134,
- 146650134,
- 147031336.99,
- 152013277.07,
- 150915692,
- 150915692,
- 150915692,
- 151609863.87,
- 160832433,
- 160832433,
- 155141940.43,
- 79539682,
- 79539682,
- 79539682,
- 81880551.23,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 112980671,
- 115500915.72,
- 146919039.18,
- 119482341,
- 119482341,
- 119482341,
- 119482341,
- 119482341,
- 90930015.45,
- 86663576,
- 86663576,
- 86663576,
- 86663576,
- 86663576,
- 86663576,
- 86663576,
- 52103843.03,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 46939745,
- 30694571.69,
- 28267132,
- 28267132,
- 28267132,
- 28267132,
- 28267132,
- 28267132,
- 28267132,
- 150105765.22,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 168311538,
- 169874079.75,
- 170107563,
- 170107563,
- 170107563,
- 170107563,
- 170107563,
- 170107563,
- 170107563,
- 170629573.67,
- 120264551.1,
- 56314383.81,
- 48993877,
- 48993877,
- null
- ],
- "prints": [
- [
- "Last:48993877.00"
- ],
- [
- "Average:72908106.02"
- ]
- ],
- "last_value": 48993877,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 72908106.02
- },
- {
- "index_id": 5397,
- "metric_id": 13069,
- "metric": "mem_pages_tables",
- "metric_legend": "mem_pages_tables",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 28,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-page-tables",
- "ds_order": 4,
- "ds_hidecurve": null,
- "ds_name": "mem_pages_tables",
- "ds_color_line": "#E3DB1C",
- "ds_color_line_mode": "0",
- "ds_color_area": "#E3DB1C",
- "ds_color_area_warn": "#E3DB1C",
- "ds_color_area_crit": "#E3DB1C",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_pages_tables",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 4,
- "data": [
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 74549259,
- 78623541.143,
- 89275580,
- 89275580,
- 89275580,
- 89275580,
- 89275580,
- 66932420.177,
- 8517171,
- 8517171,
- 48204303.26,
- 144020594.4,
- 123251230,
- 123251230,
- 123251230,
- 157464418.47,
- 241700900.2,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 178924790,
- 311516741.45,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 330170362,
- 56983891.587,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 18550814,
- 13753708.903,
- 13078831,
- 93841567.95,
- 105203626,
- 105203626,
- 105203626,
- 105203626,
- 29710500.823,
- 19089795,
- 19089795,
- 19089795,
- 19089795,
- 19089795,
- 19089795,
- 19089795,
- 19089795,
- 80470299.85,
- 89105580,
- 89105580,
- 89105580,
- 89105580,
- 89105580,
- 89105580,
- 89105580,
- 89105580,
- 257340638.01,
- 238801689.93,
- 251976806.54,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 288584148,
- 186830459.77,
- 128637295.24,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 187399676,
- 128653847.91,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 64156680,
- 38517552.2,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 10368300,
- 9097165.2267,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 7682804,
- 4386945.92,
- 670340,
- 670340,
- 670340,
- 670340,
- 670340,
- 670340,
- 670340,
- 670340,
- 573501.2,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 464300,
- 105221194.23,
- 223351309,
- 223351309,
- 223351309,
- 223351309,
- 231537164.72,
- 337387099.68,
- 298792029,
- 298792029,
- 298792029,
- 298809162.27,
- 299036790,
- 299036790,
- 296149074.19,
- 257783707,
- 257783707,
- 257783707,
- 262884434.38,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 330651241,
- 331120621.73,
- 315063592.89,
- 18884007,
- 18884007,
- 18884007,
- 18884007,
- 18884007,
- 3107364.36,
- 749935,
- 749935,
- 749935,
- 749935,
- 749935,
- 749935,
- 749935,
- 251633.8,
- 177175,
- 177175,
- 177175,
- 177175,
- 177175,
- 177175,
- 177175,
- 177175,
- 177175,
- 47990.44,
- 28687,
- 28687,
- 28687,
- 28687,
- 28687,
- 28687,
- 28687,
- 114925814.68,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 132094351,
- 253196701.48,
- 271292455,
- 271292455,
- 271292455,
- 271292455,
- 271292455,
- 271292455,
- 271292455,
- 285387781.79,
- 253248736.66,
- 186446431.82,
- 172196696,
- 172196696,
- null
- ],
- "prints": [
- [
- "Last:172196696.00"
- ],
- [
- "Average:118644866.56"
- ]
- ],
- "last_value": 172196696,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 118644866.56
- },
- {
- "index_id": 5397,
- "metric_id": 13072,
- "metric": "mem_inactive",
- "metric_legend": "mem_inactive",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 29,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-inactive",
- "ds_order": 5,
- "ds_hidecurve": null,
- "ds_name": "mem_inactive",
- "ds_color_line": "#91876E",
- "ds_color_line_mode": "0",
- "ds_color_area": "#91876E",
- "ds_color_area_warn": "#91876E",
- "ds_color_area_crit": "#91876E",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_inactive",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 5,
- "data": [
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 78174332,
- 84397956.413,
- 100669360,
- 100669360,
- 100669360,
- 100669360,
- 100669360,
- 85037735.11,
- 44169511,
- 44169511,
- 138186268.11,
- 334429102.58,
- 204856540,
- 204856540,
- 204856540,
- 266905172.87,
- 417538119.81,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 277947135,
- 456831211.17,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 481997412,
- 121519411.11,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 70805776,
- 14874547.867,
- 7005896,
- 97493389.33,
- 110223569,
- 110223569,
- 110223569,
- 110223569,
- 82766160.353,
- 78903331,
- 78903331,
- 78903331,
- 78903331,
- 78903331,
- 78903331,
- 78903331,
- 78903331,
- 361860746.73,
- 401668444,
- 401668444,
- 401668444,
- 401668444,
- 401668444,
- 401668444,
- 401668444,
- 401668444,
- 443765650.34,
- 339668456.03,
- 346882883.6,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 412521374,
- 284942314.77,
- 265374316.08,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 397672966,
- 238462035.07,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 63664020,
- 40019224.54,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 14059554,
- 9025003.1667,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 3423179,
- 2992653.83,
- 2507168,
- 2507168,
- 2507168,
- 2507168,
- 2507168,
- 2507168,
- 2507168,
- 2507168,
- 2373775.89,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 2223355,
- 208213620.2,
- 440500515,
- 440500515,
- 440500515,
- 440500515,
- 442135076.11,
- 435862503.86,
- 64010186,
- 64010186,
- 64010186,
- 85934393.62,
- 377213152,
- 377213152,
- 356856826.5,
- 86408502,
- 86408502,
- 86408502,
- 103265039.74,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 327216184,
- 336353686.99,
- 457049389.5,
- 447715491,
- 447715491,
- 447715491,
- 447715491,
- 447715491,
- 359026791.42,
- 345774457,
- 345774457,
- 345774457,
- 345774457,
- 345774457,
- 345774457,
- 345774457,
- 128463407.08,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 95991641,
- 86254514,
- 84799541,
- 84799541,
- 84799541,
- 84799541,
- 84799541,
- 84799541,
- 84799541,
- 117187388.57,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 122026952,
- 196747423.13,
- 207912551,
- 207912551,
- 207912551,
- 207912551,
- 207912551,
- 207912551,
- 207912551,
- 326892127.45,
- 316977681.63,
- 105944222.97,
- 51188466,
- 51188466,
- null
- ],
- "prints": [
- [
- "Last:51188466.00"
- ],
- [
- "Average:183852943.55"
- ]
- ],
- "last_value": 51188466,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 183852943.55
- },
- {
- "index_id": 5397,
- "metric_id": 13067,
- "metric": "mem_buffer",
- "metric_legend": "mem_buffer",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 30,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-buffer",
- "ds_order": 6,
- "ds_hidecurve": null,
- "ds_name": "mem_buffer",
- "ds_color_line": "#1209F5",
- "ds_color_line_mode": "0",
- "ds_color_area": "#1209F5",
- "ds_color_area_warn": "#1209F5",
- "ds_color_area_crit": "#1209F5",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_buffer",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 6,
- "data": [
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 37552729,
- 191708687.1,
- 594742939,
- 594742939,
- 594742939,
- 594742939,
- 594742939,
- 540393727.81,
- 398300007,
- 398300007,
- 480586455.45,
- 625139901.46,
- 440608844,
- 440608844,
- 440608844,
- 467841282.06,
- 537710601.72,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 521707935,
- 696259169.45,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 720815807,
- 113953070.44,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 28576944,
- 16222688.197,
- 14484637,
- 236373711.35,
- 267590045,
- 267590045,
- 267590045,
- 267590045,
- 195705498.99,
- 185592464,
- 185592464,
- 185592464,
- 185592464,
- 185592464,
- 185592464,
- 185592464,
- 185592464,
- 650575197.22,
- 715991019,
- 715991019,
- 715991019,
- 715991019,
- 715991019,
- 715991019,
- 715991019,
- 715991019,
- 838061375.8,
- 281973265.07,
- 328841897.77,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 681039689,
- 445778518.09,
- 419835812,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 674934492,
- 424722024.73,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 150013232,
- 145144937.14,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 139800026,
- 137569339.95,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 135087309,
- 122012400.62,
- 107268355,
- 107268355,
- 107268355,
- 107268355,
- 107268355,
- 107268355,
- 107268355,
- 107268355,
- 98034856.26,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 87622613,
- 404735924.31,
- 762331786,
- 762331786,
- 762331786,
- 762331786,
- 766513542.81,
- 809009098.93,
- 635470168,
- 635470168,
- 635470168,
- 638174903.11,
- 674109241,
- 674109241,
- 647779351.33,
- 297967960,
- 297967960,
- 297967960,
- 312033490.01,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 498904103,
- 513191502.42,
- 659509551.15,
- 81577554,
- 81577554,
- 81577554,
- 81577554,
- 81577554,
- 45720144.69,
- 40362141,
- 40362141,
- 40362141,
- 40362141,
- 40362141,
- 40362141,
- 40362141,
- 19195506.45,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 16032676,
- 5517032.98,
- 3945730,
- 3945730,
- 3945730,
- 3945730,
- 3945730,
- 3945730,
- 3945730,
- 462388009.63,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 530890879,
- 617384949.64,
- 630309351,
- 630309351,
- 630309351,
- 630309351,
- 630309351,
- 630309351,
- 630309351,
- 638703189.57,
- 584936985.36,
- 354641768.23,
- 175353479,
- 175353479,
- null
- ],
- "prints": [
- [
- "Last:175353479.00"
- ],
- [
- "Average:332234252.08"
- ]
- ],
- "last_value": 175353479,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 332234252.08
- },
- {
- "index_id": 5397,
- "metric_id": 13068,
- "metric": "mem_cache",
- "metric_legend": "mem_cache",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 31,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-cache",
- "ds_order": 7,
- "ds_hidecurve": null,
- "ds_name": "mem_cache",
- "ds_color_line": "#C738B3",
- "ds_color_line_mode": "0",
- "ds_color_area": "#C738B3",
- "ds_color_area_warn": "#C738B3",
- "ds_color_area_crit": "#C738B3",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_cache",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 7,
- "data": [
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2366932380,
- 2525106295.6,
- 2938645328,
- 2938645328,
- 2938645328,
- 2938645328,
- 2938645328,
- 2351768818.4,
- 817404932,
- 817404932,
- 1645987946.6,
- 3207589652.9,
- 1626643617,
- 1626643617,
- 1626643617,
- 2160810351.6,
- 3323027980.6,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 500774058,
- 2333026907.7,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 2590796320,
- 1910659820.6,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1814975218,
- 1222898572,
- 1139602618,
- 1443507739.1,
- 1486262452,
- 1486262452,
- 1486262452,
- 1486262452,
- 1479102156.9,
- 1478094815,
- 1478094815,
- 1478094815,
- 1478094815,
- 1478094815,
- 1478094815,
- 1478094815,
- 1478094815,
- 3660937859.7,
- 3968029847,
- 3968029847,
- 3968029847,
- 3968029847,
- 3968029847,
- 3968029847,
- 3968029847,
- 3968029847,
- 4183448669.9,
- 2332788260.5,
- 2874868720.4,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 4456800060,
- 3221762121.1,
- 2425597488.2,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 3040187834,
- 2657943826.1,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 2238277328,
- 1398491748,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 476489398,
- 286775000.57,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 75684333,
- 72587698.52,
- 69095749,
- 69095749,
- 69095749,
- 69095749,
- 69095749,
- 69095749,
- 69095749,
- 69095749,
- 54257856.05,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 37525764,
- 2408894455.5,
- 5082991065,
- 5082991065,
- 5082991065,
- 5082991065,
- 5086825971.8,
- 5115011610.7,
- 4812577773,
- 4812577773,
- 4812577773,
- 4824094075.7,
- 4977096383,
- 4977096383,
- 4809771214.1,
- 2586736827,
- 2586736827,
- 2586736827,
- 2601799952.6,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2801924335,
- 2949784835.2,
- 4695957105.6,
- 1796215918,
- 1796215918,
- 1796215918,
- 1796215918,
- 1796215918,
- 1759041364.4,
- 1753486546,
- 1753486546,
- 1753486546,
- 1753486546,
- 1753486546,
- 1753486546,
- 1753486546,
- 1184101489.7,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 1099020964,
- 985758279.22,
- 968833970,
- 968833970,
- 968833970,
- 968833970,
- 968833970,
- 968833970,
- 968833970,
- 3623849409.9,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4020575855,
- 4886590537.3,
- 5015995030,
- 5015995030,
- 5015995030,
- 5015995030,
- 5015995030,
- 5015995030,
- 5015995030,
- 5048183774.8,
- 4637944118.6,
- 3658964974.6,
- 3122834181,
- 3122834181,
- null
- ],
- "prints": [
- [
- "Last:3122834181.00"
- ],
- [
- "Average:2112555251.91"
- ]
- ],
- "last_value": 3122834181,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 2112555251.91
- },
- {
- "index_id": 5397,
- "metric_id": 13074,
- "metric": "mem_unused",
- "metric_legend": "mem_unused",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 32,
- "host_id": null,
- "service_id": null,
- "name": "Memory-stats-unused",
- "ds_order": 8,
- "ds_hidecurve": null,
- "ds_name": "mem_unused",
- "ds_color_line": "#01FD0B",
- "ds_color_line_mode": "0",
- "ds_color_area": "#01FD0B",
- "ds_color_area_warn": "#01FD0B",
- "ds_color_area_crit": "#01FD0B",
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "10",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": "1",
- "default_tpl1": null,
- "comment": null
- },
- "legend": "mem_unused",
- "stack": "1",
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 8,
- "data": [
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12604211456,
- 12005689577,
- 10440879364,
- 10440879364,
- 10440879364,
- 10440879364,
- 10440879364,
- 11406102684,
- 13929638353,
- 13929638353,
- 12006913654,
- 8648217781.3,
- 13009621760,
- 13009621760,
- 13009621760,
- 10225170513,
- 3837957762,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 14588178615,
- 7811772312.9,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 6858437586,
- 9244649163.5,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 9580351933,
- 12477473892,
- 12885053787,
- 11116729036,
- 10867953311,
- 10867953311,
- 10867953311,
- 10867953311,
- 13763220474,
- 14170539429,
- 14170539429,
- 14170539429,
- 14170539429,
- 14170539429,
- 14170539429,
- 14170539429,
- 14170539429,
- 5922547674.1,
- 4762183815,
- 4762183815,
- 4762183815,
- 4762183815,
- 4762183815,
- 4762183815,
- 4762183815,
- 4762183815,
- 3424407319.8,
- 9060558883.2,
- 8229225316.2,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 4260967797,
- 6615600706.2,
- 7709703112.6,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 6072671793,
- 9558679025.8,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 13385973680,
- 14537075569,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 15800872747,
- 16129502883,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16495161767,
- 16579694331,
- 16675018286,
- 16675018286,
- 16675018286,
- 16675018286,
- 16675018286,
- 16675018286,
- 16675018286,
- 16675018286,
- 16823164414,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 16990222813,
- 10184312969,
- 2509563570,
- 2509563570,
- 2509563570,
- 2509563570,
- 2401111652.8,
- 1523745344.1,
- 9010177283,
- 9010177283,
- 9010177283,
- 8668718775.2,
- 4132198600,
- 4132198600,
- 4559489214.7,
- 10236350238,
- 10236350238,
- 10236350238,
- 9950666762.9,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 6155157736,
- 5958347556.1,
- 3889418312.9,
- 11141220536,
- 11141220536,
- 11141220536,
- 11141220536,
- 11141220536,
- 12199109977,
- 12357185411,
- 12357185411,
- 12357185411,
- 12357185411,
- 12357185411,
- 12357185411,
- 12357185411,
- 14378301279,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 14680307098,
- 15490267380,
- 15611295928,
- 15611295928,
- 15611295928,
- 15611295928,
- 15611295928,
- 15611295928,
- 15611295928,
- 6577275738.8,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 5227364676,
- 2691263531.3,
- 2312305889,
- 2312305889,
- 2312305889,
- 2312305889,
- 2312305889,
- 2312305889,
- 2312305889,
- 1738663451.3,
- 3413143441.8,
- 8299880453.1,
- 10858585866,
- 10858585866,
- null
- ],
- "prints": [
- [
- "Last:10858585866.00"
- ],
- [
- "Average:10877585519.89"
- ]
- ],
- "last_value": 10858585866,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 10877585519.89
- }
- ],
- "times": [
- "2023-06-06T12:45:00+02:00",
- "2023-06-06T12:50:00+02:00",
- "2023-06-06T12:55:00+02:00",
- "2023-06-06T13:00:00+02:00",
- "2023-06-06T13:05:00+02:00",
- "2023-06-06T13:10:00+02:00",
- "2023-06-06T13:15:00+02:00",
- "2023-06-06T13:20:00+02:00",
- "2023-06-06T13:25:00+02:00",
- "2023-06-06T13:30:00+02:00",
- "2023-06-06T13:35:00+02:00",
- "2023-06-06T13:40:00+02:00",
- "2023-06-06T13:45:00+02:00",
- "2023-06-06T13:50:00+02:00",
- "2023-06-06T13:55:00+02:00",
- "2023-06-06T14:00:00+02:00",
- "2023-06-06T14:05:00+02:00",
- "2023-06-06T14:10:00+02:00",
- "2023-06-06T14:15:00+02:00",
- "2023-06-06T14:20:00+02:00",
- "2023-06-06T14:25:00+02:00",
- "2023-06-06T14:30:00+02:00",
- "2023-06-06T14:35:00+02:00",
- "2023-06-06T14:40:00+02:00",
- "2023-06-06T14:45:00+02:00",
- "2023-06-06T14:50:00+02:00",
- "2023-06-06T14:55:00+02:00",
- "2023-06-06T15:00:00+02:00",
- "2023-06-06T15:05:00+02:00",
- "2023-06-06T15:10:00+02:00",
- "2023-06-06T15:15:00+02:00",
- "2023-06-06T15:20:00+02:00",
- "2023-06-06T15:25:00+02:00",
- "2023-06-06T15:30:00+02:00",
- "2023-06-06T15:35:00+02:00",
- "2023-06-06T15:40:00+02:00",
- "2023-06-06T15:45:00+02:00",
- "2023-06-06T15:50:00+02:00",
- "2023-06-06T15:55:00+02:00",
- "2023-06-06T16:00:00+02:00",
- "2023-06-06T16:05:00+02:00",
- "2023-06-06T16:10:00+02:00",
- "2023-06-06T16:15:00+02:00",
- "2023-06-06T16:20:00+02:00",
- "2023-06-06T16:25:00+02:00",
- "2023-06-06T16:30:00+02:00",
- "2023-06-06T16:35:00+02:00",
- "2023-06-06T16:40:00+02:00",
- "2023-06-06T16:45:00+02:00",
- "2023-06-06T16:50:00+02:00",
- "2023-06-06T16:55:00+02:00",
- "2023-06-06T17:00:00+02:00",
- "2023-06-06T17:05:00+02:00",
- "2023-06-06T17:10:00+02:00",
- "2023-06-06T17:15:00+02:00",
- "2023-06-06T17:20:00+02:00",
- "2023-06-06T17:25:00+02:00",
- "2023-06-06T17:30:00+02:00",
- "2023-06-06T17:35:00+02:00",
- "2023-06-06T17:40:00+02:00",
- "2023-06-06T17:45:00+02:00",
- "2023-06-06T17:50:00+02:00",
- "2023-06-06T17:55:00+02:00",
- "2023-06-06T18:00:00+02:00",
- "2023-06-06T18:05:00+02:00",
- "2023-06-06T18:10:00+02:00",
- "2023-06-06T18:15:00+02:00",
- "2023-06-06T18:20:00+02:00",
- "2023-06-06T18:25:00+02:00",
- "2023-06-06T18:30:00+02:00",
- "2023-06-06T18:35:00+02:00",
- "2023-06-06T18:40:00+02:00",
- "2023-06-06T18:45:00+02:00",
- "2023-06-06T18:50:00+02:00",
- "2023-06-06T18:55:00+02:00",
- "2023-06-06T19:00:00+02:00",
- "2023-06-06T19:05:00+02:00",
- "2023-06-06T19:10:00+02:00",
- "2023-06-06T19:15:00+02:00",
- "2023-06-06T19:20:00+02:00",
- "2023-06-06T19:25:00+02:00",
- "2023-06-06T19:30:00+02:00",
- "2023-06-06T19:35:00+02:00",
- "2023-06-06T19:40:00+02:00",
- "2023-06-06T19:45:00+02:00",
- "2023-06-06T19:50:00+02:00",
- "2023-06-06T19:55:00+02:00",
- "2023-06-06T20:00:00+02:00",
- "2023-06-06T20:05:00+02:00",
- "2023-06-06T20:10:00+02:00",
- "2023-06-06T20:15:00+02:00",
- "2023-06-06T20:20:00+02:00",
- "2023-06-06T20:25:00+02:00",
- "2023-06-06T20:30:00+02:00",
- "2023-06-06T20:35:00+02:00",
- "2023-06-06T20:40:00+02:00",
- "2023-06-06T20:45:00+02:00",
- "2023-06-06T20:50:00+02:00",
- "2023-06-06T20:55:00+02:00",
- "2023-06-06T21:00:00+02:00",
- "2023-06-06T21:05:00+02:00",
- "2023-06-06T21:10:00+02:00",
- "2023-06-06T21:15:00+02:00",
- "2023-06-06T21:20:00+02:00",
- "2023-06-06T21:25:00+02:00",
- "2023-06-06T21:30:00+02:00",
- "2023-06-06T21:35:00+02:00",
- "2023-06-06T21:40:00+02:00",
- "2023-06-06T21:45:00+02:00",
- "2023-06-06T21:50:00+02:00",
- "2023-06-06T21:55:00+02:00",
- "2023-06-06T22:00:00+02:00",
- "2023-06-06T22:05:00+02:00",
- "2023-06-06T22:10:00+02:00",
- "2023-06-06T22:15:00+02:00",
- "2023-06-06T22:20:00+02:00",
- "2023-06-06T22:25:00+02:00",
- "2023-06-06T22:30:00+02:00",
- "2023-06-06T22:35:00+02:00",
- "2023-06-06T22:40:00+02:00",
- "2023-06-06T22:45:00+02:00",
- "2023-06-06T22:50:00+02:00",
- "2023-06-06T22:55:00+02:00",
- "2023-06-06T23:00:00+02:00",
- "2023-06-06T23:05:00+02:00",
- "2023-06-06T23:10:00+02:00",
- "2023-06-06T23:15:00+02:00",
- "2023-06-06T23:20:00+02:00",
- "2023-06-06T23:25:00+02:00",
- "2023-06-06T23:30:00+02:00",
- "2023-06-06T23:35:00+02:00",
- "2023-06-06T23:40:00+02:00",
- "2023-06-06T23:45:00+02:00",
- "2023-06-06T23:50:00+02:00",
- "2023-06-06T23:55:00+02:00",
- "2023-06-07T00:00:00+02:00",
- "2023-06-07T00:05:00+02:00",
- "2023-06-07T00:10:00+02:00",
- "2023-06-07T00:15:00+02:00",
- "2023-06-07T00:20:00+02:00",
- "2023-06-07T00:25:00+02:00",
- "2023-06-07T00:30:00+02:00",
- "2023-06-07T00:35:00+02:00",
- "2023-06-07T00:40:00+02:00",
- "2023-06-07T00:45:00+02:00",
- "2023-06-07T00:50:00+02:00",
- "2023-06-07T00:55:00+02:00",
- "2023-06-07T01:00:00+02:00",
- "2023-06-07T01:05:00+02:00",
- "2023-06-07T01:10:00+02:00",
- "2023-06-07T01:15:00+02:00",
- "2023-06-07T01:20:00+02:00",
- "2023-06-07T01:25:00+02:00",
- "2023-06-07T01:30:00+02:00",
- "2023-06-07T01:35:00+02:00",
- "2023-06-07T01:40:00+02:00",
- "2023-06-07T01:45:00+02:00",
- "2023-06-07T01:50:00+02:00",
- "2023-06-07T01:55:00+02:00",
- "2023-06-07T02:00:00+02:00",
- "2023-06-07T02:05:00+02:00",
- "2023-06-07T02:10:00+02:00",
- "2023-06-07T02:15:00+02:00",
- "2023-06-07T02:20:00+02:00",
- "2023-06-07T02:25:00+02:00",
- "2023-06-07T02:30:00+02:00",
- "2023-06-07T02:35:00+02:00",
- "2023-06-07T02:40:00+02:00",
- "2023-06-07T02:45:00+02:00",
- "2023-06-07T02:50:00+02:00",
- "2023-06-07T02:55:00+02:00",
- "2023-06-07T03:00:00+02:00",
- "2023-06-07T03:05:00+02:00",
- "2023-06-07T03:10:00+02:00",
- "2023-06-07T03:15:00+02:00",
- "2023-06-07T03:20:00+02:00",
- "2023-06-07T03:25:00+02:00",
- "2023-06-07T03:30:00+02:00",
- "2023-06-07T03:35:00+02:00",
- "2023-06-07T03:40:00+02:00",
- "2023-06-07T03:45:00+02:00",
- "2023-06-07T03:50:00+02:00",
- "2023-06-07T03:55:00+02:00",
- "2023-06-07T04:00:00+02:00",
- "2023-06-07T04:05:00+02:00",
- "2023-06-07T04:10:00+02:00",
- "2023-06-07T04:15:00+02:00",
- "2023-06-07T04:20:00+02:00",
- "2023-06-07T04:25:00+02:00",
- "2023-06-07T04:30:00+02:00",
- "2023-06-07T04:35:00+02:00",
- "2023-06-07T04:40:00+02:00",
- "2023-06-07T04:45:00+02:00",
- "2023-06-07T04:50:00+02:00",
- "2023-06-07T04:55:00+02:00",
- "2023-06-07T05:00:00+02:00",
- "2023-06-07T05:05:00+02:00",
- "2023-06-07T05:10:00+02:00",
- "2023-06-07T05:15:00+02:00",
- "2023-06-07T05:20:00+02:00",
- "2023-06-07T05:25:00+02:00",
- "2023-06-07T05:30:00+02:00",
- "2023-06-07T05:35:00+02:00",
- "2023-06-07T05:40:00+02:00",
- "2023-06-07T05:45:00+02:00",
- "2023-06-07T05:50:00+02:00",
- "2023-06-07T05:55:00+02:00",
- "2023-06-07T06:00:00+02:00",
- "2023-06-07T06:05:00+02:00",
- "2023-06-07T06:10:00+02:00",
- "2023-06-07T06:15:00+02:00",
- "2023-06-07T06:20:00+02:00",
- "2023-06-07T06:25:00+02:00",
- "2023-06-07T06:30:00+02:00",
- "2023-06-07T06:35:00+02:00",
- "2023-06-07T06:40:00+02:00",
- "2023-06-07T06:45:00+02:00",
- "2023-06-07T06:50:00+02:00",
- "2023-06-07T06:55:00+02:00",
- "2023-06-07T07:00:00+02:00",
- "2023-06-07T07:05:00+02:00",
- "2023-06-07T07:10:00+02:00",
- "2023-06-07T07:15:00+02:00",
- "2023-06-07T07:20:00+02:00",
- "2023-06-07T07:25:00+02:00",
- "2023-06-07T07:30:00+02:00",
- "2023-06-07T07:35:00+02:00",
- "2023-06-07T07:40:00+02:00",
- "2023-06-07T07:45:00+02:00",
- "2023-06-07T07:50:00+02:00",
- "2023-06-07T07:55:00+02:00",
- "2023-06-07T08:00:00+02:00",
- "2023-06-07T08:05:00+02:00",
- "2023-06-07T08:10:00+02:00",
- "2023-06-07T08:15:00+02:00",
- "2023-06-07T08:20:00+02:00",
- "2023-06-07T08:25:00+02:00",
- "2023-06-07T08:30:00+02:00",
- "2023-06-07T08:35:00+02:00",
- "2023-06-07T08:40:00+02:00",
- "2023-06-07T08:45:00+02:00",
- "2023-06-07T08:50:00+02:00",
- "2023-06-07T08:55:00+02:00",
- "2023-06-07T09:00:00+02:00",
- "2023-06-07T09:05:00+02:00",
- "2023-06-07T09:10:00+02:00",
- "2023-06-07T09:15:00+02:00",
- "2023-06-07T09:20:00+02:00",
- "2023-06-07T09:25:00+02:00",
- "2023-06-07T09:30:00+02:00",
- "2023-06-07T09:35:00+02:00",
- "2023-06-07T09:40:00+02:00",
- "2023-06-07T09:45:00+02:00",
- "2023-06-07T09:50:00+02:00",
- "2023-06-07T09:55:00+02:00",
- "2023-06-07T10:00:00+02:00",
- "2023-06-07T10:05:00+02:00",
- "2023-06-07T10:10:00+02:00",
- "2023-06-07T10:15:00+02:00",
- "2023-06-07T10:20:00+02:00",
- "2023-06-07T10:25:00+02:00",
- "2023-06-07T10:30:00+02:00",
- "2023-06-07T10:35:00+02:00",
- "2023-06-07T10:40:00+02:00",
- "2023-06-07T10:45:00+02:00",
- "2023-06-07T10:50:00+02:00",
- "2023-06-07T10:55:00+02:00",
- "2023-06-07T11:00:00+02:00",
- "2023-06-07T11:05:00+02:00",
- "2023-06-07T11:10:00+02:00",
- "2023-06-07T11:15:00+02:00",
- "2023-06-07T11:20:00+02:00",
- "2023-06-07T11:25:00+02:00",
- "2023-06-07T11:30:00+02:00",
- "2023-06-07T11:35:00+02:00",
- "2023-06-07T11:40:00+02:00",
- "2023-06-07T11:45:00+02:00",
- "2023-06-07T11:50:00+02:00",
- "2023-06-07T11:55:00+02:00",
- "2023-06-07T12:00:00+02:00",
- "2023-06-07T12:05:00+02:00",
- "2023-06-07T12:10:00+02:00",
- "2023-06-07T12:15:00+02:00",
- "2023-06-07T12:20:00+02:00",
- "2023-06-07T12:25:00+02:00",
- "2023-06-07T12:30:00+02:00",
- "2023-06-07T12:35:00+02:00",
- "2023-06-07T12:40:00+02:00",
- "2023-06-07T12:45:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayForward.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayForward.json
deleted file mode 100644
index ef73bb0a72..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayForward.json
+++ /dev/null
@@ -1,1338 +0,0 @@
-{
- "global": {
- "title": "oracle-shared-spool-ratio graph on srv-oracle-users",
- "start": "2023-06-07T09:27:07+02:00",
- "end": "2023-06-08T09:27:07+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 0,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 4811,
- "metric_id": 11758,
- "metric": "connTime",
- "metric_legend": "connTime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#ff99cc"
- },
- "legend": "connTime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.05376,
- 0.338,
- 0.63248,
- 0.18326666667,
- 0.36706666667,
- 0.099166666667,
- 0.31305,
- 0.37373333333,
- 0.43933333333,
- 0.464,
- 0.35258333333,
- 0.28791666667,
- 0.56913333333,
- 0.76703333333,
- 0.67518333333,
- 0.90208333333,
- 0.32488333333,
- 0.47813333333,
- 0.071966666667,
- 0.3686,
- 0.8341,
- 0.77396666667,
- 0.34295,
- 0.51203333333,
- 0.23581666667,
- 0.14966666667,
- 0.53633333333,
- 0.66725,
- 0.44083333333,
- 0.40603333333,
- 0.76311666667,
- 0.76126666667,
- 0.20203333333,
- 0.50725,
- 0.37375,
- 0.7752,
- 0.71796666667,
- 0.65141666667,
- 0.63618333333,
- 0.46131666667,
- 0.63278333333,
- 0.77115,
- 0.47151666667,
- 0.63983333333,
- 0.6915,
- 0.55061666667,
- 0.7759,
- 0.79126666667,
- 0.38161666667,
- 0.42606666667,
- 0.75068333333,
- 0.40968333333,
- 0.6918,
- 0.44128333333,
- 0.46593333333,
- 0.20545,
- 0.61953333333,
- 0.72133333333,
- 0.61795,
- 0.7154,
- 0.30433333333,
- 0.38171666667,
- 0.17726666667,
- 0.19431666667,
- 0.33643333333,
- 0.73506666667,
- 0.90695,
- 0.83988333333,
- 0.92438333333,
- 0.54573333333,
- 0.3909,
- 0.82456666667,
- 0.5597,
- 0.66463333333,
- 0.66005,
- 0.52756666667,
- 0.67001666667,
- 0.4347,
- 0.20076666667,
- 0.199,
- 0.45465,
- 0.7167,
- 0.4992,
- 0.7525,
- 0.68343333333,
- 0.18691666667,
- 0.10928333333,
- 0.49846666667,
- 0.20756666667,
- 0.57808333333,
- 0.5091,
- 0.21378333333,
- 0.33466666667,
- 0.35905,
- 0.7782,
- 0.31376666667,
- 0.30773333333,
- 0.55781666667,
- 0.61033333333,
- 0.61753333333,
- 0.78033333333,
- 0.67196666667,
- 0.83675,
- 0.5666,
- 0.31156666667,
- 0.74395,
- 0.58471666667,
- 0.73915,
- 0.411,
- 0.25175,
- 0.44345,
- 0.85811666667,
- 0.78576666667,
- 0.54195,
- 0.6819,
- 0.77463333333,
- 0.53966666667,
- 0.081583333333,
- 0.0105,
- 0.66158333333,
- 0.19941666667,
- 0.3885,
- 0.72716666667,
- 0.34625,
- 0.15866666667,
- 0.80133333333,
- 0.35021666667,
- 0.40711666667,
- 0.31185,
- 0.50205,
- 0.88026666667,
- 0.57613333333,
- 0.43963333333,
- 0.32051666667,
- 0.50523333333,
- 0.6505,
- 0.55111666667,
- 0.5942,
- 0.72986666667,
- 0.95238333333,
- 0.68285,
- 0.46565,
- 0.63016666667,
- 0.45605,
- 0.38395,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "prints": [
- [
- "Last:0.38"
- ],
- [
- "Min:0.01"
- ],
- [
- "Max:0.95"
- ],
- [
- "Average:0.51"
- ]
- ],
- "last_value": 0.38,
- "minimum_value": 0.01,
- "maximum_value": 0.95,
- "average_value": 0.51
- },
- {
- "index_id": 4811,
- "metric_id": 11757,
- "metric": "querytime",
- "metric_legend": "querytime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#6666ff"
- },
- "legend": "querytime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.69412,
- 0.29608,
- 0.64332,
- 0.78435,
- 0.49911666667,
- 0.26918333333,
- 0.91718333333,
- 0.5858,
- 0.19691666667,
- 0.44683333333,
- 0.33975,
- 0.23175,
- 0.54105,
- 0.58516666667,
- 0.62908333333,
- 0.21381666667,
- 0.054433333333,
- 0.41883333333,
- 0.55065,
- 0.74241666667,
- 0.20685,
- 0.73463333333,
- 0.67131666667,
- 0.27435,
- 0.34288333333,
- 0.7709,
- 0.92633333333,
- 0.6353,
- 0.7674,
- 0.79433333333,
- 0.6929,
- 0.36873333333,
- 0.15238333333,
- 0.45986666667,
- 0.72241666667,
- 0.71251666667,
- 0.39875,
- 0.70755,
- 0.60123333333,
- 0.83198333333,
- 0.9789,
- 0.57765,
- 0.17835,
- 0.5656,
- 0.36398333333,
- 0.46198333333,
- 0.31618333333,
- 0.3781,
- 0.25323333333,
- 0.1532,
- 0.04195,
- 0.23205,
- 0.78596666667,
- 0.43723333333,
- 0.28218333333,
- 0.72755,
- 0.77603333333,
- 0.68743333333,
- 0.66741666667,
- 0.34995,
- 0.37335,
- 0.69358333333,
- 0.27455,
- 0.28013333333,
- 0.71015,
- 0.50801666667,
- 0.45211666667,
- 0.76751666667,
- 0.75243333333,
- 0.2591,
- 0.43015,
- 0.36633333333,
- 0.66898333333,
- 0.79993333333,
- 0.38278333333,
- 0.43815,
- 0.7089,
- 0.57918333333,
- 0.36856666667,
- 0.65455,
- 0.74285,
- 0.91205,
- 0.78031666667,
- 0.71691666667,
- 0.69246666667,
- 0.5553,
- 0.81631666667,
- 0.82576666667,
- 0.64196666667,
- 0.35766666667,
- 0.52513333333,
- 0.59181666667,
- 0.48015,
- 0.17466666667,
- 0.53273333333,
- 0.78308333333,
- 0.49533333333,
- 0.71715,
- 0.45326666667,
- 0.34505,
- 0.55813333333,
- 0.58506666667,
- 0.51556666667,
- 0.25808333333,
- 0.32178333333,
- 0.87881666667,
- 0.73263333333,
- 0.29503333333,
- 0.51955,
- 0.80328333333,
- 0.61133333333,
- 0.88905,
- 0.73008333333,
- 0.46576666667,
- 0.75335,
- 0.64886666667,
- 0.46566666667,
- 0.23391666667,
- 0.32333333333,
- 0.06075,
- 0.52183333333,
- 0.75116666667,
- 0.65341666667,
- 0.41658333333,
- 0.044,
- 0.5455,
- 0.66271666667,
- 0.45943333333,
- 0.34365,
- 0.62895,
- 0.69748333333,
- 0.57913333333,
- 0.42935,
- 0.3825,
- 0.5489,
- 0.61453333333,
- 0.52853333333,
- 0.58836666667,
- 0.70246666667,
- 0.68868333333,
- 0.69335,
- 0.4246,
- 0.40923333333,
- 0.8041,
- 0.6626,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "prints": [
- [
- "Last:0.66"
- ],
- [
- "Min:0.04"
- ],
- [
- "Max:0.98"
- ],
- [
- "Average:0.54"
- ]
- ],
- "last_value": 0.66,
- "minimum_value": 0.04,
- "maximum_value": 0.98,
- "average_value": 0.54
- },
- {
- "index_id": 4811,
- "metric_id": 11756,
- "metric": "used",
- "metric_legend": "used",
- "unit": "%",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 8,
- "host_id": null,
- "service_id": null,
- "name": "Used",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": "used",
- "ds_color_line": "#2B28D7",
- "ds_color_line_mode": "0",
- "ds_color_area": "#050AF9",
- "ds_color_area_warn": null,
- "ds_color_area_crit": null,
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "used",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 1,
- "data": [
- 81.5376,
- 82.84972,
- 83.50108,
- 84.304366667,
- 85.243566667,
- 84.993333333,
- 85.029616667,
- 85.006383333,
- 87.494416667,
- 87.404,
- 85.760416667,
- 84.159166667,
- 84.6812,
- 84.468933333,
- 84.2907,
- 85.632833333,
- 86.488066667,
- 86.844516667,
- 85.46465,
- 84.358816667,
- 82.004933333,
- 82.207066667,
- 81.247933333,
- 79.504016667,
- 79.532266667,
- 79.924433333,
- 79.03195,
- 78.851233333,
- 79.726933333,
- 78.68965,
- 78.418016667,
- 78.223866667,
- 76.752933333,
- 75.281316667,
- 73.84245,
- 74.192566667,
- 73.325533333,
- 72.3546,
- 71.02525,
- 70.578283333,
- 70.88545,
- 73.86865,
- 74.6044,
- 74.356266667,
- 74.481966667,
- 74.988183333,
- 74.891383333,
- 74.5475,
- 75.7053,
- 76.809883333,
- 77.069633333,
- 76.012033333,
- 75.40825,
- 74.519,
- 73.10165,
- 73.826416667,
- 73.605316667,
- 72.003283333,
- 71.210116667,
- 70.476483333,
- 73.647933333,
- 76.360233333,
- 78.137116667,
- 78.928,
- 78.254366667,
- 78.312233333,
- 78.939166667,
- 79.256566667,
- 78.5502,
- 77.899116667,
- 77.274816667,
- 77.20985,
- 77.566733333,
- 77.3999,
- 78.054983333,
- 77.6581,
- 78.215916667,
- 78.121733333,
- 78.28725,
- 78.265633333,
- 79.1123,
- 79.665216667,
- 81.06855,
- 81.349333333,
- 81.25085,
- 82.1874,
- 82.52145,
- 83.712433333,
- 85.337816667,
- 84.673283333,
- 83.360283333,
- 83.58445,
- 84.609016667,
- 84.876033333,
- 86.26595,
- 86.732966667,
- 87.697766667,
- 88.536166667,
- 87.30565,
- 86.810316667,
- 87.667166667,
- 88.473583333,
- 88.096516667,
- 87.201566667,
- 87.690583333,
- 88.866416667,
- 88.943983333,
- 87.828033333,
- 86.688216667,
- 85.928366667,
- 85.887183333,
- 86.7506,
- 86.304166667,
- 85.379783333,
- 85.705133333,
- 84.564433333,
- 82.771166667,
- 81.506916667,
- 82.213583333,
- 82.514333333,
- 83.525916667,
- 83.594916667,
- 84.6655,
- 85.179166667,
- 85.782583333,
- 84.465416667,
- 83.6318,
- 84.248066667,
- 86.10535,
- 87.008783333,
- 87.892233333,
- 89.5511,
- 91.161083333,
- 92.036366667,
- 91.702066667,
- 90.579833333,
- 90.5435,
- 90.649233333,
- 90.199233333,
- 90.253016667,
- 91.326716667,
- 93.229816667,
- 93.5479,
- 93.26945,
- 93.073233333,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null,
- null
- ],
- "prints": [
- [
- "Last:93.07"
- ],
- [
- "Average:82.08"
- ]
- ],
- "last_value": 93.07,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 82.08
- }
- ],
- "times": [
- "2023-06-07T09:30:00+02:00",
- "2023-06-07T09:35:00+02:00",
- "2023-06-07T09:40:00+02:00",
- "2023-06-07T09:45:00+02:00",
- "2023-06-07T09:50:00+02:00",
- "2023-06-07T09:55:00+02:00",
- "2023-06-07T10:00:00+02:00",
- "2023-06-07T10:05:00+02:00",
- "2023-06-07T10:10:00+02:00",
- "2023-06-07T10:15:00+02:00",
- "2023-06-07T10:20:00+02:00",
- "2023-06-07T10:25:00+02:00",
- "2023-06-07T10:30:00+02:00",
- "2023-06-07T10:35:00+02:00",
- "2023-06-07T10:40:00+02:00",
- "2023-06-07T10:45:00+02:00",
- "2023-06-07T10:50:00+02:00",
- "2023-06-07T10:55:00+02:00",
- "2023-06-07T11:00:00+02:00",
- "2023-06-07T11:05:00+02:00",
- "2023-06-07T11:10:00+02:00",
- "2023-06-07T11:15:00+02:00",
- "2023-06-07T11:20:00+02:00",
- "2023-06-07T11:25:00+02:00",
- "2023-06-07T11:30:00+02:00",
- "2023-06-07T11:35:00+02:00",
- "2023-06-07T11:40:00+02:00",
- "2023-06-07T11:45:00+02:00",
- "2023-06-07T11:50:00+02:00",
- "2023-06-07T11:55:00+02:00",
- "2023-06-07T12:00:00+02:00",
- "2023-06-07T12:05:00+02:00",
- "2023-06-07T12:10:00+02:00",
- "2023-06-07T12:15:00+02:00",
- "2023-06-07T12:20:00+02:00",
- "2023-06-07T12:25:00+02:00",
- "2023-06-07T12:30:00+02:00",
- "2023-06-07T12:35:00+02:00",
- "2023-06-07T12:40:00+02:00",
- "2023-06-07T12:45:00+02:00",
- "2023-06-07T12:50:00+02:00",
- "2023-06-07T12:55:00+02:00",
- "2023-06-07T13:00:00+02:00",
- "2023-06-07T13:05:00+02:00",
- "2023-06-07T13:10:00+02:00",
- "2023-06-07T13:15:00+02:00",
- "2023-06-07T13:20:00+02:00",
- "2023-06-07T13:25:00+02:00",
- "2023-06-07T13:30:00+02:00",
- "2023-06-07T13:35:00+02:00",
- "2023-06-07T13:40:00+02:00",
- "2023-06-07T13:45:00+02:00",
- "2023-06-07T13:50:00+02:00",
- "2023-06-07T13:55:00+02:00",
- "2023-06-07T14:00:00+02:00",
- "2023-06-07T14:05:00+02:00",
- "2023-06-07T14:10:00+02:00",
- "2023-06-07T14:15:00+02:00",
- "2023-06-07T14:20:00+02:00",
- "2023-06-07T14:25:00+02:00",
- "2023-06-07T14:30:00+02:00",
- "2023-06-07T14:35:00+02:00",
- "2023-06-07T14:40:00+02:00",
- "2023-06-07T14:45:00+02:00",
- "2023-06-07T14:50:00+02:00",
- "2023-06-07T14:55:00+02:00",
- "2023-06-07T15:00:00+02:00",
- "2023-06-07T15:05:00+02:00",
- "2023-06-07T15:10:00+02:00",
- "2023-06-07T15:15:00+02:00",
- "2023-06-07T15:20:00+02:00",
- "2023-06-07T15:25:00+02:00",
- "2023-06-07T15:30:00+02:00",
- "2023-06-07T15:35:00+02:00",
- "2023-06-07T15:40:00+02:00",
- "2023-06-07T15:45:00+02:00",
- "2023-06-07T15:50:00+02:00",
- "2023-06-07T15:55:00+02:00",
- "2023-06-07T16:00:00+02:00",
- "2023-06-07T16:05:00+02:00",
- "2023-06-07T16:10:00+02:00",
- "2023-06-07T16:15:00+02:00",
- "2023-06-07T16:20:00+02:00",
- "2023-06-07T16:25:00+02:00",
- "2023-06-07T16:30:00+02:00",
- "2023-06-07T16:35:00+02:00",
- "2023-06-07T16:40:00+02:00",
- "2023-06-07T16:45:00+02:00",
- "2023-06-07T16:50:00+02:00",
- "2023-06-07T16:55:00+02:00",
- "2023-06-07T17:00:00+02:00",
- "2023-06-07T17:05:00+02:00",
- "2023-06-07T17:10:00+02:00",
- "2023-06-07T17:15:00+02:00",
- "2023-06-07T17:20:00+02:00",
- "2023-06-07T17:25:00+02:00",
- "2023-06-07T17:30:00+02:00",
- "2023-06-07T17:35:00+02:00",
- "2023-06-07T17:40:00+02:00",
- "2023-06-07T17:45:00+02:00",
- "2023-06-07T17:50:00+02:00",
- "2023-06-07T17:55:00+02:00",
- "2023-06-07T18:00:00+02:00",
- "2023-06-07T18:05:00+02:00",
- "2023-06-07T18:10:00+02:00",
- "2023-06-07T18:15:00+02:00",
- "2023-06-07T18:20:00+02:00",
- "2023-06-07T18:25:00+02:00",
- "2023-06-07T18:30:00+02:00",
- "2023-06-07T18:35:00+02:00",
- "2023-06-07T18:40:00+02:00",
- "2023-06-07T18:45:00+02:00",
- "2023-06-07T18:50:00+02:00",
- "2023-06-07T18:55:00+02:00",
- "2023-06-07T19:00:00+02:00",
- "2023-06-07T19:05:00+02:00",
- "2023-06-07T19:10:00+02:00",
- "2023-06-07T19:15:00+02:00",
- "2023-06-07T19:20:00+02:00",
- "2023-06-07T19:25:00+02:00",
- "2023-06-07T19:30:00+02:00",
- "2023-06-07T19:35:00+02:00",
- "2023-06-07T19:40:00+02:00",
- "2023-06-07T19:45:00+02:00",
- "2023-06-07T19:50:00+02:00",
- "2023-06-07T19:55:00+02:00",
- "2023-06-07T20:00:00+02:00",
- "2023-06-07T20:05:00+02:00",
- "2023-06-07T20:10:00+02:00",
- "2023-06-07T20:15:00+02:00",
- "2023-06-07T20:20:00+02:00",
- "2023-06-07T20:25:00+02:00",
- "2023-06-07T20:30:00+02:00",
- "2023-06-07T20:35:00+02:00",
- "2023-06-07T20:40:00+02:00",
- "2023-06-07T20:45:00+02:00",
- "2023-06-07T20:50:00+02:00",
- "2023-06-07T20:55:00+02:00",
- "2023-06-07T21:00:00+02:00",
- "2023-06-07T21:05:00+02:00",
- "2023-06-07T21:10:00+02:00",
- "2023-06-07T21:15:00+02:00",
- "2023-06-07T21:20:00+02:00",
- "2023-06-07T21:25:00+02:00",
- "2023-06-07T21:30:00+02:00",
- "2023-06-07T21:35:00+02:00",
- "2023-06-07T21:40:00+02:00",
- "2023-06-07T21:45:00+02:00",
- "2023-06-07T21:50:00+02:00",
- "2023-06-07T21:55:00+02:00",
- "2023-06-07T22:00:00+02:00",
- "2023-06-07T22:05:00+02:00",
- "2023-06-07T22:10:00+02:00",
- "2023-06-07T22:15:00+02:00",
- "2023-06-07T22:20:00+02:00",
- "2023-06-07T22:25:00+02:00",
- "2023-06-07T22:30:00+02:00",
- "2023-06-07T22:35:00+02:00",
- "2023-06-07T22:40:00+02:00",
- "2023-06-07T22:45:00+02:00",
- "2023-06-07T22:50:00+02:00",
- "2023-06-07T22:55:00+02:00",
- "2023-06-07T23:00:00+02:00",
- "2023-06-07T23:05:00+02:00",
- "2023-06-07T23:10:00+02:00",
- "2023-06-07T23:15:00+02:00",
- "2023-06-07T23:20:00+02:00",
- "2023-06-07T23:25:00+02:00",
- "2023-06-07T23:30:00+02:00",
- "2023-06-07T23:35:00+02:00",
- "2023-06-07T23:40:00+02:00",
- "2023-06-07T23:45:00+02:00",
- "2023-06-07T23:50:00+02:00",
- "2023-06-07T23:55:00+02:00",
- "2023-06-08T00:00:00+02:00",
- "2023-06-08T00:05:00+02:00",
- "2023-06-08T00:10:00+02:00",
- "2023-06-08T00:15:00+02:00",
- "2023-06-08T00:20:00+02:00",
- "2023-06-08T00:25:00+02:00",
- "2023-06-08T00:30:00+02:00",
- "2023-06-08T00:35:00+02:00",
- "2023-06-08T00:40:00+02:00",
- "2023-06-08T00:45:00+02:00",
- "2023-06-08T00:50:00+02:00",
- "2023-06-08T00:55:00+02:00",
- "2023-06-08T01:00:00+02:00",
- "2023-06-08T01:05:00+02:00",
- "2023-06-08T01:10:00+02:00",
- "2023-06-08T01:15:00+02:00",
- "2023-06-08T01:20:00+02:00",
- "2023-06-08T01:25:00+02:00",
- "2023-06-08T01:30:00+02:00",
- "2023-06-08T01:35:00+02:00",
- "2023-06-08T01:40:00+02:00",
- "2023-06-08T01:45:00+02:00",
- "2023-06-08T01:50:00+02:00",
- "2023-06-08T01:55:00+02:00",
- "2023-06-08T02:00:00+02:00",
- "2023-06-08T02:05:00+02:00",
- "2023-06-08T02:10:00+02:00",
- "2023-06-08T02:15:00+02:00",
- "2023-06-08T02:20:00+02:00",
- "2023-06-08T02:25:00+02:00",
- "2023-06-08T02:30:00+02:00",
- "2023-06-08T02:35:00+02:00",
- "2023-06-08T02:40:00+02:00",
- "2023-06-08T02:45:00+02:00",
- "2023-06-08T02:50:00+02:00",
- "2023-06-08T02:55:00+02:00",
- "2023-06-08T03:00:00+02:00",
- "2023-06-08T03:05:00+02:00",
- "2023-06-08T03:10:00+02:00",
- "2023-06-08T03:15:00+02:00",
- "2023-06-08T03:20:00+02:00",
- "2023-06-08T03:25:00+02:00",
- "2023-06-08T03:30:00+02:00",
- "2023-06-08T03:35:00+02:00",
- "2023-06-08T03:40:00+02:00",
- "2023-06-08T03:45:00+02:00",
- "2023-06-08T03:50:00+02:00",
- "2023-06-08T03:55:00+02:00",
- "2023-06-08T04:00:00+02:00",
- "2023-06-08T04:05:00+02:00",
- "2023-06-08T04:10:00+02:00",
- "2023-06-08T04:15:00+02:00",
- "2023-06-08T04:20:00+02:00",
- "2023-06-08T04:25:00+02:00",
- "2023-06-08T04:30:00+02:00",
- "2023-06-08T04:35:00+02:00",
- "2023-06-08T04:40:00+02:00",
- "2023-06-08T04:45:00+02:00",
- "2023-06-08T04:50:00+02:00",
- "2023-06-08T04:55:00+02:00",
- "2023-06-08T05:00:00+02:00",
- "2023-06-08T05:05:00+02:00",
- "2023-06-08T05:10:00+02:00",
- "2023-06-08T05:15:00+02:00",
- "2023-06-08T05:20:00+02:00",
- "2023-06-08T05:25:00+02:00",
- "2023-06-08T05:30:00+02:00",
- "2023-06-08T05:35:00+02:00",
- "2023-06-08T05:40:00+02:00",
- "2023-06-08T05:45:00+02:00",
- "2023-06-08T05:50:00+02:00",
- "2023-06-08T05:55:00+02:00",
- "2023-06-08T06:00:00+02:00",
- "2023-06-08T06:05:00+02:00",
- "2023-06-08T06:10:00+02:00",
- "2023-06-08T06:15:00+02:00",
- "2023-06-08T06:20:00+02:00",
- "2023-06-08T06:25:00+02:00",
- "2023-06-08T06:30:00+02:00",
- "2023-06-08T06:35:00+02:00",
- "2023-06-08T06:40:00+02:00",
- "2023-06-08T06:45:00+02:00",
- "2023-06-08T06:50:00+02:00",
- "2023-06-08T06:55:00+02:00",
- "2023-06-08T07:00:00+02:00",
- "2023-06-08T07:05:00+02:00",
- "2023-06-08T07:10:00+02:00",
- "2023-06-08T07:15:00+02:00",
- "2023-06-08T07:20:00+02:00",
- "2023-06-08T07:25:00+02:00",
- "2023-06-08T07:30:00+02:00",
- "2023-06-08T07:35:00+02:00",
- "2023-06-08T07:40:00+02:00",
- "2023-06-08T07:45:00+02:00",
- "2023-06-08T07:50:00+02:00",
- "2023-06-08T07:55:00+02:00",
- "2023-06-08T08:00:00+02:00",
- "2023-06-08T08:05:00+02:00",
- "2023-06-08T08:10:00+02:00",
- "2023-06-08T08:15:00+02:00",
- "2023-06-08T08:20:00+02:00",
- "2023-06-08T08:25:00+02:00",
- "2023-06-08T08:30:00+02:00",
- "2023-06-08T08:35:00+02:00",
- "2023-06-08T08:40:00+02:00",
- "2023-06-08T08:45:00+02:00",
- "2023-06-08T08:50:00+02:00",
- "2023-06-08T08:55:00+02:00",
- "2023-06-08T09:00:00+02:00",
- "2023-06-08T09:05:00+02:00",
- "2023-06-08T09:10:00+02:00",
- "2023-06-08T09:15:00+02:00",
- "2023-06-08T09:20:00+02:00",
- "2023-06-08T09:25:00+02:00",
- "2023-06-08T09:30:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayThreshold.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayThreshold.json
deleted file mode 100644
index c75d4a4b88..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastDayThreshold.json
+++ /dev/null
@@ -1,2352 +0,0 @@
-{
- "global": {
- "title": "anomaly-nbr-connect graph on fw-brasilia",
- "start": "2023-06-14T17:31:46+02:00",
- "end": "2023-06-15T17:31:46+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 1,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 152032,
- "metric_id": 15165,
- "metric": "connection",
- "metric_legend": "connection",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#993366"
- },
- "legend": "connection",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 120.88,
- 119.98333333,
- 161.63,
- 136.94666667,
- 152.69666667,
- 52.246666667,
- 16.236666667,
- 14.796666667,
- 20.576666667,
- 24.39,
- 26.593333333,
- 24.61,
- 24.796666667,
- 13.846666667,
- 25.34,
- 28.203333333,
- 17.643333333,
- 25.356666667,
- 17.643333333,
- 24.56,
- 19.033333333,
- 20.983333333,
- 18.813333333,
- 25.17,
- 13.456666667,
- 25.136666667,
- 29,
- 14.66,
- 24.543333333,
- 21.626666667,
- 14.423333333,
- 18.576666667,
- 20.796666667,
- 25.78,
- 20.626666667,
- 15.813333333,
- 18.186666667,
- 25.373333333,
- 14.253333333,
- 21.356666667,
- 18.423333333,
- 21.78,
- 22.203333333,
- 27.576666667,
- 27.406666667,
- 22.22,
- 25.78,
- 15.846666667,
- 15.39,
- 22.373333333,
- 20.813333333,
- 23.983333333,
- 28.186666667,
- 26.61,
- 26,
- 22.813333333,
- 18.016666667,
- 13.813333333,
- 16.186666667,
- 17.796666667,
- 21.983333333,
- 14.236666667,
- 23.153333333,
- 17.236666667,
- 15,
- 20.576666667,
- 22.796666667,
- 27.78,
- 28.203333333,
- 27.203333333,
- 14.253333333,
- 13.39,
- 21.17,
- 19.813333333,
- 22.186666667,
- 14.236666667,
- 22.356666667,
- 15.44,
- 14.593333333,
- 12.61,
- 24.746666667,
- 24.813333333,
- 17.626666667,
- 12.813333333,
- 16.78,
- 20.39,
- 21,
- 17.813333333,
- 20.983333333,
- 25.186666667,
- 17.236666667,
- 21.373333333,
- 19.813333333,
- 21.39,
- 14.033333333,
- 10.406666667,
- 22.746666667,
- 21.22,
- 23.983333333,
- 13.846666667,
- 16.576666667,
- 20.39,
- 13.033333333,
- 24.543333333,
- 22.423333333,
- 24.186666667,
- 27.39,
- 16.05,
- 23.356666667,
- 18.033333333,
- 20.78,
- 18.016666667,
- 18.593333333,
- 26.17,
- 21.626666667,
- 16.016666667,
- 14.203333333,
- 17.186666667,
- 25.966666667,
- 24.813333333,
- 27.983333333,
- 24.22,
- 12.643333333,
- 21.95,
- 21.016666667,
- 19.203333333,
- 20.593333333,
- 21,
- 22.593333333,
- 19.016666667,
- 17.203333333,
- 11.423333333,
- 18.763333333,
- 21,
- 19.406666667,
- 13.446666667,
- 16.76,
- 25.14,
- 27.793333333,
- 24.826666667,
- 20.033333333,
- 22.173333333,
- 25.38,
- 18.066666667,
- 18.38,
- 16.62,
- 12.033333333,
- 12.586666667,
- 13.793333333,
- 11.62,
- 11,
- 18.933333333,
- 25.76,
- 15.1,
- 15.173333333,
- 21.553333333,
- 27.76,
- 24.24,
- 15.86,
- 17.966666667,
- 24.553333333,
- 16.48,
- 24.313333333,
- 22.24,
- 22.586666667,
- 27.76,
- 18.686666667,
- 19.966666667,
- 23.38,
- 13.686666667,
- 23.693333333,
- 23.033333333,
- 25.173333333,
- 22.826666667,
- 19.62,
- 11.86,
- 17.14,
- 18.206666667,
- 19.586666667,
- 26.346666667,
- 28.793333333,
- 18.686666667,
- 11.24,
- 16.346666667,
- 15.62,
- 83.226666667,
- 127.96666667,
- 104.84,
- 108.50666667,
- 148.44666667,
- 161.2,
- 132.94,
- 119.67333333,
- 139.44666667,
- 161.86666667,
- 169.49333333,
- 133.61333333,
- 133.35333333,
- 137.84,
- 137.44666667,
- 153.29333333,
- 147.60666667,
- 168.1,
- 150.2,
- 128.70666667,
- 133.62,
- 113.96,
- 131.78666667,
- 99.693333333,
- 148.62666667,
- 94.873333333,
- 88.126666667,
- 101.25333333,
- 126.34666667,
- 160.09333333,
- 165.65333333,
- 137.51333333,
- 152.64,
- 159.82,
- 116.34666667,
- 150.28666667,
- 148.14666667,
- 90.506666667,
- 124.84,
- 131.21333333,
- 175.1,
- 155.07333333,
- 116.39333333,
- 101.31333333,
- 141.41333333,
- 156.46,
- 131.38,
- 162.25333333,
- 182.70666667,
- 181.82,
- 124.62,
- 96.646666667,
- 96.413333333,
- 124.22,
- 146.96666667,
- 140.75333333,
- 106.12,
- 144.83333333,
- 152.43333333,
- 97.293333333,
- 96.44,
- 142.32,
- 142.33333333,
- 103.74,
- 118.54,
- 145.55333333,
- 122.16666667,
- 109.15333333,
- 134.74666667,
- 117.19333333,
- 122.83333333,
- 152.28,
- 170.50666667,
- 93.506666667,
- 122.23333333,
- 95.353333333,
- 114.72666667,
- 164.26666667,
- 130.64666667,
- 121.90666667,
- 110.93333333,
- 119.96666667,
- 119.16666667,
- 104.02666667,
- 121.52,
- 109.9,
- 125.09333333,
- 130.84666667,
- 116.08,
- 174.16666667,
- 151.1,
- 144.02666667,
- 162.48666667,
- 145.42666667,
- 131.92,
- 169.31333333,
- 87.253333333,
- 115.05333333,
- 145.20666667,
- 96.966666667,
- 104.28666667,
- 111.42666667,
- null,
- null
- ],
- "prints": [
- [
- "Last:111.43"
- ],
- [
- "Min:10.41"
- ],
- [
- "Max:182.71"
- ],
- [
- "Average:61.78"
- ]
- ],
- "last_value": 111.43,
- "minimum_value": 10.41,
- "maximum_value": 182.71,
- "average_value": 61.78
- },
- {
- "index_id": 152032,
- "metric_id": 16196,
- "metric": "connection_fit",
- "metric_legend": "connection_fit",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9933ff"
- },
- "legend": "connection_fit",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 130.99763333,
- 131.10763333,
- 131.1778,
- 131.08643333,
- 130.95643333,
- 125.59233333,
- 98.3463,
- 65.8563,
- 37.923233333,
- 29.0145,
- 24.6645,
- 21.015566667,
- 20.31,
- 20.31,
- 20.270166667,
- 20.060833333,
- 19.810833333,
- 19.5688,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.139333333,
- 19.3473,
- 19.493566667,
- 19.3527,
- 19.1427,
- 18.964566667,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.93,
- 18.969833333,
- 19.155266667,
- 19.375266667,
- 19.523566667,
- 19.3827,
- 19.1727,
- 18.994566667,
- 18.96,
- 18.96,
- 18.96,
- 18.96,
- 18.96,
- 19.0556,
- 19.550033333,
- 20.140033333,
- 20.634433333,
- 20.73,
- 20.73,
- 20.722033333,
- 20.656266667,
- 20.584233333,
- 20.554066667,
- 20.6695,
- 20.8195,
- 20.8978,
- 20.663033333,
- 20.345066667,
- 20.0888,
- 20.04,
- 20.04,
- 20.04,
- 20.047966667,
- 20.057966667,
- 20.1078,
- 20.295266667,
- 20.523233333,
- 20.673566667,
- 20.5088,
- 20.276766667,
- 20.078633333,
- 20.04,
- 20.04,
- 20.04,
- 20.047966667,
- 20.057966667,
- 20.1078,
- 20.295266667,
- 20.523233333,
- 20.673566667,
- 20.5096,
- 20.2696,
- 20.069266667,
- 20.03,
- 20.03,
- 20.03,
- 20.045866667,
- 20.057933333,
- 20.091733333,
- 20.234866667,
- 20.396933333,
- 20.509333333,
- 20.371333333,
- 20.171333333,
- 20.003066667,
- 19.97,
- 19.97,
- 19.97,
- 19.977933333,
- 19.987933333,
- 20.005866667,
- 20.065533333,
- 20.1276,
- 20.179666667,
- 20.150333333,
- 20.108266667,
- 20.0762,
- 20.07,
- 20.07,
- 20.07,
- 20.077933333,
- 20.087933333,
- 20.105866667,
- 20.165533333,
- 20.2276,
- 20.24,
- 20.041666667,
- 19.783733333,
- 19.571333333,
- 19.53,
- 19.53,
- 19.537933333,
- 19.547933333,
- 19.557933333,
- 19.567933333,
- 19.5938,
- 19.631733333,
- 19.8304,
- 20.7368,
- 21.808866667,
- 27.519866667,
- 45.074866667,
- 81.596266667,
- 107.08186667,
- 115.47386667,
- 119.99193333,
- 123.8156,
- 124.61126667,
- 124.72126667,
- 125.02846667,
- 126.20293333,
- 127.56486667,
- 128.757,
- 129.16253333,
- 129.38253333,
- 129.5658,
- 129.5842,
- 129.5542,
- 129.5474,
- 129.64126667,
- 129.75126667,
- 129.93666667,
- 130.456,
- 131.056,
- 131.56126667,
- 131.65,
- 131.65,
- 131.64613333,
- 131.6242,
- 131.59613333,
- 131.59546667,
- 131.68126667,
- 131.79126667,
- 131.85486667,
- 131.7152,
- 131.5352,
- 131.3842,
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.57226667,
- 131.52453333,
- 131.4426,
- 131.36806667,
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.57226667,
- 131.52453333,
- 131.4426,
- 131.36806667,
- 131.36,
- 131.36,
- 131.35613333,
- 131.3342,
- 131.3042,
- 131.2974,
- 131.38933333,
- 131.49126667,
- 131.59546667,
- 131.67353333,
- 131.7416,
- 131.79193333,
- 131.8,
- 131.8,
- 131.79613333,
- 131.77613333,
- 131.7542,
- 131.74546667,
- 131.83126667,
- 131.94126667,
- 132.02226667,
- 131.9726,
- 131.88453333,
- 131.81613333,
- 131.8,
- 131.8,
- 131.79613333,
- 131.77613333,
- 131.7542,
- 131.74546667,
- 131.83126667,
- 131.94126667,
- 132.02226667,
- 131.9726,
- 131.88453333,
- 131.81613333,
- 131.8,
- 131.8,
- 131.79613333,
- 131.77613333,
- 131.7542,
- null,
- null
- ],
- "prints": [
- [
- "Last:131.75"
- ],
- [
- "Min:18.93"
- ],
- [
- "Max:132.02"
- ],
- [
- "Average:61.08"
- ]
- ],
- "last_value": 131.75,
- "minimum_value": 18.93,
- "maximum_value": 132.02,
- "average_value": 61.08
- },
- {
- "index_id": 152032,
- "metric_id": 16197,
- "metric": "connection_lower_margin",
- "metric_legend": "connection_lower_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#00ff99"
- },
- "legend": "connection_lower_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -88.792933333,
- -67.8513,
- -42.869266667,
- -21.928366667,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -17.88,
- -21.9736,
- -36.769466667,
- -67.8514,
- -88.9438,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- -92.84,
- null,
- null
- ],
- "prints": [
- [
- "Last:-92.84"
- ],
- [
- "Min:-92.84"
- ],
- [
- "Max:-17.88"
- ],
- [
- "Average:-45.81"
- ]
- ],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 16198,
- "metric": "connection_upper_margin",
- "metric_legend": "connection_upper_margin",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#9900ff"
- },
- "legend": "connection_upper_margin",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 76.405833333,
- 56.8458,
- 33.497833333,
- 13.932,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 10.15,
- 13.9818,
- 27.801,
- 56.8424,
- 76.543866667,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- 80.19,
- null,
- null
- ],
- "prints": [
- [
- "Last:80.19"
- ],
- [
- "Min:10.15"
- ],
- [
- "Max:80.19"
- ],
- [
- "Average:36.24"
- ]
- ],
- "last_value": 80.19,
- "minimum_value": 10.15,
- "maximum_value": 80.19,
- "average_value": 36.24
- },
- {
- "index_id": 152032,
- "metric_id": 15177,
- "metric": "connection_lower_thresholds",
- "metric_legend": "connection_lower_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 50,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Lower Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_lower_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Lower Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Lower Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- -147.52236667,
- -147.41236667,
- -147.3422,
- -147.43356667,
- -147.56356667,
- -140.79443333,
- -105.2176,
- -62.745566667,
- -27.859833333,
- -24.6255,
- -28.9755,
- -32.624433333,
- -33.33,
- -33.33,
- -33.369833333,
- -33.579166667,
- -33.829166667,
- -34.0712,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.4927,
- -34.2827,
- -34.1444,
- -34.2873,
- -34.4973,
- -34.667466667,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.7,
- -34.668133333,
- -34.484733333,
- -34.264733333,
- -34.116433333,
- -34.2573,
- -34.4673,
- -34.637466667,
- -34.67,
- -34.67,
- -34.67,
- -34.67,
- -34.67,
- -34.5744,
- -34.079966667,
- -33.497933333,
- -33.005566667,
- -32.91,
- -32.91,
- -32.917966667,
- -32.975766667,
- -33.045766667,
- -33.0839,
- -32.9705,
- -32.8205,
- -32.7422,
- -32.976966667,
- -33.286966667,
- -33.549166667,
- -33.6,
- -33.6,
- -33.6,
- -33.592033333,
- -33.582033333,
- -33.5322,
- -33.344733333,
- -33.116766667,
- -32.966433333,
- -33.123233333,
- -33.3612,
- -33.561366667,
- -33.6,
- -33.6,
- -33.6,
- -33.592033333,
- -33.582033333,
- -33.5322,
- -33.344733333,
- -33.116766667,
- -32.966433333,
- -33.1304,
- -33.3704,
- -33.5628,
- -33.6,
- -33.6,
- -33.6,
- -33.592066667,
- -33.582066667,
- -33.548266667,
- -33.405133333,
- -33.235133333,
- -33.1286,
- -33.268666667,
- -33.468666667,
- -33.636933333,
- -33.67,
- -33.67,
- -33.67,
- -33.662066667,
- -33.652066667,
- -33.6262,
- -33.5724,
- -33.504466667,
- -33.458266667,
- -33.481733333,
- -33.529666667,
- -33.5638,
- -33.57,
- -33.57,
- -33.57,
- -33.562066667,
- -33.552066667,
- -33.5262,
- -33.4724,
- -33.404466667,
- -33.39,
- -33.596266667,
- -33.848333333,
- -34.058666667,
- -34.1,
- -34.1,
- -34.1,
- -34.092066667,
- -34.082066667,
- -34.064133333,
- -34.0362,
- -34.0062,
- -33.801666667,
- -32.901133333,
- -31.831133333,
- -38.408866667,
- -65.231533333,
- -121.966,
- -159.74953333,
- -163.04806667,
- -158.53613333,
- -154.7044,
- -153.90873333,
- -153.79873333,
- -153.49346667,
- -152.32513333,
- -150.95513333,
- -149.76493333,
- -149.36553333,
- -149.13746667,
- -148.95613333,
- -148.94386667,
- -148.9658,
- -148.97453333,
- -148.88873333,
- -148.77873333,
- -148.5914,
- -148.06593333,
- -147.474,
- -146.9668,
- -146.87,
- -146.87,
- -146.87386667,
- -146.8958,
- -146.9258,
- -146.9326,
- -146.83873333,
- -146.72873333,
- -146.66513333,
- -146.8048,
- -146.9848,
- -147.13773333,
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.94966667,
- -147.00546667,
- -147.08546667,
- -147.15386667,
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.94966667,
- -147.00546667,
- -147.08546667,
- -147.15386667,
- -147.17,
- -147.17,
- -147.17386667,
- -147.1958,
- -147.22386667,
- -147.22453333,
- -147.13873333,
- -147.02873333,
- -146.92453333,
- -146.8484,
- -146.78646667,
- -146.72806667,
- -146.72,
- -146.72,
- -146.72386667,
- -146.7458,
- -146.77386667,
- -146.77453333,
- -146.68873333,
- -146.57873333,
- -146.49966667,
- -146.55546667,
- -146.63546667,
- -146.70386667,
- -146.72,
- -146.72,
- -146.72386667,
- -146.7458,
- -146.77386667,
- -146.77453333,
- -146.68873333,
- -146.57873333,
- -146.49966667,
- -146.55546667,
- -146.63546667,
- -146.70386667,
- -146.72,
- -146.72,
- -146.72386667,
- -146.7458,
- -146.77386667,
- null,
- null
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- },
- {
- "index_id": 152032,
- "metric_id": 15178,
- "metric": "connection_upper_thresholds",
- "metric_legend": "connection_upper_thresholds",
- "unit": "",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 51,
- "host_id": null,
- "service_id": null,
- "name": "Anomaly Upper Threshold",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": ".*_upper_thresholds",
- "ds_color_line": "#D728C9",
- "ds_color_line_mode": "0",
- "ds_color_area": "#FFFFFF",
- "ds_color_area_warn": "#F8C706",
- "ds_color_area_crit": "#F91E05",
- "ds_filled": null,
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": null,
- "ds_average": null,
- "ds_last": null,
- "ds_total": null,
- "ds_tickness": 2,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": "Upper Threshold",
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "Upper Threshold",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_order": 1,
- "data": [
- 371.55763333,
- 371.66763333,
- 371.7378,
- 371.64643333,
- 371.5244,
- 354.80983333,
- 268.86776667,
- 166.34573333,
- 79.7272,
- 59.4745,
- 55.1245,
- 51.475566667,
- 50.77,
- 50.77,
- 50.730166667,
- 50.520833333,
- 50.270833333,
- 50.020833333,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.421866667,
- 49.5973,
- 49.8073,
- 49.9456,
- 49.810666667,
- 49.6027,
- 49.424566667,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.39,
- 49.429833333,
- 49.6073,
- 49.825266667,
- 49.981533333,
- 49.8427,
- 49.6327,
- 49.454566667,
- 49.42,
- 49.42,
- 49.42,
- 49.42,
- 49.42,
- 49.5156,
- 50.010033333,
- 50.600033333,
- 51.094433333,
- 51.19,
- 51.19,
- 51.174066667,
- 51.114233333,
- 51.044233333,
- 51.0061,
- 51.127466667,
- 51.2795,
- 51.349833333,
- 51.113033333,
- 50.803033333,
- 50.540833333,
- 50.49,
- 50.49,
- 50.497966667,
- 50.507966667,
- 50.517966667,
- 50.559833333,
- 50.753233333,
- 50.983233333,
- 51.133566667,
- 50.9688,
- 50.7288,
- 50.528633333,
- 50.49,
- 50.49,
- 50.497966667,
- 50.507966667,
- 50.517966667,
- 50.559833333,
- 50.753233333,
- 50.983233333,
- 51.133566667,
- 50.9696,
- 50.7296,
- 50.529266667,
- 50.49,
- 50.49,
- 50.49,
- 50.497933333,
- 50.507933333,
- 50.549666667,
- 50.686933333,
- 50.854866667,
- 50.9614,
- 50.821333333,
- 50.621333333,
- 50.453066667,
- 50.42,
- 50.42,
- 50.427933333,
- 50.437933333,
- 50.447933333,
- 50.465866667,
- 50.525533333,
- 50.5876,
- 50.631733333,
- 50.608266667,
- 50.568266667,
- 50.528266667,
- 50.52,
- 50.52,
- 50.527933333,
- 50.537933333,
- 50.547933333,
- 50.565866667,
- 50.625533333,
- 50.6876,
- 50.7,
- 50.501666667,
- 50.243733333,
- 50.031333333,
- 49.99,
- 49.99,
- 49.99,
- 49.997933333,
- 50.007933333,
- 50.025866667,
- 50.0538,
- 50.0838,
- 50.288333333,
- 51.188866667,
- 52.2668,
- 69.4594,
- 128.4818,
- 252.1254,
- 336.7196,
- 356.03386667,
- 360.55193333,
- 364.3756,
- 365.17126667,
- 365.28126667,
- 365.58846667,
- 366.76293333,
- 368.12486667,
- 369.317,
- 369.72253333,
- 369.94446667,
- 370.13386667,
- 370.1442,
- 370.1142,
- 370.1074,
- 370.20126667,
- 370.31126667,
- 370.49666667,
- 371.016,
- 371.616,
- 372.12126667,
- 372.21,
- 372.21,
- 372.20613333,
- 372.1842,
- 372.15613333,
- 372.15546667,
- 372.24126667,
- 372.35126667,
- 372.4168,
- 372.28326667,
- 372.0952,
- 371.9442,
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.14033333,
- 372.08453333,
- 372.0026,
- 371.92806667,
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.14033333,
- 372.08453333,
- 372.0026,
- 371.92806667,
- 371.92,
- 371.92,
- 371.91613333,
- 371.8942,
- 371.8642,
- 371.8574,
- 371.95126667,
- 372.06126667,
- 372.16353333,
- 372.23353333,
- 372.3016,
- 372.35386667,
- 372.37,
- 372.37,
- 372.3642,
- 372.33613333,
- 372.3142,
- 372.30546667,
- 372.39126667,
- 372.50126667,
- 372.58226667,
- 372.5326,
- 372.44453333,
- 372.37806667,
- 372.37,
- 372.37,
- 372.3642,
- 372.33613333,
- 372.3142,
- 372.30546667,
- 372.39126667,
- 372.50126667,
- 372.58226667,
- 372.5326,
- 372.44453333,
- 372.37806667,
- 372.37,
- 372.37,
- 372.3642,
- 372.33613333,
- 372.3142,
- null,
- null
- ],
- "prints": [],
- "last_value": null,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": null
- }
- ],
- "times": [
- "2023-06-14T17:35:00+02:00",
- "2023-06-14T17:40:00+02:00",
- "2023-06-14T17:45:00+02:00",
- "2023-06-14T17:50:00+02:00",
- "2023-06-14T17:55:00+02:00",
- "2023-06-14T18:00:00+02:00",
- "2023-06-14T18:05:00+02:00",
- "2023-06-14T18:10:00+02:00",
- "2023-06-14T18:15:00+02:00",
- "2023-06-14T18:20:00+02:00",
- "2023-06-14T18:25:00+02:00",
- "2023-06-14T18:30:00+02:00",
- "2023-06-14T18:35:00+02:00",
- "2023-06-14T18:40:00+02:00",
- "2023-06-14T18:45:00+02:00",
- "2023-06-14T18:50:00+02:00",
- "2023-06-14T18:55:00+02:00",
- "2023-06-14T19:00:00+02:00",
- "2023-06-14T19:05:00+02:00",
- "2023-06-14T19:10:00+02:00",
- "2023-06-14T19:15:00+02:00",
- "2023-06-14T19:20:00+02:00",
- "2023-06-14T19:25:00+02:00",
- "2023-06-14T19:30:00+02:00",
- "2023-06-14T19:35:00+02:00",
- "2023-06-14T19:40:00+02:00",
- "2023-06-14T19:45:00+02:00",
- "2023-06-14T19:50:00+02:00",
- "2023-06-14T19:55:00+02:00",
- "2023-06-14T20:00:00+02:00",
- "2023-06-14T20:05:00+02:00",
- "2023-06-14T20:10:00+02:00",
- "2023-06-14T20:15:00+02:00",
- "2023-06-14T20:20:00+02:00",
- "2023-06-14T20:25:00+02:00",
- "2023-06-14T20:30:00+02:00",
- "2023-06-14T20:35:00+02:00",
- "2023-06-14T20:40:00+02:00",
- "2023-06-14T20:45:00+02:00",
- "2023-06-14T20:50:00+02:00",
- "2023-06-14T20:55:00+02:00",
- "2023-06-14T21:00:00+02:00",
- "2023-06-14T21:05:00+02:00",
- "2023-06-14T21:10:00+02:00",
- "2023-06-14T21:15:00+02:00",
- "2023-06-14T21:20:00+02:00",
- "2023-06-14T21:25:00+02:00",
- "2023-06-14T21:30:00+02:00",
- "2023-06-14T21:35:00+02:00",
- "2023-06-14T21:40:00+02:00",
- "2023-06-14T21:45:00+02:00",
- "2023-06-14T21:50:00+02:00",
- "2023-06-14T21:55:00+02:00",
- "2023-06-14T22:00:00+02:00",
- "2023-06-14T22:05:00+02:00",
- "2023-06-14T22:10:00+02:00",
- "2023-06-14T22:15:00+02:00",
- "2023-06-14T22:20:00+02:00",
- "2023-06-14T22:25:00+02:00",
- "2023-06-14T22:30:00+02:00",
- "2023-06-14T22:35:00+02:00",
- "2023-06-14T22:40:00+02:00",
- "2023-06-14T22:45:00+02:00",
- "2023-06-14T22:50:00+02:00",
- "2023-06-14T22:55:00+02:00",
- "2023-06-14T23:00:00+02:00",
- "2023-06-14T23:05:00+02:00",
- "2023-06-14T23:10:00+02:00",
- "2023-06-14T23:15:00+02:00",
- "2023-06-14T23:20:00+02:00",
- "2023-06-14T23:25:00+02:00",
- "2023-06-14T23:30:00+02:00",
- "2023-06-14T23:35:00+02:00",
- "2023-06-14T23:40:00+02:00",
- "2023-06-14T23:45:00+02:00",
- "2023-06-14T23:50:00+02:00",
- "2023-06-14T23:55:00+02:00",
- "2023-06-15T00:00:00+02:00",
- "2023-06-15T00:05:00+02:00",
- "2023-06-15T00:10:00+02:00",
- "2023-06-15T00:15:00+02:00",
- "2023-06-15T00:20:00+02:00",
- "2023-06-15T00:25:00+02:00",
- "2023-06-15T00:30:00+02:00",
- "2023-06-15T00:35:00+02:00",
- "2023-06-15T00:40:00+02:00",
- "2023-06-15T00:45:00+02:00",
- "2023-06-15T00:50:00+02:00",
- "2023-06-15T00:55:00+02:00",
- "2023-06-15T01:00:00+02:00",
- "2023-06-15T01:05:00+02:00",
- "2023-06-15T01:10:00+02:00",
- "2023-06-15T01:15:00+02:00",
- "2023-06-15T01:20:00+02:00",
- "2023-06-15T01:25:00+02:00",
- "2023-06-15T01:30:00+02:00",
- "2023-06-15T01:35:00+02:00",
- "2023-06-15T01:40:00+02:00",
- "2023-06-15T01:45:00+02:00",
- "2023-06-15T01:50:00+02:00",
- "2023-06-15T01:55:00+02:00",
- "2023-06-15T02:00:00+02:00",
- "2023-06-15T02:05:00+02:00",
- "2023-06-15T02:10:00+02:00",
- "2023-06-15T02:15:00+02:00",
- "2023-06-15T02:20:00+02:00",
- "2023-06-15T02:25:00+02:00",
- "2023-06-15T02:30:00+02:00",
- "2023-06-15T02:35:00+02:00",
- "2023-06-15T02:40:00+02:00",
- "2023-06-15T02:45:00+02:00",
- "2023-06-15T02:50:00+02:00",
- "2023-06-15T02:55:00+02:00",
- "2023-06-15T03:00:00+02:00",
- "2023-06-15T03:05:00+02:00",
- "2023-06-15T03:10:00+02:00",
- "2023-06-15T03:15:00+02:00",
- "2023-06-15T03:20:00+02:00",
- "2023-06-15T03:25:00+02:00",
- "2023-06-15T03:30:00+02:00",
- "2023-06-15T03:35:00+02:00",
- "2023-06-15T03:40:00+02:00",
- "2023-06-15T03:45:00+02:00",
- "2023-06-15T03:50:00+02:00",
- "2023-06-15T03:55:00+02:00",
- "2023-06-15T04:00:00+02:00",
- "2023-06-15T04:05:00+02:00",
- "2023-06-15T04:10:00+02:00",
- "2023-06-15T04:15:00+02:00",
- "2023-06-15T04:20:00+02:00",
- "2023-06-15T04:25:00+02:00",
- "2023-06-15T04:30:00+02:00",
- "2023-06-15T04:35:00+02:00",
- "2023-06-15T04:40:00+02:00",
- "2023-06-15T04:45:00+02:00",
- "2023-06-15T04:50:00+02:00",
- "2023-06-15T04:55:00+02:00",
- "2023-06-15T05:00:00+02:00",
- "2023-06-15T05:05:00+02:00",
- "2023-06-15T05:10:00+02:00",
- "2023-06-15T05:15:00+02:00",
- "2023-06-15T05:20:00+02:00",
- "2023-06-15T05:25:00+02:00",
- "2023-06-15T05:30:00+02:00",
- "2023-06-15T05:35:00+02:00",
- "2023-06-15T05:40:00+02:00",
- "2023-06-15T05:45:00+02:00",
- "2023-06-15T05:50:00+02:00",
- "2023-06-15T05:55:00+02:00",
- "2023-06-15T06:00:00+02:00",
- "2023-06-15T06:05:00+02:00",
- "2023-06-15T06:10:00+02:00",
- "2023-06-15T06:15:00+02:00",
- "2023-06-15T06:20:00+02:00",
- "2023-06-15T06:25:00+02:00",
- "2023-06-15T06:30:00+02:00",
- "2023-06-15T06:35:00+02:00",
- "2023-06-15T06:40:00+02:00",
- "2023-06-15T06:45:00+02:00",
- "2023-06-15T06:50:00+02:00",
- "2023-06-15T06:55:00+02:00",
- "2023-06-15T07:00:00+02:00",
- "2023-06-15T07:05:00+02:00",
- "2023-06-15T07:10:00+02:00",
- "2023-06-15T07:15:00+02:00",
- "2023-06-15T07:20:00+02:00",
- "2023-06-15T07:25:00+02:00",
- "2023-06-15T07:30:00+02:00",
- "2023-06-15T07:35:00+02:00",
- "2023-06-15T07:40:00+02:00",
- "2023-06-15T07:45:00+02:00",
- "2023-06-15T07:50:00+02:00",
- "2023-06-15T07:55:00+02:00",
- "2023-06-15T08:00:00+02:00",
- "2023-06-15T08:05:00+02:00",
- "2023-06-15T08:10:00+02:00",
- "2023-06-15T08:15:00+02:00",
- "2023-06-15T08:20:00+02:00",
- "2023-06-15T08:25:00+02:00",
- "2023-06-15T08:30:00+02:00",
- "2023-06-15T08:35:00+02:00",
- "2023-06-15T08:40:00+02:00",
- "2023-06-15T08:45:00+02:00",
- "2023-06-15T08:50:00+02:00",
- "2023-06-15T08:55:00+02:00",
- "2023-06-15T09:00:00+02:00",
- "2023-06-15T09:05:00+02:00",
- "2023-06-15T09:10:00+02:00",
- "2023-06-15T09:15:00+02:00",
- "2023-06-15T09:20:00+02:00",
- "2023-06-15T09:25:00+02:00",
- "2023-06-15T09:30:00+02:00",
- "2023-06-15T09:35:00+02:00",
- "2023-06-15T09:40:00+02:00",
- "2023-06-15T09:45:00+02:00",
- "2023-06-15T09:50:00+02:00",
- "2023-06-15T09:55:00+02:00",
- "2023-06-15T10:00:00+02:00",
- "2023-06-15T10:05:00+02:00",
- "2023-06-15T10:10:00+02:00",
- "2023-06-15T10:15:00+02:00",
- "2023-06-15T10:20:00+02:00",
- "2023-06-15T10:25:00+02:00",
- "2023-06-15T10:30:00+02:00",
- "2023-06-15T10:35:00+02:00",
- "2023-06-15T10:40:00+02:00",
- "2023-06-15T10:45:00+02:00",
- "2023-06-15T10:50:00+02:00",
- "2023-06-15T10:55:00+02:00",
- "2023-06-15T11:00:00+02:00",
- "2023-06-15T11:05:00+02:00",
- "2023-06-15T11:10:00+02:00",
- "2023-06-15T11:15:00+02:00",
- "2023-06-15T11:20:00+02:00",
- "2023-06-15T11:25:00+02:00",
- "2023-06-15T11:30:00+02:00",
- "2023-06-15T11:35:00+02:00",
- "2023-06-15T11:40:00+02:00",
- "2023-06-15T11:45:00+02:00",
- "2023-06-15T11:50:00+02:00",
- "2023-06-15T11:55:00+02:00",
- "2023-06-15T12:00:00+02:00",
- "2023-06-15T12:05:00+02:00",
- "2023-06-15T12:10:00+02:00",
- "2023-06-15T12:15:00+02:00",
- "2023-06-15T12:20:00+02:00",
- "2023-06-15T12:25:00+02:00",
- "2023-06-15T12:30:00+02:00",
- "2023-06-15T12:35:00+02:00",
- "2023-06-15T12:40:00+02:00",
- "2023-06-15T12:45:00+02:00",
- "2023-06-15T12:50:00+02:00",
- "2023-06-15T12:55:00+02:00",
- "2023-06-15T13:00:00+02:00",
- "2023-06-15T13:05:00+02:00",
- "2023-06-15T13:10:00+02:00",
- "2023-06-15T13:15:00+02:00",
- "2023-06-15T13:20:00+02:00",
- "2023-06-15T13:25:00+02:00",
- "2023-06-15T13:30:00+02:00",
- "2023-06-15T13:35:00+02:00",
- "2023-06-15T13:40:00+02:00",
- "2023-06-15T13:45:00+02:00",
- "2023-06-15T13:50:00+02:00",
- "2023-06-15T13:55:00+02:00",
- "2023-06-15T14:00:00+02:00",
- "2023-06-15T14:05:00+02:00",
- "2023-06-15T14:10:00+02:00",
- "2023-06-15T14:15:00+02:00",
- "2023-06-15T14:20:00+02:00",
- "2023-06-15T14:25:00+02:00",
- "2023-06-15T14:30:00+02:00",
- "2023-06-15T14:35:00+02:00",
- "2023-06-15T14:40:00+02:00",
- "2023-06-15T14:45:00+02:00",
- "2023-06-15T14:50:00+02:00",
- "2023-06-15T14:55:00+02:00",
- "2023-06-15T15:00:00+02:00",
- "2023-06-15T15:05:00+02:00",
- "2023-06-15T15:10:00+02:00",
- "2023-06-15T15:15:00+02:00",
- "2023-06-15T15:20:00+02:00",
- "2023-06-15T15:25:00+02:00",
- "2023-06-15T15:30:00+02:00",
- "2023-06-15T15:35:00+02:00",
- "2023-06-15T15:40:00+02:00",
- "2023-06-15T15:45:00+02:00",
- "2023-06-15T15:50:00+02:00",
- "2023-06-15T15:55:00+02:00",
- "2023-06-15T16:00:00+02:00",
- "2023-06-15T16:05:00+02:00",
- "2023-06-15T16:10:00+02:00",
- "2023-06-15T16:15:00+02:00",
- "2023-06-15T16:20:00+02:00",
- "2023-06-15T16:25:00+02:00",
- "2023-06-15T16:30:00+02:00",
- "2023-06-15T16:35:00+02:00",
- "2023-06-15T16:40:00+02:00",
- "2023-06-15T16:45:00+02:00",
- "2023-06-15T16:50:00+02:00",
- "2023-06-15T16:55:00+02:00",
- "2023-06-15T17:00:00+02:00",
- "2023-06-15T17:05:00+02:00",
- "2023-06-15T17:10:00+02:00",
- "2023-06-15T17:15:00+02:00",
- "2023-06-15T17:20:00+02:00",
- "2023-06-15T17:25:00+02:00",
- "2023-06-15T17:30:00+02:00",
- "2023-06-15T17:35:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastMonth.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastMonth.json
deleted file mode 100644
index b41d32b83c..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastMonth.json
+++ /dev/null
@@ -1,1674 +0,0 @@
-{
- "global": {
- "title": "oracle-shared-spool-ratio graph on srv-oracle-crm",
- "start": "2023-04-22T16:01:06+02:00",
- "end": "2023-05-23T16:01:06+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 0,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 5320,
- "metric_id": 12879,
- "metric": "connTime",
- "metric_legend": "connTime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#990033"
- },
- "legend": "connTime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.50033458333,
- 0.61945916667,
- 0.51819333333,
- 0.60382916667,
- 0.49840361111,
- 0.49933972222,
- 0.55467208333,
- 0.56382444444,
- 0.62704972222,
- 0.54424180556,
- 0.50082777778,
- 0.45984555556,
- 0.49584861111,
- 0.35677083333,
- 0.47271861111,
- 0.52795972222,
- 0.45791944444,
- 0.43084166667,
- 0.502125,
- 0.38325833333,
- 0.594375,
- 0.594125,
- 0.45928333333,
- 0.5255,
- 0.41265,
- 0.40810833333,
- 0.5416,
- 0.48815,
- 0.42519166667,
- 0.58961666667,
- 0.41775833333,
- 0.43450833333,
- 0.4493,
- 0.39341666667,
- 0.49969166667,
- 0.50023333333,
- 0.46121305556,
- 0.5069475,
- 0.50755055556,
- 0.44471013889,
- 0.47222291667,
- 0.45869027778,
- 0.41597888889,
- 0.59415055556,
- 0.52623305556,
- 0.54249277778,
- 0.58356333333,
- 0.46177041667,
- 0.49658555556,
- 0.60377222222,
- 0.56200958333,
- 0.63443444444,
- 0.52070555556,
- 0.6246475,
- 0.52999069444,
- 0.42607777778,
- 0.55257444444,
- 0.45891888889,
- 0.51791611111,
- 0.423755,
- 0.45616666667,
- 0.54159055556,
- 0.46024222222,
- 0.41285333333,
- 0.48092277778,
- 0.46342777778,
- 0.57123,
- 0.56956111111,
- 0.58442833333,
- 0.52641388889,
- 0.46058166667,
- 0.40469458333,
- 0.54256736111,
- 0.56656111111,
- 0.54332777778,
- 0.49598680556,
- 0.59200763889,
- 0.44712708333,
- 0.55852083333,
- 0.58329166667,
- 0.53323611111,
- 0.57300416667,
- 0.52716597222,
- 0.40442291667,
- 0.42211111111,
- 0.63572708333,
- 0.55759166667,
- 0.46749166667,
- 0.37702361111,
- 0.56483055556,
- 0.47474236111,
- 0.43567847222,
- 0.50577638889,
- 0.44973305556,
- 0.52211083333,
- 0.44430083333,
- 0.48803333333,
- 0.42062833333,
- 0.5597925,
- 0.50754166667,
- 0.4506775,
- 0.38088333333,
- 0.53365583333,
- 0.43125333333,
- 0.44724166667,
- 0.44108833333,
- 0.49138916667,
- 0.610585,
- 0.578545,
- 0.49276666667,
- 0.51599833333,
- 0.55685166667,
- 0.50467416667,
- 0.51643916667,
- 0.50236833333,
- 0.60251916667,
- 0.38275916667,
- 0.4105925,
- 0.48575833333,
- 0.43170166667,
- 0.63278916667,
- 0.416565,
- 0.46697902778,
- 0.4740475,
- 0.44771,
- 0.59884472222,
- 0.4627625,
- 0.4531975,
- 0.60965916667,
- 0.63874180556,
- 0.51233305556,
- 0.55861527778,
- 0.50454416667,
- 0.43259527778,
- 0.51321444444,
- 0.48314888889,
- 0.59840555556,
- 0.55625777778,
- 0.46488611111,
- 0.45740694444,
- 0.51038611111,
- 0.61267083333,
- 0.51206944444,
- 0.56741666667,
- 0.58174305556,
- 0.38422222222,
- 0.55132083333,
- 0.54504722222,
- 0.48465,
- 0.47887083333,
- 0.46282638889,
- 0.48750277778,
- 0.53763055556,
- 0.53980833333,
- 0.42661527778,
- 0.4728375,
- 0.46515694444,
- 0.50543333333,
- 0.58466666667,
- 0.4641875,
- 0.42224305556,
- 0.45730555556,
- 0.53627777778,
- 0.49995833333,
- 0.53940972222,
- 0.41956944444,
- 0.45699305556,
- 0.52835416667,
- 0.50822222222,
- 0.44841666667,
- 0.43936111111,
- 0.54340277778,
- 0.46944444444,
- 0.57169444444,
- 0.52923611111,
- 0.56581944444,
- 0.56853472222,
- 0.59384027778,
- 0.46910555556,
- 0.43805694444,
- 0.58207083333,
- 0.55213888889,
- 0.44952777778,
- 0.47930555556,
- 0.44179861111,
- 0.41134027778,
- 0.42866666667,
- 0.511375,
- 0.50978472222,
- 0.477875,
- 0.53188194444,
- 0.44010416667,
- 0.48233333333,
- 0.55613347222,
- 0.47067416667,
- 0.54952611111,
- 0.52073277778,
- 0.50571736111,
- 0.61287555556,
- 0.48102388889,
- 0.49271569444,
- 0.44343125,
- 0.53625333333,
- 0.563685,
- 0.466765,
- 0.49876166667,
- 0.47815333333,
- 0.49052666667,
- 0.40544,
- 0.558505,
- 0.504925,
- 0.56809666667,
- 0.51643166667,
- 0.500375,
- 0.46229833333,
- 0.41243,
- 0.39154166667,
- 0.46627166667,
- 0.55276111111,
- 0.39044694444,
- 0.56729583333,
- 0.56158388889,
- 0.41965333333,
- 0.52013361111,
- 0.39681166667,
- 0.50957805556,
- 0.51941666667,
- 0.55553763889,
- 0.46638333333,
- 0.44483722222,
- 0.57280722222,
- 0.68180791667,
- 0.48812944444,
- 0.59093375,
- 0.54439763889,
- 0.48189972222,
- 0.49061152778,
- 0.59989930556,
- 0.58490055556,
- 0.61258930556,
- 0.60397902778,
- 0.52981402778,
- 0.50435,
- 0.41884722222,
- 0.45518055556,
- 0.46851111111,
- 0.61096944444,
- 0.49326944444,
- 0.419725,
- 0.46484722222,
- 0.48892222222,
- 0.42955,
- 0.53626388889,
- 0.56575833333,
- 0.50948888889,
- 0.46735555556,
- 0.51255555556,
- 0.50625555556,
- 0.49493333333,
- 0.45309444444,
- 0.44096111111,
- 0.52035277778,
- 0.41961388889,
- 0.4463,
- 0.48494444444,
- 0.55550277778,
- 0.51151111111,
- 0.53519444444,
- 0.39882902778,
- 0.47607,
- 0.47141388889,
- 0.54625083333,
- 0.49487166667,
- 0.56357083333,
- 0.54315833333,
- 0.55606277778,
- 0.46999027778,
- 0.60634083333,
- 0.45837861111,
- 0.46508805556,
- 0.46517861111,
- 0.50517722222,
- 0.49639833333,
- 0.45971111111,
- 0.53749027778,
- 0.42077611111,
- 0.36337027778,
- 0.57174166667,
- 0.51783333333,
- 0.46205166667,
- 0.54008333333,
- 0.46243833333,
- 0.49854333333,
- 0.52208666667,
- 0.45309833333,
- 0.54164166667,
- 0.50293666667,
- 0.58052444444,
- 0.48480416667,
- 0.44963611111,
- 0.57046319444,
- 0.49653611111,
- 0.55977222222,
- 0.46650694444,
- 0.57683680556,
- 0.37171111111,
- 0.46325,
- 0.48231680556,
- 0.48979055556,
- 0.51859361111,
- 0.50016222222,
- 0.45968583333,
- 0.51421583333,
- 0.56765638889,
- 0.57335111111,
- 0.41111875,
- 0.50796958333,
- 0.395305,
- 0.48056722222,
- 0.49464361111,
- 0.46999875,
- 0.44863527778,
- 0.44513208333,
- 0.52571097222,
- 0.59808069444,
- 0.51411833333,
- 0.61205444444,
- 0.52014583333,
- 0.44387916667,
- 0.47595416667,
- 0.4776,
- 0.54218333333,
- 0.42116666667,
- 0.41662916667,
- 0.47499583333,
- 0.55535416667,
- 0.44424583333,
- 0.4812375,
- 0.54995,
- 0.4826875,
- 0.46228333333,
- 0.42069166667,
- 0.50894583333,
- 0.52455305556,
- 0.43574513889,
- 0.47146680556,
- 0.52494444444,
- 0.61506833333,
- 0.34888958333,
- 0.53983305556,
- 0.51920916667,
- 0.46683319444,
- 0.58013,
- 0.39148333333,
- 0.52852666667,
- 0.49618611111,
- 0.42079,
- 0.44302666667,
- 0.61560833333,
- 0.40733777778,
- 0.55178333333,
- 0.5079175,
- 0.47183541667,
- 0.517075,
- 0.38027541667,
- 0.51537569444,
- 0.40031805556,
- 0.51048138889,
- 0.59283166667,
- 0.49227166667,
- 0.48328611111,
- 0.52946541667,
- null
- ],
- "prints": [
- [
- "Last:0.53"
- ],
- [
- "Min:0.35"
- ],
- [
- "Max:0.68"
- ],
- [
- "Average:0.50"
- ]
- ],
- "last_value": 0.53,
- "minimum_value": 0.35,
- "maximum_value": 0.68,
- "average_value": 0.5
- },
- {
- "index_id": 5320,
- "metric_id": 12878,
- "metric": "querytime",
- "metric_legend": "querytime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#ff3333"
- },
- "legend": "querytime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.4820075,
- 0.54786666667,
- 0.537675,
- 0.44466583333,
- 0.56231069444,
- 0.51092194444,
- 0.50375861111,
- 0.51052875,
- 0.50798208333,
- 0.44864861111,
- 0.4147725,
- 0.50207305556,
- 0.49094888889,
- 0.50487722222,
- 0.51480555556,
- 0.60383333333,
- 0.57061194444,
- 0.56269166667,
- 0.50226666667,
- 0.36955,
- 0.48694166667,
- 0.5011,
- 0.50590833333,
- 0.39789166667,
- 0.43364166667,
- 0.46898333333,
- 0.5747,
- 0.43391666667,
- 0.58044166667,
- 0.55174166667,
- 0.462675,
- 0.52405833333,
- 0.46514166667,
- 0.57273333333,
- 0.52735833333,
- 0.5592,
- 0.51948305556,
- 0.50549694444,
- 0.50488861111,
- 0.36735625,
- 0.53613972222,
- 0.50677708333,
- 0.44981055556,
- 0.43704833333,
- 0.45431930556,
- 0.56507055556,
- 0.41380861111,
- 0.55419958333,
- 0.45757708333,
- 0.45671305556,
- 0.4972675,
- 0.38788166667,
- 0.53776583333,
- 0.52779277778,
- 0.53221736111,
- 0.47106277778,
- 0.56903944444,
- 0.4783,
- 0.48126111111,
- 0.54720222222,
- 0.474135,
- 0.45746888889,
- 0.51297277778,
- 0.606045,
- 0.41071444444,
- 0.41101222222,
- 0.552105,
- 0.45999388889,
- 0.51995777778,
- 0.56436611111,
- 0.50154,
- 0.47195055556,
- 0.43405972222,
- 0.5065,
- 0.51008125,
- 0.52819375,
- 0.48212777778,
- 0.49300902778,
- 0.57922916667,
- 0.46563888889,
- 0.4014375,
- 0.49352152778,
- 0.46820347222,
- 0.3917,
- 0.50307152778,
- 0.43910972222,
- 0.57312708333,
- 0.56125138889,
- 0.50412708333,
- 0.53868194444,
- 0.51587361111,
- 0.60080208333,
- 0.47862986111,
- 0.48106152778,
- 0.38717166667,
- 0.526345,
- 0.40869833333,
- 0.4253675,
- 0.5569475,
- 0.46934416667,
- 0.50617083333,
- 0.44834,
- 0.51131333333,
- 0.55684916667,
- 0.51484166667,
- 0.56658,
- 0.41325583333,
- 0.54179416667,
- 0.57034416667,
- 0.47756916667,
- 0.62718666667,
- 0.5509725,
- 0.5502525,
- 0.47039333333,
- 0.42288916667,
- 0.53411083333,
- 0.5683725,
- 0.602335,
- 0.47520916667,
- 0.50628583333,
- 0.521265,
- 0.52259861111,
- 0.48722541667,
- 0.53608763889,
- 0.59789305556,
- 0.44855902778,
- 0.53649930556,
- 0.54616166667,
- 0.58590708333,
- 0.45782208333,
- 0.4642825,
- 0.49553166667,
- 0.67386,
- 0.50180402778,
- 0.47037763889,
- 0.46473833333,
- 0.41795972222,
- 0.47257958333,
- 0.53391527778,
- 0.57262361111,
- 0.48405138889,
- 0.4508,
- 0.54903055556,
- 0.42190694444,
- 0.43467777778,
- 0.53279027778,
- 0.58740972222,
- 0.56928333333,
- 0.63375833333,
- 0.5663125,
- 0.46767638889,
- 0.57531388889,
- 0.45455277778,
- 0.39892222222,
- 0.5952875,
- 0.44328333333,
- 0.49716944444,
- 0.49061111111,
- 0.55089583333,
- 0.542875,
- 0.44646527778,
- 0.47390277778,
- 0.495,
- 0.55122222222,
- 0.54713888889,
- 0.47925694444,
- 0.645625,
- 0.58602083333,
- 0.54818055556,
- 0.58030555556,
- 0.5108125,
- 0.48620138889,
- 0.44344444444,
- 0.62082638889,
- 0.53688888889,
- 0.4769375,
- 0.45626388889,
- 0.43636111111,
- 0.48725416667,
- 0.56865277778,
- 0.47129722222,
- 0.50325,
- 0.48446527778,
- 0.55102083333,
- 0.58122916667,
- 0.45869444444,
- 0.55117361111,
- 0.38622916667,
- 0.49203472222,
- 0.39611111111,
- 0.52322222222,
- 0.50911111111,
- 0.545875,
- 0.49933166667,
- 0.51926611111,
- 0.49907486111,
- 0.50863486111,
- 0.53831486111,
- 0.53933319444,
- 0.57828930556,
- 0.47896819444,
- 0.40125291667,
- 0.504445,
- 0.53565,
- 0.28999666667,
- 0.48051666667,
- 0.44803833333,
- 0.42531,
- 0.54171166667,
- 0.484515,
- 0.46153833333,
- 0.47544666667,
- 0.43798,
- 0.401075,
- 0.407455,
- 0.41547666667,
- 0.54620333333,
- 0.45932666667,
- 0.45051930556,
- 0.57091819444,
- 0.46523319444,
- 0.43658833333,
- 0.48776138889,
- 0.53602388889,
- 0.51612527778,
- 0.51619833333,
- 0.49428416667,
- 0.43790222222,
- 0.44653958333,
- 0.43712486111,
- 0.40300513889,
- 0.56234097222,
- 0.474555,
- 0.44655097222,
- 0.54056597222,
- 0.45041430556,
- 0.52533972222,
- 0.52445375,
- 0.63305347222,
- 0.48278055556,
- 0.52841361111,
- 0.53922430556,
- 0.56528333333,
- 0.44198055556,
- 0.49815555556,
- 0.44740277778,
- 0.53225,
- 0.47143611111,
- 0.50535,
- 0.50532222222,
- 0.38877222222,
- 0.45349166667,
- 0.4699,
- 0.527325,
- 0.48013055556,
- 0.45149444444,
- 0.51115555556,
- 0.47300555556,
- 0.40672222222,
- 0.54794722222,
- 0.57065555556,
- 0.43134444444,
- 0.54095555556,
- 0.46501388889,
- 0.53646111111,
- 0.52628611111,
- 0.55696944444,
- 0.33851666667,
- 0.56513861111,
- 0.39431041667,
- 0.48249513889,
- 0.53899666667,
- 0.54166638889,
- 0.50782888889,
- 0.52590805556,
- 0.45245333333,
- 0.45541916667,
- 0.47155583333,
- 0.51281972222,
- 0.44810166667,
- 0.50835138889,
- 0.58544388889,
- 0.52371805556,
- 0.44599805556,
- 0.43898777778,
- 0.47267722222,
- 0.52452208333,
- 0.61510333333,
- 0.50854166667,
- 0.46054833333,
- 0.56622,
- 0.42615,
- 0.53491666667,
- 0.52652833333,
- 0.527335,
- 0.67556333333,
- 0.45109166667,
- 0.59083541667,
- 0.45191319444,
- 0.54146805556,
- 0.48338333333,
- 0.53249097222,
- 0.44949444444,
- 0.51941736111,
- 0.58977708333,
- 0.50848402778,
- 0.40556944444,
- 0.42585305556,
- 0.5207375,
- 0.4586325,
- 0.40217944444,
- 0.56245944444,
- 0.55036388889,
- 0.472395,
- 0.40083444444,
- 0.46645652778,
- 0.47231375,
- 0.61049125,
- 0.43026055556,
- 0.49318791667,
- 0.49176569444,
- 0.50923013889,
- 0.65010805556,
- 0.60687861111,
- 0.48488833333,
- 0.54808833333,
- 0.57673444444,
- 0.52415,
- 0.3968375,
- 0.4255625,
- 0.49525,
- 0.635625,
- 0.54183333333,
- 0.47456666667,
- 0.35498333333,
- 0.53386666667,
- 0.51248333333,
- 0.557225,
- 0.51565833333,
- 0.46278333333,
- 0.5115125,
- 0.53826666667,
- 0.54737347222,
- 0.50048930556,
- 0.55215569444,
- 0.52576833333,
- 0.45016569444,
- 0.36885777778,
- 0.45052347222,
- 0.45691166667,
- 0.47295736111,
- 0.48539277778,
- 0.53254333333,
- 0.62901055556,
- 0.524615,
- 0.49281166667,
- 0.48531888889,
- 0.52359944444,
- 0.52044388889,
- 0.482585,
- 0.45909666667,
- 0.56092263889,
- 0.51403375,
- 0.56277125,
- 0.53915708333,
- 0.49189180556,
- 0.54154763889,
- 0.50087736111,
- 0.44601666667,
- 0.48657333333,
- 0.52078888889,
- 0.47333972222,
- null
- ],
- "prints": [
- [
- "Last:0.47"
- ],
- [
- "Min:0.29"
- ],
- [
- "Max:0.68"
- ],
- [
- "Average:0.50"
- ]
- ],
- "last_value": 0.47,
- "minimum_value": 0.29,
- "maximum_value": 0.68,
- "average_value": 0.5
- },
- {
- "index_id": 5320,
- "metric_id": 12877,
- "metric": "used",
- "metric_legend": "used",
- "unit": "%",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 8,
- "host_id": null,
- "service_id": null,
- "name": "Used",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": "used",
- "ds_color_line": "#2B28D7",
- "ds_color_line_mode": "0",
- "ds_color_area": "#050AF9",
- "ds_color_area_warn": null,
- "ds_color_area_crit": null,
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "used",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 1,
- "data": [
- 93.53473625,
- 95.4705575,
- 90.78131625,
- 88.229732917,
- 91.46288,
- 96.404586389,
- 90.425950694,
- 92.482070417,
- 95.38929375,
- 98.065868472,
- 91.3271225,
- 92.991402361,
- 96.059254028,
- 95.253403889,
- 92.0200325,
- 86.169484583,
- 91.723414306,
- 95.545441667,
- 91.213633333,
- 96.978266667,
- 92.047108333,
- 94.362,
- 97.349091667,
- 91.6958,
- 90.930558333,
- 92.126758333,
- 92.515791667,
- 90.98285,
- 94.291941667,
- 94.6313,
- 93.0995,
- 96.032566667,
- 97.73195,
- 97.437383333,
- 97.234416667,
- 97.020591667,
- 92.502736528,
- 92.181365972,
- 91.755329306,
- 89.611361389,
- 81.009381389,
- 82.697088333,
- 82.949993889,
- 92.676847917,
- 92.367398889,
- 90.054948889,
- 88.724102778,
- 95.362512083,
- 98.273312639,
- 94.797704722,
- 91.9214025,
- 93.706965556,
- 95.219553889,
- 98.321218333,
- 97.808040972,
- 97.677885,
- 96.704646111,
- 93.720406667,
- 92.002689444,
- 89.145115,
- 96.180838889,
- 98.572950556,
- 91.615067778,
- 92.582652222,
- 96.859334444,
- 90.42448,
- 91.813913889,
- 92.037367778,
- 91.581648889,
- 79.763948889,
- 73.738103333,
- 72.813350972,
- 74.061651389,
- 78.564606944,
- 73.625989583,
- 74.61276875,
- 75.664770833,
- 84.789911111,
- 91.562385417,
- 92.0473125,
- 90.717729167,
- 84.731822917,
- 84.325086111,
- 84.78401875,
- 86.0260625,
- 87.469259028,
- 88.298977778,
- 86.075078472,
- 86.349101389,
- 88.635159028,
- 89.006238889,
- 91.320934722,
- 88.318921528,
- 77.251426528,
- 73.456744167,
- 81.2534625,
- 84.409346667,
- 85.268703333,
- 86.337475833,
- 83.730001667,
- 79.989916667,
- 86.847673333,
- 93.467304167,
- 95.524714167,
- 94.551674167,
- 87.080203333,
- 80.839834167,
- 79.757945,
- 81.624870833,
- 88.540388333,
- 96.682811667,
- 96.2668275,
- 95.1485025,
- 90.362938333,
- 88.677029167,
- 89.1434075,
- 88.386136667,
- 94.904750833,
- 97.1479475,
- 90.782644167,
- 88.3413525,
- 89.247638056,
- 92.222419444,
- 82.727468889,
- 81.888297083,
- 85.957462222,
- 89.885201806,
- 97.087708472,
- 93.182506389,
- 84.728676111,
- 83.442598056,
- 81.057695972,
- 73.105455972,
- 77.261483333,
- 86.681160278,
- 90.515781111,
- 83.858407917,
- 84.912508194,
- 89.196070833,
- 89.980515278,
- 88.662130556,
- 90.962719444,
- 90.9171,
- 97.05835,
- 97.970702778,
- 94.598463889,
- 97.041998611,
- 97.571281944,
- 90.000070833,
- 84.775991667,
- 77.098211111,
- 73.768095833,
- 87.708554167,
- 95.292305556,
- 92.661397222,
- 91.698375,
- 94.734926389,
- 85.569593056,
- 78.765402778,
- 73.1415625,
- 75.643798611,
- 79.100340278,
- 80.757395833,
- 75.441020833,
- 74.254395833,
- 75.555159722,
- 73.148548611,
- 74.245520833,
- 80.435673611,
- 78.429381944,
- 73.619902778,
- 73.574881944,
- 74.838986111,
- 76.178506944,
- 73.361840278,
- 73.252270833,
- 74.580708333,
- 77.323736111,
- 89.248868056,
- 95.394506944,
- 83.555773611,
- 73.377284722,
- 72.989409722,
- 72.345833333,
- 77.278854167,
- 77.246506944,
- 75.3070625,
- 74.816506944,
- 73.262715278,
- 78.040527778,
- 75.361666667,
- 79.701270833,
- 80.888388889,
- 77.274089722,
- 78.965599028,
- 76.581835833,
- 81.1598125,
- 82.532069722,
- 81.2063575,
- 79.699761389,
- 84.279743333,
- 82.0001075,
- 77.98224,
- 80.77859,
- 77.558431667,
- 75.035186667,
- 79.77859,
- 76.498343333,
- 75.270236667,
- 74.502018333,
- 76.987243333,
- 77.314198333,
- 73.739925,
- 76.768341667,
- 80.002403333,
- 79.50922,
- 79.793135,
- 83.32031,
- 90.690696528,
- 91.855036111,
- 95.152990556,
- 90.662471667,
- 87.878877778,
- 86.474365833,
- 93.031389722,
- 91.1510425,
- 89.524025,
- 87.79133125,
- 83.196835417,
- 86.905329028,
- 84.796714861,
- 86.477819306,
- 90.215054722,
- 90.689078611,
- 90.069447917,
- 94.064490972,
- 92.910771806,
- 90.168341389,
- 86.005012778,
- 82.007541389,
- 82.4444,
- 84.725972361,
- 81.079969444,
- 82.071788889,
- 74.344436111,
- 73.304477778,
- 73.895147222,
- 76.732205556,
- 81.682944444,
- 86.026041667,
- 87.382563889,
- 88.904291667,
- 87.770433333,
- 80.927844444,
- 77.038666667,
- 81.157086111,
- 82.575377778,
- 91.568616667,
- 96.412636111,
- 96.376172222,
- 91.875827778,
- 95.524025,
- 97.76045,
- 96.818305556,
- 92.319038889,
- 89.773883333,
- 80.555247222,
- 85.832455556,
- 77.946490833,
- 82.205994583,
- 88.74038125,
- 83.006198333,
- 78.297281111,
- 74.590896667,
- 75.900935833,
- 74.595134722,
- 78.369969722,
- 81.004014167,
- 85.035468056,
- 81.22037,
- 84.639056944,
- 84.586663333,
- 78.015843889,
- 80.189820833,
- 76.739529722,
- 78.387696111,
- 78.584917361,
- 84.938538333,
- 90.97361,
- 90.789226667,
- 90.425228333,
- 91.381495,
- 96.852533333,
- 91.220391667,
- 97.581593333,
- 97.245176667,
- 95.096153333,
- 95.391049444,
- 93.119884028,
- 81.892788889,
- 77.476779861,
- 80.188209028,
- 80.098774306,
- 86.978205556,
- 94.64235625,
- 97.311053472,
- 97.048621528,
- 90.545117639,
- 88.905369444,
- 93.880626944,
- 93.685805556,
- 96.881301944,
- 96.753013056,
- 97.337800278,
- 95.696868611,
- 97.011245139,
- 96.984615833,
- 87.825530556,
- 90.718932639,
- 92.912039028,
- 86.380014028,
- 84.796867639,
- 92.66191625,
- 91.698228056,
- 90.882975,
- 96.128683194,
- 98.014940139,
- 96.4936875,
- 93.528679167,
- 97.463633333,
- 95.379266667,
- 90.4649625,
- 89.087520833,
- 86.6875375,
- 77.421904167,
- 74.396995833,
- 73.215158333,
- 76.235308333,
- 76.3625,
- 80.6953625,
- 82.4897875,
- 86.9769875,
- 92.331467222,
- 94.825957917,
- 89.40248875,
- 89.796999167,
- 91.073693194,
- 92.296046667,
- 97.467716528,
- 90.982410139,
- 92.016604583,
- 91.068401389,
- 86.059646667,
- 81.936524444,
- 81.474296111,
- 75.121141667,
- 76.126827778,
- 78.021423333,
- 79.388627778,
- 72.908920556,
- 76.873109444,
- 88.14395875,
- 92.47338,
- 90.283409167,
- 87.865566667,
- 84.918092222,
- 78.515823889,
- 73.144546111,
- 77.194361667,
- 74.75668,
- 83.207912778,
- 81.414109306,
- null
- ],
- "prints": [
- [
- "Last:81.41"
- ],
- [
- "Average:86.52"
- ]
- ],
- "last_value": 81.41,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 86.52
- }
- ],
- "times": [
- "2023-04-22T18:00:00+02:00",
- "2023-04-22T20:00:00+02:00",
- "2023-04-22T22:00:00+02:00",
- "2023-04-23T00:00:00+02:00",
- "2023-04-23T02:00:00+02:00",
- "2023-04-23T04:00:00+02:00",
- "2023-04-23T06:00:00+02:00",
- "2023-04-23T08:00:00+02:00",
- "2023-04-23T10:00:00+02:00",
- "2023-04-23T12:00:00+02:00",
- "2023-04-23T14:00:00+02:00",
- "2023-04-23T16:00:00+02:00",
- "2023-04-23T18:00:00+02:00",
- "2023-04-23T20:00:00+02:00",
- "2023-04-23T22:00:00+02:00",
- "2023-04-24T00:00:00+02:00",
- "2023-04-24T02:00:00+02:00",
- "2023-04-24T04:00:00+02:00",
- "2023-04-24T06:00:00+02:00",
- "2023-04-24T08:00:00+02:00",
- "2023-04-24T10:00:00+02:00",
- "2023-04-24T12:00:00+02:00",
- "2023-04-24T14:00:00+02:00",
- "2023-04-24T16:00:00+02:00",
- "2023-04-24T18:00:00+02:00",
- "2023-04-24T20:00:00+02:00",
- "2023-04-24T22:00:00+02:00",
- "2023-04-25T00:00:00+02:00",
- "2023-04-25T02:00:00+02:00",
- "2023-04-25T04:00:00+02:00",
- "2023-04-25T06:00:00+02:00",
- "2023-04-25T08:00:00+02:00",
- "2023-04-25T10:00:00+02:00",
- "2023-04-25T12:00:00+02:00",
- "2023-04-25T14:00:00+02:00",
- "2023-04-25T16:00:00+02:00",
- "2023-04-25T18:00:00+02:00",
- "2023-04-25T20:00:00+02:00",
- "2023-04-25T22:00:00+02:00",
- "2023-04-26T00:00:00+02:00",
- "2023-04-26T02:00:00+02:00",
- "2023-04-26T04:00:00+02:00",
- "2023-04-26T06:00:00+02:00",
- "2023-04-26T08:00:00+02:00",
- "2023-04-26T10:00:00+02:00",
- "2023-04-26T12:00:00+02:00",
- "2023-04-26T14:00:00+02:00",
- "2023-04-26T16:00:00+02:00",
- "2023-04-26T18:00:00+02:00",
- "2023-04-26T20:00:00+02:00",
- "2023-04-26T22:00:00+02:00",
- "2023-04-27T00:00:00+02:00",
- "2023-04-27T02:00:00+02:00",
- "2023-04-27T04:00:00+02:00",
- "2023-04-27T06:00:00+02:00",
- "2023-04-27T08:00:00+02:00",
- "2023-04-27T10:00:00+02:00",
- "2023-04-27T12:00:00+02:00",
- "2023-04-27T14:00:00+02:00",
- "2023-04-27T16:00:00+02:00",
- "2023-04-27T18:00:00+02:00",
- "2023-04-27T20:00:00+02:00",
- "2023-04-27T22:00:00+02:00",
- "2023-04-28T00:00:00+02:00",
- "2023-04-28T02:00:00+02:00",
- "2023-04-28T04:00:00+02:00",
- "2023-04-28T06:00:00+02:00",
- "2023-04-28T08:00:00+02:00",
- "2023-04-28T10:00:00+02:00",
- "2023-04-28T12:00:00+02:00",
- "2023-04-28T14:00:00+02:00",
- "2023-04-28T16:00:00+02:00",
- "2023-04-28T18:00:00+02:00",
- "2023-04-28T20:00:00+02:00",
- "2023-04-28T22:00:00+02:00",
- "2023-04-29T00:00:00+02:00",
- "2023-04-29T02:00:00+02:00",
- "2023-04-29T04:00:00+02:00",
- "2023-04-29T06:00:00+02:00",
- "2023-04-29T08:00:00+02:00",
- "2023-04-29T10:00:00+02:00",
- "2023-04-29T12:00:00+02:00",
- "2023-04-29T14:00:00+02:00",
- "2023-04-29T16:00:00+02:00",
- "2023-04-29T18:00:00+02:00",
- "2023-04-29T20:00:00+02:00",
- "2023-04-29T22:00:00+02:00",
- "2023-04-30T00:00:00+02:00",
- "2023-04-30T02:00:00+02:00",
- "2023-04-30T04:00:00+02:00",
- "2023-04-30T06:00:00+02:00",
- "2023-04-30T08:00:00+02:00",
- "2023-04-30T10:00:00+02:00",
- "2023-04-30T12:00:00+02:00",
- "2023-04-30T14:00:00+02:00",
- "2023-04-30T16:00:00+02:00",
- "2023-04-30T18:00:00+02:00",
- "2023-04-30T20:00:00+02:00",
- "2023-04-30T22:00:00+02:00",
- "2023-05-01T00:00:00+02:00",
- "2023-05-01T02:00:00+02:00",
- "2023-05-01T04:00:00+02:00",
- "2023-05-01T06:00:00+02:00",
- "2023-05-01T08:00:00+02:00",
- "2023-05-01T10:00:00+02:00",
- "2023-05-01T12:00:00+02:00",
- "2023-05-01T14:00:00+02:00",
- "2023-05-01T16:00:00+02:00",
- "2023-05-01T18:00:00+02:00",
- "2023-05-01T20:00:00+02:00",
- "2023-05-01T22:00:00+02:00",
- "2023-05-02T00:00:00+02:00",
- "2023-05-02T02:00:00+02:00",
- "2023-05-02T04:00:00+02:00",
- "2023-05-02T06:00:00+02:00",
- "2023-05-02T08:00:00+02:00",
- "2023-05-02T10:00:00+02:00",
- "2023-05-02T12:00:00+02:00",
- "2023-05-02T14:00:00+02:00",
- "2023-05-02T16:00:00+02:00",
- "2023-05-02T18:00:00+02:00",
- "2023-05-02T20:00:00+02:00",
- "2023-05-02T22:00:00+02:00",
- "2023-05-03T00:00:00+02:00",
- "2023-05-03T02:00:00+02:00",
- "2023-05-03T04:00:00+02:00",
- "2023-05-03T06:00:00+02:00",
- "2023-05-03T08:00:00+02:00",
- "2023-05-03T10:00:00+02:00",
- "2023-05-03T12:00:00+02:00",
- "2023-05-03T14:00:00+02:00",
- "2023-05-03T16:00:00+02:00",
- "2023-05-03T18:00:00+02:00",
- "2023-05-03T20:00:00+02:00",
- "2023-05-03T22:00:00+02:00",
- "2023-05-04T00:00:00+02:00",
- "2023-05-04T02:00:00+02:00",
- "2023-05-04T04:00:00+02:00",
- "2023-05-04T06:00:00+02:00",
- "2023-05-04T08:00:00+02:00",
- "2023-05-04T10:00:00+02:00",
- "2023-05-04T12:00:00+02:00",
- "2023-05-04T14:00:00+02:00",
- "2023-05-04T16:00:00+02:00",
- "2023-05-04T18:00:00+02:00",
- "2023-05-04T20:00:00+02:00",
- "2023-05-04T22:00:00+02:00",
- "2023-05-05T00:00:00+02:00",
- "2023-05-05T02:00:00+02:00",
- "2023-05-05T04:00:00+02:00",
- "2023-05-05T06:00:00+02:00",
- "2023-05-05T08:00:00+02:00",
- "2023-05-05T10:00:00+02:00",
- "2023-05-05T12:00:00+02:00",
- "2023-05-05T14:00:00+02:00",
- "2023-05-05T16:00:00+02:00",
- "2023-05-05T18:00:00+02:00",
- "2023-05-05T20:00:00+02:00",
- "2023-05-05T22:00:00+02:00",
- "2023-05-06T00:00:00+02:00",
- "2023-05-06T02:00:00+02:00",
- "2023-05-06T04:00:00+02:00",
- "2023-05-06T06:00:00+02:00",
- "2023-05-06T08:00:00+02:00",
- "2023-05-06T10:00:00+02:00",
- "2023-05-06T12:00:00+02:00",
- "2023-05-06T14:00:00+02:00",
- "2023-05-06T16:00:00+02:00",
- "2023-05-06T18:00:00+02:00",
- "2023-05-06T20:00:00+02:00",
- "2023-05-06T22:00:00+02:00",
- "2023-05-07T00:00:00+02:00",
- "2023-05-07T02:00:00+02:00",
- "2023-05-07T04:00:00+02:00",
- "2023-05-07T06:00:00+02:00",
- "2023-05-07T08:00:00+02:00",
- "2023-05-07T10:00:00+02:00",
- "2023-05-07T12:00:00+02:00",
- "2023-05-07T14:00:00+02:00",
- "2023-05-07T16:00:00+02:00",
- "2023-05-07T18:00:00+02:00",
- "2023-05-07T20:00:00+02:00",
- "2023-05-07T22:00:00+02:00",
- "2023-05-08T00:00:00+02:00",
- "2023-05-08T02:00:00+02:00",
- "2023-05-08T04:00:00+02:00",
- "2023-05-08T06:00:00+02:00",
- "2023-05-08T08:00:00+02:00",
- "2023-05-08T10:00:00+02:00",
- "2023-05-08T12:00:00+02:00",
- "2023-05-08T14:00:00+02:00",
- "2023-05-08T16:00:00+02:00",
- "2023-05-08T18:00:00+02:00",
- "2023-05-08T20:00:00+02:00",
- "2023-05-08T22:00:00+02:00",
- "2023-05-09T00:00:00+02:00",
- "2023-05-09T02:00:00+02:00",
- "2023-05-09T04:00:00+02:00",
- "2023-05-09T06:00:00+02:00",
- "2023-05-09T08:00:00+02:00",
- "2023-05-09T10:00:00+02:00",
- "2023-05-09T12:00:00+02:00",
- "2023-05-09T14:00:00+02:00",
- "2023-05-09T16:00:00+02:00",
- "2023-05-09T18:00:00+02:00",
- "2023-05-09T20:00:00+02:00",
- "2023-05-09T22:00:00+02:00",
- "2023-05-10T00:00:00+02:00",
- "2023-05-10T02:00:00+02:00",
- "2023-05-10T04:00:00+02:00",
- "2023-05-10T06:00:00+02:00",
- "2023-05-10T08:00:00+02:00",
- "2023-05-10T10:00:00+02:00",
- "2023-05-10T12:00:00+02:00",
- "2023-05-10T14:00:00+02:00",
- "2023-05-10T16:00:00+02:00",
- "2023-05-10T18:00:00+02:00",
- "2023-05-10T20:00:00+02:00",
- "2023-05-10T22:00:00+02:00",
- "2023-05-11T00:00:00+02:00",
- "2023-05-11T02:00:00+02:00",
- "2023-05-11T04:00:00+02:00",
- "2023-05-11T06:00:00+02:00",
- "2023-05-11T08:00:00+02:00",
- "2023-05-11T10:00:00+02:00",
- "2023-05-11T12:00:00+02:00",
- "2023-05-11T14:00:00+02:00",
- "2023-05-11T16:00:00+02:00",
- "2023-05-11T18:00:00+02:00",
- "2023-05-11T20:00:00+02:00",
- "2023-05-11T22:00:00+02:00",
- "2023-05-12T00:00:00+02:00",
- "2023-05-12T02:00:00+02:00",
- "2023-05-12T04:00:00+02:00",
- "2023-05-12T06:00:00+02:00",
- "2023-05-12T08:00:00+02:00",
- "2023-05-12T10:00:00+02:00",
- "2023-05-12T12:00:00+02:00",
- "2023-05-12T14:00:00+02:00",
- "2023-05-12T16:00:00+02:00",
- "2023-05-12T18:00:00+02:00",
- "2023-05-12T20:00:00+02:00",
- "2023-05-12T22:00:00+02:00",
- "2023-05-13T00:00:00+02:00",
- "2023-05-13T02:00:00+02:00",
- "2023-05-13T04:00:00+02:00",
- "2023-05-13T06:00:00+02:00",
- "2023-05-13T08:00:00+02:00",
- "2023-05-13T10:00:00+02:00",
- "2023-05-13T12:00:00+02:00",
- "2023-05-13T14:00:00+02:00",
- "2023-05-13T16:00:00+02:00",
- "2023-05-13T18:00:00+02:00",
- "2023-05-13T20:00:00+02:00",
- "2023-05-13T22:00:00+02:00",
- "2023-05-14T00:00:00+02:00",
- "2023-05-14T02:00:00+02:00",
- "2023-05-14T04:00:00+02:00",
- "2023-05-14T06:00:00+02:00",
- "2023-05-14T08:00:00+02:00",
- "2023-05-14T10:00:00+02:00",
- "2023-05-14T12:00:00+02:00",
- "2023-05-14T14:00:00+02:00",
- "2023-05-14T16:00:00+02:00",
- "2023-05-14T18:00:00+02:00",
- "2023-05-14T20:00:00+02:00",
- "2023-05-14T22:00:00+02:00",
- "2023-05-15T00:00:00+02:00",
- "2023-05-15T02:00:00+02:00",
- "2023-05-15T04:00:00+02:00",
- "2023-05-15T06:00:00+02:00",
- "2023-05-15T08:00:00+02:00",
- "2023-05-15T10:00:00+02:00",
- "2023-05-15T12:00:00+02:00",
- "2023-05-15T14:00:00+02:00",
- "2023-05-15T16:00:00+02:00",
- "2023-05-15T18:00:00+02:00",
- "2023-05-15T20:00:00+02:00",
- "2023-05-15T22:00:00+02:00",
- "2023-05-16T00:00:00+02:00",
- "2023-05-16T02:00:00+02:00",
- "2023-05-16T04:00:00+02:00",
- "2023-05-16T06:00:00+02:00",
- "2023-05-16T08:00:00+02:00",
- "2023-05-16T10:00:00+02:00",
- "2023-05-16T12:00:00+02:00",
- "2023-05-16T14:00:00+02:00",
- "2023-05-16T16:00:00+02:00",
- "2023-05-16T18:00:00+02:00",
- "2023-05-16T20:00:00+02:00",
- "2023-05-16T22:00:00+02:00",
- "2023-05-17T00:00:00+02:00",
- "2023-05-17T02:00:00+02:00",
- "2023-05-17T04:00:00+02:00",
- "2023-05-17T06:00:00+02:00",
- "2023-05-17T08:00:00+02:00",
- "2023-05-17T10:00:00+02:00",
- "2023-05-17T12:00:00+02:00",
- "2023-05-17T14:00:00+02:00",
- "2023-05-17T16:00:00+02:00",
- "2023-05-17T18:00:00+02:00",
- "2023-05-17T20:00:00+02:00",
- "2023-05-17T22:00:00+02:00",
- "2023-05-18T00:00:00+02:00",
- "2023-05-18T02:00:00+02:00",
- "2023-05-18T04:00:00+02:00",
- "2023-05-18T06:00:00+02:00",
- "2023-05-18T08:00:00+02:00",
- "2023-05-18T10:00:00+02:00",
- "2023-05-18T12:00:00+02:00",
- "2023-05-18T14:00:00+02:00",
- "2023-05-18T16:00:00+02:00",
- "2023-05-18T18:00:00+02:00",
- "2023-05-18T20:00:00+02:00",
- "2023-05-18T22:00:00+02:00",
- "2023-05-19T00:00:00+02:00",
- "2023-05-19T02:00:00+02:00",
- "2023-05-19T04:00:00+02:00",
- "2023-05-19T06:00:00+02:00",
- "2023-05-19T08:00:00+02:00",
- "2023-05-19T10:00:00+02:00",
- "2023-05-19T12:00:00+02:00",
- "2023-05-19T14:00:00+02:00",
- "2023-05-19T16:00:00+02:00",
- "2023-05-19T18:00:00+02:00",
- "2023-05-19T20:00:00+02:00",
- "2023-05-19T22:00:00+02:00",
- "2023-05-20T00:00:00+02:00",
- "2023-05-20T02:00:00+02:00",
- "2023-05-20T04:00:00+02:00",
- "2023-05-20T06:00:00+02:00",
- "2023-05-20T08:00:00+02:00",
- "2023-05-20T10:00:00+02:00",
- "2023-05-20T12:00:00+02:00",
- "2023-05-20T14:00:00+02:00",
- "2023-05-20T16:00:00+02:00",
- "2023-05-20T18:00:00+02:00",
- "2023-05-20T20:00:00+02:00",
- "2023-05-20T22:00:00+02:00",
- "2023-05-21T00:00:00+02:00",
- "2023-05-21T02:00:00+02:00",
- "2023-05-21T04:00:00+02:00",
- "2023-05-21T06:00:00+02:00",
- "2023-05-21T08:00:00+02:00",
- "2023-05-21T10:00:00+02:00",
- "2023-05-21T12:00:00+02:00",
- "2023-05-21T14:00:00+02:00",
- "2023-05-21T16:00:00+02:00",
- "2023-05-21T18:00:00+02:00",
- "2023-05-21T20:00:00+02:00",
- "2023-05-21T22:00:00+02:00",
- "2023-05-22T00:00:00+02:00",
- "2023-05-22T02:00:00+02:00",
- "2023-05-22T04:00:00+02:00",
- "2023-05-22T06:00:00+02:00",
- "2023-05-22T08:00:00+02:00",
- "2023-05-22T10:00:00+02:00",
- "2023-05-22T12:00:00+02:00",
- "2023-05-22T14:00:00+02:00",
- "2023-05-22T16:00:00+02:00",
- "2023-05-22T18:00:00+02:00",
- "2023-05-22T20:00:00+02:00",
- "2023-05-22T22:00:00+02:00",
- "2023-05-23T00:00:00+02:00",
- "2023-05-23T02:00:00+02:00",
- "2023-05-23T04:00:00+02:00",
- "2023-05-23T06:00:00+02:00",
- "2023-05-23T08:00:00+02:00",
- "2023-05-23T10:00:00+02:00",
- "2023-05-23T12:00:00+02:00",
- "2023-05-23T14:00:00+02:00",
- "2023-05-23T16:00:00+02:00",
- "2023-05-23T18:00:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastWeek.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/lastWeek.json
deleted file mode 100644
index e3cb9f7a57..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/lastWeek.json
+++ /dev/null
@@ -1,2202 +0,0 @@
-{
- "global": {
- "title": "oracle-shared-spool-ratio graph on srv-oracle-users",
- "start": "2023-05-31T21:38:30+02:00",
- "end": "2023-06-07T21:38:30+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 0,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 4811,
- "metric_id": 11758,
- "metric": "connTime",
- "metric_legend": "connTime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#ff99cc"
- },
- "legend": "connTime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- null,
- 0.717525,
- 0.3018625,
- 0.6411125,
- 0.6719375,
- 0.5789875,
- 0.375325,
- 0.434875,
- 0.7254375,
- 0.41635,
- 0.5296625,
- 0.5241625,
- 0.5008125,
- 0.328025,
- 0.24695,
- 0.5298875,
- 0.5998875,
- 0.5346,
- 0.508,
- 0.5056375,
- 0.4966125,
- 0.5914375,
- 0.701275,
- 0.3506625,
- 0.63425,
- 0.5625,
- 0.504375,
- 0.6008125,
- 0.3560625,
- 0.3476125,
- 0.6056125,
- 0.4730875,
- 0.4119875,
- 0.3657125,
- 0.3893625,
- 0.546625,
- 0.4844125,
- 0.490725,
- 0.61925,
- 0.38985,
- 0.6627375,
- 0.63485,
- 0.6175375,
- 0.6968625,
- 0.5562375,
- 0.5588125,
- 0.538375,
- 0.4368875,
- 0.3541,
- 0.5216625,
- 0.6249375,
- 0.503875,
- 0.6219,
- 0.522975,
- 0.5200125,
- 0.2984625,
- 0.5670125,
- 0.5595875,
- 0.552775,
- 0.2506625,
- 0.6193875,
- 0.6573125,
- 0.409525,
- 0.59644833333,
- 0.36721,
- 0.62277333333,
- 0.47325666667,
- 0.61849,
- 0.4591,
- 0.33787,
- 0.38395,
- 0.34516666667,
- 0.59038333333,
- 0.51955333333,
- 0.47505333333,
- 0.43277666667,
- 0.59717,
- 0.70510333333,
- 0.66649,
- 0.46514,
- 0.46619333333,
- 0.40967,
- 0.42753666667,
- 0.56417333333,
- 0.44391333333,
- 0.22163333333,
- 0.41199,
- 0.31270666667,
- 0.12166333333,
- 0.45610333333,
- 0.58512333333,
- 0.29505333333,
- 0.44652333333,
- 0.38225416667,
- 0.55458916667,
- 0.55572166667,
- 0.70581083333,
- 0.38728666667,
- 0.33232083333,
- 0.44731583333,
- 0.46990666667,
- 0.5206225,
- 0.35315583333,
- 0.23610666667,
- 0.5165575,
- 0.67101083333,
- 0.54885083333,
- 0.64442083333,
- 0.5659775,
- 0.51162166667,
- 0.6147,
- 0.29876833333,
- 0.2973525,
- 0.60096416667,
- 0.4574825,
- 0.23486,
- 0.38384916667,
- 0.65109333333,
- 0.51326333333,
- 0.52025916667,
- 0.65400666667,
- 0.61474333333,
- 0.550155,
- 0.495895,
- 0.5000875,
- 0.29316166667,
- 0.42695416667,
- 0.54268916667,
- 0.40367333333,
- 0.70920166667,
- 0.47661666667,
- 0.78255833333,
- 0.63996833333,
- 0.23638833333,
- 0.62122166667,
- 0.30513333333,
- 0.48345333333,
- 0.54869083333,
- 0.58614,
- 0.39769583333,
- 0.53929416667,
- 0.69158416667,
- 0.37134333333,
- 0.4304575,
- 0.35328833333,
- 0.54430333333,
- 0.33399583333,
- 0.3304475,
- 0.49739083333,
- 0.52327,
- 0.44271583333,
- 0.62411083333,
- 0.33883916667,
- 0.57436083333,
- 0.372225,
- 0.47777083333,
- 0.50257083333,
- 0.39460083333,
- 0.3795,
- 0.45644333333,
- 0.48521833333,
- 0.25798083333,
- 0.43766083333,
- 0.5164875,
- 0.390385,
- 0.43386166667,
- 0.71189833333,
- 0.65404416667,
- 0.336205,
- 0.24493833333,
- 0.57420333333,
- 0.62064333333,
- 0.54600666667,
- 0.63159083333,
- 0.50600083333,
- 0.628085,
- 0.42937,
- 0.355585,
- 0.637485,
- 0.45999166667,
- 0.38066166667,
- 0.38246416667,
- 0.45208416667,
- 0.52603666667,
- 0.58880416667,
- 0.5446225,
- 0.4066625,
- 0.75533666667,
- 0.499815,
- 0.52572166667,
- 0.32579166667,
- 0.50101583333,
- 0.17458583333,
- 0.56188333333,
- 0.62301666667,
- 0.56505,
- 0.5881,
- 0.5673,
- 0.36425,
- 0.42038333333,
- 0.37036666667,
- 0.58353333333,
- 0.50581666667,
- 0.5374,
- 0.22163333333,
- 0.53886666667,
- 0.41891666667,
- 0.67956666667,
- 0.5002,
- 0.31088333333,
- 0.62308333333,
- 0.53451666667,
- 0.4744,
- 0.3157,
- 0.77371666667,
- 0.35426666667,
- 0.51916666667,
- 0.60275,
- 0.58133333333,
- 0.46916666667,
- 0.40691666667,
- 0.80266666667,
- 0.59691666667,
- 0.46365,
- 0.84005,
- 0.51505,
- 0.61381666667,
- 0.48591666667,
- 0.28575,
- 0.37908333333,
- 0.5565,
- 0.6975,
- 0.47025,
- 0.466,
- 0.35141666667,
- 0.52208333333,
- 0.37233333333,
- 0.34675,
- 0.42075,
- 0.64435,
- 0.24191666667,
- 0.61901666667,
- 0.55591666667,
- 0.51921666667,
- 0.5654,
- 0.38245,
- 0.46736666667,
- 0.65755,
- 0.50645,
- 0.55333333333,
- 0.37858333333,
- 0.50808333333,
- 0.58433333333,
- 0.35175,
- 0.42908333333,
- 0.36233333333,
- 0.56158333333,
- 0.31195,
- 0.68023333333,
- 0.59651666667,
- 0.64825,
- 0.71858333333,
- 0.54138333333,
- 0.73991666667,
- 0.55478333333,
- 0.4892,
- 0.56783333333,
- 0.63965,
- 0.47205,
- 0.27215,
- 0.25745,
- 0.70008333333,
- 0.59661666667,
- 0.5026,
- 0.49326666667,
- 0.3655,
- 0.60356333333,
- 0.2132275,
- 0.8226925,
- 0.36787,
- 0.4914825,
- 0.3909675,
- 0.5646075,
- 0.3643125,
- 0.457405,
- 0.471935,
- 0.4731125,
- 0.7753075,
- 0.49163,
- 0.244405,
- 0.557185,
- 0.4107075,
- 0.54546666667,
- 0.64036666667,
- 0.29668,
- 0.3992,
- 0.63089666667,
- 0.75758666667,
- 0.56485,
- 0.413955,
- 0.5602,
- 0.431975,
- 0.43485666667,
- 0.30827166667,
- 0.39586333333,
- 0.37732833333,
- 0.51866333333,
- 0.52611333333,
- 0.31280166667,
- 0.50100333333,
- 0.549735,
- 0.42203833333,
- 0.45060333333,
- 0.42550666667,
- 0.54967666667,
- 0.37341666667,
- 0.38782333333,
- 0.51425166667,
- 0.51834,
- 0.45271833333,
- 0.711285,
- 0.577775,
- 0.47911833333,
- 0.44316666667,
- 0.34324666667,
- 0.33805833333,
- 0.27513166667,
- 0.53801166667,
- 0.77332333333,
- 0.47316,
- 0.574345,
- 0.60672666667,
- 0.62811833333,
- 0.50659,
- 0.42655083333,
- 0.2728925,
- 0.67187,
- 0.3979,
- 0.50411166667,
- 0.65740666667,
- 0.63976833333,
- 0.6468725,
- 0.47726833333,
- 0.4558775,
- 0.30631666667,
- 0.5109975,
- 0.5717275,
- 0.66228083333,
- 0.69612166667,
- 0.426675,
- 0.35191333333,
- 0.38965666667,
- 0.2744825,
- 0.5117825,
- 0.55155416667,
- 0.41036583333,
- 0.46853916667,
- 0.62363833333,
- 0.3687475,
- 0.44296916667,
- 0.24307666667,
- 0.765635,
- 0.63333083333,
- 0.4951,
- 0.3801225,
- 0.4771775,
- 0.39723416667,
- 0.4643,
- 0.4289525,
- 0.44795416667,
- 0.76632583333,
- 0.59939916667,
- 0.2934925,
- 0.19469416667,
- 0.19469333333,
- 0.492425,
- 0.63350833333,
- 0.33733833333,
- 0.52109916667,
- 0.7505775,
- 0.40881,
- 0.69642,
- 0.76366,
- 0.58523,
- 0.44103,
- 0.6813,
- 0.65428,
- 0.50898,
- 0.58906,
- 0.26844,
- 0.38626,
- 0.44927,
- 0.40626,
- 0.43084,
- 0.54353,
- 0.15838,
- 0.66925,
- 0.37817,
- 0.4707,
- 0.51832,
- 0.5091,
- 0.8043,
- 0.40112,
- 0.4939,
- 0.54619,
- 0.55022,
- 0.59386,
- 0.32591,
- 0.2247,
- 0.52951,
- 0.51087,
- 0.45835,
- 0.33692,
- 0.67881,
- 0.62172,
- 0.52216,
- 0.45299,
- 0.56436,
- 0.49893,
- 0.55314,
- 0.49332,
- 0.46613,
- 0.23186,
- 0.5636,
- 0.11787,
- 0.55091,
- 0.44308,
- 0.39479,
- 0.25959,
- 0.46345,
- 0.41195,
- 0.64631,
- 0.78474,
- 0.5461,
- 0.60538,
- 0.36694,
- 0.61858,
- 0.62356,
- 0.72798,
- 0.65403,
- 0.44993,
- 0.41512,
- 0.408,
- 0.57437,
- 0.52494,
- 0.56954,
- 0.61914,
- 0.41972,
- 0.56292,
- 0.66072,
- 0.60597,
- 0.3471,
- 0.50783,
- 0.55257,
- 0.61786,
- 0.43487,
- 0.50873,
- 0.4697,
- 0.67452,
- 0.63891,
- 0.42052,
- 0.50675,
- 0.65396,
- 0.44012,
- 0.49093,
- 0.62349,
- 0.24831,
- 0.40325,
- 0.3517,
- 0.2406375,
- 0.4074125,
- 0.57481666667,
- 0.44426666667,
- 0.57990416667,
- 0.3584625,
- 0.56930833333,
- 0.461075,
- 0.69519166667,
- 0.58419166667,
- 0.6644625,
- 0.58740833333,
- 0.502175,
- 0.54106666667,
- 0.39467916667,
- 0.54319166667,
- 0.675225,
- 0.6772375,
- 0.4582625,
- 0.4673875,
- 0.43303333333,
- 0.44830416667,
- 0.421425,
- 0.4474125,
- 0.72664583333,
- 0.55170833333,
- 0.4613375,
- 0.71693333333,
- 0.35159583333,
- 0.49416666667,
- 0.41411666667,
- 0.52532083333,
- 0.46037916667,
- 0.63142083333,
- 0.6827625,
- 0.40663333333
- ],
- "prints": [
- [
- "Last:0.41"
- ],
- [
- "Min:0.12"
- ],
- [
- "Max:0.84"
- ],
- [
- "Average:0.50"
- ]
- ],
- "last_value": 0.41,
- "minimum_value": 0.12,
- "maximum_value": 0.84,
- "average_value": 0.5
- },
- {
- "index_id": 4811,
- "metric_id": 11757,
- "metric": "querytime",
- "metric_legend": "querytime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#6666ff"
- },
- "legend": "querytime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- null,
- 0.3822375,
- 0.338175,
- 0.729925,
- 0.6532,
- 0.6622875,
- 0.45505,
- 0.60315,
- 0.401275,
- 0.54565,
- 0.4648375,
- 0.56345,
- 0.2957375,
- 0.4214125,
- 0.5022875,
- 0.52665,
- 0.3344125,
- 0.634875,
- 0.33875,
- 0.5235,
- 0.43645,
- 0.45645,
- 0.61025,
- 0.653525,
- 0.44325,
- 0.398125,
- 0.350875,
- 0.3941875,
- 0.4985875,
- 0.2608125,
- 0.269875,
- 0.4928875,
- 0.292925,
- 0.43555,
- 0.6956375,
- 0.615925,
- 0.3165375,
- 0.6310875,
- 0.5219875,
- 0.5560875,
- 0.5781875,
- 0.427875,
- 0.272275,
- 0.7289,
- 0.5525875,
- 0.626725,
- 0.6548,
- 0.56645,
- 0.3159625,
- 0.5493,
- 0.5752875,
- 0.46215,
- 0.3014875,
- 0.3867625,
- 0.539775,
- 0.6039375,
- 0.4355875,
- 0.411425,
- 0.4830375,
- 0.3762125,
- 0.71735,
- 0.269,
- 0.567975,
- 0.49262833333,
- 0.40225333333,
- 0.62421,
- 0.34907333333,
- 0.66614,
- 0.64291666667,
- 0.47280333333,
- 0.5396,
- 0.39403,
- 0.44625666667,
- 0.72860333333,
- 0.22214666667,
- 0.76609,
- 0.47886666667,
- 0.50008,
- 0.70910666667,
- 0.52188,
- 0.44055,
- 0.36468666667,
- 0.36503333333,
- 0.41122,
- 0.5653,
- 0.22648,
- 0.47388333333,
- 0.40938666667,
- 0.54979333333,
- 0.4558,
- 0.27218,
- 0.84006333333,
- 0.25509833333,
- 0.34533916667,
- 0.37986833333,
- 0.41476833333,
- 0.36977166667,
- 0.24393166667,
- 0.5005625,
- 0.374215,
- 0.85380833333,
- 0.4801225,
- 0.31904166667,
- 0.4585075,
- 0.752745,
- 0.21556833333,
- 0.4998575,
- 0.60881666667,
- 0.40523416667,
- 0.48311333333,
- 0.6045525,
- 0.20181833333,
- 0.59113666667,
- 0.61002333333,
- 0.480365,
- 0.37949833333,
- 0.24222583333,
- 0.7307925,
- 0.38327416667,
- 0.40005166667,
- 0.50885,
- 0.44563666667,
- 0.55531166667,
- 0.49530833333,
- 0.36818666667,
- 0.5764775,
- 0.64380083333,
- 0.42206,
- 0.29359166667,
- 0.49560666667,
- 0.443325,
- 0.25875833333,
- 0.30041833333,
- 0.3564575,
- 0.58502416667,
- 0.74223416667,
- 0.50057833333,
- 0.4538275,
- 0.34179333333,
- 0.29270583333,
- 0.60702083333,
- 0.4216275,
- 0.25602583333,
- 0.56200416667,
- 0.41060916667,
- 0.3873225,
- 0.7328475,
- 0.44749666667,
- 0.48708083333,
- 0.31724666667,
- 0.542455,
- 0.32911083333,
- 0.24504166667,
- 0.4943,
- 0.69643166667,
- 0.45696916667,
- 0.57769166667,
- 0.53687416667,
- 0.34264083333,
- 0.46102416667,
- 0.47288583333,
- 0.581615,
- 0.65317833333,
- 0.46009833333,
- 0.52495416667,
- 0.41317166667,
- 0.55043333333,
- 0.57696583333,
- 0.48937083333,
- 0.18298166667,
- 0.656815,
- 0.54156916667,
- 0.62982333333,
- 0.55033916667,
- 0.60631083333,
- 0.76121,
- 0.18459,
- 0.76492,
- 0.66709,
- 0.50244,
- 0.39493,
- 0.65535666667,
- 0.35731916667,
- 0.64019916667,
- 0.456475,
- 0.55792416667,
- 0.66605916667,
- 0.21065083333,
- 0.4248575,
- 0.850955,
- 0.53539416667,
- 0.40172916667,
- 0.606185,
- 0.58081666667,
- 0.54806666667,
- 0.33323333333,
- 0.51793333333,
- 0.55431666667,
- 0.59668333333,
- 0.49018333333,
- 0.59998333333,
- 0.44546666667,
- 0.33053333333,
- 0.26628333333,
- 0.28708333333,
- 0.39905,
- 0.6059,
- 0.66223333333,
- 0.61336666667,
- 0.64191666667,
- 0.64243333333,
- 0.2932,
- 0.46686666667,
- 0.6745,
- 0.43336666667,
- 0.44585,
- 0.55441666667,
- 0.39591666667,
- 0.59966666667,
- 0.53675,
- 0.15408333333,
- 0.418,
- 0.6015,
- 0.5368,
- 0.60053333333,
- 0.59256666667,
- 0.49055,
- 0.51608333333,
- 0.56116666667,
- 0.48791666667,
- 0.27166666667,
- 0.44933333333,
- 0.30175,
- 0.532,
- 0.29925,
- 0.68191666667,
- 0.69808333333,
- 0.39383333333,
- 0.64958333333,
- 0.59386666667,
- 0.60863333333,
- 0.4553,
- 0.44306666667,
- 0.35461666667,
- 0.23823333333,
- 0.39873333333,
- 0.31028333333,
- 0.28183333333,
- 0.51358333333,
- 0.53908333333,
- 0.38191666667,
- 0.6085,
- 0.557,
- 0.55133333333,
- 0.46758333333,
- 0.43775,
- 0.45041666667,
- 0.52871666667,
- 0.62766666667,
- 0.16445,
- 0.56378333333,
- 0.6319,
- 0.71301666667,
- 0.19243333333,
- 0.36086666667,
- 0.52955,
- 0.56008333333,
- 0.46958333333,
- 0.61478333333,
- 0.5179,
- 0.37285,
- 0.54513333333,
- 0.89198333333,
- 0.34831666667,
- 0.79711666667,
- 0.46571666667,
- 0.45108583333,
- 0.65635,
- 0.710995,
- 0.62707,
- 0.3558975,
- 0.49199,
- 0.3899075,
- 0.34151,
- 0.380945,
- 0.455615,
- 0.5316275,
- 0.4313475,
- 0.560775,
- 0.4743425,
- 0.5747375,
- 0.4835775,
- 0.65969916667,
- 0.42680333333,
- 0.600725,
- 0.32630666667,
- 0.64745666667,
- 0.31762833333,
- 0.42268333333,
- 0.35116833333,
- 0.47142,
- 0.26832333333,
- 0.34496666667,
- 0.688725,
- 0.49774833333,
- 0.34480666667,
- 0.54177,
- 0.55014166667,
- 0.37234166667,
- 0.60997,
- 0.59000833333,
- 0.565245,
- 0.37924666667,
- 0.389445,
- 0.35244833333,
- 0.827515,
- 0.41951166667,
- 0.65853166667,
- 0.42363333333,
- 0.68144666667,
- 0.44951,
- 0.26957,
- 0.33074833333,
- 0.72332666667,
- 0.50786833333,
- 0.42016166667,
- 0.59982,
- 0.66384833333,
- 0.3585,
- 0.622105,
- 0.5329,
- 0.44583666667,
- 0.39592083333,
- 0.675235,
- 0.71880166667,
- 0.43023166667,
- 0.35486,
- 0.53464583333,
- 0.33980833333,
- 0.5025275,
- 0.73073,
- 0.37100083333,
- 0.458425,
- 0.16272833333,
- 0.66322666667,
- 0.46470333333,
- 0.5706925,
- 0.51309583333,
- 0.4167775,
- 0.51913833333,
- 0.36356833333,
- 0.67057583333,
- 0.46865333333,
- 0.56207416667,
- 0.64422833333,
- 0.55513166667,
- 0.69586833333,
- 0.64558416667,
- 0.39396166667,
- 0.70361083333,
- 0.38941333333,
- 0.46966833333,
- 0.479135,
- 0.51729916667,
- 0.34119666667,
- 0.52859583333,
- 0.4759925,
- 0.28715,
- 0.47405416667,
- 0.27516,
- 0.23419833333,
- 0.31827916667,
- 0.46054416667,
- 0.64301333333,
- 0.52912333333,
- 0.45455166667,
- 0.73102333333,
- 0.40912583333,
- 0.3304225,
- 0.4438325,
- 0.34953,
- 0.53485,
- 0.81125,
- 0.25488,
- 0.55834,
- 0.35964,
- 0.26034,
- 0.37592,
- 0.39875,
- 0.66929,
- 0.66451,
- 0.5947,
- 0.27555,
- 0.68353,
- 0.49617,
- 0.653,
- 0.48443,
- 0.39418,
- 0.36428,
- 0.53593,
- 0.3297,
- 0.43443,
- 0.46853,
- 0.64149,
- 0.38523,
- 0.39072,
- 0.44623,
- 0.36313,
- 0.50542,
- 0.43385,
- 0.55568,
- 0.79068,
- 0.46728,
- 0.54486,
- 0.60739,
- 0.46496,
- 0.61119,
- 0.38873,
- 0.56806,
- 0.747,
- 0.53613,
- 0.53121,
- 0.46506,
- 0.59626,
- 0.69317,
- 0.68011,
- 0.51598,
- 0.50257,
- 0.54439,
- 0.40571,
- 0.2189,
- 0.64132,
- 0.29015,
- 0.43577,
- 0.37661,
- 0.46952,
- 0.45527,
- 0.66985,
- 0.40971,
- 0.63007,
- 0.63755,
- 0.65143,
- 0.57865,
- 0.65552,
- 0.36992,
- 0.23763,
- 0.48393,
- 0.36113,
- 0.39058,
- 0.40755,
- 0.56333,
- 0.48995,
- 0.55673,
- 0.37367,
- 0.48381,
- 0.40106,
- 0.48643,
- 0.51592,
- 0.29743,
- 0.5026,
- 0.42763,
- 0.46854,
- 0.41662,
- 0.50732,
- 0.385,
- 0.61506,
- 0.49011,
- 0.36046,
- 0.5442,
- 0.61745833333,
- 0.392325,
- 0.4967625,
- 0.30943333333,
- 0.58880416667,
- 0.57861666667,
- 0.72248333333,
- 0.42585,
- 0.6050125,
- 0.64172083333,
- 0.4269375,
- 0.20662083333,
- 0.43435833333,
- 0.71460833333,
- 0.42285833333,
- 0.48760416667,
- 0.5523,
- 0.55450833333,
- 0.5237,
- 0.77244166667,
- 0.69525,
- 0.58763333333,
- 0.44484166667,
- 0.61220833333,
- 0.50095416667,
- 0.54782916667,
- 0.5573,
- 0.7095625,
- 0.41794583333,
- 0.49679166667,
- 0.4172,
- 0.53237916667,
- 0.48497083333,
- 0.608475,
- 0.55396666667,
- 0.62546666667
- ],
- "prints": [
- [
- "Last:0.63"
- ],
- [
- "Min:0.15"
- ],
- [
- "Max:0.89"
- ],
- [
- "Average:0.49"
- ]
- ],
- "last_value": 0.63,
- "minimum_value": 0.15,
- "maximum_value": 0.89,
- "average_value": 0.49
- },
- {
- "index_id": 4811,
- "metric_id": 11756,
- "metric": "used",
- "metric_legend": "used",
- "unit": "%",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 8,
- "host_id": null,
- "service_id": null,
- "name": "Used",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": "used",
- "ds_color_line": "#2B28D7",
- "ds_color_line_mode": "0",
- "ds_color_area": "#050AF9",
- "ds_color_area_warn": null,
- "ds_color_area_crit": null,
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "used",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 1,
- "data": [
- null,
- 75.3011875,
- 72.701875,
- 76.0167625,
- 77.1073125,
- 77.69285,
- 80.2417,
- 78.7382375,
- 79.45205,
- 81.0908625,
- 80.5548625,
- 80.668475,
- 78.979675,
- 79.0966875,
- 82.8746,
- 83.72185,
- 84.4060125,
- 88.59015,
- 90.0966875,
- 89.238625,
- 87.6741375,
- 86.301075,
- 85.9866375,
- 84.2715875,
- 80.7764375,
- 81.1740625,
- 80.62725,
- 82.847125,
- 84.5257125,
- 79.901275,
- 79.2864875,
- 80.3480625,
- 80.181925,
- 80.396225,
- 82.583625,
- 84.016875,
- 84.045875,
- 86.91195,
- 87.9055,
- 86.8288875,
- 81.1321375,
- 77.683675,
- 80.9037,
- 81.4005125,
- 80.3968625,
- 80.5861125,
- 80.9034875,
- 80.96685,
- 77.6486125,
- 78.8831625,
- 80.6013125,
- 82.2192125,
- 83.39895,
- 84.18365,
- 86.6931625,
- 87.6480875,
- 88.556875,
- 86.548725,
- 85.8728875,
- 87.7177,
- 87.7906,
- 88.5137875,
- 86.34185,
- 84.619306667,
- 86.954396667,
- 87.26102,
- 85.965446667,
- 81.80268,
- 78.111126667,
- 74.197206667,
- 77.399083333,
- 78.85909,
- 79.281386667,
- 82.736843333,
- 85.45574,
- 85.426433333,
- 89.254713333,
- 91.27352,
- 92.164943333,
- 90.351,
- 90.002126667,
- 91.9092,
- 95.647476667,
- 97.08391,
- 98.31337,
- 95.339653333,
- 95.52575,
- 93.628453333,
- 93.64629,
- 94.364876667,
- 91.26281,
- 94.746766667,
- 91.7748525,
- 88.535216667,
- 90.4502975,
- 91.635938333,
- 94.736506667,
- 95.6047775,
- 97.476596667,
- 94.989260833,
- 95.033961667,
- 96.242233333,
- 93.5059225,
- 94.352619167,
- 92.387683333,
- 94.498268333,
- 94.36248,
- 94.02465,
- 92.065673333,
- 90.508024167,
- 89.030559167,
- 87.58097,
- 89.509935,
- 92.812699167,
- 91.202060833,
- 91.9585075,
- 94.023786667,
- 92.90212,
- 90.4467425,
- 89.739971667,
- 92.775635,
- 93.825290833,
- 90.636063333,
- 89.875763333,
- 86.827475,
- 88.0182975,
- 91.871829167,
- 91.756616667,
- 91.505121667,
- 89.615869167,
- 91.229351667,
- 94.891750833,
- 94.960114167,
- 95.58294,
- 95.994029167,
- 95.9366675,
- 96.498086667,
- 97.487198333,
- 93.075826667,
- 94.302755833,
- 93.073150833,
- 90.271178333,
- 89.814095,
- 87.417926667,
- 86.022469167,
- 85.3772725,
- 85.730900833,
- 87.691193333,
- 88.513690833,
- 89.176271667,
- 89.875075,
- 92.313001667,
- 94.845433333,
- 96.612829167,
- 94.3659575,
- 94.697136667,
- 96.204745833,
- 97.567138333,
- 97.420164167,
- 98.677866667,
- 98.801283333,
- 98.172911667,
- 97.751070833,
- 96.347039167,
- 94.636588333,
- 92.814395,
- 92.377689167,
- 92.916798333,
- 93.032718333,
- 94.1146975,
- 93.295709167,
- 90.99396,
- 92.248504167,
- 93.131444167,
- 91.676540833,
- 93.38632,
- 95.87702,
- 95.42711,
- 96.049845,
- 98.458085833,
- 98.224996667,
- 95.8955225,
- 93.5389625,
- 90.5482675,
- 88.2340275,
- 87.588475,
- 85.262625833,
- 86.147955,
- 85.77075,
- 86.131816667,
- 86.20979,
- 84.288503333,
- 86.749560833,
- 82.449683333,
- 79.403566667,
- 80.40625,
- 77.62185,
- 77.505733333,
- 75.580283333,
- 75.1924,
- 74.935433333,
- 75.530216667,
- 76.428483333,
- 75.221,
- 75.210733333,
- 75.364483333,
- 74.642916667,
- 72.729216667,
- 72.219733333,
- 72.1265,
- 76.7763,
- 80.489316667,
- 81.445283333,
- 79.979783333,
- 81.412816667,
- 84.612216667,
- 87.098833333,
- 89.32225,
- 91.17525,
- 91.2465,
- 88.707333333,
- 88.058916667,
- 87.372083333,
- 84.8882,
- 84.867116667,
- 85.636633333,
- 83.310733333,
- 82.562333333,
- 81.755333333,
- 79.718333333,
- 77.312666667,
- 77.36875,
- 79.187666667,
- 80.764166667,
- 82.968083333,
- 81.657916667,
- 80.852166667,
- 82.371916667,
- 85.612,
- 84.52515,
- 81.67235,
- 83.9048,
- 85.694816667,
- 88.53345,
- 88.750566667,
- 87.80635,
- 87.07455,
- 87.095933333,
- 84.714483333,
- 84.81275,
- 88.785,
- 90.634,
- 91.73825,
- 93.27175,
- 91.766333333,
- 90.315,
- 86.82625,
- 86.059816667,
- 90.49965,
- 90.212416667,
- 91.374283333,
- 92.0294,
- 91.482916667,
- 94.464233333,
- 95.869833333,
- 97.885783333,
- 98.732733333,
- 97.9996,
- 97.174766667,
- 96.148283333,
- 97.29175,
- 96.05795,
- 96.3868,
- 97.399783333,
- 95.241033333,
- 96.880383333,
- 97.934975833,
- 95.40756,
- 93.9280425,
- 92.8780525,
- 90.131495,
- 89.3369225,
- 88.7673325,
- 87.5925,
- 88.31823,
- 92.36844,
- 90.9536425,
- 91.4629525,
- 88.317385,
- 86.5111225,
- 85.572935,
- 84.9701425,
- 86.193996667,
- 87.876206667,
- 91.04955,
- 92.813215,
- 92.907306667,
- 92.374458333,
- 93.688358333,
- 93.683388333,
- 93.016803333,
- 92.019563333,
- 93.503391667,
- 90.542578333,
- 92.529488333,
- 92.534118333,
- 93.654428333,
- 92.217821667,
- 93.979301667,
- 93.334701667,
- 90.995645,
- 89.265961667,
- 90.142598333,
- 92.359028333,
- 92.355875,
- 90.124831667,
- 90.137076667,
- 91.351265,
- 92.609895,
- 94.423845,
- 95.92939,
- 96.94342,
- 97.658953333,
- 98.350373333,
- 98.860638333,
- 97.971453333,
- 95.972083333,
- 92.49751,
- 90.06317,
- 90.96775,
- 92.706511667,
- 91.154745833,
- 93.041470833,
- 95.212069167,
- 95.547953333,
- 93.797341667,
- 94.932218333,
- 94.738048333,
- 92.303049167,
- 93.12273,
- 95.324159167,
- 97.788798333,
- 96.461085,
- 97.918005,
- 97.656589167,
- 95.453511667,
- 93.404599167,
- 96.0549925,
- 96.180735,
- 92.732435833,
- 90.8238375,
- 91.933284167,
- 91.178560833,
- 92.574173333,
- 91.4252825,
- 87.24002,
- 86.583490833,
- 86.893840833,
- 87.912079167,
- 85.586765,
- 78.548946667,
- 77.958821667,
- 79.511501667,
- 82.340836667,
- 81.43414,
- 82.6612425,
- 85.1368525,
- 84.618974167,
- 83.406545833,
- 83.217361667,
- 84.796903333,
- 88.710369167,
- 89.576425,
- 87.697465,
- 85.419298333,
- 89.328040833,
- 89.288233333,
- 89.594449167,
- 89.396855833,
- 89.352433333,
- 87.07019,
- 84.88146,
- 84.18839,
- 83.16835,
- 79.62206,
- 79.43043,
- 79.3563,
- 79.27835,
- 79.17697,
- 76.76732,
- 75.29581,
- 75.70572,
- 77.68538,
- 76.74653,
- 77.60974,
- 79.9725,
- 83.84825,
- 85.77623,
- 88.76174,
- 86.57208,
- 88.47665,
- 90.85134,
- 90.79955,
- 87.98236,
- 89.54416,
- 86.85839,
- 84.23926,
- 84.02244,
- 79.67462,
- 79.58342,
- 82.33326,
- 82.35789,
- 81.01324,
- 81.55955,
- 81.87204,
- 83.22185,
- 81.36665,
- 81.08699,
- 84.38985,
- 86.73615,
- 85.82253,
- 86.40703,
- 89.32901,
- 88.43318,
- 91.59042,
- 91.78025,
- 93.31614,
- 96.78994,
- 98.67566,
- 98.30026,
- 96.97067,
- 96.7663,
- 94.81573,
- 95.48175,
- 98.94147,
- 97.88792,
- 96.25044,
- 95.91016,
- 95.94154,
- 98.28326,
- 97.84947,
- 96.28364,
- 97.1102,
- 95.14073,
- 93.46838,
- 96.50306,
- 98.20423,
- 98.88803,
- 98.65825,
- 98.88318,
- 98.68902,
- 97.16819,
- 95.18848,
- 94.46906,
- 95.27017,
- 93.6273,
- 90.02585,
- 88.44419,
- 86.68886,
- 87.13106,
- 88.26944,
- 86.24131,
- 85.55237,
- 82.99216,
- 82.86858,
- 84.60967,
- 83.1773,
- 83.97271,
- 82.51906,
- 84.892720833,
- 86.416304167,
- 84.4,
- 86.107516667,
- 82.4546875,
- 79.498166667,
- 78.921458333,
- 76.025141667,
- 72.7244875,
- 72.484195833,
- 74.67945,
- 76.033079167,
- 74.760233333,
- 72.661283333,
- 74.655441667,
- 78.608441667,
- 78.245175,
- 77.557866667,
- 78.07075,
- 79.527925,
- 81.827258333,
- 84.270954167,
- 84.8338625,
- 87.5681375,
- 87.761895833,
- 88.1756375,
- 86.58295,
- 86.034920833,
- 82.764025,
- 83.575166667,
- 84.764741667,
- 86.313608333,
- 91.112654167,
- 90.49295,
- 92.0893625,
- 92.936327778
- ],
- "prints": [
- [
- "Last:92.94"
- ],
- [
- "Average:88.05"
- ]
- ],
- "last_value": 92.94,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 88.05
- }
- ],
- "times": [
- "2023-05-31T21:40:00+02:00",
- "2023-05-31T22:00:00+02:00",
- "2023-05-31T22:20:00+02:00",
- "2023-05-31T22:40:00+02:00",
- "2023-05-31T23:00:00+02:00",
- "2023-05-31T23:20:00+02:00",
- "2023-05-31T23:40:00+02:00",
- "2023-06-01T00:00:00+02:00",
- "2023-06-01T00:20:00+02:00",
- "2023-06-01T00:40:00+02:00",
- "2023-06-01T01:00:00+02:00",
- "2023-06-01T01:20:00+02:00",
- "2023-06-01T01:40:00+02:00",
- "2023-06-01T02:00:00+02:00",
- "2023-06-01T02:20:00+02:00",
- "2023-06-01T02:40:00+02:00",
- "2023-06-01T03:00:00+02:00",
- "2023-06-01T03:20:00+02:00",
- "2023-06-01T03:40:00+02:00",
- "2023-06-01T04:00:00+02:00",
- "2023-06-01T04:20:00+02:00",
- "2023-06-01T04:40:00+02:00",
- "2023-06-01T05:00:00+02:00",
- "2023-06-01T05:20:00+02:00",
- "2023-06-01T05:40:00+02:00",
- "2023-06-01T06:00:00+02:00",
- "2023-06-01T06:20:00+02:00",
- "2023-06-01T06:40:00+02:00",
- "2023-06-01T07:00:00+02:00",
- "2023-06-01T07:20:00+02:00",
- "2023-06-01T07:40:00+02:00",
- "2023-06-01T08:00:00+02:00",
- "2023-06-01T08:20:00+02:00",
- "2023-06-01T08:40:00+02:00",
- "2023-06-01T09:00:00+02:00",
- "2023-06-01T09:20:00+02:00",
- "2023-06-01T09:40:00+02:00",
- "2023-06-01T10:00:00+02:00",
- "2023-06-01T10:20:00+02:00",
- "2023-06-01T10:40:00+02:00",
- "2023-06-01T11:00:00+02:00",
- "2023-06-01T11:20:00+02:00",
- "2023-06-01T11:40:00+02:00",
- "2023-06-01T12:00:00+02:00",
- "2023-06-01T12:20:00+02:00",
- "2023-06-01T12:40:00+02:00",
- "2023-06-01T13:00:00+02:00",
- "2023-06-01T13:20:00+02:00",
- "2023-06-01T13:40:00+02:00",
- "2023-06-01T14:00:00+02:00",
- "2023-06-01T14:20:00+02:00",
- "2023-06-01T14:40:00+02:00",
- "2023-06-01T15:00:00+02:00",
- "2023-06-01T15:20:00+02:00",
- "2023-06-01T15:40:00+02:00",
- "2023-06-01T16:00:00+02:00",
- "2023-06-01T16:20:00+02:00",
- "2023-06-01T16:40:00+02:00",
- "2023-06-01T17:00:00+02:00",
- "2023-06-01T17:20:00+02:00",
- "2023-06-01T17:40:00+02:00",
- "2023-06-01T18:00:00+02:00",
- "2023-06-01T18:20:00+02:00",
- "2023-06-01T18:40:00+02:00",
- "2023-06-01T19:00:00+02:00",
- "2023-06-01T19:20:00+02:00",
- "2023-06-01T19:40:00+02:00",
- "2023-06-01T20:00:00+02:00",
- "2023-06-01T20:20:00+02:00",
- "2023-06-01T20:40:00+02:00",
- "2023-06-01T21:00:00+02:00",
- "2023-06-01T21:20:00+02:00",
- "2023-06-01T21:40:00+02:00",
- "2023-06-01T22:00:00+02:00",
- "2023-06-01T22:20:00+02:00",
- "2023-06-01T22:40:00+02:00",
- "2023-06-01T23:00:00+02:00",
- "2023-06-01T23:20:00+02:00",
- "2023-06-01T23:40:00+02:00",
- "2023-06-02T00:00:00+02:00",
- "2023-06-02T00:20:00+02:00",
- "2023-06-02T00:40:00+02:00",
- "2023-06-02T01:00:00+02:00",
- "2023-06-02T01:20:00+02:00",
- "2023-06-02T01:40:00+02:00",
- "2023-06-02T02:00:00+02:00",
- "2023-06-02T02:20:00+02:00",
- "2023-06-02T02:40:00+02:00",
- "2023-06-02T03:00:00+02:00",
- "2023-06-02T03:20:00+02:00",
- "2023-06-02T03:40:00+02:00",
- "2023-06-02T04:00:00+02:00",
- "2023-06-02T04:20:00+02:00",
- "2023-06-02T04:40:00+02:00",
- "2023-06-02T05:00:00+02:00",
- "2023-06-02T05:20:00+02:00",
- "2023-06-02T05:40:00+02:00",
- "2023-06-02T06:00:00+02:00",
- "2023-06-02T06:20:00+02:00",
- "2023-06-02T06:40:00+02:00",
- "2023-06-02T07:00:00+02:00",
- "2023-06-02T07:20:00+02:00",
- "2023-06-02T07:40:00+02:00",
- "2023-06-02T08:00:00+02:00",
- "2023-06-02T08:20:00+02:00",
- "2023-06-02T08:40:00+02:00",
- "2023-06-02T09:00:00+02:00",
- "2023-06-02T09:20:00+02:00",
- "2023-06-02T09:40:00+02:00",
- "2023-06-02T10:00:00+02:00",
- "2023-06-02T10:20:00+02:00",
- "2023-06-02T10:40:00+02:00",
- "2023-06-02T11:00:00+02:00",
- "2023-06-02T11:20:00+02:00",
- "2023-06-02T11:40:00+02:00",
- "2023-06-02T12:00:00+02:00",
- "2023-06-02T12:20:00+02:00",
- "2023-06-02T12:40:00+02:00",
- "2023-06-02T13:00:00+02:00",
- "2023-06-02T13:20:00+02:00",
- "2023-06-02T13:40:00+02:00",
- "2023-06-02T14:00:00+02:00",
- "2023-06-02T14:20:00+02:00",
- "2023-06-02T14:40:00+02:00",
- "2023-06-02T15:00:00+02:00",
- "2023-06-02T15:20:00+02:00",
- "2023-06-02T15:40:00+02:00",
- "2023-06-02T16:00:00+02:00",
- "2023-06-02T16:20:00+02:00",
- "2023-06-02T16:40:00+02:00",
- "2023-06-02T17:00:00+02:00",
- "2023-06-02T17:20:00+02:00",
- "2023-06-02T17:40:00+02:00",
- "2023-06-02T18:00:00+02:00",
- "2023-06-02T18:20:00+02:00",
- "2023-06-02T18:40:00+02:00",
- "2023-06-02T19:00:00+02:00",
- "2023-06-02T19:20:00+02:00",
- "2023-06-02T19:40:00+02:00",
- "2023-06-02T20:00:00+02:00",
- "2023-06-02T20:20:00+02:00",
- "2023-06-02T20:40:00+02:00",
- "2023-06-02T21:00:00+02:00",
- "2023-06-02T21:20:00+02:00",
- "2023-06-02T21:40:00+02:00",
- "2023-06-02T22:00:00+02:00",
- "2023-06-02T22:20:00+02:00",
- "2023-06-02T22:40:00+02:00",
- "2023-06-02T23:00:00+02:00",
- "2023-06-02T23:20:00+02:00",
- "2023-06-02T23:40:00+02:00",
- "2023-06-03T00:00:00+02:00",
- "2023-06-03T00:20:00+02:00",
- "2023-06-03T00:40:00+02:00",
- "2023-06-03T01:00:00+02:00",
- "2023-06-03T01:20:00+02:00",
- "2023-06-03T01:40:00+02:00",
- "2023-06-03T02:00:00+02:00",
- "2023-06-03T02:20:00+02:00",
- "2023-06-03T02:40:00+02:00",
- "2023-06-03T03:00:00+02:00",
- "2023-06-03T03:20:00+02:00",
- "2023-06-03T03:40:00+02:00",
- "2023-06-03T04:00:00+02:00",
- "2023-06-03T04:20:00+02:00",
- "2023-06-03T04:40:00+02:00",
- "2023-06-03T05:00:00+02:00",
- "2023-06-03T05:20:00+02:00",
- "2023-06-03T05:40:00+02:00",
- "2023-06-03T06:00:00+02:00",
- "2023-06-03T06:20:00+02:00",
- "2023-06-03T06:40:00+02:00",
- "2023-06-03T07:00:00+02:00",
- "2023-06-03T07:20:00+02:00",
- "2023-06-03T07:40:00+02:00",
- "2023-06-03T08:00:00+02:00",
- "2023-06-03T08:20:00+02:00",
- "2023-06-03T08:40:00+02:00",
- "2023-06-03T09:00:00+02:00",
- "2023-06-03T09:20:00+02:00",
- "2023-06-03T09:40:00+02:00",
- "2023-06-03T10:00:00+02:00",
- "2023-06-03T10:20:00+02:00",
- "2023-06-03T10:40:00+02:00",
- "2023-06-03T11:00:00+02:00",
- "2023-06-03T11:20:00+02:00",
- "2023-06-03T11:40:00+02:00",
- "2023-06-03T12:00:00+02:00",
- "2023-06-03T12:20:00+02:00",
- "2023-06-03T12:40:00+02:00",
- "2023-06-03T13:00:00+02:00",
- "2023-06-03T13:20:00+02:00",
- "2023-06-03T13:40:00+02:00",
- "2023-06-03T14:00:00+02:00",
- "2023-06-03T14:20:00+02:00",
- "2023-06-03T14:40:00+02:00",
- "2023-06-03T15:00:00+02:00",
- "2023-06-03T15:20:00+02:00",
- "2023-06-03T15:40:00+02:00",
- "2023-06-03T16:00:00+02:00",
- "2023-06-03T16:20:00+02:00",
- "2023-06-03T16:40:00+02:00",
- "2023-06-03T17:00:00+02:00",
- "2023-06-03T17:20:00+02:00",
- "2023-06-03T17:40:00+02:00",
- "2023-06-03T18:00:00+02:00",
- "2023-06-03T18:20:00+02:00",
- "2023-06-03T18:40:00+02:00",
- "2023-06-03T19:00:00+02:00",
- "2023-06-03T19:20:00+02:00",
- "2023-06-03T19:40:00+02:00",
- "2023-06-03T20:00:00+02:00",
- "2023-06-03T20:20:00+02:00",
- "2023-06-03T20:40:00+02:00",
- "2023-06-03T21:00:00+02:00",
- "2023-06-03T21:20:00+02:00",
- "2023-06-03T21:40:00+02:00",
- "2023-06-03T22:00:00+02:00",
- "2023-06-03T22:20:00+02:00",
- "2023-06-03T22:40:00+02:00",
- "2023-06-03T23:00:00+02:00",
- "2023-06-03T23:20:00+02:00",
- "2023-06-03T23:40:00+02:00",
- "2023-06-04T00:00:00+02:00",
- "2023-06-04T00:20:00+02:00",
- "2023-06-04T00:40:00+02:00",
- "2023-06-04T01:00:00+02:00",
- "2023-06-04T01:20:00+02:00",
- "2023-06-04T01:40:00+02:00",
- "2023-06-04T02:00:00+02:00",
- "2023-06-04T02:20:00+02:00",
- "2023-06-04T02:40:00+02:00",
- "2023-06-04T03:00:00+02:00",
- "2023-06-04T03:20:00+02:00",
- "2023-06-04T03:40:00+02:00",
- "2023-06-04T04:00:00+02:00",
- "2023-06-04T04:20:00+02:00",
- "2023-06-04T04:40:00+02:00",
- "2023-06-04T05:00:00+02:00",
- "2023-06-04T05:20:00+02:00",
- "2023-06-04T05:40:00+02:00",
- "2023-06-04T06:00:00+02:00",
- "2023-06-04T06:20:00+02:00",
- "2023-06-04T06:40:00+02:00",
- "2023-06-04T07:00:00+02:00",
- "2023-06-04T07:20:00+02:00",
- "2023-06-04T07:40:00+02:00",
- "2023-06-04T08:00:00+02:00",
- "2023-06-04T08:20:00+02:00",
- "2023-06-04T08:40:00+02:00",
- "2023-06-04T09:00:00+02:00",
- "2023-06-04T09:20:00+02:00",
- "2023-06-04T09:40:00+02:00",
- "2023-06-04T10:00:00+02:00",
- "2023-06-04T10:20:00+02:00",
- "2023-06-04T10:40:00+02:00",
- "2023-06-04T11:00:00+02:00",
- "2023-06-04T11:20:00+02:00",
- "2023-06-04T11:40:00+02:00",
- "2023-06-04T12:00:00+02:00",
- "2023-06-04T12:20:00+02:00",
- "2023-06-04T12:40:00+02:00",
- "2023-06-04T13:00:00+02:00",
- "2023-06-04T13:20:00+02:00",
- "2023-06-04T13:40:00+02:00",
- "2023-06-04T14:00:00+02:00",
- "2023-06-04T14:20:00+02:00",
- "2023-06-04T14:40:00+02:00",
- "2023-06-04T15:00:00+02:00",
- "2023-06-04T15:20:00+02:00",
- "2023-06-04T15:40:00+02:00",
- "2023-06-04T16:00:00+02:00",
- "2023-06-04T16:20:00+02:00",
- "2023-06-04T16:40:00+02:00",
- "2023-06-04T17:00:00+02:00",
- "2023-06-04T17:20:00+02:00",
- "2023-06-04T17:40:00+02:00",
- "2023-06-04T18:00:00+02:00",
- "2023-06-04T18:20:00+02:00",
- "2023-06-04T18:40:00+02:00",
- "2023-06-04T19:00:00+02:00",
- "2023-06-04T19:20:00+02:00",
- "2023-06-04T19:40:00+02:00",
- "2023-06-04T20:00:00+02:00",
- "2023-06-04T20:20:00+02:00",
- "2023-06-04T20:40:00+02:00",
- "2023-06-04T21:00:00+02:00",
- "2023-06-04T21:20:00+02:00",
- "2023-06-04T21:40:00+02:00",
- "2023-06-04T22:00:00+02:00",
- "2023-06-04T22:20:00+02:00",
- "2023-06-04T22:40:00+02:00",
- "2023-06-04T23:00:00+02:00",
- "2023-06-04T23:20:00+02:00",
- "2023-06-04T23:40:00+02:00",
- "2023-06-05T00:00:00+02:00",
- "2023-06-05T00:20:00+02:00",
- "2023-06-05T00:40:00+02:00",
- "2023-06-05T01:00:00+02:00",
- "2023-06-05T01:20:00+02:00",
- "2023-06-05T01:40:00+02:00",
- "2023-06-05T02:00:00+02:00",
- "2023-06-05T02:20:00+02:00",
- "2023-06-05T02:40:00+02:00",
- "2023-06-05T03:00:00+02:00",
- "2023-06-05T03:20:00+02:00",
- "2023-06-05T03:40:00+02:00",
- "2023-06-05T04:00:00+02:00",
- "2023-06-05T04:20:00+02:00",
- "2023-06-05T04:40:00+02:00",
- "2023-06-05T05:00:00+02:00",
- "2023-06-05T05:20:00+02:00",
- "2023-06-05T05:40:00+02:00",
- "2023-06-05T06:00:00+02:00",
- "2023-06-05T06:20:00+02:00",
- "2023-06-05T06:40:00+02:00",
- "2023-06-05T07:00:00+02:00",
- "2023-06-05T07:20:00+02:00",
- "2023-06-05T07:40:00+02:00",
- "2023-06-05T08:00:00+02:00",
- "2023-06-05T08:20:00+02:00",
- "2023-06-05T08:40:00+02:00",
- "2023-06-05T09:00:00+02:00",
- "2023-06-05T09:20:00+02:00",
- "2023-06-05T09:40:00+02:00",
- "2023-06-05T10:00:00+02:00",
- "2023-06-05T10:20:00+02:00",
- "2023-06-05T10:40:00+02:00",
- "2023-06-05T11:00:00+02:00",
- "2023-06-05T11:20:00+02:00",
- "2023-06-05T11:40:00+02:00",
- "2023-06-05T12:00:00+02:00",
- "2023-06-05T12:20:00+02:00",
- "2023-06-05T12:40:00+02:00",
- "2023-06-05T13:00:00+02:00",
- "2023-06-05T13:20:00+02:00",
- "2023-06-05T13:40:00+02:00",
- "2023-06-05T14:00:00+02:00",
- "2023-06-05T14:20:00+02:00",
- "2023-06-05T14:40:00+02:00",
- "2023-06-05T15:00:00+02:00",
- "2023-06-05T15:20:00+02:00",
- "2023-06-05T15:40:00+02:00",
- "2023-06-05T16:00:00+02:00",
- "2023-06-05T16:20:00+02:00",
- "2023-06-05T16:40:00+02:00",
- "2023-06-05T17:00:00+02:00",
- "2023-06-05T17:20:00+02:00",
- "2023-06-05T17:40:00+02:00",
- "2023-06-05T18:00:00+02:00",
- "2023-06-05T18:20:00+02:00",
- "2023-06-05T18:40:00+02:00",
- "2023-06-05T19:00:00+02:00",
- "2023-06-05T19:20:00+02:00",
- "2023-06-05T19:40:00+02:00",
- "2023-06-05T20:00:00+02:00",
- "2023-06-05T20:20:00+02:00",
- "2023-06-05T20:40:00+02:00",
- "2023-06-05T21:00:00+02:00",
- "2023-06-05T21:20:00+02:00",
- "2023-06-05T21:40:00+02:00",
- "2023-06-05T22:00:00+02:00",
- "2023-06-05T22:20:00+02:00",
- "2023-06-05T22:40:00+02:00",
- "2023-06-05T23:00:00+02:00",
- "2023-06-05T23:20:00+02:00",
- "2023-06-05T23:40:00+02:00",
- "2023-06-06T00:00:00+02:00",
- "2023-06-06T00:20:00+02:00",
- "2023-06-06T00:40:00+02:00",
- "2023-06-06T01:00:00+02:00",
- "2023-06-06T01:20:00+02:00",
- "2023-06-06T01:40:00+02:00",
- "2023-06-06T02:00:00+02:00",
- "2023-06-06T02:20:00+02:00",
- "2023-06-06T02:40:00+02:00",
- "2023-06-06T03:00:00+02:00",
- "2023-06-06T03:20:00+02:00",
- "2023-06-06T03:40:00+02:00",
- "2023-06-06T04:00:00+02:00",
- "2023-06-06T04:20:00+02:00",
- "2023-06-06T04:40:00+02:00",
- "2023-06-06T05:00:00+02:00",
- "2023-06-06T05:20:00+02:00",
- "2023-06-06T05:40:00+02:00",
- "2023-06-06T06:00:00+02:00",
- "2023-06-06T06:20:00+02:00",
- "2023-06-06T06:40:00+02:00",
- "2023-06-06T07:00:00+02:00",
- "2023-06-06T07:20:00+02:00",
- "2023-06-06T07:40:00+02:00",
- "2023-06-06T08:00:00+02:00",
- "2023-06-06T08:20:00+02:00",
- "2023-06-06T08:40:00+02:00",
- "2023-06-06T09:00:00+02:00",
- "2023-06-06T09:20:00+02:00",
- "2023-06-06T09:40:00+02:00",
- "2023-06-06T10:00:00+02:00",
- "2023-06-06T10:20:00+02:00",
- "2023-06-06T10:40:00+02:00",
- "2023-06-06T11:00:00+02:00",
- "2023-06-06T11:20:00+02:00",
- "2023-06-06T11:40:00+02:00",
- "2023-06-06T12:00:00+02:00",
- "2023-06-06T12:20:00+02:00",
- "2023-06-06T12:40:00+02:00",
- "2023-06-06T13:00:00+02:00",
- "2023-06-06T13:20:00+02:00",
- "2023-06-06T13:40:00+02:00",
- "2023-06-06T14:00:00+02:00",
- "2023-06-06T14:20:00+02:00",
- "2023-06-06T14:40:00+02:00",
- "2023-06-06T15:00:00+02:00",
- "2023-06-06T15:20:00+02:00",
- "2023-06-06T15:40:00+02:00",
- "2023-06-06T16:00:00+02:00",
- "2023-06-06T16:20:00+02:00",
- "2023-06-06T16:40:00+02:00",
- "2023-06-06T17:00:00+02:00",
- "2023-06-06T17:20:00+02:00",
- "2023-06-06T17:40:00+02:00",
- "2023-06-06T18:00:00+02:00",
- "2023-06-06T18:20:00+02:00",
- "2023-06-06T18:40:00+02:00",
- "2023-06-06T19:00:00+02:00",
- "2023-06-06T19:20:00+02:00",
- "2023-06-06T19:40:00+02:00",
- "2023-06-06T20:00:00+02:00",
- "2023-06-06T20:20:00+02:00",
- "2023-06-06T20:40:00+02:00",
- "2023-06-06T21:00:00+02:00",
- "2023-06-06T21:20:00+02:00",
- "2023-06-06T21:40:00+02:00",
- "2023-06-06T22:00:00+02:00",
- "2023-06-06T22:20:00+02:00",
- "2023-06-06T22:40:00+02:00",
- "2023-06-06T23:00:00+02:00",
- "2023-06-06T23:20:00+02:00",
- "2023-06-06T23:40:00+02:00",
- "2023-06-07T00:00:00+02:00",
- "2023-06-07T00:20:00+02:00",
- "2023-06-07T00:40:00+02:00",
- "2023-06-07T01:00:00+02:00",
- "2023-06-07T01:20:00+02:00",
- "2023-06-07T01:40:00+02:00",
- "2023-06-07T02:00:00+02:00",
- "2023-06-07T02:20:00+02:00",
- "2023-06-07T02:40:00+02:00",
- "2023-06-07T03:00:00+02:00",
- "2023-06-07T03:20:00+02:00",
- "2023-06-07T03:40:00+02:00",
- "2023-06-07T04:00:00+02:00",
- "2023-06-07T04:20:00+02:00",
- "2023-06-07T04:40:00+02:00",
- "2023-06-07T05:00:00+02:00",
- "2023-06-07T05:20:00+02:00",
- "2023-06-07T05:40:00+02:00",
- "2023-06-07T06:00:00+02:00",
- "2023-06-07T06:20:00+02:00",
- "2023-06-07T06:40:00+02:00",
- "2023-06-07T07:00:00+02:00",
- "2023-06-07T07:20:00+02:00",
- "2023-06-07T07:40:00+02:00",
- "2023-06-07T08:00:00+02:00",
- "2023-06-07T08:20:00+02:00",
- "2023-06-07T08:40:00+02:00",
- "2023-06-07T09:00:00+02:00",
- "2023-06-07T09:20:00+02:00",
- "2023-06-07T09:40:00+02:00",
- "2023-06-07T10:00:00+02:00",
- "2023-06-07T10:20:00+02:00",
- "2023-06-07T10:40:00+02:00",
- "2023-06-07T11:00:00+02:00",
- "2023-06-07T11:20:00+02:00",
- "2023-06-07T11:40:00+02:00",
- "2023-06-07T12:00:00+02:00",
- "2023-06-07T12:20:00+02:00",
- "2023-06-07T12:40:00+02:00",
- "2023-06-07T13:00:00+02:00",
- "2023-06-07T13:20:00+02:00",
- "2023-06-07T13:40:00+02:00",
- "2023-06-07T14:00:00+02:00",
- "2023-06-07T14:20:00+02:00",
- "2023-06-07T14:40:00+02:00",
- "2023-06-07T15:00:00+02:00",
- "2023-06-07T15:20:00+02:00",
- "2023-06-07T15:40:00+02:00",
- "2023-06-07T16:00:00+02:00",
- "2023-06-07T16:20:00+02:00",
- "2023-06-07T16:40:00+02:00",
- "2023-06-07T17:00:00+02:00",
- "2023-06-07T17:20:00+02:00",
- "2023-06-07T17:40:00+02:00",
- "2023-06-07T18:00:00+02:00",
- "2023-06-07T18:20:00+02:00",
- "2023-06-07T18:40:00+02:00",
- "2023-06-07T19:00:00+02:00",
- "2023-06-07T19:20:00+02:00",
- "2023-06-07T19:40:00+02:00",
- "2023-06-07T20:00:00+02:00",
- "2023-06-07T20:20:00+02:00",
- "2023-06-07T20:40:00+02:00",
- "2023-06-07T21:00:00+02:00",
- "2023-06-07T21:20:00+02:00",
- "2023-06-07T21:40:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/mockedData/zoomPreview.json b/centreon/packages/ui/src/Graph/LineChart/mockedData/zoomPreview.json
deleted file mode 100644
index f18cc61891..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/mockedData/zoomPreview.json
+++ /dev/null
@@ -1,742 +0,0 @@
-{
- "global": {
- "title": "oracle-shared-spool-ratio graph on srv-oracle-users",
- "start": "2023-06-01T23:54:23+02:00",
- "end": "2023-06-02T11:29:24+02:00",
- "vertical-label": "Value",
- "base": 1000,
- "width": 550,
- "height": 140,
- "scaled": 0,
- "multiple_services": false
- },
- "metrics": [
- {
- "index_id": 4811,
- "metric_id": 11758,
- "metric": "connTime",
- "metric_legend": "connTime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#ff99cc"
- },
- "legend": "connTime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.56718666667,
- 0.30173333333,
- 0.25002666667,
- 0.49318666667,
- 0.38298666667,
- 0.73857333333,
- 0.12757333333,
- 0.87394666667,
- 0.25628,
- 0.38088,
- 0.70997333333,
- 0.38341333333,
- 0.22105333333,
- 0.39570666667,
- 0.26684,
- 0.81090666667,
- 0.56462666667,
- 0.61432,
- 0.037693333333,
- 0.73582666667,
- 0.76090666667,
- 0.24122666667,
- 0.24229333333,
- 0.078333333333,
- 0.28768,
- 0.27822666667,
- 0.20410666667,
- 0.27005333333,
- 0.5438,
- 0.63,
- 0.16918666667,
- 0.33612,
- 0.18606666667,
- 0.55945333333,
- 0.24682666667,
- 0.14942666667,
- 0.063586666667,
- 0.026813333333,
- 0.1102,
- 0.80133333333,
- 0.49825333333,
- 0.41462666667,
- 0.066413333333,
- 0.77688,
- 0.53873333333,
- 0.95846666667,
- 0.202,
- 0.34449333333,
- 0.53013333333,
- 0.10358666667,
- 0.91396,
- 0.25573333333,
- 0.17638,
- 0.44002,
- 0.50977,
- 0.098876666667,
- 0.16456,
- 0.75581,
- 0.67874333333,
- 0.10694333333,
- 0.88898333333,
- 0.54368666667,
- 0.96525333333,
- 0.72881,
- 0.30359333333,
- 0.22523,
- 0.51537666667,
- 0.48394666667,
- 0.96304333333,
- 0.86087666667,
- 0.15870666667,
- 0.42924333333,
- 0.88948,
- 0.071716666667,
- 0.14552,
- 0.02565,
- 0.27741666667,
- 0.88069666667,
- 0.73016333333,
- 0.15583,
- 0.82667,
- 0.0766,
- 0.70442666667,
- 0.51388333333,
- 0.12266666667,
- 0.53865,
- 0.45085666667,
- 0.60248,
- 0.72897333333,
- 0.30018,
- 0.58435666667,
- 0.25868333333,
- 0.03707,
- 0.53251333333,
- 0.11963333333,
- 0.10149,
- 0.61234333333,
- 0.11096,
- 0.28370333333,
- 0.025263333333,
- 0.83724666667,
- 0.92001666667,
- 0.22016,
- 0.77135666667,
- 0.85794,
- 0.83458666667,
- 0.6349,
- 0.60224666667,
- 0.26517333333,
- 0.69308333333,
- 0.94262666667,
- 0.94751,
- 0.60268333333,
- 0.084863333333,
- 0.77193333333,
- 0.49709666667,
- 0.41857,
- 0.57631,
- 0.55958666667,
- 0.22972,
- 0.34301,
- 0.91417,
- 0.15937333333,
- 0.94685,
- 0.80927666667,
- 0.5433,
- 0.68836666667,
- 0.045213333333,
- 0.20221333333,
- 0.25928,
- 0.028996666667,
- 0.55647333333,
- 0.53334333333,
- 0.070596666667,
- 0.37599666667,
- 0.55636666667,
- 0.92541,
- 0.54608333333,
- 0.40597,
- 0.78954
- ],
- "prints": [
- [
- "Last:0.79"
- ],
- [
- "Min:0.03"
- ],
- [
- "Max:0.97"
- ],
- [
- "Average:0.45"
- ]
- ],
- "last_value": 0.79,
- "minimum_value": 0.03,
- "maximum_value": 0.97,
- "average_value": 0.45
- },
- {
- "index_id": 4811,
- "metric_id": 11757,
- "metric": "querytime",
- "metric_legend": "querytime",
- "unit": "s",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "ds_min": "1",
- "ds_max": "1",
- "ds_minmax_int": "0",
- "ds_last": "1",
- "ds_average": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_color_line_mode": "1",
- "ds_color_line": "#6666ff"
- },
- "legend": "querytime",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 0,
- "data": [
- 0.21217333333,
- 0.87482666667,
- 0.37050666667,
- 0.22261333333,
- 0.27658666667,
- 0.89249333333,
- 0.42810666667,
- 0.17090666667,
- 0.19776,
- 0.66197333333,
- 0.74858666667,
- 0.16696,
- 0.069626666667,
- 0.47496,
- 0.2282,
- 0.0994,
- 0.64774666667,
- 0.66953333333,
- 0.77124,
- 0.3936,
- 0.15710666667,
- 0.93925333333,
- 0.20773333333,
- 0.071226666667,
- 0.41626666667,
- 0.21069333333,
- 0.6382,
- 0.44053333333,
- 0.60597333333,
- 0.21082666667,
- 0.47862666667,
- 0.29146666667,
- 0.209,
- 0.65845333333,
- 0.04784,
- 0.76081333333,
- 0.65816,
- 0.73236,
- 0.28733333333,
- 0.59522666667,
- 0.62157333333,
- 0.31906666667,
- 0.18461333333,
- 0.26982666667,
- 0.040226666667,
- 0.59405333333,
- 0.90810666667,
- 0.78957333333,
- 0.80093333333,
- 0.86164,
- 0.1834,
- 0.018146666667,
- 0.72887666667,
- 0.08997,
- 0.00938,
- 0.26547333333,
- 0.70833,
- 0.39817333333,
- 0.76854,
- 0.04771,
- 0.083183333333,
- 0.62004,
- 0.63879333333,
- 0.82478,
- 0.11057666667,
- 0.084923333333,
- 0.49069,
- 0.54518666667,
- 0.23475666667,
- 0.20845333333,
- 0.23913,
- 0.13912,
- 0.51599333333,
- 0.081483333333,
- 0.69169333333,
- 0.74981,
- 0.28310666667,
- 0.27764,
- 0.67425666667,
- 0.26406666667,
- 0.16725,
- 0.39128666667,
- 0.76818333333,
- 0.89565333333,
- 0.85860666667,
- 0.89279,
- 0.55445666667,
- 0.45664666667,
- 0.85574666667,
- 0.05364,
- 0.59358333333,
- 0.29600333333,
- 0.050543333333,
- 0.33603666667,
- 0.05402,
- 0.63879,
- 0.65424666667,
- 0.48697333333,
- 0.57888,
- 0.87366,
- 0.76553666667,
- 0.79290333333,
- 0.19598333333,
- 0.070383333333,
- 0.51874333333,
- 0.077163333333,
- 0.81027,
- 0.29754666667,
- 0.74227,
- 0.14934333333,
- 0.27802666667,
- 0.43610333333,
- 0.76007333333,
- 0.96106333333,
- 0.30789333333,
- 0.44346,
- 0.66247666667,
- 0.20710666667,
- 0.91763,
- 0.39694333333,
- 0.43186333333,
- 0.18601666667,
- 0.22477,
- 0.93644333333,
- 0.53752,
- 0.71947666667,
- 0.15373666667,
- 0.28785666667,
- 0.09141,
- 0.27427,
- 0.76049666667,
- 0.46826666667,
- 0.54427666667,
- 0.59150666667,
- 0.72795333333,
- 0.67562666667,
- 0.97103666667,
- 0.065476666667,
- 0.35148666667,
- 0.81253666667
- ],
- "prints": [
- [
- "Last:0.81"
- ],
- [
- "Min:0.01"
- ],
- [
- "Max:0.97"
- ],
- [
- "Average:0.45"
- ]
- ],
- "last_value": 0.81,
- "minimum_value": 0.01,
- "maximum_value": 0.97,
- "average_value": 0.45
- },
- {
- "index_id": 4811,
- "metric_id": 11756,
- "metric": "used",
- "metric_legend": "used",
- "unit": "%",
- "hidden": 0,
- "min": null,
- "max": null,
- "virtual": 0,
- "ds_data": {
- "compo_id": 8,
- "host_id": null,
- "service_id": null,
- "name": "Used",
- "ds_order": 1,
- "ds_hidecurve": null,
- "ds_name": "used",
- "ds_color_line": "#2B28D7",
- "ds_color_line_mode": "0",
- "ds_color_area": "#050AF9",
- "ds_color_area_warn": null,
- "ds_color_area_crit": null,
- "ds_filled": "1",
- "ds_max": null,
- "ds_min": null,
- "ds_minmax_int": "0",
- "ds_average": "1",
- "ds_last": "1",
- "ds_total": "0",
- "ds_tickness": 1,
- "ds_transparency": "80",
- "ds_invert": null,
- "ds_legend": null,
- "ds_jumpline": "0",
- "ds_stack": null,
- "default_tpl1": null,
- "comment": null
- },
- "legend": "used",
- "stack": 0,
- "warn": null,
- "warn_low": null,
- "crit": null,
- "crit_low": null,
- "ds_color_area_warn": "#ff9a13",
- "ds_color_area_crit": "#e00b3d",
- "ds_order": 1,
- "data": [
- 91.596026667,
- 90.088853333,
- 89.076053333,
- 90.53204,
- 90.893426667,
- 89.506986667,
- 90.81108,
- 90.729013333,
- 92.19964,
- 93.897066667,
- 95.224346667,
- 94.630386667,
- 95.821773333,
- 96.9134,
- 97.077026667,
- 97.41528,
- 97.024093333,
- 96.81924,
- 97.259613333,
- 98.342426667,
- 99.564506667,
- 98.086933333,
- 96.482493333,
- 95.24396,
- 95.435546667,
- 94.196613333,
- 95.7448,
- 96.646346667,
- 95.380866667,
- 94.330986667,
- 93.289573333,
- 94.292373333,
- 93.915586667,
- 93.01628,
- 93.919346667,
- 92.278466667,
- 93.340773333,
- 95.046573333,
- 95.62464,
- 94.912653333,
- 93.616666667,
- 93.305546667,
- 91.418546667,
- 90.48372,
- 91.884453333,
- 91.26452,
- 93.03976,
- 94.966226667,
- 95.96928,
- 95.0118,
- 93.965733333,
- 92.588453333,
- 90.644313333,
- 89.90091,
- 88.758356667,
- 88.809916667,
- 87.401056667,
- 89.171536667,
- 88.56418,
- 90.24447,
- 92.145993333,
- 90.846546667,
- 89.730936667,
- 91.40096,
- 92.009683333,
- 93.402173333,
- 94.77448,
- 94.395426667,
- 95.178323333,
- 94.597796667,
- 93.762883333,
- 94.440423333,
- 96.117853333,
- 98.09795,
- 98.096856667,
- 98.0051,
- 97.2076,
- 96.59683,
- 95.66872,
- 94.895236667,
- 94.183176667,
- 95.20991,
- 93.487326667,
- 95.11196,
- 96.17254,
- 95.36402,
- 95.04598,
- 95.81108,
- 96.592856667,
- 97.519016667,
- 95.694766667,
- 93.71986,
- 92.31186,
- 92.297203333,
- 93.977303333,
- 94.92134,
- 94.19941,
- 94.312423333,
- 93.282446667,
- 92.786066667,
- 91.01389,
- 92.46833,
- 93.794936667,
- 93.967106667,
- 95.2182,
- 95.01283,
- 94.80073,
- 93.796613333,
- 93.586066667,
- 95.26651,
- 94.24732,
- 94.895046667,
- 94.41728,
- 92.538953333,
- 91.597866667,
- 91.568753333,
- 92.31712,
- 92.778953333,
- 91.32957,
- 90.589156667,
- 89.515163333,
- 90.598206667,
- 89.587826667,
- 88.00329,
- 89.227006667,
- 89.304113333,
- 89.37475,
- 87.6527,
- 87.395236667,
- 85.901193333,
- 87.65716,
- 89.258466667,
- 90.305483333,
- 90.81863,
- 92.16478,
- 93.21469,
- 93.78806,
- 92.083266667,
- 92.926106667,
- 91.584036667
- ],
- "prints": [
- [
- "Last:91.58"
- ],
- [
- "Average:93.26"
- ]
- ],
- "last_value": 91.58,
- "minimum_value": null,
- "maximum_value": null,
- "average_value": 93.26
- }
- ],
- "times": [
- "2023-06-01T23:55:00+02:00",
- "2023-06-02T00:00:00+02:00",
- "2023-06-02T00:05:00+02:00",
- "2023-06-02T00:10:00+02:00",
- "2023-06-02T00:15:00+02:00",
- "2023-06-02T00:20:00+02:00",
- "2023-06-02T00:25:00+02:00",
- "2023-06-02T00:30:00+02:00",
- "2023-06-02T00:35:00+02:00",
- "2023-06-02T00:40:00+02:00",
- "2023-06-02T00:45:00+02:00",
- "2023-06-02T00:50:00+02:00",
- "2023-06-02T00:55:00+02:00",
- "2023-06-02T01:00:00+02:00",
- "2023-06-02T01:05:00+02:00",
- "2023-06-02T01:10:00+02:00",
- "2023-06-02T01:15:00+02:00",
- "2023-06-02T01:20:00+02:00",
- "2023-06-02T01:25:00+02:00",
- "2023-06-02T01:30:00+02:00",
- "2023-06-02T01:35:00+02:00",
- "2023-06-02T01:40:00+02:00",
- "2023-06-02T01:45:00+02:00",
- "2023-06-02T01:50:00+02:00",
- "2023-06-02T01:55:00+02:00",
- "2023-06-02T02:00:00+02:00",
- "2023-06-02T02:05:00+02:00",
- "2023-06-02T02:10:00+02:00",
- "2023-06-02T02:15:00+02:00",
- "2023-06-02T02:20:00+02:00",
- "2023-06-02T02:25:00+02:00",
- "2023-06-02T02:30:00+02:00",
- "2023-06-02T02:35:00+02:00",
- "2023-06-02T02:40:00+02:00",
- "2023-06-02T02:45:00+02:00",
- "2023-06-02T02:50:00+02:00",
- "2023-06-02T02:55:00+02:00",
- "2023-06-02T03:00:00+02:00",
- "2023-06-02T03:05:00+02:00",
- "2023-06-02T03:10:00+02:00",
- "2023-06-02T03:15:00+02:00",
- "2023-06-02T03:20:00+02:00",
- "2023-06-02T03:25:00+02:00",
- "2023-06-02T03:30:00+02:00",
- "2023-06-02T03:35:00+02:00",
- "2023-06-02T03:40:00+02:00",
- "2023-06-02T03:45:00+02:00",
- "2023-06-02T03:50:00+02:00",
- "2023-06-02T03:55:00+02:00",
- "2023-06-02T04:00:00+02:00",
- "2023-06-02T04:05:00+02:00",
- "2023-06-02T04:10:00+02:00",
- "2023-06-02T04:15:00+02:00",
- "2023-06-02T04:20:00+02:00",
- "2023-06-02T04:25:00+02:00",
- "2023-06-02T04:30:00+02:00",
- "2023-06-02T04:35:00+02:00",
- "2023-06-02T04:40:00+02:00",
- "2023-06-02T04:45:00+02:00",
- "2023-06-02T04:50:00+02:00",
- "2023-06-02T04:55:00+02:00",
- "2023-06-02T05:00:00+02:00",
- "2023-06-02T05:05:00+02:00",
- "2023-06-02T05:10:00+02:00",
- "2023-06-02T05:15:00+02:00",
- "2023-06-02T05:20:00+02:00",
- "2023-06-02T05:25:00+02:00",
- "2023-06-02T05:30:00+02:00",
- "2023-06-02T05:35:00+02:00",
- "2023-06-02T05:40:00+02:00",
- "2023-06-02T05:45:00+02:00",
- "2023-06-02T05:50:00+02:00",
- "2023-06-02T05:55:00+02:00",
- "2023-06-02T06:00:00+02:00",
- "2023-06-02T06:05:00+02:00",
- "2023-06-02T06:10:00+02:00",
- "2023-06-02T06:15:00+02:00",
- "2023-06-02T06:20:00+02:00",
- "2023-06-02T06:25:00+02:00",
- "2023-06-02T06:30:00+02:00",
- "2023-06-02T06:35:00+02:00",
- "2023-06-02T06:40:00+02:00",
- "2023-06-02T06:45:00+02:00",
- "2023-06-02T06:50:00+02:00",
- "2023-06-02T06:55:00+02:00",
- "2023-06-02T07:00:00+02:00",
- "2023-06-02T07:05:00+02:00",
- "2023-06-02T07:10:00+02:00",
- "2023-06-02T07:15:00+02:00",
- "2023-06-02T07:20:00+02:00",
- "2023-06-02T07:25:00+02:00",
- "2023-06-02T07:30:00+02:00",
- "2023-06-02T07:35:00+02:00",
- "2023-06-02T07:40:00+02:00",
- "2023-06-02T07:45:00+02:00",
- "2023-06-02T07:50:00+02:00",
- "2023-06-02T07:55:00+02:00",
- "2023-06-02T08:00:00+02:00",
- "2023-06-02T08:05:00+02:00",
- "2023-06-02T08:10:00+02:00",
- "2023-06-02T08:15:00+02:00",
- "2023-06-02T08:20:00+02:00",
- "2023-06-02T08:25:00+02:00",
- "2023-06-02T08:30:00+02:00",
- "2023-06-02T08:35:00+02:00",
- "2023-06-02T08:40:00+02:00",
- "2023-06-02T08:45:00+02:00",
- "2023-06-02T08:50:00+02:00",
- "2023-06-02T08:55:00+02:00",
- "2023-06-02T09:00:00+02:00",
- "2023-06-02T09:05:00+02:00",
- "2023-06-02T09:10:00+02:00",
- "2023-06-02T09:15:00+02:00",
- "2023-06-02T09:20:00+02:00",
- "2023-06-02T09:25:00+02:00",
- "2023-06-02T09:30:00+02:00",
- "2023-06-02T09:35:00+02:00",
- "2023-06-02T09:40:00+02:00",
- "2023-06-02T09:45:00+02:00",
- "2023-06-02T09:50:00+02:00",
- "2023-06-02T09:55:00+02:00",
- "2023-06-02T10:00:00+02:00",
- "2023-06-02T10:05:00+02:00",
- "2023-06-02T10:10:00+02:00",
- "2023-06-02T10:15:00+02:00",
- "2023-06-02T10:20:00+02:00",
- "2023-06-02T10:25:00+02:00",
- "2023-06-02T10:30:00+02:00",
- "2023-06-02T10:35:00+02:00",
- "2023-06-02T10:40:00+02:00",
- "2023-06-02T10:45:00+02:00",
- "2023-06-02T10:50:00+02:00",
- "2023-06-02T10:55:00+02:00",
- "2023-06-02T11:00:00+02:00",
- "2023-06-02T11:05:00+02:00",
- "2023-06-02T11:10:00+02:00",
- "2023-06-02T11:15:00+02:00",
- "2023-06-02T11:20:00+02:00",
- "2023-06-02T11:25:00+02:00",
- "2023-06-02T11:30:00+02:00"
- ]
-}
\ No newline at end of file
diff --git a/centreon/packages/ui/src/Graph/LineChart/models.ts b/centreon/packages/ui/src/Graph/LineChart/models.ts
deleted file mode 100644
index 5ddd6ca4b3..0000000000
--- a/centreon/packages/ui/src/Graph/LineChart/models.ts
+++ /dev/null
@@ -1,182 +0,0 @@
-import { ReactNode } from 'react';
-
-import { ScaleLinear } from 'd3-scale';
-
-import { Line, TimeValue } from '../common/timeSeries/models';
-import { LineChartData } from '../common/models';
-
-import {
- AxisX,
- Axis as AxisYLeft,
- AxisYRight
-} from './BasicComponents/Axes/models';
-import {
- AreaRegularLines,
- AreaStackedLines
-} from './BasicComponents/Lines/models';
-import { TimelineEvent } from './InteractiveComponents/Annotations/models';
-import { FactorsVariation } from './BasicComponents/Lines/Threshold/models';
-
-export interface LineChartEndpoint {
- baseUrl: string;
- queryParameters: GraphInterval;
-}
-export interface Data {
- baseAxis: number;
- lines: Array;
- timeSeries: Array;
- title: string;
-}
-
-export enum GraphIntervalProperty {
- end = 'end',
- start = 'start'
-}
-
-export interface Interval {
- end: Date;
- start: Date;
-}
-
-export interface GraphInterval {
- end?: string;
- start?: string;
-}
-
-export interface ShapeLines {
- areaRegularLines?: AreaRegularLines;
- areaStackedLines?: AreaStackedLines;
-}
-
-export interface LineChartAxis {
- axisX?: AxisX;
- axisYLeft?: AxisYLeft;
- axisYRight?: AxisYRight;
- gridLinesType?: 'horizontal' | 'vertical' | 'all';
- isCenteredZero?: boolean;
- scale?: 'linear' | 'logarithimc';
- scaleLogarithmicBase?: number;
- showBorder?: boolean;
- showGridLines?: boolean;
- yAxisTickLabelRotation?: number;
-}
-
-export interface InteractedZone {
- enable?: boolean;
- getInterval?: (data: Interval) => void;
-}
-
-export interface TooltipData {
- data: Date;
- hideTooltip: () => void;
- tooltipOpen: boolean;
-}
-export interface Tooltip {
- mode: 'all' | 'single' | 'hidden';
- renderComponent?: (args: TooltipData) => ReactNode;
- sortOrder: 'name' | 'ascending' | 'descending';
-}
-
-export interface AnnotationEvent {
- data?: Array;
-}
-
-export interface LineChartHeader {
- displayTitle?: boolean;
- extraComponent?: ReactNode;
-}
-
-export interface DisplayAnchor {
- displayGuidingLines?: boolean;
- displayTooltipsGuidingLines?: boolean;
-}
-
-export interface LineStyle {
- areaTransparency?: number;
- curve?: 'linear' | 'step' | 'natural';
- dashLength?: number;
- dashOffset?: number;
- dotOffset?: number;
- lineWidth?: number;
- pathStyle?: 'solid' | 'dash' | 'dotted';
- showArea?: boolean;
- showPoints?: boolean;
-}
-
-export interface LineChartProps {
- annotationEvent?: AnnotationEvent;
- axis?: LineChartAxis;
- displayAnchor?: DisplayAnchor;
- header?: LineChartHeader;
- height?: number | null;
- legend?: LegendModel;
- lineStyle?: LineStyle;
- timeShiftZones?: InteractedZone;
- tooltip?: Tooltip;
- width: number;
- zoomPreview?: InteractedZone;
-}
-
-export interface Area {
- display: boolean;
-}
-
-export type PatternOrientation =
- | 'diagonal'
- | 'diagonalRightToLeft'
- | 'horizontal'
- | 'vertical';
-
-export enum ThresholdType {
- basic = 'basic',
- pattern = 'pattern',
- variation = 'variation'
-}
-
-export interface PatternThreshold {
- data: Array;
- orientation?: Array;
- type: ThresholdType.pattern;
-}
-export interface VariationThreshold {
- displayCircles?: boolean;
- factors: FactorsVariation;
- getCountDisplayedCircles?: (value: number) => void;
- type: ThresholdType.variation;
-}
-
-export interface BasicThreshold {
- type: ThresholdType.basic;
-}
-
-export interface GlobalAreaLines {
- areaRegularLines?: Area;
- areaStackedLines?: Area;
- areaThresholdLines?: Array<
- PatternThreshold | VariationThreshold | BasicThreshold
- >;
-}
-export interface LegendModel {
- display?: boolean;
- mode: 'grid' | 'list';
- placement: 'bottom' | 'left' | 'right';
- renderExtraComponent?: ReactNode;
-}
-
-export interface GetDate {
- positionX: number;
- timeSeries: Array;
- xScale: ScaleLinear;
-}
-
-export interface GraphTooltipData {
- date: string;
- highlightedMetricId: number | null;
- metrics: Array<{
- color: string;
- id: number;
- name: string;
- unit: string;
- value: number;
- }>;
-}
diff --git a/centreon/packages/ui/src/Graph/PieChart/PieChart.cypress.spec.tsx b/centreon/packages/ui/src/Graph/PieChart/PieChart.cypress.spec.tsx
index 9f99c7888f..c6548dc0c9 100644
--- a/centreon/packages/ui/src/Graph/PieChart/PieChart.cypress.spec.tsx
+++ b/centreon/packages/ui/src/Graph/PieChart/PieChart.cypress.spec.tsx
@@ -72,8 +72,6 @@ describe('Pie chart', () => {
it('renders as a pie when variant is set to "pie"', () => {
initialize({ variant: 'pie' });
cy.get('[data-variant="pie"]').should('exist');
-
- cy.makeSnapshot();
});
it('displays tooltip with correct information on hover', () => {
@@ -134,8 +132,6 @@ describe('Pie chart', () => {
initialize({});
cy.findByTestId('Title').should('not.exist');
-
- cy.makeSnapshot();
});
it('adjusts outer radius when chart dimensions are too small', () => {
@@ -147,7 +143,7 @@ describe('Pie chart', () => {
width: '120px'
});
- cy.get('[data-variant="donut"]').should('have.css', 'width', '100px');
+ cy.get('[data-variant="donut"]').should('have.css', 'width', '76px');
cy.makeSnapshot();
});
diff --git a/centreon/packages/ui/src/Graph/PieChart/PieChart.stories.tsx b/centreon/packages/ui/src/Graph/PieChart/PieChart.stories.tsx
index 8732513f0c..e4870ea6a6 100644
--- a/centreon/packages/ui/src/Graph/PieChart/PieChart.stories.tsx
+++ b/centreon/packages/ui/src/Graph/PieChart/PieChart.stories.tsx
@@ -1,7 +1,7 @@
import { Meta, StoryObj } from '@storybook/react';
-import { ArcType } from './models';
import ResponsivePie from './ResponsivePie';
+import { ArcType } from './models';
const data = [
{ color: '#88B922', label: 'Ok', value: 148 },
@@ -144,6 +144,10 @@ const TemplateForSmallDimensions = (args): JSX.Element => {
return ;
};
+const SmallTemplate = (args): JSX.Element => {
+ return ;
+};
+
export const PieWithSmallDimensions: Story = {
args: {
data,
@@ -188,3 +192,13 @@ export const donutWithOneNoZeroValue: Story = {
},
render: Template
};
+
+export const smallDisplay: Story = {
+ args: {
+ data,
+ displayLegend: false,
+ title: 'hosts',
+ variant: 'donut'
+ },
+ render: SmallTemplate
+};
diff --git a/centreon/packages/ui/src/Graph/PieChart/PieChart.styles.ts b/centreon/packages/ui/src/Graph/PieChart/PieChart.styles.ts
index 91a902eee2..fe13408d9a 100644
--- a/centreon/packages/ui/src/Graph/PieChart/PieChart.styles.ts
+++ b/centreon/packages/ui/src/Graph/PieChart/PieChart.styles.ts
@@ -1,8 +1,8 @@
import { lt } from 'ramda';
import { makeStyles } from 'tss-react/mui';
-export const usePieStyles = makeStyles<{ svgSize: number }>()(
- (theme, { svgSize }) => ({
+export const usePieStyles = makeStyles<{ reverse: boolean; svgSize: number }>()(
+ (theme, { reverse, svgSize }) => ({
container: {
alignItems: 'center',
display: 'flex',
@@ -25,7 +25,7 @@ export const usePieStyles = makeStyles<{ svgSize: number }>()(
svgWrapper: {
alignItems: 'center',
display: 'flex',
- flexDirection: 'column',
+ flexDirection: reverse ? 'column-reverse' : 'column',
gap: theme.spacing(1),
justifyContent: 'center'
},
diff --git a/centreon/packages/ui/src/Graph/PieChart/ResponsivePie.tsx b/centreon/packages/ui/src/Graph/PieChart/ResponsivePie.tsx
index 22bfcef746..1af40a5933 100644
--- a/centreon/packages/ui/src/Graph/PieChart/ResponsivePie.tsx
+++ b/centreon/packages/ui/src/Graph/PieChart/ResponsivePie.tsx
@@ -1,7 +1,7 @@
import { useRef } from 'react';
-import { Pie } from '@visx/shape';
import { Group } from '@visx/group';
+import { Pie } from '@visx/shape';
import { Text } from '@visx/text';
import numeral from 'numeral';
import { always, equals, gt, ifElse, lt } from 'ramda';
@@ -14,11 +14,11 @@ import { Legend as LegendComponent } from '../Legend';
import { LegendProps } from '../Legend/models';
import { getValueByUnit } from '../common/utils';
-import { PieProps } from './models';
import { usePieStyles } from './PieChart.styles';
+import { PieProps } from './models';
import { useResponsivePie } from './useResponsivePie';
-const DefaultLengd = ({ scale, direction }: LegendProps): JSX.Element => (
+const DefaultLegend = ({ scale, direction }: LegendProps): JSX.Element => (
);
@@ -42,18 +42,25 @@ const getTooltipPlacement = ({ radianX, radianY }): Placement => {
const ResponsivePie = ({
title,
+ titlePosition,
+ displayTitle = true,
variant = 'pie',
width,
height,
data,
unit = 'number',
- Legend = DefaultLengd,
+ Legend = DefaultLegend,
displayLegend = true,
+ displayTotal = true,
innerRadius: defaultInnerRadius = 40,
+ innerRadiusNoLimit = false,
onArcClick,
+ padAngle = 0,
displayValues,
TooltipContent,
- legendDirection = 'column'
+ legendDirection = 'column',
+ tooltipProps = {},
+ opacity = 1
}: PieProps & { height: number; width: number }): JSX.Element => {
const { t } = useTranslation();
const theme = useTheme();
@@ -66,7 +73,6 @@ const ResponsivePie = ({
legendScale,
svgContainerSize,
svgSize,
- svgWrapperWidth,
total,
innerRadius,
isContainsExactlyOneNonZeroValue
@@ -74,34 +80,46 @@ const ResponsivePie = ({
data,
defaultInnerRadius,
height,
+ innerRadiusNoLimit,
legendRef,
titleRef,
unit,
width
});
- const { classes } = usePieStyles({ svgSize });
+ const isTooSmallForLegend = lt(width, 170);
+
+ const isSmall = lt(width, 130);
+ const mustDisplayLegend = isTooSmallForLegend ? false : displayLegend;
+
+ const { classes } = usePieStyles({
+ reverse: equals(titlePosition, 'bottom'),
+ svgSize
+ });
return (
- {equals(variant, 'pie') && title && (
-
- {`${numeral(total).format('0a').toUpperCase()} `} {t(title)}
-
- )}
+ {(equals(variant, 'pie') ||
+ isSmall ||
+ (equals(variant, 'donut') && equals(titlePosition, 'bottom'))) &&
+ title &&
+ displayTitle && (
+
+ {`${displayTotal ? numeral(total).format('0a').toUpperCase() : ''} `}
+ {t(title)}
+
+ )}
-