From 766fa1667072105e0d6b6b52fb523382d2fb7b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kud=C4=9Blka?= Date: Sun, 14 Jul 2024 08:43:29 +0200 Subject: [PATCH 1/5] Calling static trait method is deprecated --- .../AjaxSelect/DI/AjaxSelectExtension.php | 4 +++- .../AjaxSelect/Entities/AbstractEntity.php | 4 +++- .../Interfaces/OrByIdFilterInterface.php | 9 +++++++++ .../AjaxSelect/Traits/OrByIdFilterTrait.php | 15 +++++---------- 4 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php diff --git a/src/Components/AjaxSelect/DI/AjaxSelectExtension.php b/src/Components/AjaxSelect/DI/AjaxSelectExtension.php index e625e63..449ceb4 100644 --- a/src/Components/AjaxSelect/DI/AjaxSelectExtension.php +++ b/src/Components/AjaxSelect/DI/AjaxSelectExtension.php @@ -160,7 +160,9 @@ public static function register(\Nette\DI\Container $container, $globalConfig) { // if $items are not array of values, we have received query object if ($items instanceof \ADT\BaseQuery\BaseQuery) { - AjaxSelect\Traits\OrByIdFilterTrait::applyOrByIdFilter($config, $container, $name, $items); + if ($items instanceof AjaxSelect\Interfaces\OrdByIdFilterInterface) { + $items->applyOrByIdFilter($config, $container, $name); + } if ($items->callSelectPairsAuto()) { $items->selectPairs(); diff --git a/src/Components/AjaxSelect/Entities/AbstractEntity.php b/src/Components/AjaxSelect/Entities/AbstractEntity.php index f189e99..f553543 100644 --- a/src/Components/AjaxSelect/Entities/AbstractEntity.php +++ b/src/Components/AjaxSelect/Entities/AbstractEntity.php @@ -71,7 +71,9 @@ public function areValidValues(array $values) { $this->filterQueryObject($query); - AjaxSelect\Traits\OrByIdFilterTrait::applyOrByIdFilter($this->config, $form, $control->getName(), $query); + if ($query instanceof AjaxSelect\Interfaces\OrdByIdFilterInterface) { + $query->applyOrByIdFilter($this->config, $form, $control->getName()); + } foreach ($query->fetch() as $row) { // pouze selectnuté jsou validní diff --git a/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php b/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php new file mode 100644 index 0000000..c7238ad --- /dev/null +++ b/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php @@ -0,0 +1,9 @@ +inputName is included in items. if ($config[AjaxSelect\DI\AjaxSelectExtension::CONFIG_OR_BY_ID_FILTER] && method_exists($form, 'getEntity') && !empty($form->getEntity())) { @@ -24,9 +20,8 @@ public static function applyOrByIdFilter(array $config, \Nette\Forms\Container $ } if (!empty($defaultValue)) { - $query->orById($defaultValue); + $this->orById($defaultValue); } } } - } From 34d239886b639d324712c0d4255c3d93173d5430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kud=C4=9Blka?= Date: Sun, 14 Jul 2024 08:51:11 +0200 Subject: [PATCH 2/5] fix --- src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php b/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php index c7238ad..cd49ac3 100644 --- a/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php +++ b/src/Components/AjaxSelect/Interfaces/OrByIdFilterInterface.php @@ -2,7 +2,7 @@ namespace ADT\Components\AjaxSelect\Interfaces; -interface OrdByIdFilterInterface +interface OrByIdFilterInterface { public function orById($id): static; public function applyOrByIdFilter(array $config, \Nette\Forms\Container $form, string $attributeName); From 5fcf8001a77fa1e122446ce7cda5110342aa6e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kud=C4=9Blka?= Date: Sun, 14 Jul 2024 09:38:15 +0200 Subject: [PATCH 3/5] refactorization --- .../AjaxSelect/Entities/AbstractEntity.php | 19 ++++++------------- .../Traits/AjaxServiceControlTrait.php | 2 +- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/Components/AjaxSelect/Entities/AbstractEntity.php b/src/Components/AjaxSelect/Entities/AbstractEntity.php index f553543..b8c3898 100644 --- a/src/Components/AjaxSelect/Entities/AbstractEntity.php +++ b/src/Components/AjaxSelect/Entities/AbstractEntity.php @@ -6,14 +6,16 @@ use Nette\Application\UI\Presenter; use Nette\SmartObject; -abstract class AbstractEntity { - +abstract class AbstractEntity +{ use SmartObject; const DATA_ATTRIBUTE_NAME = 'data-adt-ajax-select'; - const OPTION_QUERY = 'q'; + public abstract function formatValues($values): array; + public abstract function hydrateValues($values): array; + /** @var string */ protected $name; @@ -107,18 +109,9 @@ public function findValues($limit) { ->applyPaging(0, $limit) ->toArray(); - return array_map(function ($row) { - return $row->getId(); - }, $rows); + return $rows; } - /** - * @internal - * @param array $values - * @return array List of items. - */ - public abstract function formatValues($values); - /** * @internal * @param array $values diff --git a/src/Components/AjaxSelect/Traits/AjaxServiceControlTrait.php b/src/Components/AjaxSelect/Traits/AjaxServiceControlTrait.php index b3ed411..100d0ec 100644 --- a/src/Components/AjaxSelect/Traits/AjaxServiceControlTrait.php +++ b/src/Components/AjaxSelect/Traits/AjaxServiceControlTrait.php @@ -53,7 +53,7 @@ protected function processValues($values) { $validValues = array_merge($validValues, $invalidValues); } - $validItems = $this->getAjaxEntity()->formatValues($validValues); + $validItems = $this->getAjaxEntity()->formatValues($this->getAjaxEntity()->hydrateValues($validValues)); // add to list of valid values $this->setItems($this->getItems() + $validItems); From 45bbea05d4a807667c4f50b4fd23c4c30666b5c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kud=C4=9Blka?= Date: Sun, 14 Jul 2024 10:18:06 +0200 Subject: [PATCH 4/5] refactorization --- composer.json | 2 +- .../AjaxSelect/Entities/AbstractEntity.php | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 819a125..9afa69f 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "nette/di": "^3.0", "nette/utils": "^3.0 | ^4.0", "nette/application": "*", - "adt/base-query": "^1.7" + "adt/doctrine-components": "^2.9" }, "autoload": { "psr-4": { diff --git a/src/Components/AjaxSelect/Entities/AbstractEntity.php b/src/Components/AjaxSelect/Entities/AbstractEntity.php index b8c3898..51ccf0a 100644 --- a/src/Components/AjaxSelect/Entities/AbstractEntity.php +++ b/src/Components/AjaxSelect/Entities/AbstractEntity.php @@ -3,6 +3,7 @@ namespace ADT\Components\AjaxSelect\Entities; use ADT\Components\AjaxSelect; +use ADT\DoctrineComponents\QueryObject; use Nette\Application\UI\Presenter; use Nette\SmartObject; @@ -16,6 +17,12 @@ abstract class AbstractEntity public abstract function formatValues($values): array; public abstract function hydrateValues($values): array; + protected abstract function createQueryObject(): QueryObject; + /** + * @param \ADT\BaseQuery\BaseQuery $query + */ + protected abstract function filterQueryObject($query); + /** @var string */ protected $name; @@ -135,16 +142,6 @@ public function formatJsonValues($values) { return $result; } - /** - * @return \ADT\BaseQuery\BaseQuery freshly created QO without filters - */ - protected abstract function createQueryObject(); - - /** - * @param \ADT\BaseQuery\BaseQuery $query - */ - protected abstract function filterQueryObject($query); - /** * @param string $option * @param mixed $value From 2cc6b5d63f4c8f64c2f85ee462096286250ebd07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kud=C4=9Blka?= Date: Sun, 14 Jul 2024 21:17:13 +0200 Subject: [PATCH 5/5] refactorization --- src/Components/AjaxSelect/Entities/AbstractEntity.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Components/AjaxSelect/Entities/AbstractEntity.php b/src/Components/AjaxSelect/Entities/AbstractEntity.php index 51ccf0a..d6a8ada 100644 --- a/src/Components/AjaxSelect/Entities/AbstractEntity.php +++ b/src/Components/AjaxSelect/Entities/AbstractEntity.php @@ -18,10 +18,6 @@ public abstract function formatValues($values): array; public abstract function hydrateValues($values): array; protected abstract function createQueryObject(): QueryObject; - /** - * @param \ADT\BaseQuery\BaseQuery $query - */ - protected abstract function filterQueryObject($query); /** @var string */ protected $name; @@ -78,7 +74,9 @@ public function areValidValues(array $values) { $query = $this->createQueryObject() ->byId($values); - $this->filterQueryObject($query); + if (method_exists($this, 'filterQueryObject')) { + $this->filterQueryObject($query); + } if ($query instanceof AjaxSelect\Interfaces\OrdByIdFilterInterface) { $query->applyOrByIdFilter($this->config, $form, $control->getName());