mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2026-02-03 00:39:27 -05:00
Merge pull request #333 from Icinga/matthennings-grapher-hook
Matthenning`s grapher hook
This commit is contained in:
commit
8e3b6689f1
4 changed files with 79 additions and 14 deletions
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
|
||||
namespace Icinga\Module\Businessprocess\ProvidedHook\Monitoring;
|
||||
|
||||
use Icinga\Module\Businessprocess\Renderer\TileRenderer;
|
||||
use Icinga\Module\Businessprocess\Renderer\TreeRenderer;
|
||||
use Icinga\Module\Businessprocess\State\MonitoringState;
|
||||
use Icinga\Module\Businessprocess\Storage\LegacyStorage;
|
||||
use Icinga\Module\Businessprocess\Web\Url;
|
||||
use Icinga\Module\Monitoring\Hook\DetailviewExtensionHook;
|
||||
use Icinga\Module\Monitoring\Object\MonitoredObject;
|
||||
use Icinga\Module\Monitoring\Object\Service;
|
||||
|
||||
class DetailviewExtension extends DetailviewExtensionHook
|
||||
{
|
||||
/**
|
||||
* @var $storage LegacyStorage
|
||||
*/
|
||||
private $storage;
|
||||
|
||||
/**
|
||||
* Initialize storage
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
try {
|
||||
$this->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 '<h2>Business Process</h2>' . $renderer;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
1
run.php
1
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');
|
||||
|
|
|
|||
Loading…
Reference in a new issue