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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
<?php
namespace Icinga\Module\Reporting\Web\Widget;
use Icinga\Module\Reporting\Common\Macros;
use ipl\Html\Html;
use ipl\Html\HtmlDocument;
class HeaderOrFooter extends HtmlDocument
{
use Macros;
public const HEADER = 'header';
public const FOOTER = 'footer';
protected $type;
protected $data;
protected $tag = 'div';
public function __construct($type, array $data)
{
$this->type = $type;
$this->data = $data;
}
protected function resolveVariable($variable)
{
switch ($variable) {
case 'report_title':
$resolved = Html::tag('span', ['class' => 'title']);
break;
case 'time_frame':
$resolved = Html::tag('p', $this->getMacro('time_frame'));
break;
case 'time_frame_absolute':
$resolved = Html::tag('p', $this->getMacro('time_frame_absolute'));
break;
case 'page_number':
$resolved = Html::tag('span', ['class' => 'pageNumber']);
break;
case 'total_number_of_pages':
$resolved = Html::tag('span', ['class' => 'totalPages']);
break;
case 'page_of':
$resolved = Html::tag('p', Html::sprintf(
'%s / %s',
Html::tag('span', ['class' => 'pageNumber']),
Html::tag('span', ['class' => 'totalPages'])
));
break;
case 'date':
$resolved = Html::tag('span', ['class' => 'date']);
break;
default:
$resolved = $variable;
break;
}
return $resolved;
}
protected function createColumn(array $data, $key)
{
$typeKey = "{$key}_type";
$valueKey = "{$key}_value";
$type = $data[$typeKey] ?? null;
switch ($type) {
case 'text':
$column = Html::tag('p', $data[$valueKey]);
break;
case 'image':
$column = Html::tag('img', ['height' => 13, 'src' => Template::getDataUrl($data[$valueKey])]);
break;
case 'variable':
$column = $this->resolveVariable($data[$valueKey]);
break;
default:
$column = Html::tag('div');
break;
}
return $column;
}
protected function assemble()
{
for ($i = 1; $i <= 3; ++$i) {
$this->add($this->createColumn($this->data, "{$this->type}_column{$i}"));
}
}
}
|