IcingaServiceTable: Update apply rule rendering
For new storage format, and change to table. refs #12033
This commit is contained in:
parent
0d86c24cd8
commit
b3eb5ea102
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace Icinga\Module\Director\Tables;
|
namespace Icinga\Module\Director\Tables;
|
||||||
|
|
||||||
|
use Icinga\Data\Filter\Filter;
|
||||||
|
use Icinga\Exception\IcingaException;
|
||||||
|
use Icinga\Module\Director\IcingaConfig\AssignRenderer;
|
||||||
use Icinga\Module\Director\Web\Table\QuickTable;
|
use Icinga\Module\Director\Web\Table\QuickTable;
|
||||||
|
|
||||||
class IcingaServiceTable extends QuickTable
|
class IcingaServiceTable extends QuickTable
|
||||||
|
@ -13,9 +16,9 @@ class IcingaServiceTable extends QuickTable
|
||||||
public function getColumns()
|
public function getColumns()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'id' => 's.id',
|
'id' => 's.id',
|
||||||
'service' => 's.object_name',
|
'service' => 's.object_name',
|
||||||
'object_type' => 's.object_type',
|
'object_type' => 's.object_type',
|
||||||
'check_command_id' => 's.check_command_id',
|
'check_command_id' => 's.check_command_id',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -47,21 +50,34 @@ class IcingaServiceTable extends QuickTable
|
||||||
if (empty($extra)) {
|
if (empty($extra)) {
|
||||||
if ($row->check_command_id) {
|
if ($row->check_command_id) {
|
||||||
$htm .= ' ' . $v->qlink(
|
$htm .= ' ' . $v->qlink(
|
||||||
'Create apply-rule',
|
'Create apply-rule',
|
||||||
'director/service/add',
|
'director/service/add',
|
||||||
array('apply' => $row->service),
|
array('apply' => $row->service),
|
||||||
array('class' => 'icon-plus')
|
array('class' => 'icon-plus')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$htm .= '. Related apply rules: <ul class="apply-rules">';
|
$htm .= '. Related apply rules: <table class="apply-rules">';
|
||||||
foreach ($extra as $id => $service) {
|
foreach ($extra as $service) {
|
||||||
$htm .= '<li>'
|
$href = $v->url('director/service', array('id' => $service->id));
|
||||||
. $v->qlink($service, 'director/service', array('id' => $id))
|
$htm .= "<tr href=\"$href\">";
|
||||||
. '</li>';
|
|
||||||
|
try {
|
||||||
|
$prettyFilter = AssignRenderer::forFilter(
|
||||||
|
Filter::fromQueryString($service->assign_filter)
|
||||||
|
)->renderAssign();
|
||||||
|
}
|
||||||
|
catch (IcingaException $e) {
|
||||||
|
// ignore errors in filter rendering
|
||||||
|
$prettyFilter = 'Error in Filter rendering: ' . $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
$htm .= "<td><a href=\"$href\">" . $service->object_name . '</a></td>';
|
||||||
|
$htm .= '<td>' . $prettyFilter . '</td>';
|
||||||
|
$htm .= '<tr>';
|
||||||
}
|
}
|
||||||
$htm .= '</ul>';
|
$htm .= '</table>';
|
||||||
$htm .= $v->qlink(
|
$htm .= $v->qlink(
|
||||||
'Add more',
|
'Add more',
|
||||||
'director/service/add',
|
'director/service/add',
|
||||||
|
@ -109,23 +125,18 @@ class IcingaServiceTable extends QuickTable
|
||||||
$query = $db->select()->from(
|
$query = $db->select()->from(
|
||||||
array('s' => 'icinga_service'),
|
array('s' => 'icinga_service'),
|
||||||
array(
|
array(
|
||||||
'id' => 's.id',
|
'id' => 's.id',
|
||||||
'objectname' => $nameCol,
|
'object_name' => 's.object_name',
|
||||||
|
'assign_filter' => 's.assign_filter',
|
||||||
)
|
)
|
||||||
)->join(
|
)->join(
|
||||||
array('i' => 'icinga_service_inheritance'),
|
array('i' => 'icinga_service_inheritance'),
|
||||||
'i.service_id = s.id',
|
'i.service_id = s.id',
|
||||||
array()
|
array()
|
||||||
)->where('i.parent_service_id = ?', $id)
|
)->where('i.parent_service_id = ?', $id)
|
||||||
->where('s.object_type = ?', 'apply');
|
->where('s.object_type = ?', 'apply');
|
||||||
|
|
||||||
$query->joinLeft(
|
return $db->fetchAll($query);
|
||||||
array('a' => 'icinga_service_assignment'),
|
|
||||||
'a.service_id = s.id',
|
|
||||||
array()
|
|
||||||
)->group('s.id');
|
|
||||||
|
|
||||||
return $db->fetchPairs($query);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBaseQuery()
|
public function getBaseQuery()
|
||||||
|
@ -134,6 +145,6 @@ class IcingaServiceTable extends QuickTable
|
||||||
's.object_type IN (?)',
|
's.object_type IN (?)',
|
||||||
array('template')
|
array('template')
|
||||||
)->order('CASE WHEN s.check_command_id IS NULL THEN 1 ELSE 0 END')
|
)->order('CASE WHEN s.check_command_id IS NULL THEN 1 ELSE 0 END')
|
||||||
->order('s.object_name');
|
->order('s.object_name');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -887,25 +887,25 @@ table.icinga-objects {
|
||||||
}
|
}
|
||||||
|
|
||||||
table.assignment-table {
|
table.assignment-table {
|
||||||
ul.apply-rules {
|
table.apply-rules {
|
||||||
margin: 1em 0 1em 0;
|
margin: 1em 0 1em 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 1px solid @gray-lighter;
|
width: 100%;
|
||||||
|
|
||||||
li {
|
tr {
|
||||||
display: block;
|
border-bottom: 1px solid @gray-lighter;
|
||||||
|
border-left: 5px solid transparent;
|
||||||
|
|
||||||
a {
|
td {
|
||||||
display: block;
|
padding: 0.5em 1em;
|
||||||
float: none;
|
}
|
||||||
font-weight: normal;
|
|
||||||
background-color: white;
|
&:hover, &:active, &.active {
|
||||||
padding: 0.3em 1.5em;
|
border-left: 5px solid @icinga-blue;
|
||||||
&:hover {
|
}
|
||||||
background-color: @icinga-blue;
|
|
||||||
color: white;
|
&:hover {
|
||||||
text-decoration: none;
|
background: white;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue