This commit is contained in:
Билай Станислав 2024-08-07 14:21:00 +03:00
commit b374744261
3 changed files with 13 additions and 8 deletions

View File

@ -20,7 +20,7 @@ class JasonTable
$this->beforePrintCell = $closure; $this->beforePrintCell = $closure;
} }
public function getCustomCell(string $key, string $cell) public function getCustomCell(string $key, string|null $cell)
{ {
if (is_array($this->beforePrintCell)) { if (is_array($this->beforePrintCell)) {
foreach ($this->beforePrintCell as $currentKey => $closure) { foreach ($this->beforePrintCell as $currentKey => $closure) {

View File

@ -29,7 +29,7 @@ class ListJsonTable extends JasonTable
#[NoReturn] public function __construct(string $json) #[NoReturn] public function __construct(string $json)
{ {
$this->beforePrintCell = false; $this->beforePrintCell = [];
$this->json = $json; $this->json = $json;
$this->data = json_decode($this->json, true); $this->data = json_decode($this->json, true);
$this->baseUrl = $this->data['meta']['baseUrl'] ?? ''; $this->baseUrl = $this->data['meta']['baseUrl'] ?? '';
@ -86,7 +86,7 @@ class ListJsonTable extends JasonTable
} }
foreach ($row as $key => $cell) { foreach ($row as $key => $cell) {
if ($this->issetColumn($key) and $this->is_fillable($key)) { if ($this->issetColumn($key) and $this->is_fillable($key)) {
if($this->beforePrintCell and $cell !== null) { if($this->beforePrintCell) {
$cell = $this->getCustomCell($key, $cell); $cell = $this->getCustomCell($key, $cell);
} }
$this->html .= "<td>" . $cell . "</td>"; $this->html .= "<td>" . $cell . "</td>";
@ -276,10 +276,10 @@ class ListJsonTable extends JasonTable
if ($this->pagination) { if ($this->pagination) {
$options = [ $options = [
'countItem' => $this->data['meta']['total'], 'countItem' => $this->data['meta']['total'],
'perPage' => $this->data['meta']['perPage'], 'perPage' => $this->data['meta']['perPage'] ?? 10,
'currentPage' => $this->data['meta']['currentPage'], 'currentPage' => $this->data['meta']['currentPage'] ?? 1,
'baseUrl' => $this->baseUrl, 'baseUrl' => $this->baseUrl ?? '',
'prefix' => $this->data['meta']['paginationPrefix'], 'prefix' => $this->data['meta']['paginationPrefix'] ?? '/page',
]; ];
$pagination = new Pagination($options); $pagination = new Pagination($options);
$pagination->create(); $pagination->create();

View File

@ -13,9 +13,14 @@ class ViewJsonTable extends JasonTable
private array $dataJson; private array $dataJson;
public function __construct($json) public function __construct($json)
{ {
$this->beforePrintCell = [];
$this->json = $json; $this->json = $json;
$this->data = json_decode($this->json, true); $this->data = json_decode($this->json, true);
$this->dataJson = $this->data['data']; $this->dataJson = $this->data['data'];
$this->beforePrintHook = function () {
};
$this->afterPrintHook = function () {
};
} }
public function beginTable(): void public function beginTable(): void
@ -34,7 +39,7 @@ class ViewJsonTable extends JasonTable
{ {
foreach ($this->data['meta']['rows'] as $key => $row){ foreach ($this->data['meta']['rows'] as $key => $row){
if ($this->issetRow($key)){ if ($this->issetRow($key)){
if ($this->beforePrintCell and $this->dataJson[$key] !== null) { if ($this->beforePrintCell) {
$this->dataJson[$key] = $this->getCustomCell($key, $this->dataJson[$key]); $this->dataJson[$key] = $this->getCustomCell($key, $this->dataJson[$key]);
} }
$this->html .= "<tr><th>" . $row . "</th><td>" . $this->dataJson[$key] . "</td></tr>"; $this->html .= "<tr><th>" . $row . "</th><td>" . $this->dataJson[$key] . "</td></tr>";