Compare commits

...

8 Commits
0.2 ... master

Author SHA1 Message Date
708045664c example update 2024-08-29 13:15:41 +03:00
d3cda0bd8f merge 2024-08-29 12:46:28 +03:00
3bb6ae8b07 example update 2024-08-29 12:44:40 +03:00
850b0b315a fix JSON creator 2024-08-08 11:15:07 +03:00
cba0498e7d some fix 2024-08-07 15:40:01 +03:00
b4afddc7f7 add filters 2024-08-07 15:28:18 +03:00
50b642be1a Merge branch 'master' of https://git.itguild.info/ItGuild/eloquent_table 2024-08-07 15:27:33 +03:00
e84051ae21 add filters 2024-08-07 15:26:44 +03:00
5 changed files with 138 additions and 61 deletions

View File

@ -2,7 +2,7 @@
"name": "itguild/eloquent-table", "name": "itguild/eloquent-table",
"type": "library", "type": "library",
"require": { "require": {
"itguild/tables": "^0.1.9" "itguild/tables": "^1.0"
}, },
"require-dev": { "require-dev": {
"illuminate/database": "^12.0@dev", "illuminate/database": "^12.0@dev",

166
composer.lock generated
View File

@ -4,8 +4,36 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "23ab91e73c3a10e841f8f2b12f05e49d", "content-hash": "815b5be2be1ac86399ea520c5bdbe788",
"packages": [ "packages": [
{
"name": "itguild/tables",
"version": "1.0.5",
"source": {
"type": "git",
"url": "https://git.itguild.info/ItGuild/tables",
"reference": "ad18d94489c20599ac1080a8b4f7f3199f206fdf"
},
"type": "library",
"autoload": {
"psr-4": {
"Itguild\\Tables\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kavalar",
"email": "apuc06@mail.ru"
}
],
"time": "2024-08-29T10:13:51+00:00"
}
],
"packages-dev": [
{ {
"name": "brick/math", "name": "brick/math",
"version": "0.12.1", "version": "0.12.1",
@ -500,12 +528,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/illuminate/database.git", "url": "https://github.com/illuminate/database.git",
"reference": "97a835e279896de51754c2316f9812884b294e2c" "reference": "e8a4eba8573bb907b0336033851cad7adbca4394"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/illuminate/database/zipball/97a835e279896de51754c2316f9812884b294e2c", "url": "https://api.github.com/repos/illuminate/database/zipball/e8a4eba8573bb907b0336033851cad7adbca4394",
"reference": "97a835e279896de51754c2316f9812884b294e2c", "reference": "e8a4eba8573bb907b0336033851cad7adbca4394",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -561,7 +589,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2024-08-01T21:50:50+00:00" "time": "2024-08-16T18:32:47+00:00"
}, },
{ {
"name": "illuminate/filesystem", "name": "illuminate/filesystem",
@ -753,44 +781,18 @@
}, },
"time": "2024-08-05T14:24:50+00:00" "time": "2024-08-05T14:24:50+00:00"
}, },
{
"name": "itguild/tables",
"version": "0.1.13",
"source": {
"type": "git",
"url": "https://git.itguild.info/ItGuild/tables",
"reference": "d98ddded07131f602486783f5f016002ea7d7fb7"
},
"type": "library",
"autoload": {
"psr-4": {
"Itguild\\Tables\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kavalar",
"email": "apuc06@mail.ru"
}
],
"time": "2024-08-07T09:43:14+00:00"
},
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "dev-master", "version": "dev-master",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/briannesbitt/Carbon.git", "url": "https://github.com/briannesbitt/Carbon.git",
"reference": "cb4374784c87d0a0294e8513a52eb63c0aff3139" "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cb4374784c87d0a0294e8513a52eb63c0aff3139", "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbd3eef89af8ba66a3aa7952b5439168fbcc529f",
"reference": "cb4374784c87d0a0294e8513a52eb63c0aff3139", "reference": "bbd3eef89af8ba66a3aa7952b5439168fbcc529f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -884,7 +886,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-07-16T22:29:20+00:00" "time": "2024-08-19T06:22:39+00:00"
}, },
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
@ -1190,18 +1192,86 @@
], ],
"time": "2024-08-06T10:13:52+00:00" "time": "2024-08-06T10:13:52+00:00"
}, },
{
"name": "symfony/deprecation-contracts",
"version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-04-18T09:32:20+00:00"
},
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "7.2.x-dev", "version": "7.2.x-dev",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "9a54be47a3813ace04e40e0903b651f3a52d952d" "reference": "0470b8dc10ca08d23aeaabbed5b961c928e4d89d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/9a54be47a3813ace04e40e0903b651f3a52d952d", "url": "https://api.github.com/repos/symfony/finder/zipball/0470b8dc10ca08d23aeaabbed5b961c928e4d89d",
"reference": "9a54be47a3813ace04e40e0903b651f3a52d952d", "reference": "0470b8dc10ca08d23aeaabbed5b961c928e4d89d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1252,7 +1322,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-06T10:13:52+00:00" "time": "2024-08-13T14:29:53+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
@ -1579,16 +1649,17 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "a50ed69ace45368e096bc3981f456089253ed6cb" "reference": "a1c4be3a5885b9785b131c5a30d93e611848cb1d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/a50ed69ace45368e096bc3981f456089253ed6cb", "url": "https://api.github.com/repos/symfony/translation/zipball/a1c4be3a5885b9785b131c5a30d93e611848cb1d",
"reference": "a50ed69ace45368e096bc3981f456089253ed6cb", "reference": "a1c4be3a5885b9785b131c5a30d93e611848cb1d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.2", "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^2.5|^3.0" "symfony/translation-contracts": "^2.5|^3.0"
}, },
@ -1665,7 +1736,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-05T08:22:14+00:00" "time": "2024-08-19T08:28:32+00:00"
}, },
{ {
"name": "symfony/translation-contracts", "name": "symfony/translation-contracts",
@ -1752,12 +1823,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/twbs/bootstrap.git", "url": "https://github.com/twbs/bootstrap.git",
"reference": "4e954ea3322e0a2c6428159108c676428a05d748" "reference": "e3e00b5002139adb0d5dadd6002e15b7b6cd371f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/4e954ea3322e0a2c6428159108c676428a05d748", "url": "https://api.github.com/repos/twbs/bootstrap/zipball/e3e00b5002139adb0d5dadd6002e15b7b6cd371f",
"reference": "4e954ea3322e0a2c6428159108c676428a05d748", "reference": "e3e00b5002139adb0d5dadd6002e15b7b6cd371f",
"shasum": "" "shasum": ""
}, },
"replace": { "replace": {
@ -1795,7 +1866,7 @@
"issues": "https://github.com/twbs/bootstrap/issues", "issues": "https://github.com/twbs/bootstrap/issues",
"source": "https://github.com/twbs/bootstrap/tree/main" "source": "https://github.com/twbs/bootstrap/tree/main"
}, },
"time": "2024-08-07T04:51:04+00:00" "time": "2024-08-27T12:36:45+00:00"
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
@ -1957,7 +2028,6 @@
"time": "2022-03-08T17:03:00+00:00" "time": "2022-03-08T17:03:00+00:00"
} }
], ],
"packages-dev": [],
"aliases": [], "aliases": [],
"minimum-stability": "dev", "minimum-stability": "dev",
"stability-flags": { "stability-flags": {

View File

@ -44,16 +44,21 @@ try {
'currentPage' => 1, 'currentPage' => 1,
'perPage' => 3, 'perPage' => 3,
'params' => ["class" => "table table-bordered", "border" => "2"], 'params' => ["class" => "table table-bordered", "border" => "2"],
'baseUrl' => "/admin/user" 'baseUrl' => "/admin/user",
'filters' => ["email"]
])); ]));
$table->columns([ $table->columns([
'created_at' => function ($data) { 'username' => [
if (!$data){ 'filter' => [
return null; 'class' => \Itguild\Tables\Filter\InputTextFilter::class
} ]
],
return (new DateTimeImmutable($data))->format("d-m-Y"); 'created_at' => [
}, 'format' => 'date:d-m-Y',
'filter' => [
'class' => \Itguild\Tables\Filter\InputDateFilter::class
]
],
'updated_at' => function ($data) { 'updated_at' => function ($data) {
if (!$data){ if (!$data){
return null; return null;

View File

@ -4,6 +4,7 @@ namespace Itguild\EloquentTable;
use Exception; use Exception;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use itguild\forms\debug\Debug;
class EloquentDataProvider class EloquentDataProvider
{ {
@ -19,6 +20,7 @@ class EloquentDataProvider
protected array $options = []; protected array $options = [];
protected array $meta = []; protected array $meta = [];
protected array $filters = [];
protected string $jsonStr = ''; protected string $jsonStr = '';
/** /**
@ -46,10 +48,9 @@ class EloquentDataProvider
$this->meta['baseUrl'] = $options['baseUrl'] ?? $model->table; $this->meta['baseUrl'] = $options['baseUrl'] ?? $model->table;
$this->meta['params'] = $options['params'] ?? []; $this->meta['params'] = $options['params'] ?? [];
$this->meta['actions'] = $options['actions'] ?? []; $this->meta['actions'] = $options['actions'] ?? [];
$this->filters = $options['filters'] ?? [];
$this->createQuery(); $this->createQuery();
$this->jsonStr = (new JSONCreator($this->meta, $this->getCollection()->toArray(), $this->filters,))->getJson();
$this->jsonStr = (new JSONCreator($this->meta, $this->getCollection()->toArray()))->getJson();
} }
public function createQuery(): void public function createQuery(): void

View File

@ -7,12 +7,13 @@ class JSONCreator
{ {
protected array $informationArray = []; protected array $informationArray = [];
public function __construct(array $meta, array $data) public function __construct(array $meta, array $data, array $filters = [])
{ {
$params = empty($meta['params']) ? ["class" => "table table-bordered", "border" => "1"] : $meta['params']; $params = empty($meta['params']) ? ["class" => "table table-bordered", "border" => "1"] : $meta['params'];
if ($meta) { if ($meta) {
$this->informationArray = [ $this->informationArray = [
"meta" => $meta, "meta" => $meta,
"filters" => $filters,
"data" => $data ?? [] "data" => $data ?? []
]; ];
} }