diff --git a/app/Http/Controllers/Report/AccountController.php b/app/Http/Controllers/Report/AccountController.php new file mode 100644 index 0000000000..e2d6f01b31 --- /dev/null +++ b/app/Http/Controllers/Report/AccountController.php @@ -0,0 +1,44 @@ +getAccountReport($start, $end, $accounts); + + return view('reports.partials.accounts', compact('accountReport')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 225a8ee31d..8f34806a8b 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -16,7 +16,6 @@ namespace FireflyIII\Http\Controllers; use Carbon\Carbon; use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Helpers\Report\AccountReportHelperInterface; use FireflyIII\Helpers\Report\BalanceReportHelperInterface; use FireflyIII\Helpers\Report\BudgetReportHelperInterface; use FireflyIII\Helpers\Report\ReportHelperInterface; @@ -24,7 +23,6 @@ use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; -use FireflyIII\Repositories\Account\AccountTaskerInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use Illuminate\Support\Collection; @@ -41,8 +39,6 @@ use View; class ReportController extends Controller { - /** @var AccountTaskerInterface */ - protected $accountTasker; /** @var BalanceReportHelperInterface */ protected $balanceHelper; @@ -235,7 +231,6 @@ class ReportController extends Controller private function createRepositories() { $this->helper = app(ReportHelperInterface::class); - $this->accountTasker = app(AccountTaskerInterface::class); $this->budgetHelper = app(BudgetReportHelperInterface::class); $this->balanceHelper = app(BalanceReportHelperInterface::class); } @@ -254,14 +249,13 @@ class ReportController extends Controller $expenseTopLength = 8; // get report stuff! - $accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); - $incomes = $this->helper->getIncomeReport($start, $end, $accounts); - $expenses = $this->helper->getExpenseReport($start, $end, $accounts); - $budgets = $this->budgetHelper->getBudgetReport($start, $end, $accounts); - $categories = $this->helper->getCategoryReport($start, $end, $accounts); - $balance = $this->balanceHelper->getBalanceReport($start, $end, $accounts); - $bills = $this->helper->getBillReport($start, $end, $accounts); - $tags = $this->helper->tagReport($start, $end, $accounts); + $incomes = $this->helper->getIncomeReport($start, $end, $accounts); + $expenses = $this->helper->getExpenseReport($start, $end, $accounts); + $budgets = $this->budgetHelper->getBudgetReport($start, $end, $accounts); + $categories = $this->helper->getCategoryReport($start, $end, $accounts); + $balance = $this->balanceHelper->getBalanceReport($start, $end, $accounts); + $bills = $this->helper->getBillReport($start, $end, $accounts); + $tags = $this->helper->tagReport($start, $end, $accounts); // and some id's, joined: $accountIds = join(',', $accounts->pluck('id')->toArray()); @@ -271,7 +265,7 @@ class ReportController extends Controller 'reports.default.month', compact( 'start', 'end', 'reportType', - 'accountReport', 'tags', + 'tags', 'incomes', 'incomeTopLength', 'expenses', 'expenseTopLength', 'budgets', 'balance', @@ -296,12 +290,11 @@ class ReportController extends Controller $incomeTopLength = 8; $expenseTopLength = 8; // list of users stuff: - $budgets = app(BudgetRepositoryInterface::class)->getActiveBudgets(); - $categories = app(CategoryRepositoryInterface::class)->getCategories(); - $accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); - $incomes = $this->helper->getIncomeReport($start, $end, $accounts); - $expenses = $this->helper->getExpenseReport($start, $end, $accounts); - $tags = $this->helper->tagReport($start, $end, $accounts); + $budgets = app(BudgetRepositoryInterface::class)->getActiveBudgets(); + $categories = app(CategoryRepositoryInterface::class)->getCategories(); + $incomes = $this->helper->getIncomeReport($start, $end, $accounts); + $expenses = $this->helper->getExpenseReport($start, $end, $accounts); + $tags = $this->helper->tagReport($start, $end, $accounts); // and some id's, joined: $accountIds = []; @@ -314,7 +307,8 @@ class ReportController extends Controller return view( 'reports.default.multi-year', compact( - 'budgets', 'accounts', 'categories', 'start', 'end', 'accountIds', 'reportType', 'accountReport', 'incomes', 'expenses', + 'budgets', 'accounts', 'categories', 'start', 'end', 'accountIds', 'reportType', + 'incomes', 'expenses', 'incomeTopLength', 'expenseTopLength', 'tags' ) ); @@ -333,11 +327,10 @@ class ReportController extends Controller $incomeTopLength = 8; $expenseTopLength = 8; - $accountReport = $this->accountTasker->getAccountReport($start, $end, $accounts); - $incomes = $this->helper->getIncomeReport($start, $end, $accounts); - $expenses = $this->helper->getExpenseReport($start, $end, $accounts); - $tags = $this->helper->tagReport($start, $end, $accounts); - $budgets = $this->budgetHelper->budgetYearOverview($start, $end, $accounts); + $incomes = $this->helper->getIncomeReport($start, $end, $accounts); + $expenses = $this->helper->getExpenseReport($start, $end, $accounts); + $tags = $this->helper->tagReport($start, $end, $accounts); + $budgets = $this->budgetHelper->budgetYearOverview($start, $end, $accounts); Session::flash('gaEventCategory', 'report'); Session::flash('gaEventAction', 'year'); @@ -354,7 +347,7 @@ class ReportController extends Controller return view( 'reports.default.year', compact( - 'start', 'accountReport', 'incomes', 'reportType', 'accountIds', 'end', + 'start', 'incomes', 'reportType', 'accountIds', 'end', 'expenses', 'incomeTopLength', 'expenseTopLength', 'tags', 'budgets' ) ); diff --git a/public/css/firefly.css b/public/css/firefly.css index a33f04a936..354ea0b15b 100644 --- a/public/css/firefly.css +++ b/public/css/firefly.css @@ -73,4 +73,9 @@ body.waiting * { .bootstrap-tagsinput { margin-bottom: 10px; width: 100%; +} + +.loading { + background:url('/images/loading-small.gif') no-repeat center center; + min-height:30px; } \ No newline at end of file diff --git a/public/images/loading-small.gif b/public/images/loading-small.gif new file mode 100644 index 0000000000..5c4758cc12 Binary files /dev/null and b/public/images/loading-small.gif differ diff --git a/public/js/ff/reports/default/all.js b/public/js/ff/reports/default/all.js index 30810842eb..e92203fee9 100644 --- a/public/js/ff/reports/default/all.js +++ b/public/js/ff/reports/default/all.js @@ -17,8 +17,26 @@ $(function () { // find the little info buttons and respond to them. $('.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) { "use strict"; // find all data tags, regardless of what they are: diff --git a/resources/views/reports/default/month.twig b/resources/views/reports/default/month.twig index 6e34e689b1..69f1642d41 100644 --- a/resources/views/reports/default/month.twig +++ b/resources/views/reports/default/month.twig @@ -20,8 +20,7 @@
-
- {% include 'reports/partials/accounts.twig' %} +
@@ -93,6 +92,9 @@ var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}'; var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; + + + var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}'; diff --git a/resources/views/reports/default/multi-year.twig b/resources/views/reports/default/multi-year.twig index 40170b188f..b631c35ff3 100644 --- a/resources/views/reports/default/multi-year.twig +++ b/resources/views/reports/default/multi-year.twig @@ -31,9 +31,7 @@
-
- {% include 'reports/partials/accounts.twig' %} - +
@@ -176,6 +174,9 @@ var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; + + var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}'; + diff --git a/resources/views/reports/default/year.twig b/resources/views/reports/default/year.twig index caf274a9ff..8bf9e86b1f 100644 --- a/resources/views/reports/default/year.twig +++ b/resources/views/reports/default/year.twig @@ -31,7 +31,8 @@
- {% include 'reports/partials/accounts.twig' %} +
+
{% include 'reports/partials/income-vs-expenses.twig' %}
@@ -133,6 +134,9 @@ var hideTheRest = '{{ trans('firefly.hideTheRest',{number:incomeTopLength}) }}'; var showTheRestExpense = '{{ trans('firefly.showTheRest',{number:expenseTopLength}) }}'; var hideTheRestExpense = '{{ trans('firefly.hideTheRest',{number:expenseTopLength}) }}'; + + + var accountReportUrl = '{{ route('reports.data.accountReport', [start.format('Ymd'), end.format('Ymd'), accountIds]) }}'; diff --git a/routes/web.php b/routes/web.php index e6573fa07b..91187a8dc0 100755 --- a/routes/web.php +++ b/routes/web.php @@ -40,7 +40,7 @@ Route::group( Route::group( ['middleware' => 'user-simple-auth'], function () { 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']); } ); @@ -312,6 +312,14 @@ Route::group( 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']); + /** + * Report AJAX data Controller: + */ + Route::get( + '/reports/data/accountReport/{start_date}/{end_date}/{accountList}', + ['uses' => 'Report\AccountController@accountReport', 'as' => 'reports.data.accountReport'] + ); + /** * Rules Controller */