Fix travelTime field

This commit is contained in:
Jean-Francois Monfort 2021-05-06 10:51:17 +02:00
parent 4fd13440c6
commit f836114d84

View File

@ -219,23 +219,25 @@ class ActivityType extends AbstractType
]); ]);
} }
$builder->get('durationTime') foreach (['durationTime', 'travelTime'] as $fieldName) {
->addModelTransformer($durationTimeTransformer); $builder->get($fieldName)
->addModelTransformer($durationTimeTransformer);
$builder->get('durationTime') $builder->get($fieldName)
->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $formEvent) use ( ->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $formEvent) use (
$timeChoices, $timeChoices,
$builder, $builder,
$durationTimeTransformer, $durationTimeTransformer,
$durationTimeOptions $durationTimeOptions,
$fieldName
) { ) {
// set the timezone to GMT, and fix the difference between current and GMT // set the timezone to GMT, and fix the difference between current and GMT
// the datetimetransformer will then handle timezone as GMT // the datetimetransformer will then handle timezone as GMT
$timezoneUTC = new \DateTimeZone('GMT'); $timezoneUTC = new \DateTimeZone('GMT');
/* @var $data \DateTime */ /* @var $data \DateTime */
$data = $formEvent->getData() === NULL ? $data = $formEvent->getData() === NULL ?
\DateTime::createFromFormat('U', 300) : \DateTime::createFromFormat('U', 300) :
$formEvent->getData(); $formEvent->getData();
$seconds = $data->getTimezone()->getOffset($data); $seconds = $data->getTimezone()->getOffset($data);
$data->setTimeZone($timezoneUTC); $data->setTimeZone($timezoneUTC);
$data->add(new \DateInterval('PT'.$seconds.'S')); $data->add(new \DateInterval('PT'.$seconds.'S'));
@ -245,9 +247,8 @@ class ActivityType extends AbstractType
if (!in_array($data->getTimestamp(), $timeChoices)) { if (!in_array($data->getTimestamp(), $timeChoices)) {
// the data are not in the possible values. add them // the data are not in the possible values. add them
$timeChoices[$data->format('H:i')] = $data->getTimestamp(); $timeChoices[$data->format('H:i')] = $data->getTimestamp();
$form = $builder->create('durationTime', ChoiceType::class, array_merge( $form = $builder->create($fieldName, ChoiceType::class, array_merge(
$durationTimeOptions, $durationTimeOptions, [
[
'choices' => $timeChoices, 'choices' => $timeChoices,
'auto_initialize' => false 'auto_initialize' => false
] ]
@ -255,9 +256,12 @@ class ActivityType extends AbstractType
$form->addModelTransformer($durationTimeTransformer); $form->addModelTransformer($durationTimeTransformer);
$formEvent->getForm()->getParent()->add($form->getForm()); $formEvent->getForm()->getParent()->add($form->getForm());
} }
}); });
}
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults([ $resolver->setDefaults([