Moved a report out of the controller.

This commit is contained in:
James Cole
2016-10-08 16:24:07 +02:00
parent a1f797c4d1
commit ea7ee7ee9a
9 changed files with 109 additions and 34 deletions

View File

@@ -0,0 +1,44 @@
<?php
/**
* AccountController.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Http\Controllers\Report;
use Carbon\Carbon;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Repositories\Account\AccountTaskerInterface;
use Illuminate\Support\Collection;
/**
* Class AccountController
*
* @package FireflyIII\Http\Controllers\Report
*/
class AccountController extends Controller
{
/**
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function accountReport(Carbon $start, Carbon $end, Collection $accounts)
{
$accountTasker = app(AccountTaskerInterface::class);
$accountReport = $accountTasker->getAccountReport($start, $end, $accounts);
return view('reports.partials.accounts', compact('accountReport'));
}
}

View File

@@ -16,7 +16,6 @@ namespace FireflyIII\Http\Controllers;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Crud\Account\AccountCrudInterface;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Report\AccountReportHelperInterface;
use FireflyIII\Helpers\Report\BalanceReportHelperInterface; use FireflyIII\Helpers\Report\BalanceReportHelperInterface;
use FireflyIII\Helpers\Report\BudgetReportHelperInterface; use FireflyIII\Helpers\Report\BudgetReportHelperInterface;
use FireflyIII\Helpers\Report\ReportHelperInterface; use FireflyIII\Helpers\Report\ReportHelperInterface;
@@ -24,7 +23,6 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI;
use FireflyIII\Repositories\Account\AccountTaskerInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -41,8 +39,6 @@ use View;
class ReportController extends Controller class ReportController extends Controller
{ {
/** @var AccountTaskerInterface */
protected $accountTasker;
/** @var BalanceReportHelperInterface */ /** @var BalanceReportHelperInterface */
protected $balanceHelper; protected $balanceHelper;
@@ -235,7 +231,6 @@ class ReportController extends Controller
private function createRepositories() private function createRepositories()
{ {
$this->helper = app(ReportHelperInterface::class); $this->helper = app(ReportHelperInterface::class);
$this->accountTasker = app(AccountTaskerInterface::class);
$this->budgetHelper = app(BudgetReportHelperInterface::class); $this->budgetHelper = app(BudgetReportHelperInterface::class);
$this->balanceHelper = app(BalanceReportHelperInterface::class); $this->balanceHelper = app(BalanceReportHelperInterface::class);
} }
@@ -254,14 +249,13 @@ class ReportController extends Controller
$expenseTopLength = 8; $expenseTopLength = 8;
// get report stuff! // get report stuff!
$accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); $incomes = $this->helper->getIncomeReport($start, $end, $accounts);
$incomes = $this->helper->getIncomeReport($start, $end, $accounts); $expenses = $this->helper->getExpenseReport($start, $end, $accounts);
$expenses = $this->helper->getExpenseReport($start, $end, $accounts); $budgets = $this->budgetHelper->getBudgetReport($start, $end, $accounts);
$budgets = $this->budgetHelper->getBudgetReport($start, $end, $accounts); $categories = $this->helper->getCategoryReport($start, $end, $accounts);
$categories = $this->helper->getCategoryReport($start, $end, $accounts); $balance = $this->balanceHelper->getBalanceReport($start, $end, $accounts);
$balance = $this->balanceHelper->getBalanceReport($start, $end, $accounts); $bills = $this->helper->getBillReport($start, $end, $accounts);
$bills = $this->helper->getBillReport($start, $end, $accounts); $tags = $this->helper->tagReport($start, $end, $accounts);
$tags = $this->helper->tagReport($start, $end, $accounts);
// and some id's, joined: // and some id's, joined:
$accountIds = join(',', $accounts->pluck('id')->toArray()); $accountIds = join(',', $accounts->pluck('id')->toArray());
@@ -271,7 +265,7 @@ class ReportController extends Controller
'reports.default.month', 'reports.default.month',
compact( compact(
'start', 'end', 'reportType', 'start', 'end', 'reportType',
'accountReport', 'tags', 'tags',
'incomes', 'incomeTopLength', 'incomes', 'incomeTopLength',
'expenses', 'expenseTopLength', 'expenses', 'expenseTopLength',
'budgets', 'balance', 'budgets', 'balance',
@@ -296,12 +290,11 @@ class ReportController extends Controller
$incomeTopLength = 8; $incomeTopLength = 8;
$expenseTopLength = 8; $expenseTopLength = 8;
// list of users stuff: // list of users stuff:
$budgets = app(BudgetRepositoryInterface::class)->getActiveBudgets(); $budgets = app(BudgetRepositoryInterface::class)->getActiveBudgets();
$categories = app(CategoryRepositoryInterface::class)->getCategories(); $categories = app(CategoryRepositoryInterface::class)->getCategories();
$accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); $incomes = $this->helper->getIncomeReport($start, $end, $accounts);
$incomes = $this->helper->getIncomeReport($start, $end, $accounts); $expenses = $this->helper->getExpenseReport($start, $end, $accounts);
$expenses = $this->helper->getExpenseReport($start, $end, $accounts); $tags = $this->helper->tagReport($start, $end, $accounts);
$tags = $this->helper->tagReport($start, $end, $accounts);
// and some id's, joined: // and some id's, joined:
$accountIds = []; $accountIds = [];
@@ -314,7 +307,8 @@ class ReportController extends Controller
return view( return view(
'reports.default.multi-year', 'reports.default.multi-year',
compact( compact(
'budgets', 'accounts', 'categories', 'start', 'end', 'accountIds', 'reportType', 'accountReport', 'incomes', 'expenses', 'budgets', 'accounts', 'categories', 'start', 'end', 'accountIds', 'reportType',
'incomes', 'expenses',
'incomeTopLength', 'expenseTopLength', 'tags' 'incomeTopLength', 'expenseTopLength', 'tags'
) )
); );
@@ -333,11 +327,10 @@ class ReportController extends Controller
$incomeTopLength = 8; $incomeTopLength = 8;
$expenseTopLength = 8; $expenseTopLength = 8;
$accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); $incomes = $this->helper->getIncomeReport($start, $end, $accounts);
$incomes = $this->helper->getIncomeReport($start, $end, $accounts); $expenses = $this->helper->getExpenseReport($start, $end, $accounts);
$expenses = $this->helper->getExpenseReport($start, $end, $accounts); $tags = $this->helper->tagReport($start, $end, $accounts);
$tags = $this->helper->tagReport($start, $end, $accounts); $budgets = $this->budgetHelper->budgetYearOverview($start, $end, $accounts);
$budgets = $this->budgetHelper->budgetYearOverview($start, $end, $accounts);
Session::flash('gaEventCategory', 'report'); Session::flash('gaEventCategory', 'report');
Session::flash('gaEventAction', 'year'); Session::flash('gaEventAction', 'year');
@@ -354,7 +347,7 @@ class ReportController extends Controller
return view( return view(
'reports.default.year', 'reports.default.year',
compact( compact(
'start', 'accountReport', 'incomes', 'reportType', 'accountIds', 'end', 'start', 'incomes', 'reportType', 'accountIds', 'end',
'expenses', 'incomeTopLength', 'expenseTopLength', 'tags', 'budgets' 'expenses', 'incomeTopLength', 'expenseTopLength', 'tags', 'budgets'
) )
); );

