diff --git a/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php b/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php new file mode 100644 index 0000000..c781504 --- /dev/null +++ b/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php @@ -0,0 +1,73 @@ +storage = new LegacyStorage( + $this->getModule()->getConfig()->getSection('global') + ); + } catch (\Exception $e) { + // Ignore and don't display anything + } + } + + /** + * Returns the rendered Tree-/TileRenderer HTML + * + * @param MonitoredObject $object + * + * @return string + */ + public function getHtmlForObject(MonitoredObject $object) + { + 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->setUrl(Url::fromPath('businessprocess/process/show?config=' . $bpName . '&node=' . $bpName)); + $renderer->ensureAssembled()->getFirst($tag)->setAttribute('data-base-target', '_next'); + + return '

Business Process

' . $renderer; + } +} diff --git a/library/Businessprocess/Renderer/TileRenderer.php b/library/Businessprocess/Renderer/TileRenderer.php index f1f779e..df53989 100644 --- a/library/Businessprocess/Renderer/TileRenderer.php +++ b/library/Businessprocess/Renderer/TileRenderer.php @@ -9,10 +9,7 @@ use ipl\Html\Html; class TileRenderer extends Renderer { - /** - * @inheritdoc - */ - public function render() + public function assemble() { $bp = $this->config; $nodesDiv = Html::tag( @@ -60,10 +57,8 @@ class TileRenderer extends Renderer } } - $nodesDiv->add($this->getContent()); - $this->setContent($nodesDiv); - - return parent::render(); + $nodesDiv->addHtml(...$this->getContent()); + $this->setHtmlContent($nodesDiv); } /** diff --git a/library/Businessprocess/Renderer/TreeRenderer.php b/library/Businessprocess/Renderer/TreeRenderer.php index c71a4f9..a34ac35 100644 --- a/library/Businessprocess/Renderer/TreeRenderer.php +++ b/library/Businessprocess/Renderer/TreeRenderer.php @@ -15,10 +15,7 @@ use ipl\Web\Widget\StateBall; class TreeRenderer extends Renderer { - /** - * @inheritdoc - */ - public function render() + public function assemble() { $bp = $this->config; $htmlId = $bp->getHtmlId(); @@ -59,8 +56,7 @@ class TreeRenderer extends Renderer ->getAbsoluteUrl()); } - $this->add($tree); - return parent::render(); + $this->addHtml($tree); } /** diff --git a/run.php b/run.php index 3f05d06..dbe38fb 100644 --- a/run.php +++ b/run.php @@ -2,6 +2,7 @@ $this->provideHook('monitoring/HostActions'); $this->provideHook('monitoring/ServiceActions'); +$this->provideHook('monitoring/DetailviewExtension'); $this->provideHook('icingadb/HostActions'); $this->provideHook('icingadb/ServiceActions'); $this->provideHook('icingadb/icingadbSupport');