From 3b007b877446cbb748612bc7dbd3e723949df82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barto=C5=A1?= Date: Tue, 14 Feb 2023 04:51:34 +0100 Subject: [PATCH 1/2] DataGrid: ColumnOrder enum instead of constants --- src/UI/DataGrid/Column.php | 15 +++++++-------- src/UI/DataGrid/ColumnOrder.php | 12 ++++++++++++ src/UI/DataGrid/DataGrid.latte | 2 +- src/UI/DataGrid/DataGrid.php | 6 +----- src/UI/DataGrid/OrderParameter.php | 23 ++++++++--------------- 5 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 src/UI/DataGrid/ColumnOrder.php diff --git a/src/UI/DataGrid/Column.php b/src/UI/DataGrid/Column.php index 893fb4a..d3dd003 100644 --- a/src/UI/DataGrid/Column.php +++ b/src/UI/DataGrid/Column.php @@ -12,10 +12,9 @@ public function __construct(public string $name, public string $label, private D } /** - * @phpstan-param DataGrid::Order*|null $defaultOrder * @return $this */ - public function enableSort(string|null $defaultOrder = null): self + public function enableSort(ColumnOrder|null $defaultOrder = null): self { $this->sort = true; if ($defaultOrder !== null) { @@ -31,27 +30,27 @@ public function canSort(): bool return $this->sort; } - public function getNewState(): string + public function getNewState(): ColumnOrder|null { if ($this->isAsc()) { - return DataGrid::OrderDesc; + return ColumnOrder::Desc; } if ($this->isDesc()) { - return ''; + return null; } - return DataGrid::OrderAsc; + return ColumnOrder::Asc; } public function isAsc(): bool { - return $this->grid->orderColumn === $this->name && $this->grid->orderType === DataGrid::OrderAsc; + return $this->grid->orderColumn === $this->name && $this->grid->orderType === ColumnOrder::Asc; } public function isDesc(): bool { - return $this->grid->orderColumn === $this->name && $this->grid->orderType === DataGrid::OrderDesc; + return $this->grid->orderColumn === $this->name && $this->grid->orderType === ColumnOrder::Desc; } } diff --git a/src/UI/DataGrid/ColumnOrder.php b/src/UI/DataGrid/ColumnOrder.php new file mode 100644 index 0000000..54b3b78 --- /dev/null +++ b/src/UI/DataGrid/ColumnOrder.php @@ -0,0 +1,12 @@ + {$column->label} diff --git a/src/UI/DataGrid/DataGrid.php b/src/UI/DataGrid/DataGrid.php index d055b1b..596b20c 100644 --- a/src/UI/DataGrid/DataGrid.php +++ b/src/UI/DataGrid/DataGrid.php @@ -27,9 +27,6 @@ final class DataGrid extends BaseControl { - public const OrderAsc = 'asc', - OrderDesc = 'desc'; - public const TemplatePath = __DIR__ . '/DataGrid.latte'; /** @var array */ @@ -39,9 +36,8 @@ final class DataGrid extends BaseControl #[Persistent] public string|null $orderColumn = null; - /** @var self::Order* */ #[Persistent] - public string $orderType = self::OrderAsc; + public ColumnOrder $orderType = ColumnOrder::Asc; /** @var int<1, max> */ #[Persistent] diff --git a/src/UI/DataGrid/OrderParameter.php b/src/UI/DataGrid/OrderParameter.php index dfbfa43..ebc73bd 100644 --- a/src/UI/DataGrid/OrderParameter.php +++ b/src/UI/DataGrid/OrderParameter.php @@ -5,15 +5,11 @@ final class OrderParameter { - /** @phpstan-var DataGrid::Order* */ - private string $direction; - - /** - * @phpstan-param DataGrid::Order* $direction - */ - public function __construct(private readonly string $column, string $direction) + public function __construct( + private readonly string $column, + private readonly ColumnOrder $order, + ) { - $this->direction = $direction; } public function getColumn(): string @@ -21,22 +17,19 @@ public function getColumn(): string return $this->column; } - /** - * @phpstan-return DataGrid::Order* - */ - public function getDirection(): string + public function getOrder(): ColumnOrder { - return $this->direction; + return $this->order; } public function isAsc(): bool { - return $this->direction === DataGrid::OrderAsc; + return $this->order === ColumnOrder::Asc; } public function isDesc(): bool { - return $this->direction === DataGrid::OrderDesc; + return $this->order === ColumnOrder::Desc; } } From 6fdfe75f4e1c30075a7477c83457f335e93ae226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barto=C5=A1?= Date: Tue, 14 Feb 2023 05:25:03 +0100 Subject: [PATCH 2/2] wip --- src/UI/DataGrid/Column.php | 4 ++-- src/UI/DataGrid/ColumnOrder.php | 2 ++ src/UI/DataGrid/DataGrid.latte | 2 +- src/UI/DataGrid/DataGrid.php | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/UI/DataGrid/Column.php b/src/UI/DataGrid/Column.php index d3dd003..29120f4 100644 --- a/src/UI/DataGrid/Column.php +++ b/src/UI/DataGrid/Column.php @@ -30,14 +30,14 @@ public function canSort(): bool return $this->sort; } - public function getNewState(): ColumnOrder|null + public function getNewState(): ColumnOrder { if ($this->isAsc()) { return ColumnOrder::Desc; } if ($this->isDesc()) { - return null; + return ColumnOrder::Undefined; } return ColumnOrder::Asc; diff --git a/src/UI/DataGrid/ColumnOrder.php b/src/UI/DataGrid/ColumnOrder.php index 54b3b78..e522c39 100644 --- a/src/UI/DataGrid/ColumnOrder.php +++ b/src/UI/DataGrid/ColumnOrder.php @@ -9,4 +9,6 @@ enum ColumnOrder: string case Desc = 'desc'; + case Undefined = 'undefined'; + } diff --git a/src/UI/DataGrid/DataGrid.latte b/src/UI/DataGrid/DataGrid.latte index bf14d24..18431fd 100644 --- a/src/UI/DataGrid/DataGrid.latte +++ b/src/UI/DataGrid/DataGrid.latte @@ -98,7 +98,7 @@ {$column->label} diff --git a/src/UI/DataGrid/DataGrid.php b/src/UI/DataGrid/DataGrid.php index 596b20c..e50e3a3 100644 --- a/src/UI/DataGrid/DataGrid.php +++ b/src/UI/DataGrid/DataGrid.php @@ -37,7 +37,7 @@ final class DataGrid extends BaseControl public string|null $orderColumn = null; #[Persistent] - public ColumnOrder $orderType = ColumnOrder::Asc; + public ColumnOrder $orderType = ColumnOrder::Undefined; /** @var int<1, max> */ #[Persistent]