From 1a3d66213b63be5bebeda47eed81afa092dc9b65 Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Wed, 15 Mar 2023 09:37:28 +0100 Subject: [PATCH] FIX [review] implement changes based on review --- .../Form/Type/PickUserDynamicType.php | 11 +++++++++-- .../public/module/pick-entity/index.js | 19 +++++++++++-------- .../public/vuejs/PickEntity/PickEntity.vue | 14 +++++--------- .../Resources/views/Form/fields.html.twig | 6 +++++- .../Form/Type/PickPersonDynamicType.php | 13 ++++++++++--- .../Form/Type/PickThirdpartyDynamicType.php | 11 +++++++++-- 6 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php b/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php index 6bfd95fe8..de54d071a 100644 --- a/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php +++ b/src/Bundle/ChillMainBundle/Form/Type/PickUserDynamicType.php @@ -19,6 +19,7 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; /** @@ -28,12 +29,15 @@ class PickUserDynamicType extends AbstractType { private DenormalizerInterface $denormalizer; + private NormalizerInterface $normalizer; + private SerializerInterface $serializer; - public function __construct(DenormalizerInterface $denormalizer, SerializerInterface $serializer) + public function __construct(DenormalizerInterface $denormalizer, SerializerInterface $serializer, NormalizerInterface $normalizer) { $this->denormalizer = $denormalizer; $this->serializer = $serializer; + $this->normalizer = $normalizer; } public function buildForm(FormBuilderInterface $builder, array $options) @@ -46,7 +50,10 @@ class PickUserDynamicType extends AbstractType $view->vars['multiple'] = $options['multiple']; $view->vars['types'] = ['user']; $view->vars['uniqid'] = uniqid('pick_user_dyn'); - $view->vars['suggested'] = $this->serializer->serialize($options['suggested'], 'json', ['groups' => 'read']); + + foreach ($options['suggested'] as $user) { + $view->vars['suggested'][spl_object_hash($user)] = $this->normalizer->normalize($user, 'json', ['groups' => 'read']); + } } public function configureOptions(OptionsResolver $resolver) diff --git a/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js b/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js index 41330c186..ce9c66145 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js +++ b/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js @@ -23,12 +23,7 @@ function loadDynamicPicker(element) { (input.value === '[]' || input.value === '') ? null : [ JSON.parse(input.value) ] ) - suggested = JSON.parse('[' + el.dataset.suggested + ']'); - // suggested = suggested[0]; - - console.log(typeof suggested) - // console.log(el.dataset.suggested) - console.log('suggested', typeof suggested[0]) + suggested = JSON.parse(el.dataset.suggested); if (!isMultiple) { if (input.value === '[]'){ @@ -58,13 +53,18 @@ function loadDynamicPicker(element) { } }, methods: { - addNewEntity(entity) { + addNewEntity({entity, isSuggested = false}) { if (this.multiple) { if (!this.picked.some(el => { return el.type === entity.type && el.id === entity.id; })) { this.picked.push(entity); input.value = JSON.stringify(this.picked); + console.log(entity) + if (isSuggested) { + const indexToRemove = this.suggested.findIndex(e => e.id === entity.id) + this.suggested.splice(indexToRemove, 1); + } } } else { if (!this.picked.some(el => { @@ -76,9 +76,12 @@ function loadDynamicPicker(element) { } } }, - removeEntity(entity) { + removeEntity({entity, isSuggested = false}) { this.picked = this.picked.filter(e => !(e.type === entity.type && e.id === entity.id)); input.value = JSON.stringify(this.picked); + if (isSuggested) { + this.suggested.push(entity); + } }, } }) diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/PickEntity.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/PickEntity.vue index 23a904b14..7d6d0bd83 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/PickEntity.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/PickEntity.vue @@ -17,8 +17,7 @@ -