[filterOrder] show selected picked users in the results boxes

This commit is contained in:
Julien Fastré 2023-07-13 17:36:05 +02:00
parent ea0e5dfa14
commit c0901947ca
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
3 changed files with 13 additions and 0 deletions

View File

@ -11,6 +11,7 @@ declare(strict_types=1);
namespace Chill\MainBundle\Templating\Listing; namespace Chill\MainBundle\Templating\Listing;
use Chill\MainBundle\Templating\Entity\UserRender;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
use Symfony\Component\PropertyAccess\PropertyPathInterface; use Symfony\Component\PropertyAccess\PropertyPathInterface;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
@ -20,6 +21,7 @@ final readonly class FilterOrderGetActiveFilterHelper
public function __construct( public function __construct(
private TranslatorInterface $translator, private TranslatorInterface $translator,
private PropertyAccessorInterface $propertyAccessor, private PropertyAccessorInterface $propertyAccessor,
private UserRender $userRender,
) { ) {
} }
@ -73,6 +75,12 @@ final readonly class FilterOrderGetActiveFilterHelper
} }
} }
foreach ($filterOrderHelper->getUserPickers() as $name => ['label' => $label, 'options' => $options]) {
foreach ($filterOrderHelper->getUserPickerData($name) as $user) {
$result[] = ['value' => $this->userRender->renderString($user, []), 'label' => (string) $label, 'position' => FilterOrderPositionEnum::UserPicker->value, 'name' => $name];
}
}
foreach ($filterOrderHelper->getSingleCheckbox() as $name => ['label' => $label]) { foreach ($filterOrderHelper->getSingleCheckbox() as $name => ['label' => $label]) {
if (true === $filterOrderHelper->getSingleCheckboxData($name)) { if (true === $filterOrderHelper->getSingleCheckboxData($name)) {
$result[] = ['label' => '', 'value' => $this->translator->trans($label), 'position' => FilterOrderPositionEnum::SingleCheckbox->value, 'name' => $name]; $result[] = ['label' => '', 'value' => $this->translator->trans($label), 'position' => FilterOrderPositionEnum::SingleCheckbox->value, 'name' => $name];

View File

@ -11,6 +11,7 @@ declare(strict_types=1);
namespace Chill\MainBundle\Templating\Listing; namespace Chill\MainBundle\Templating\Listing;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Form\Type\Listing\FilterOrderType; use Chill\MainBundle\Form\Type\Listing\FilterOrderType;
use DateTimeImmutable; use DateTimeImmutable;
use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\FormType;
@ -134,6 +135,9 @@ final class FilterOrderHelper
return $this->userPickers; return $this->userPickers;
} }
/**
* @return list<User>
*/
public function getUserPickerData(string $name): array public function getUserPickerData(string $name): array
{ {
return $this->getFormData()['user_pickers'][$name]; return $this->getFormData()['user_pickers'][$name];

View File

@ -18,4 +18,5 @@ enum FilterOrderPositionEnum: string
case DateRange = 'date_range'; case DateRange = 'date_range';
case EntityChoice = 'entity_choice'; case EntityChoice = 'entity_choice';
case SingleCheckbox = 'single_checkbox'; case SingleCheckbox = 'single_checkbox';
case UserPicker = 'user_picker';
} }