From 7c3a08057d911db7b8948ff7d9b44c774bbf26c7 Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Sat, 27 Aug 2022 17:11:48 +0200 Subject: [PATCH] Order quick entries by project name (#3488) --- src/Controller/QuickEntryController.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Controller/QuickEntryController.php b/src/Controller/QuickEntryController.php index 20cd6f72..0efd95b2 100644 --- a/src/Controller/QuickEntryController.php +++ b/src/Controller/QuickEntryController.php @@ -120,6 +120,7 @@ class QuickEntryController extends AbstractController $beginTime = $this->configuration->getTimesheetDefaultBeginTime(); + // fill all rows and columns to make sure we do not have missing records /** @var QuickEntryModel[] $models */ $models = []; foreach ($rows as $id => $row) { @@ -168,6 +169,9 @@ class QuickEntryController extends AbstractController } } + // sort rows by projects - make it configurable in the future + uasort($models, [$this, 'sortByProjectName']); + $formModel = new QuickEntryWeek($startWeek, $models); $form = $this->createForm(QuickEntryForm::class, $formModel, [ @@ -225,8 +229,19 @@ class QuickEntryController extends AbstractController return $this->render('quick-entry/index.html.twig', [ 'days' => $week, - 'week' => $rows, 'form' => $form->createView(), ]); } + + private function sortByProjectName(QuickEntryModel $a, QuickEntryModel $b): int + { + $aName = $a->getProject() !== null ? $a->getProject()->getName() : null; + $bName = $b->getProject() !== null ? $b->getProject()->getName() : null; + + if ($aName === null || $bName === null) { + return -1; + } + + return strcmp($aName, $bName); + } }