From d18ee704b8df69e307dac57b8420f5e2202e57bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 11 Sep 2022 18:57:48 +0200 Subject: [PATCH] Allow to filter logs by user who caused them --- src/Form/Filters/AttachmentFilterType.php | 3 +- .../Constraints/UserEntityConstraintType.php | 59 +++++++++++++++++++ src/Form/Filters/LogFilterType.php | 3 +- src/Form/Filters/PartFilterType.php | 16 ++--- templates/Form/FilterTypesLayout.html.twig | 4 ++ templates/LogSystem/log_list.html.twig | 1 + 6 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/Form/Filters/Constraints/UserEntityConstraintType.php diff --git a/src/Form/Filters/AttachmentFilterType.php b/src/Form/Filters/AttachmentFilterType.php index 69325b8d..788e57b5 100644 --- a/src/Form/Filters/AttachmentFilterType.php +++ b/src/Form/Filters/AttachmentFilterType.php @@ -23,6 +23,7 @@ use App\Form\Filters\Constraints\BooleanConstraintType; use App\Form\Filters\Constraints\DateTimeConstraintType; use App\Form\Filters\Constraints\InstanceOfConstraintType; use App\Form\Filters\Constraints\NumberConstraintType; +use App\Form\Filters\Constraints\StructuralEntityConstraintType; use App\Form\Filters\Constraints\UserEntityConstraintType; use App\Form\Filters\Constraints\TextConstraintType; use Symfony\Component\Form\AbstractType; @@ -73,7 +74,7 @@ class AttachmentFilterType extends AbstractType ] ]); - $builder->add('attachmentType', UserEntityConstraintType::class, [ + $builder->add('attachmentType', StructuralEntityConstraintType::class, [ 'label' => 'attachment.attachment_type', 'entity_class' => AttachmentType::class ]); diff --git a/src/Form/Filters/Constraints/UserEntityConstraintType.php b/src/Form/Filters/Constraints/UserEntityConstraintType.php new file mode 100644 index 00000000..048204ad --- /dev/null +++ b/src/Form/Filters/Constraints/UserEntityConstraintType.php @@ -0,0 +1,59 @@ +setDefaults([ + 'compound' => true, + 'data_class' => EntityConstraint::class, + 'text_suffix' => '', // An suffix which is attached as text-append to the input group. This can for example be used for units + ]); + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $choices = [ + '' => '', + 'filter.entity_constraint.operator.EQ' => '=', + 'filter.entity_constraint.operator.NEQ' => '!=', + ]; + + $builder->add('value', EntityType::class, [ + 'class' => User::class, + 'required' => false, + 'attr' => [ + 'data-controller' => 'elements--selectpicker', + 'data-live-search' => true, + 'title' => 'selectpicker.nothing_selected', + ] + ]); + + + $builder->add('operator', ChoiceType::class, [ + 'label' => 'filter.text_constraint.operator', + 'choices' => $choices, + 'required' => false, + ]); + } + + public function buildView(FormView $view, FormInterface $form, array $options) + { + parent::buildView($view, $form, $options); + $view->vars['text_suffix'] = $options['text_suffix']; + } +} \ No newline at end of file diff --git a/src/Form/Filters/LogFilterType.php b/src/Form/Filters/LogFilterType.php index c1f2fed3..60371a38 100644 --- a/src/Form/Filters/LogFilterType.php +++ b/src/Form/Filters/LogFilterType.php @@ -106,9 +106,8 @@ class LogFilterType extends AbstractType 'choices' => self::TARGET_TYPE_CHOICES ]); - $builder->add('user', StructuralEntityConstraintType::class, [ + $builder->add('user', UserEntityConstraintType::class, [ 'label' => 'log.user', - 'entity_class' => User::class, ]); $builder->add('targetType', ChoiceConstraintType::class, [ diff --git a/src/Form/Filters/PartFilterType.php b/src/Form/Filters/PartFilterType.php index a1b5766f..99948355 100644 --- a/src/Form/Filters/PartFilterType.php +++ b/src/Form/Filters/PartFilterType.php @@ -15,7 +15,7 @@ use App\Form\Filters\Constraints\ChoiceConstraintType; use App\Form\Filters\Constraints\DateTimeConstraintType; use App\Form\Filters\Constraints\NumberConstraintType; use App\Form\Filters\Constraints\ParameterConstraintType; -use App\Form\Filters\Constraints\UserEntityConstraintType; +use App\Form\Filters\Constraints\StructuralEntityConstraintType; use App\Form\Filters\Constraints\TagsConstraintType; use App\Form\Filters\Constraints\TextConstraintType; use Svg\Tag\Text; @@ -54,12 +54,12 @@ class PartFilterType extends AbstractType 'label' => 'part.edit.description', ]); - $builder->add('category', UserEntityConstraintType::class, [ + $builder->add('category', StructuralEntityConstraintType::class, [ 'label' => 'part.edit.category', 'entity_class' => Category::class ]); - $builder->add('footprint', UserEntityConstraintType::class, [ + $builder->add('footprint', StructuralEntityConstraintType::class, [ 'label' => 'part.edit.footprint', 'entity_class' => Footprint::class ]); @@ -96,7 +96,7 @@ class PartFilterType extends AbstractType 'min' => 0, ]); - $builder->add('measurementUnit', UserEntityConstraintType::class, [ + $builder->add('measurementUnit', StructuralEntityConstraintType::class, [ 'label' => 'part.edit.partUnit', 'entity_class' => MeasurementUnit::class ]); @@ -114,7 +114,7 @@ class PartFilterType extends AbstractType * Manufacturer tab */ - $builder->add('manufacturer', UserEntityConstraintType::class, [ + $builder->add('manufacturer', StructuralEntityConstraintType::class, [ 'label' => 'part.edit.manufacturer.label', 'entity_class' => Manufacturer::class ]); @@ -145,7 +145,7 @@ class PartFilterType extends AbstractType * Purchasee informations */ - $builder->add('supplier', UserEntityConstraintType::class, [ + $builder->add('supplier', StructuralEntityConstraintType::class, [ 'label' => 'supplier.label', 'entity_class' => Manufacturer::class ]); @@ -163,7 +163,7 @@ class PartFilterType extends AbstractType /* * Stocks tabs */ - $builder->add('storelocation', UserEntityConstraintType::class, [ + $builder->add('storelocation', StructuralEntityConstraintType::class, [ 'label' => 'storelocation.label', 'entity_class' => Storelocation::class ]); @@ -210,7 +210,7 @@ class PartFilterType extends AbstractType 'min' => 0, ]); - $builder->add('attachmentType', UserEntityConstraintType::class, [ + $builder->add('attachmentType', StructuralEntityConstraintType::class, [ 'label' => 'attachment.attachment_type', 'entity_class' => AttachmentType::class ]); diff --git a/templates/Form/FilterTypesLayout.html.twig b/templates/Form/FilterTypesLayout.html.twig index 16f93e04..2be7e55c 100644 --- a/templates/Form/FilterTypesLayout.html.twig +++ b/templates/Form/FilterTypesLayout.html.twig @@ -28,6 +28,10 @@ {{ block('text_constraint_widget') }} {% endblock %} +{% block user_entity_constraint_widget %} + {{ block('text_constraint_widget') }} +{% endblock %} + {% block date_time_constraint_widget %} {{ block('number_constraint_widget') }} {% endblock %} diff --git a/templates/LogSystem/log_list.html.twig b/templates/LogSystem/log_list.html.twig index fbe61d63..9bacfa0c 100644 --- a/templates/LogSystem/log_list.html.twig +++ b/templates/LogSystem/log_list.html.twig @@ -31,6 +31,7 @@ {{ form_row(filterForm.dbId) }} {{ form_row(filterForm.timestamp) }} {{ form_row(filterForm.eventType) }} + {{ form_row(filterForm.user) }} {{ form_row(filterForm.level) }} {{ form_row(filterForm.targetType) }} {{ form_row(filterForm.targetId) }}