From 4020aab0495247733fe00908d4cb2ee398c5fdc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 9 Sep 2022 00:10:29 +0200 Subject: [PATCH] Improved bool columns for Part Tables --- src/DataTables/Column/PrettyBoolColumn.php | 49 ++++++++++++++++++++++ src/DataTables/PartsDataTable.php | 11 ++--- 2 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 src/DataTables/Column/PrettyBoolColumn.php diff --git a/src/DataTables/Column/PrettyBoolColumn.php b/src/DataTables/Column/PrettyBoolColumn.php new file mode 100644 index 00000000..da6af1c4 --- /dev/null +++ b/src/DataTables/Column/PrettyBoolColumn.php @@ -0,0 +1,49 @@ +translator = $translator; + } + + public function normalize($value): ?bool + { + if (null === $value) { + return null; + } + + return (bool) $value; + } + + public function render($value, $context) + { + if ($value === true) { + return ' ' + . $this->translator->trans('bool.true') + . ''; + } + + if ($value === false) { + return ' ' + . $this->translator->trans('bool.false') + . ''; + } + + if ($value === null) { + return ' ' + . $this->translator->trans('bool.unknown') + . ''; + } + + throw new \RuntimeException('Unexpected value!'); + } +} \ No newline at end of file diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index 4f06bc82..bdfb33af 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -47,6 +47,7 @@ use App\DataTables\Column\IconLinkColumn; use App\DataTables\Column\LocaleDateTimeColumn; use App\DataTables\Column\MarkdownColumn; use App\DataTables\Column\PartAttachmentsColumn; +use App\DataTables\Column\PrettyBoolColumn; use App\DataTables\Column\TagsColumn; use App\DataTables\Filters\PartFilter; use App\Entity\Parts\Category; @@ -255,18 +256,12 @@ final class PartsDataTable implements DataTableTypeInterface 'label' => $this->translator->trans('part.table.lastModified'), 'visible' => false, ]) - ->add('needs_review', BoolColumn::class, [ + ->add('needs_review', PrettyBoolColumn::class, [ 'label' => $this->translator->trans('part.table.needsReview'), - 'trueValue' => $this->translator->trans('true'), - 'falseValue' => $this->translator->trans('false'), - 'nullValue' => '', 'visible' => false, ]) - ->add('favorite', BoolColumn::class, [ + ->add('favorite', PrettyBoolColumn::class, [ 'label' => $this->translator->trans('part.table.favorite'), - 'trueValue' => $this->translator->trans('true'), - 'falseValue' => $this->translator->trans('false'), - 'nullValue' => '', 'visible' => false, ]) ->add('manufacturing_status', MapColumn::class, [