View File

@@ -74,3 +74,8 @@ body.waiting * {
margin-bottom: 10px; margin-bottom: 10px;
width: 100%; width: 100%;
} }
.loading {
background:url('/images/loading-small.gif') no-repeat center center;
min-height:30px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -17,8 +17,26 @@ $(function () {
// find the little info buttons and respond to them. // find the little info buttons and respond to them.
$('.firefly-info-button').click(clickInfoButton); $('.firefly-info-button').click(clickInfoButton);
// load the account report, which this report shows:
loadAccountReport();
}); });
function loadAccountReport() {
"use strict";
$.get(accountReportUrl).done(placeAccountReport).fail(failAccountReport);
}
function placeAccountReport(data) {
"use strict";
$('#accountReport').removeClass('loading').html(data);
}
function failAccountReport(data) {
"use strict";
$('#accountReport').removeClass('loading').addClass('general-chart-error');
}
function clickInfoButton(e) { function clickInfoButton(e) {
"use strict"; "use strict";
// find all data tags, regardless of what they are: // find all data tags, regardless of what they are:

View File

@@ -20,8 +20,7 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-6"> <div class="col-lg-6 col-md-6 col-sm-6 loading" id="accountReport">
{% include 'reports/partials/accounts.twig' %}
</div> </div>
<div class="col-lg-3 col-md-3 col-sm-3"> <div class="col-lg-3 col-md-3 col-sm-3">
<!-- income --> <!-- income -->
@@ -93,6 +92,9 @@
var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}'; var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}';
var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}';
var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}';
<!-- some URL's -->
var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}';
</script> </script>
<script type="text/javascript" src="js/ff/reports/default/all.js"></script> <script type="text/javascript" src="js/ff/reports/default/all.js"></script>
<script type="text/javascript" src="js/ff/reports/default/month.js"></script> <script type="text/javascript" src="js/ff/reports/default/month.js"></script>

