blob: 3d5dbcb27d481ab01be3a968bbc37c83f3f827ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
<?php
namespace Icinga\Module\Director\Web\Table;
use gipfl\IcingaWeb2\Data\SimpleQueryPaginationAdapter;
use gipfl\IcingaWeb2\Table\QueryBasedTable;
use Icinga\Data\DataArray\ArrayDatasource;
use Icinga\Module\Director\Db\Branch\Branch;
use Icinga\Module\Director\Objects\IcingaCommand;
use gipfl\IcingaWeb2\Link;
class BranchedIcingaCommandArgumentTable extends QueryBasedTable
{
/** @var IcingaCommand */
protected $command;
/** @var Branch */
protected $branch;
protected $searchColumns = [
'ca.argument_name',
'ca.argument_value',
];
public function __construct(IcingaCommand $command, Branch $branch)
{
$this->command = $command;
$this->branch = $branch;
$this->getAttributes()->set('data-base-target', '_self');
}
public function renderRow($row)
{
return $this::row([
Link::create($row->argument_name, 'director/command/arguments', [
'argument' => $row->argument_name,
'uuid' => $this->command->getUniqueId()->toString(),
]),
$row->argument_value
]);
}
public function getColumnsToBeRendered()
{
return [
$this->translate('Argument'),
$this->translate('Value'),
];
}
protected function getPaginationAdapter()
{
return new SimpleQueryPaginationAdapter($this->getQuery());
}
public function getQuery()
{
return $this->prepareQuery();
}
protected function fetchQueryRows()
{
return $this->getQuery()->fetchAll();
}
protected function prepareQuery()
{
$list = [];
foreach ($this->command->arguments()->toPlainObject() as $name => $argument) {
$new = (object) [];
$new->argument_name = $name;
$new->argument_value = isset($argument->value) ? $argument->value : null;
$list[] = $new;
}
return (new ArrayDatasource($list))->select();
}
}
|