From 477788658bea1badc4c66f1782d4c11ec910623d Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 7 Aug 2018 20:47:05 +0200 Subject: [PATCH] Recurring transactions support pagination. --- app/Http/Controllers/Recurring/IndexController.php | 13 ++++++++++--- resources/views/recurring/index.twig | 10 +++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Recurring/IndexController.php b/app/Http/Controllers/Recurring/IndexController.php index 4aceec0e57..a939b63a46 100644 --- a/app/Http/Controllers/Recurring/IndexController.php +++ b/app/Http/Controllers/Recurring/IndexController.php @@ -31,6 +31,8 @@ use FireflyIII\Models\Recurrence; use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use FireflyIII\Transformers\RecurrenceTransformer; use Illuminate\Http\Request; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Collection; use Symfony\Component\HttpFoundation\ParameterBag; /** @@ -77,19 +79,24 @@ class IndexController extends Controller $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; $collection = $this->recurring->get(); + // split collection + $total = $collection->count(); + /** @var Collection $recurrences */ + $recurrences = $collection->slice(($page - 1) * $pageSize, $pageSize); $transformer = new RecurrenceTransformer(new ParameterBag); $recurring = []; /** @var Recurrence $recurrence */ - foreach ($collection as $recurrence) { + foreach ($recurrences as $recurrence) { $array = $transformer->transform($recurrence); $array['first_date'] = new Carbon($array['first_date']); $array['repeat_until'] = null === $array['repeat_until'] ? null : new Carbon($array['repeat_until']); $array['latest_date'] = null === $array['latest_date'] ? null : new Carbon($array['latest_date']); $recurring[] = $array; } - - return view('recurring.index', compact('recurring', 'page', 'pageSize')); + $paginator = new LengthAwarePaginator($recurring, $total, $pageSize, $page); + $paginator->setPath(route('recurring.index')); + return view('recurring.index', compact('paginator', 'page', 'pageSize','total')); } /** diff --git a/resources/views/recurring/index.twig b/resources/views/recurring/index.twig index 03fa6e5476..a8b5495492 100644 --- a/resources/views/recurring/index.twig +++ b/resources/views/recurring/index.twig @@ -6,7 +6,7 @@ {% block content %} - {% if recurring|length > 0 %} + {% if total > 0 %}
@@ -32,7 +32,7 @@
- {{ recurring.render|raw }} + {{ paginator.render|raw }}
@@ -44,7 +44,7 @@ - {% for rt in recurring %} + {% for rt in paginator %}
- {{ recurring.render|raw }} + {{ paginator.render|raw }}