View File

@@ -31,9 +31,7 @@
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-6"> <div class="col-lg-6 col-md-6 col-sm-6 loading" id="accountReport">
{% include 'reports/partials/accounts.twig' %}
</div> </div>
<div class="col-lg-3 col-md-3 col-sm-3"> <div class="col-lg-3 col-md-3 col-sm-3">
<!-- income --> <!-- income -->
@@ -176,6 +174,9 @@
var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}';
var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}';
<!-- some URL's -->
var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}';
</script> </script>
<script type="text/javascript" src="js/ff/reports/default/all.js"></script> <script type="text/javascript" src="js/ff/reports/default/all.js"></script>
<script type="text/javascript" src="js/ff/reports/default/multi-year.js"></script> <script type="text/javascript" src="js/ff/reports/default/multi-year.js"></script>

View File

@@ -31,7 +31,8 @@
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-6"> <div class="col-lg-6 col-md-6 col-sm-6">
{% include 'reports/partials/accounts.twig' %} <div class="loading" id="accountReport">
</div>
{% include 'reports/partials/income-vs-expenses.twig' %} {% include 'reports/partials/income-vs-expenses.twig' %}
</div> </div>
@@ -133,6 +134,9 @@
var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}'; var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}';
var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}';
var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}';
<!-- some URL's -->
var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}';
</script> </script>
<script type="text/javascript" src="js/ff/reports/default/all.js"></script> <script type="text/javascript" src="js/ff/reports/default/all.js"></script>

View File

@@ -40,7 +40,7 @@ Route::group(
Route::group( Route::group(
['middleware' => 'user-simple-auth'], function () { ['middleware' => 'user-simple-auth'], function () {
Route::get('/error', 'HomeController@displayError'); Route::get('/error', 'HomeController@displayError');
Route::any('logout', ['uses' => 'Auth\LoginController@logout','as' => 'logout']); Route::any('logout', ['uses' => 'Auth\LoginController@logout', 'as' => 'logout']);
Route::get('/flush', ['uses' => 'HomeController@flush']); Route::get('/flush', ['uses' => 'HomeController@flush']);
} }
); );
@@ -312,6 +312,14 @@ Route::group(
Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']); Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']);
Route::get('/reports/report/{reportType}/{start_date}/{end_date}/{accountList}', ['uses' => 'ReportController@report', 'as' => 'reports.report']); Route::get('/reports/report/{reportType}/{start_date}/{end_date}/{accountList}', ['uses' => 'ReportController@report', 'as' => 'reports.report']);
/**
* Report AJAX data Controller:
*/
Route::get(
'/reports/data/accountReport/{start_date}/{end_date}/{accountList}',
['uses' => 'Report\AccountController@accountReport', 'as' => 'reports.data.accountReport']
);
/** /**
* Rules Controller * Rules Controller
*/ */