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