From 986d7de906724e1e4fd68933897e1f9730cf2078 Mon Sep 17 00:00:00 2001
From: James Cole
Date: Thu, 28 Dec 2017 09:53:21 +0100
Subject: [PATCH] Code for #1040
---
app/Http/Controllers/BillController.php | 16 ++++++++++++----
app/Http/Controllers/BudgetController.php | 18 ++++++++++++++----
app/Http/Controllers/CategoryController.php | 15 ++++++++++++---
app/Http/Controllers/CurrencyController.php | 12 ++++++++++--
app/Http/Controllers/PiggyBankController.php | 17 ++++++++++++-----
resources/views/budgets/index.twig | 8 +++++++-
resources/views/currencies/index.twig | 20 +++++++++++++-------
resources/views/list/bills.twig | 6 ++++++
resources/views/list/categories.twig | 6 ++++++
resources/views/list/piggy-banks.twig | 6 ++++++
10 files changed, 98 insertions(+), 26 deletions(-)
diff --git a/app/Http/Controllers/BillController.php b/app/Http/Controllers/BillController.php
index 3c6b01cb5e..e867c87b95 100644
--- a/app/Http/Controllers/BillController.php
+++ b/app/Http/Controllers/BillController.php
@@ -31,6 +31,7 @@ use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use Illuminate\Http\Request;
+use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Preferences;
use URL;
@@ -167,15 +168,19 @@ class BillController extends Controller
*
* @return View
*/
- public function index(BillRepositoryInterface $repository)
+ public function index(Request $request, BillRepositoryInterface $repository)
{
/** @var Carbon $start */
$start = session('start');
/** @var Carbon $end */
- $end = session('end');
+ $end = session('end');
+ $page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
+ $pageSize = intval(Preferences::get('listPageSize', 50)->data);
+ $collection = $repository->getBills();
+ $total = $collection->count();
+ $collection = $collection->slice(($page - 1) * $pageSize, $pageSize);
- $bills = $repository->getBills();
- $bills->each(
+ $collection->each(
function (Bill $bill) use ($repository, $start, $end) {
// paid in this period?
$bill->paidDates = $repository->getPaidDatesInRange($bill, $start, $end);
@@ -188,6 +193,9 @@ class BillController extends Controller
$bill->nextExpectedMatch = $repository->nextExpectedMatch($bill, $lastPaidDate);
}
);
+ // paginate bills
+ $bills= new LengthAwarePaginator($collection, $total, $pageSize, $page);
+ $bills->setPath(route('bills.index'));
return view('bills.index', compact('bills'));
}
diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php
index b36a59c99d..50c21f95d3 100644
--- a/app/Http/Controllers/BudgetController.php
+++ b/app/Http/Controllers/BudgetController.php
@@ -35,6 +35,7 @@ use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Support\CacheProperties;
use Illuminate\Http\Request;
+use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Log;
use Preferences;
@@ -175,11 +176,13 @@ class BudgetController extends Controller
* @SuppressWarnings(PHPMD.CyclomaticComplexity) complex because of while loop
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
- public function index(string $moment = null)
+ public function index(Request $request, string $moment = null)
{
- $range = Preferences::get('viewRange', '1M')->data;
- $start = session('start', new Carbon);
- $end = session('end', new Carbon);
+ $range = Preferences::get('viewRange', '1M')->data;
+ $start = session('start', new Carbon);
+ $end = session('end', new Carbon);
+ $page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
+ $pageSize = intval(Preferences::get('listPageSize', 50)->data);
// make date if present:
if (null !== $moment || 0 !== strlen(strval($moment))) {
@@ -197,6 +200,8 @@ class BudgetController extends Controller
$prev = app('navigation')->startOfPeriod($prev, $range);
$this->repository->cleanupBudgets();
$budgets = $this->repository->getActiveBudgets();
+ $total = $budgets->count();
+ $budgets = $budgets->slice(($page - 1) * $pageSize, $pageSize);
$inactive = $this->repository->getInactiveBudgets();
$periodStart = $start->formatLocalized($this->monthAndDayFormat);
$periodEnd = $end->formatLocalized($this->monthAndDayFormat);
@@ -206,6 +211,10 @@ class BudgetController extends Controller
$spent = array_sum(array_column($budgetInformation, 'spent'));
$budgeted = array_sum(array_column($budgetInformation, 'budgeted'));
+ // paginate budgets
+ $budgets = new LengthAwarePaginator($budgets, $total, $pageSize, $page);
+ $budgets->setPath(route('budgets.index'));
+
// select thing for last 12 periods:
$previousLoop = [];
$previousDate = clone $start;
@@ -248,6 +257,7 @@ class BudgetController extends Controller
'prevText',
'periodStart',
'periodEnd',
+ 'page',
'budgetInformation',
'inactive',
'budgets',
diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php
index fbaede5e46..61f1c9980f 100644
--- a/app/Http/Controllers/CategoryController.php
+++ b/app/Http/Controllers/CategoryController.php
@@ -34,6 +34,7 @@ use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Support\CacheProperties;
use Illuminate\Http\Request;
+use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Log;
use Preferences;
@@ -136,16 +137,24 @@ class CategoryController extends Controller
*
* @return View
*/
- public function index(CategoryRepositoryInterface $repository)
+ public function index(Request $request, CategoryRepositoryInterface $repository)
{
- $categories = $repository->getCategories();
+ $page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
+ $pageSize = intval(Preferences::get('listPageSize', 50)->data);
+ $collection = $repository->getCategories();
+ $total = $collection->count();
+ $collection = $collection->slice(($page - 1) * $pageSize, $pageSize);
- $categories->each(
+ $collection->each(
function (Category $category) use ($repository) {
$category->lastActivity = $repository->lastUseDate($category, new Collection);
}
);
+ // paginate categories
+ $categories = new LengthAwarePaginator($collection, $total, $pageSize, $page);
+ $categories->setPath(route('categories.index'));
+
return view('categories.index', compact('categories'));
}
diff --git a/app/Http/Controllers/CurrencyController.php b/app/Http/Controllers/CurrencyController.php
index 4240db44f3..4dea312903 100644
--- a/app/Http/Controllers/CurrencyController.php
+++ b/app/Http/Controllers/CurrencyController.php
@@ -28,6 +28,7 @@ use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Http\Request;
+use Illuminate\Pagination\LengthAwarePaginator;
use Log;
use Preferences;
use View;
@@ -198,12 +199,19 @@ class CurrencyController extends Controller
*/
public function index(Request $request)
{
- $currencies = $this->repository->get();
- $currencies = $currencies->sortBy(
+ $page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
+ $pageSize = intval(Preferences::get('listPageSize', 50)->data);
+ $collection = $this->repository->get();
+ $total = $collection->count();
+ $collection = $collection->sortBy(
function (TransactionCurrency $currency) {
return $currency->name;
}
);
+ $collection = $collection->slice(($page - 1) * $pageSize, $pageSize);
+ $currencies = new LengthAwarePaginator($collection, $total, $pageSize, $page);
+ $currencies->setPath(route('currencies.index'));
+
$defaultCurrency = $this->repository->getCurrencyByPreference(Preferences::get('currencyPreference', config('firefly.default_currency', 'EUR')));
$isOwner = true;
if (!$this->userRepository->hasRole(auth()->user(), 'owner')) {
diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php
index 66cce45402..75ecd6284e 100644
--- a/app/Http/Controllers/PiggyBankController.php
+++ b/app/Http/Controllers/PiggyBankController.php
@@ -30,7 +30,7 @@ use FireflyIII\Models\PiggyBank;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use Illuminate\Http\Request;
-use Illuminate\Support\Collection;
+use Illuminate\Pagination\LengthAwarePaginator;
use Log;
use Preferences;
use Response;
@@ -199,17 +199,19 @@ class PiggyBankController extends Controller
*
* @return View
*/
- public function index(PiggyBankRepositoryInterface $piggyRepository)
+ public function index(Request $request, PiggyBankRepositoryInterface $piggyRepository)
{
- /** @var Collection $piggyBanks */
- $piggyBanks = $piggyRepository->getPiggyBanks();
+ $collection = $piggyRepository->getPiggyBanks();
+ $total = $collection->count();
+ $page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
+ $pageSize = intval(Preferences::get('listPageSize', 50)->data);
/** @var Carbon $end */
$end = session('end', Carbon::now()->endOfMonth());
$accounts = [];
Log::debug('Looping piggues');
/** @var PiggyBank $piggyBank */
- foreach ($piggyBanks as $piggyBank) {
+ foreach ($collection as $piggyBank) {
$piggyBank->savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0';
$piggyBank->percentage = 0 !== bccomp('0', $piggyBank->savedSoFar) ? intval($piggyBank->savedSoFar / $piggyBank->targetamount * 100) : 0;
$piggyBank->leftToSave = bcsub($piggyBank->targetamount, strval($piggyBank->savedSoFar));
@@ -236,6 +238,11 @@ class PiggyBankController extends Controller
}
}
+ // paginate piggy banks
+ $collection = $collection->slice(($page - 1) * $pageSize, $pageSize);
+ $piggyBanks = new LengthAwarePaginator($collection, $total, $pageSize, $page);
+ $piggyBanks->setPath(route('piggy-banks.index'));
+
return view('piggy-banks.index', compact('piggyBanks', 'accounts'));
}
diff --git a/resources/views/budgets/index.twig b/resources/views/budgets/index.twig
index dd460d05fb..f0b12e1493 100644
--- a/resources/views/budgets/index.twig
+++ b/resources/views/budgets/index.twig
@@ -83,7 +83,7 @@
{% endif %}
- {% if budgets.count == 0 and inactive.count == 0 %}
+ {% if budgets.count == 0 and inactive.count == 0 and page == 1 %}
{% include 'partials.empty' with {what: 'default', type: 'budgets',route: route('budgets.create')} %}
{# make FF ignore demo for now. #}
{% set shownDemo = true %}
@@ -134,6 +134,9 @@
{{ 'budgets'|_ }}
+
+ {{ budgets.render|raw }}
+
@@ -190,6 +193,9 @@
{% endfor %}
+
+ {{ budgets.render|raw }}
+
diff --git a/resources/views/currencies/index.twig b/resources/views/currencies/index.twig
index 0954858b17..6d05352c45 100644
--- a/resources/views/currencies/index.twig
+++ b/resources/views/currencies/index.twig
@@ -16,11 +16,14 @@
{{ 'currencies_intro'|_ }}
{% if currencies|length > 0 %}
+
+ {{ currencies.render|raw }}
+
{% if isOwner %}
- | |
+ |
{% endif %}
{{ 'currency'|_ }} |
{{ 'number_of_decimals'|_ }} |
@@ -31,12 +34,12 @@
{% for currency in currencies %}
{% if isOwner %}
- |
-
- |
+
+
+ |
{% endif %}
{{ currency.name }} ({{ currency.code }}) ({{ currency.symbol|raw }}) |
{{ currency.decimal_places }} |
@@ -52,6 +55,9 @@
{% endfor %}
+
+ {{ currencies.render|raw }}
+
{% endif %}