weekly timesheet uses automatic billable mode, auto responsiveness (#3679)

This commit is contained in:
Kevin Papst
2022-12-07 18:44:17 +01:00
committed by GitHub
parent 58a9facc6d
commit db0e555eae
2 changed files with 14 additions and 7 deletions

View File

@@ -134,12 +134,12 @@ class QuickEntryController extends AbstractController
foreach ($row['days'] as $dayId => $day) { foreach ($row['days'] as $dayId => $day) {
if (!\array_key_exists('entry', $day)) { if (!\array_key_exists('entry', $day)) {
// fill all rows and columns to make sure we do not have missing records // fill all rows and columns to make sure we do not have missing records
$tmp = new Timesheet(); $tmp = $this->timesheetService->createNewTimesheet($user);
$tmp->setUser($user);
$tmp->setProject($row['project']); $tmp->setProject($row['project']);
$tmp->setActivity($row['activity']); $tmp->setActivity($row['activity']);
$tmp->setBegin(clone $day['day']); $tmp->setBegin(clone $day['day']);
$tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0);
$this->timesheetService->prepareNewTimesheet($tmp);
$model->addTimesheet($tmp); $model->addTimesheet($tmp);
} else { } else {
$model->addTimesheet($day['entry']); $model->addTimesheet($day['entry']);
@@ -151,10 +151,10 @@ class QuickEntryController extends AbstractController
$empty = $formModel->createRow($user); $empty = $formModel->createRow($user);
$empty->markAsPrototype(); $empty->markAsPrototype();
foreach ($week as $dayId => $day) { foreach ($week as $dayId => $day) {
$tmp = new Timesheet(); $tmp = $this->timesheetService->createNewTimesheet($user);
$tmp->setUser($user);
$tmp->setBegin(clone $day['day']); $tmp->setBegin(clone $day['day']);
$tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0);
$this->timesheetService->prepareNewTimesheet($tmp);
$empty->addTimesheet($tmp); $empty->addTimesheet($tmp);
} }
@@ -165,10 +165,10 @@ class QuickEntryController extends AbstractController
for ($a = 0; $a < $newRows; $a++) { for ($a = 0; $a < $newRows; $a++) {
$model = $formModel->addRow($user); $model = $formModel->addRow($user);
foreach ($week as $dayId => $day) { foreach ($week as $dayId => $day) {
$tmp = new Timesheet(); $tmp = $this->timesheetService->createNewTimesheet($user);
$tmp->setUser($user);
$tmp->setBegin(clone $day['day']); $tmp->setBegin(clone $day['day']);
$tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0); $tmp->getBegin()->setTime($defaultHour, $defaultMinute, 0, 0);
$this->timesheetService->prepareNewTimesheet($tmp);
$model->addTimesheet($tmp); $model->addTimesheet($tmp);
} }
} }

View File

@@ -16,7 +16,7 @@
{% block box_title %} {% block box_title %}
{{ form_widget(form.date) }} {{ form_widget(form.date) }}
{% endblock %} {% endblock %}
{% block box_body_class %}no-padding table-responsive{% endblock %} {% block box_body_class %}no-padding maybe-table-responsive{% endblock %}
{% block box_footer %} {% block box_footer %}
<input type="submit" value="{{ 'action.save'|trans }}" class="btn btn-primary" /> <input type="submit" value="{{ 'action.save'|trans }}" class="btn btn-primary" />
<button type="button" class="btn btn-success add-item-link" data-collection-prototype="{{ form.rows.vars.id }}" data-collection-holder="ts-collection"> <button type="button" class="btn btn-success add-item-link" data-collection-prototype="{{ form.rows.vars.id }}" data-collection-holder="ts-collection">
@@ -64,6 +64,13 @@
const DATES = kimai.getPlugin('date'); const DATES = kimai.getPlugin('date');
const FORMS = kimai.getPlugin('form-select'); const FORMS = kimai.getPlugin('form-select');
if (window.matchMedia("(max-width: 1000px)").matches) {
for (let dropdowns of document.querySelectorAll('tr.qe-entry-week-row .input-group-btn')) {
dropdowns.style.display = 'none';
}
document.querySelector('form[name=quick_entry_form] div.maybe-table-responsive').classList.replace('maybe-table-responsive', 'table-responsive');
}
const recalculateTotals = function(e) { const recalculateTotals = function(e) {
const allFields = document.getElementsByClassName('duration-input'); const allFields = document.getElementsByClassName('duration-input');
let totalsPerDay = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}; let totalsPerDay = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0};