diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php index f205bf1483..5ba51a5a6b 100644 --- a/app/Http/Controllers/BudgetController.php +++ b/app/Http/Controllers/BudgetController.php @@ -332,7 +332,7 @@ class BudgetController extends Controller * @return View * @throws FireflyException */ - public function showWithRepetition(Budget $budget, LimitRepetition $repetition) + public function showByRepetition(Budget $budget, LimitRepetition $repetition) { if ($repetition->budgetLimit->budget->id != $budget->id) { throw new FireflyException('This budget limit is not part of this budget.'); diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php index 1ef712a9a3..3764d04423 100644 --- a/app/Http/Controllers/Chart/BudgetController.php +++ b/app/Http/Controllers/Chart/BudgetController.php @@ -193,7 +193,7 @@ class BudgetController extends Controller * * @return \Illuminate\Http\JsonResponse */ - public function period(BudgetRepositoryInterface $repository, Budget $budget, Carbon $start, Carbon $end, Collection $accounts) + public function period(BudgetRepositoryInterface $repository, Budget $budget, Collection $accounts, Carbon $start, Carbon $end) { // chart properties for cache: $cache = new CacheProperties(); @@ -254,14 +254,13 @@ class BudgetController extends Controller /** * @param BudgetRepositoryInterface $repository - * @param Budget $budget + * @param Collection $accounts * @param Carbon $start * @param Carbon $end - * @param Collection $accounts * * @return \Illuminate\Http\JsonResponse */ - public function periodNoBudget(BudgetRepositoryInterface $repository, Carbon $start, Carbon $end, Collection $accounts) + public function periodNoBudget(BudgetRepositoryInterface $repository, Collection $accounts, Carbon $start, Carbon $end) { // chart properties for cache: $cache = new CacheProperties(); diff --git a/app/Http/Controllers/Report/BudgetController.php b/app/Http/Controllers/Report/BudgetController.php index 89b5136b60..a541a7a8bb 100644 --- a/app/Http/Controllers/Report/BudgetController.php +++ b/app/Http/Controllers/Report/BudgetController.php @@ -30,15 +30,45 @@ use Navigation; class BudgetController extends Controller { + /** + * @param BudgetReportHelperInterface $helper + * @param Collection $accounts + * @param Carbon $start + * @param Carbon $end * + * @return mixed|string + */ + public function general(BudgetReportHelperInterface $helper, Collection $accounts, Carbon $start, Carbon $end) + { + + // chart properties for cache: + $cache = new CacheProperties; + $cache->addProperty($start); + $cache->addProperty($end); + $cache->addProperty('budget-report'); + $cache->addProperty($accounts->pluck('id')->toArray()); + if ($cache->has()) { + return $cache->get(); + } + + $budgets = $helper->getBudgetReport($start, $end, $accounts); + + $result = view('reports.partials.budgets', compact('budgets'))->render(); + $cache->store($result); + + return $result; + + } + + /** + * @param Collection $accounts * @param Carbon $start * @param Carbon $end - * @param Collection $accounts * - * @return string + * @return mixed|string */ - public function budgetPeriodReport(Carbon $start, Carbon $end, Collection $accounts) + public function period(Collection $accounts, Carbon $start, Carbon $end) { $cache = new CacheProperties; $cache->addProperty($start); @@ -64,36 +94,6 @@ class BudgetController extends Controller return $result; } - /** - * @param BudgetReportHelperInterface $helper - * @param Carbon $start - * @param Carbon $end - * @param Collection $accounts - * - * @return string - */ - public function budgetReport(BudgetReportHelperInterface $helper, Carbon $start, Carbon $end, Collection $accounts) - { - - // chart properties for cache: - $cache = new CacheProperties; - $cache->addProperty($start); - $cache->addProperty($end); - $cache->addProperty('budget-report'); - $cache->addProperty($accounts->pluck('id')->toArray()); - if ($cache->has()) { - return $cache->get(); - } - - $budgets = $helper->getBudgetReport($start, $end, $accounts); - - $result = view('reports.partials.budgets', compact('budgets'))->render(); - $cache->store($result); - - return $result; - - } - /** * Filters empty results from getBudgetPeriodReport * diff --git a/public/js/ff/budgets/show.js b/public/js/ff/budgets/show.js index c8ca145734..8a538bfbcd 100644 --- a/public/js/ff/budgets/show.js +++ b/public/js/ff/budgets/show.js @@ -1,117 +1,6 @@ -/* globals $, budgeted:true, currencySymbol, budgetIncomeTotal, columnChart, budgetedMuch, budgetedPercentage, token, budgetID, repetitionID, spent, lineChart */ - -function drawSpentBar() { - "use strict"; - if ($('.spentBar').length > 0) { - var overspent = spent > budgeted; - var pct; - - if (overspent) { - // draw overspent bar - pct = (budgeted / spent) * 100; - $('.spentBar .progress-bar-warning').css('width', pct + '%'); - $('.spentBar .progress-bar-danger').css('width', (100 - pct) + '%'); - } else { - // draw normal bar: - pct = (spent / budgeted) * 100; - $('.spentBar .progress-bar-info').css('width', pct + '%'); - } - } -} - -function drawBudgetedBar() { - "use strict"; - - if ($('.budgetedBar').length > 0) { - var budgetedMuch = budgeted > budgetIncomeTotal; - - // recalculate percentage: - - var pct; - if (budgetedMuch) { - // budgeted too much. - pct = (budgetIncomeTotal / budgeted) * 100; - $('.budgetedBar .progress-bar-warning').css('width', pct + '%'); - $('.budgetedBar .progress-bar-danger').css('width', (100 - pct) + '%'); - $('.budgetedBar .progress-bar-info').css('width', 0); - } else { - pct = (budgeted / budgetIncomeTotal) * 100; - $('.budgetedBar .progress-bar-warning').css('width', 0); - $('.budgetedBar .progress-bar-danger').css('width', 0); - $('.budgetedBar .progress-bar-info').css('width', pct + '%'); - } - - $('#budgetedAmount').html(currencySymbol + ' ' + budgeted.toFixed(2)); - } -} - -function updateBudgetedAmounts(e) { - "use strict"; - var target = $(e.target); - var id = target.data('id'); - var value = target.val(); - var original = target.data('original'); - var difference = value - original; - if (difference !== 0) { - // add difference to 'budgeted' var - budgeted = budgeted + difference; - - // update original: - target.data('original', value); - // run drawBudgetedBar() again: - drawBudgetedBar(); - - // send a post to Firefly to update the amount: - $.post('budgets/amount/' + id, {amount: value, _token: token}).done(function (data) { - // update the link if relevant: - if (data.repetition > 0) { - $('.budget-link[data-id="' + id + '"]').attr('href', 'budgets/show/' + id + '/' + data.repetition); - } else { - $('.budget-link[data-id="' + id + '"]').attr('href', 'budgets/show/' + id); - } - }); - } - - - console.log('Budget id is ' + id); - console.log('Difference = ' + (value - original )); - -} - $(function () { "use strict"; - $('.updateIncome').on('click', updateIncome); - - /* - On start, fill the "spent"-bar using the content from the page. - */ - drawSpentBar(); - drawBudgetedBar(); - - /* - When the input changes, update the percentages for the budgeted bar: - */ - $('input[type="number"]').on('input', updateBudgetedAmounts); - - - /* - Draw the charts, if necessary: - */ - if (typeof budgetID !== 'undefined' && typeof repetitionID === 'undefined') { - columnChart('chart/budget/' + budgetID, 'budgetOverview'); - } - if (typeof budgetID !== 'undefined' && typeof repetitionID !== 'undefined') { - lineChart('chart/budget/' + budgetID + '/' + repetitionID, 'budgetOverview'); - } + columnChart(budgetChartUri, 'budgetOverview'); }); - -function updateIncome() { - "use strict"; - $('#defaultModal').empty().load('budgets/income', function () { - $('#defaultModal').modal('show'); - }); - - return false; -} diff --git a/public/js/ff/reports/default/all.js b/public/js/ff/reports/default/all.js index 939b0462e0..15ccb296cd 100644 --- a/public/js/ff/reports/default/all.js +++ b/public/js/ff/reports/default/all.js @@ -120,7 +120,7 @@ function clickBudgetChart(e) { var link = $(e.target); var budgetId = link.data('budget'); - var URL = 'chart/budget/period/' + budgetId + '/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds; + var URL = 'chart/budget/period/' + budgetId + '/' + accountIds + '/' + startDate + '/' + endDate; var container = 'budget_chart'; columnChart(URL, container); return false; diff --git a/resources/views/budgets/show.twig b/resources/views/budgets/show.twig index a85ae2061b..e7a552c29f 100644 --- a/resources/views/budgets/show.twig +++ b/resources/views/budgets/show.twig @@ -49,7 +49,7 @@