From f62364b77200905942c9417c68f092f616b4ab18 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 19 Jul 2022 14:57:36 +0200 Subject: [PATCH] Monitoring/DetailViewExtension: Update implementation --- .../Monitoring/DetailviewExtension.php | 46 ++++++++----------- run.php | 2 +- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php b/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php index a911f45..c781504 100644 --- a/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php +++ b/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php @@ -1,20 +1,18 @@ storage = new LegacyStorage( - Config::module('businessprocess')->getSection('global') + $this->getModule()->getConfig()->getSection('global') ); } catch (\Exception $e) { // Ignore and don't display anything } - - $this->hasPreviews = true; } - /** - * Returns false if the MonitoredObject is not a service or the check_command is not icingacli-businessprocess - * - * @param MonitoredObject $object - * @return bool - */ - public function has(MonitoredObject $object) - { - return $object instanceof Service && $object->check_command == 'icingacli-businessprocess'; - } - - /** * Returns the rendered Tree-/TileRenderer HTML * * @param MonitoredObject $object + * * @return string - * @throws \Icinga\Exception\ProgrammingError */ - public function getPreviewHtml(MonitoredObject $object) + public function getHtmlForObject(MonitoredObject $object) { - if (!$this->has($object) || !$this->storage) { + if (! isset($this->storage) + || ! $object instanceof Service + || $object->check_command !== 'icingacli-businessprocess' + ) { return ''; } $bpName = $object->_service_icingacli_businessprocess_process; + if (! $bpName) { + return ''; + } + $bp = $this->storage->loadProcess($bpName); MonitoringState::apply($bp); if (filter_var($object->_service_icingacli_businessprocess_grapher_tree, FILTER_VALIDATE_BOOLEAN)) { $renderer = new TreeRenderer($bp); + $tag = 'ul'; } else { $renderer = new TileRenderer($bp); + $tag = 'div'; } - $renderer->setBaseUrl(Url::fromPath('businessprocess/process/show?config=' . $bpName . '&node=' . $bpName)); + $renderer->setUrl(Url::fromPath('businessprocess/process/show?config=' . $bpName . '&node=' . $bpName)); + $renderer->ensureAssembled()->getFirst($tag)->setAttribute('data-base-target', '_next'); - $html = '

Business Process

'; - $html = $html . $renderer->render() . '
'; - return $html; + return '

Business Process

' . $renderer; } } diff --git a/run.php b/run.php index f513ed9..dbe38fb 100644 --- a/run.php +++ b/run.php @@ -2,8 +2,8 @@ $this->provideHook('monitoring/HostActions'); $this->provideHook('monitoring/ServiceActions'); +$this->provideHook('monitoring/DetailviewExtension'); $this->provideHook('icingadb/HostActions'); $this->provideHook('icingadb/ServiceActions'); $this->provideHook('icingadb/icingadbSupport'); -$this->provideHook('grapher'); //$this->provideHook('director/shipConfigFiles');