1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Chromabits\Nucleus\View\Bootstrap;
13:
14: use Chromabits\Nucleus\Support\Html;
15: use Chromabits\Nucleus\Support\Std;
16: use Chromabits\Nucleus\View\Common\Table;
17: use Chromabits\Nucleus\View\Common\TableBody;
18: use Chromabits\Nucleus\View\Common\TableCell;
19: use Chromabits\Nucleus\View\Common\TableHeader;
20: use Chromabits\Nucleus\View\Common\TableHeaderCell;
21: use Chromabits\Nucleus\View\Common\TableRow;
22: use Chromabits\Nucleus\View\Interfaces\RenderableInterface;
23: use Chromabits\Nucleus\View\Interfaces\SafeHtmlProducerInterface;
24: use Chromabits\Nucleus\View\SafeHtmlWrapper;
25:
26: 27: 28: 29: 30: 31:
32: class SimpleTable implements RenderableInterface, SafeHtmlProducerInterface
33: {
34: 35: 36:
37: protected $headerLabels;
38:
39: 40: 41:
42: protected $rows;
43:
44: 45: 46: 47: 48: 49:
50: public function __construct(array $headerLabels, array $rows)
51: {
52: $this->headerLabels = $headerLabels;
53: $this->rows = $rows;
54: }
55:
56: 57: 58: 59: 60:
61: public function render()
62: {
63: return (new Table(['class' => 'table'], [
64: new TableHeader([], new TableRow([], Std::map(
65: function ($columnLabel) {
66: return new TableHeaderCell([], $columnLabel);
67: },
68: $this->headerLabels
69: ))),
70: new TableBody([], Std::map(function ($row) {
71: return new TableRow([], Std::map(function ($cell) {
72: return new TableCell([], $cell);
73: }, $row));
74: }, $this->rows)),
75: ]))->render();
76: }
77:
78: 79: 80: 81: 82:
83: public function getSafeHtml()
84: {
85: return Html::safe($this->render());
86: }
87: }
88: