From bc54d5914663f7b8fbadcea37d62d366287c7751 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 Jun 2018 11:35:38 +0200 Subject: [PATCH 1/6] Added Grapher --- .../Businessprocess/ProvidedHook/Grapher.php | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 library/Businessprocess/ProvidedHook/Grapher.php diff --git a/library/Businessprocess/ProvidedHook/Grapher.php b/library/Businessprocess/ProvidedHook/Grapher.php new file mode 100644 index 0000000..a911f45 --- /dev/null +++ b/library/Businessprocess/ProvidedHook/Grapher.php @@ -0,0 +1,81 @@ +storage = new LegacyStorage( + Config::module('businessprocess')->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) + { + if (!$this->has($object) || !$this->storage) { + return ''; + } + + $bpName = $object->_service_icingacli_businessprocess_process; + $bp = $this->storage->loadProcess($bpName); + + MonitoringState::apply($bp); + + if (filter_var($object->_service_icingacli_businessprocess_grapher_tree, FILTER_VALIDATE_BOOLEAN)) { + $renderer = new TreeRenderer($bp); + } else { + $renderer = new TileRenderer($bp); + } + + $renderer->setBaseUrl(Url::fromPath('businessprocess/process/show?config=' . $bpName . '&node=' . $bpName)); + + $html = '

Business Process

'; + $html = $html . $renderer->render() . '
'; + return $html; + } +} From 7b8bee8a94897f9ad65248d390b79a4b037c8a05 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 Jun 2018 11:36:55 +0200 Subject: [PATCH 2/6] Provide grapher hook --- run.php | 1 + 1 file changed, 1 insertion(+) diff --git a/run.php b/run.php index 3f05d06..f513ed9 100644 --- a/run.php +++ b/run.php @@ -5,4 +5,5 @@ $this->provideHook('monitoring/ServiceActions'); $this->provideHook('icingadb/HostActions'); $this->provideHook('icingadb/ServiceActions'); $this->provideHook('icingadb/icingadbSupport'); +$this->provideHook('grapher'); //$this->provideHook('director/shipConfigFiles'); From fde37a35c6682d5bbc4075153939859e0073c174 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 19 Jul 2022 14:07:35 +0200 Subject: [PATCH 3/6] Rename hook --- .../{Grapher.php => Monitoring/DetailviewExtension.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename library/Businessprocess/ProvidedHook/{Grapher.php => Monitoring/DetailviewExtension.php} (100%) diff --git a/library/Businessprocess/ProvidedHook/Grapher.php b/library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php similarity index 100% rename from library/Businessprocess/ProvidedHook/Grapher.php rename to library/Businessprocess/ProvidedHook/Monitoring/DetailviewExtension.php From f62364b77200905942c9417c68f092f616b4ab18 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 19 Jul 2022 14:57:36 +0200 Subject: [PATCH 4/6] 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'); From 7acfac89477d18c3f9b9398577a142e45bf9693f Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 19 Jul 2022 14:58:16 +0200 Subject: [PATCH 5/6] TileRenderer: Override `assemble` instead of `render` --- library/Businessprocess/Renderer/TileRenderer.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) 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); } /** From 36f97c7a23bad1a774e78f3ddc2ce3677c02700f Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 19 Jul 2022 14:58:34 +0200 Subject: [PATCH 6/6] TreeRenderer: Override `assemble` instead of `render` --- library/Businessprocess/Renderer/TreeRenderer.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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); } /**