diff --git a/examples/simple.json b/examples/simple.json index 824a44f..8e02240 100644 --- a/examples/simple.json +++ b/examples/simple.json @@ -9,7 +9,14 @@ "params": {"class": "table table-bordered", "border": "1"} }, "data": [ - {"email":"fas@mail.ru","description":"fafdgdfs","description2":"ffdghdas"}, - + {"email":"fas1@mail.ru","description":"sdgsdfg","description2":"ffdghdas"}, + {"email":"fas2@mail.ru","description":"fafdgdfgsdfdfs","description2":"ffdghdas"}, + {"email":"fas3@mail.ru","description":"fafdgdssdfgdfs","description2":"ffdghdas"}, + {"email":"fas4@mail.ru","description":"fafddsfgsdvcbgdfs","description2":"ffdghdas"}, + {"email":"fas5@mail.ru","description":"fafdgghjgfdfs","description2":"ffdghdas"}, + {"email":"fas6@mail.ru","description":"fafddfgdhvgdfs","description2":"ffdghdas"}, + {"email":"fas7@mail.ru","description":"fafdfgnfdgdfs","description2":"ffdghdas"}, + {"email":"fas8@mail.ru","description":"fafdfghdfgdfs","description2":"ffdghdas"}, + {"email":"dfdfd@mail.ru","description":"sdffhdfhggsdfg","description2":"ffdgdfgsdfghdas"} ] } \ No newline at end of file diff --git a/examples/simple.php b/examples/simple.php index c52961d..6834ab7 100644 --- a/examples/simple.php +++ b/examples/simple.php @@ -1,11 +1,16 @@ setBeforePrintCell(function ($key, $data) { + return $key == "email" ? "$data" : $data; +}); +$table->afterPrint(function () { + return "
After Print
"; +}); $table->create(); $table->render(); \ No newline at end of file diff --git a/src/ListJsonTable.php b/src/ListJsonTable.php index 241a095..6139f90 100644 --- a/src/ListJsonTable.php +++ b/src/ListJsonTable.php @@ -7,6 +7,7 @@ use Itguild\Tables\ActionColumn\DeleteActionColumn; use Itguild\Tables\ActionColumn\EditActionColumn; use Itguild\Tables\ActionColumn\ViewActionColumn; use Itguild\Tables\traits\CreateParams; +use JetBrains\PhpStorm\NoReturn; class ListJsonTable { @@ -17,34 +18,42 @@ class ListJsonTable private int $count = 0; private \Closure|false $beforePrintCell; - private \Closure|false $beforePrint; + private \Closure|false $beforePrintHook; + private \Closure|false $afterPrintHook; private string $baseUrl; private array $data; private array $actionsArray = []; private array $customActionsArray = []; - public function __construct(string $json) + #[NoReturn] public function __construct(string $json) { $this->beforePrintCell = false; - $this->beforePrint = function () { - }; $this->json = $json; $this->data = json_decode($this->json, true); $this->baseUrl = $this->data['meta']['baseUrl'] ?? ''; + $this->beforePrintHook = function () { + }; + $this->afterPrintHook = function () { + }; } public function beginTable(): void { $paramsStr = $this->createParams($this->data['meta']['params']); - $hook = $this->beforePrint; - $this->html .= $hook(); + $hookBefore = $this->beforePrintHook; + $this->html .= $hookBefore(); $this->html .= ""; } public function beforePrint(\Closure $closure): void { - $this->beforePrint = $closure; + $this->beforePrintHook = $closure; + } + + public function afterPrint(\Closure $closure): void + { + $this->afterPrintHook = $closure; } public function createThead(): void @@ -83,9 +92,14 @@ class ListJsonTable } } - $actions = $this->getActions($col["id"]); + if (isset($col["id"])){ + $actions = $this->getActions($col["id"]); - $this->html .= ""; + $this->html .= ""; + } + else { + $this->html .= ""; + } } } } @@ -177,6 +191,8 @@ class ListJsonTable public function endTable(): void { $this->html .= "
$actions
$actions
"; + $hookAfter = $this->afterPrintHook; + $this->html .= $hookAfter(); } public function render(): void