From 1114538f4138a977a9e10cb2664ee97429a41e7c Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Thu, 24 Oct 2019 23:46:22 +0200 Subject: [PATCH] duration field in timesheet edit dialog (#1180) --- config/serializer/App/Entity.Project.yml | 5 +- src/Form/TimesheetEditForm.php | 13 ++ src/Invoice/Renderer/RendererTrait.php | 1 + templates/default/_form.html.twig | 6 +- templates/default/_form_delete.html.twig | 4 +- templates/default/_form_modal.html.twig | 57 ++++-- templates/embeds/modal.html.twig | 5 + templates/form/kimai-theme.html.twig | 15 +- templates/timesheet/edit.html.twig | 175 ++++++++++++++++++- tests/API/ProjectControllerTest.php | 2 +- tests/Invoice/Renderer/DebugRendererTest.php | 1 + 11 files changed, 259 insertions(+), 25 deletions(-) diff --git a/config/serializer/App/Entity.Project.yml b/config/serializer/App/Entity.Project.yml index d997ec7c..bad4b1f5 100644 --- a/config/serializer/App/Entity.Project.yml +++ b/config/serializer/App/Entity.Project.yml @@ -1,6 +1,6 @@ App\Entity\Project: exclusion_policy: All - custom_accessor_order: [id, name, comment, visible, orderNumber, customer, fixedRate, hourlyRate, color, budget, timeBudget, metaFields] + custom_accessor_order: [id, name, comment, visible, orderNumber, orderDate, customer, fixedRate, hourlyRate, color, budget, timeBudget, metaFields] properties: id: include: true @@ -20,6 +20,9 @@ App\Entity\Project: orderNumber: include: true groups: [Entity] + orderDate: + include: true + groups: [Entity] fixedRate: include: true groups: [Project] diff --git a/src/Form/TimesheetEditForm.php b/src/Form/TimesheetEditForm.php index bb9edaf7..b0486450 100644 --- a/src/Form/TimesheetEditForm.php +++ b/src/Form/TimesheetEditForm.php @@ -127,6 +127,16 @@ class TimesheetEditForm extends AbstractType $this->addEnd($builder, $dateTimeOptions); } + if ($options['allow_begin_datetime'] && $options['allow_end_datetime']) { + $builder->add('duration', DurationType::class, [ + 'required' => false, + 'attr' => [ + 'placeholder' => '00:00', + 'pattern' => '[0-9]{2,3}:[0-9]{2}' + ] + ]); + } + if ($this->showCustomer($options, $isNew, $customerCount)) { $this->addCustomer($builder, $customer); } @@ -326,6 +336,9 @@ class TimesheetEditForm extends AbstractType ->add('description', TextareaType::class, [ 'label' => 'label.description', 'required' => false, + 'attr' => [ + 'autofocus' => 'autofocus' + ] ]); } diff --git a/src/Invoice/Renderer/RendererTrait.php b/src/Invoice/Renderer/RendererTrait.php index 2ebf63e3..93a4af05 100644 --- a/src/Invoice/Renderer/RendererTrait.php +++ b/src/Invoice/Renderer/RendererTrait.php @@ -140,6 +140,7 @@ trait RendererTrait 'project.name' => $project->getName(), 'project.comment' => $project->getComment(), 'project.order_number' => $project->getOrderNumber(), + 'project.order_date' => null !== $project->getOrderDate() ? $this->getFormattedDateTime($project->getOrderDate()) : '', 'project.fixed_rate' => $project->getFixedRate(), 'project.hourly_rate' => $project->getHourlyRate(), ]); diff --git a/templates/default/_form.html.twig b/templates/default/_form.html.twig index 592d3fea..b9417f75 100644 --- a/templates/default/_form.html.twig +++ b/templates/default/_form.html.twig @@ -2,6 +2,7 @@ {% form_theme form form_theme %} {% endif %}
+ {% block form_before %}{% endblock %} {{ form_start(form) }}

@@ -12,7 +13,9 @@

- {{ form_widget(form) }} + {% block form_body %} + {{ form_widget(form) }} + {% endblock %}
{{ form_end(form) }} + {% block form_after %}{% endblock %}
\ No newline at end of file diff --git a/templates/default/_form_delete.html.twig b/templates/default/_form_delete.html.twig index 67c718ed..42e51523 100644 --- a/templates/default/_form_delete.html.twig +++ b/templates/default/_form_delete.html.twig @@ -7,7 +7,9 @@ {{ form_start(form) }}
- {{ form_widget(form) }} + {% block form_body %} + {{ form_widget(form) }} + {% endblock %}