|
8 | 8 | use Matronator\Generator\FileObject;
|
9 | 9 | use Nette\PhpGenerator\PhpFile;
|
10 | 10 |
|
11 |
| -class FormControl |
| 11 | +class DataGridControl |
12 | 12 | {
|
13 | 13 | public const DIR_PATH = 'app/ui/Control/';
|
14 | 14 |
|
15 |
| - public static function generate(string $name, ?string $entity = null): FileObject |
| 15 | + public static function generate(string $name, string $entity): FileObject |
16 | 16 | {
|
17 | 17 | $file = new PhpFile;
|
18 | 18 |
|
19 | 19 | $file->setStrictTypes();
|
20 | 20 |
|
21 |
| - $namespace = $file->addNamespace('App\UI\Control' . ($entity ? "\\$entity" : '')); |
22 |
| - if ($entity) { |
23 |
| - $namespace->addUse('App\Model\Database\Entity\\'.$entity); |
24 |
| - $namespace->addUse('App\Model\Database\Repository\\'.$entity.'Repository'); |
25 |
| - $namespace->addUse('App\Model\Database\Facade\\'.$entity.'Facade'); |
26 |
| - } |
27 |
| - $namespace->addUse(self::getFullClass($name, $entity)); |
28 |
| - $namespace->addUse(self::getFullClass($name, $entity, true)); |
| 21 | + $namespace = $file->addNamespace('App\UI\Control' . "\\$entity"); |
| 22 | + $namespace->addUse('App\Model\Database\Facade\\'.$entity.'Facade'); |
29 | 23 | $namespace->addUse('App\UI\Control\BaseControl');
|
30 | 24 | $namespace->addUse('Ublaboo\DataGrid\DataGrid');
|
31 | 25 |
|
32 | 26 | $class = $namespace->addClass($name.'DataGridControl')
|
33 |
| - ->setExtends('App\UI\Control\BaseControl'); |
| 27 | + ->setExtends('App\UI\Control\BaseControl') |
| 28 | + ->setFinal(); |
34 | 29 |
|
35 |
| - if ($entity) { |
36 |
| - $class->addProperty(lcfirst($entity.'Facade')) |
37 |
| - ->setType('App\Model\Database\Facade\\'.$entity.'Facade') |
38 |
| - ->addComment("@var {$entity}Facade @inject"); |
39 |
| - } |
| 30 | + $class->addProperty(lcfirst($entity.'Facade')) |
| 31 | + ->setType('App\Model\Database\Facade\\'.$entity.'Facade') |
| 32 | + ->addComment("@var {$entity}Facade @inject"); |
40 | 33 |
|
41 |
| - $class->addMethod('createComponent'.$name.'DataGrid') |
| 34 | + $class->addMethod('createComponent'.ucfirst($name).'DataGrid') |
42 | 35 | ->setReturnType('Ublaboo\DataGrid\DataGrid')
|
43 |
| - ->addBody('$this->'.lcfirst($name).'Form = $this->'.lcfirst($name).'FormFactory->create();') |
44 |
| - ->addBody('$this->'.lcfirst($name).'Form->onValidate[] = [$this, \'validate'.$name.'Form\'];') |
45 |
| - ->addBody('$this->'.lcfirst($name).'Form->onSuccess[] = [$this, \'process'.$name.'Form\'];') |
46 |
| - ->addBody('return $this->'.lcfirst($name).'Form;') |
| 36 | + ->addBody('$dataset = $this->'.lcfirst($entity).'Facade->'.lcfirst($entity).'Repository->findAllForDataGrid();') |
| 37 | + ->addBody('') |
| 38 | + ->addBody('$grid = new DataGrid();') |
| 39 | + ->addBody('$this->addComponent($grid, $name);') |
| 40 | + ->addBody('$grid->setTranslator($this->translator);') |
| 41 | + ->addBody('$grid->setDataSource($dataset);') |
| 42 | + ->addBody('$grid->setStrictSessionFilterValues(false);') |
| 43 | + ->addBody('') |
| 44 | + ->addBody("\$grid->addColumnNumber('id', 'ID', 'id')") |
| 45 | + ->addBody(' ->setSortable()') |
| 46 | + ->addBody(' ->setFilterText();') |
| 47 | + ->addBody('') |
| 48 | + ->addBody('return $grid;') |
47 | 49 | ->addParameter('name')
|
48 | 50 | ->setType('string');
|
49 | 51 |
|
50 |
| - $validateMethod = $class->addMethod('validate'.$name.'Form') |
51 |
| - ->setReturnType('void'); |
52 |
| - $validateMethod->addParameter('form') |
53 |
| - ->setType(self::getFullClass($name, $entity)); |
54 |
| - $validateMethod->addParameter('values') |
55 |
| - ->setType('array'); |
56 |
| - |
57 |
| - $successMethod = $class->addMethod('process'.$name.'Form') |
58 |
| - ->setReturnType('void') |
59 |
| - ->addBody('$this->onSuccess();'); |
60 |
| - $successMethod->addParameter('form') |
61 |
| - ->setType(self::getFullClass($name, $entity)); |
62 |
| - $successMethod->addParameter('values') |
63 |
| - ->setType('array'); |
64 |
| - |
65 | 52 | $class->addMethod('render')
|
66 | 53 | ->setReturnType('void')
|
67 |
| - ->addBody('$this->template->setTranslator($this->translator);') |
68 |
| - ->addBody('$this->template->setFile(dirname($this->getReflection()->getFileName()) . \'/templates/'.lcfirst($name).'FormControl.latte\');') |
| 54 | + ->addBody('$this->template->setFile(dirname(self::getReflection()->getFileName()) . \'/templates/'.lcfirst($name).'DataGridControl.latte\');') |
69 | 55 | ->addBody('$this->template->render();');
|
70 | 56 |
|
71 |
| - return new FileObject(self::DIR_PATH . ($entity ? "$entity/" : ''), $name.'FormControl', $file, $entity); |
| 57 | + return new FileObject(self::DIR_PATH . "$entity/", $name.'DataGridControl', $file, $entity); |
72 | 58 | }
|
73 | 59 |
|
74 | 60 | public static function generateTemplate(string $name, ?string $entity = null): void
|
75 | 61 | {
|
76 |
| - $dir = self::DIR_PATH.($entity ? "$entity/" : '/').'templates/'; |
| 62 | + $dir = self::DIR_PATH."$entity/templates/"; |
77 | 63 | if (!FileGenerator::folderExist($dir)) {
|
78 | 64 | mkdir($dir, 0777, true);
|
79 | 65 | }
|
80 | 66 |
|
81 |
| - file_put_contents($dir . lcfirst($name.'FormControl.latte'), '{form ' . lcfirst($name.'Form') . '}'.PHP_EOL.'{/form}'.PHP_EOL); |
82 |
| - } |
83 |
| - |
84 |
| - private static function getFullClass(string $name, string $entity = null) |
85 |
| - { |
86 |
| - return 'App\UI\Control'.($entity ? "\\$entity\\" : '\\').ucfirst($name).'DataGridControl'; |
| 67 | + file_put_contents($dir . lcfirst($name.'DataGridControl.latte'), '{control ' . lcfirst($name.'DataGrid') . '}'.PHP_EOL); |
87 | 68 | }
|
88 | 69 | }
|
0 commit comments