From 8ef9223d841a0781f85cd7be6cdf2885580ca6fe Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 23 Apr 2017 09:33:33 +0200 Subject: [PATCH] Final code for #595 --- app/Http/Controllers/AccountController.php | 3 +- .../Controllers/Chart/CategoryController.php | 42 ++++++------------- app/Http/Controllers/TagController.php | 7 ++-- app/Http/breadcrumbs.php | 18 ++++---- public/js/ff/categories/show.js | 12 ++++-- public/js/ff/charts.js | 2 +- resources/lang/en_US/firefly.php | 8 +++- resources/views/accounts/show.twig | 6 +-- resources/views/budgets/show.twig | 2 +- resources/views/categories/show.twig | 37 +++++++--------- 10 files changed, 61 insertions(+), 76 deletions(-) diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index fe2dffa71f..8e248a1628 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -293,7 +293,6 @@ class AccountController extends Controller $periods = $this->getPeriodOverview($account); } - $accountType = $account->accountType->type; $count = 0; $loop = 0; // grab journals, but be prepared to jump a period back to get the right ones: @@ -327,7 +326,7 @@ class AccountController extends Controller return view( 'accounts.show', - compact('account', 'currency', 'moment', 'accountType', 'periods', 'subTitleIcon', 'journals', 'subTitle', 'start', 'end', 'chartUri') + compact('account', 'currency', 'moment', 'periods', 'subTitleIcon', 'journals', 'subTitle', 'start', 'end', 'chartUri') ); } diff --git a/app/Http/Controllers/Chart/CategoryController.php b/app/Http/Controllers/Chart/CategoryController.php index 0481819a9c..d330a9b363 100644 --- a/app/Http/Controllers/Chart/CategoryController.php +++ b/app/Http/Controllers/Chart/CategoryController.php @@ -100,9 +100,9 @@ class CategoryController extends Controller $earned = $repository->earnedInPeriod(new Collection([$category]), $accounts, $start, $currentEnd); $sum = bcadd($spent, $earned); $label = Navigation::periodShow($start, $range); - $chartData[0]['entries'][$label] = bcmul($spent, '-1'); - $chartData[1]['entries'][$label] = $earned; - $chartData[2]['entries'][$label] = $sum; + $chartData[0]['entries'][$label] = round(bcmul($spent, '-1'), 12); + $chartData[1]['entries'][$label] = round($earned, 12); + $chartData[2]['entries'][$label] = round($sum, 12); $start = Navigation::addPeriod($start, $range, 0); } @@ -113,21 +113,6 @@ class CategoryController extends Controller } - /** - * @param CategoryRepositoryInterface $repository - * @param Category $category - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function currentPeriod(CategoryRepositoryInterface $repository, Category $category) - { - $start = clone session('start', Carbon::now()->startOfMonth()); - $end = session('end', Carbon::now()->endOfMonth()); - $data = $this->makePeriodChart($repository, $category, $start, $end); - - return Response::json($data); - } - /** * @param CategoryRepositoryInterface $repository * @param AccountRepositoryInterface $accountRepository @@ -215,9 +200,9 @@ class CategoryController extends Controller $spent = $expenses[$category->id]['entries'][$period] ?? '0'; $earned = $income[$category->id]['entries'][$period] ?? '0'; $sum = bcadd($spent, $earned); - $chartData[0]['entries'][$label] = bcmul($spent, '-1'); - $chartData[1]['entries'][$label] = $earned; - $chartData[2]['entries'][$label] = $sum; + $chartData[0]['entries'][$label] = round(bcmul($spent, '-1'), 12); + $chartData[1]['entries'][$label] = round($earned, 12); + $chartData[2]['entries'][$label] = round($sum, 12); } $data = $this->generator->multiSet($chartData); @@ -290,12 +275,11 @@ class CategoryController extends Controller * * @return \Symfony\Component\HttpFoundation\Response */ - public function specificPeriod(CategoryRepositoryInterface $repository, Category $category, $date) + public function specificPeriod(CategoryRepositoryInterface $repository, Category $category, Carbon $date) { - $carbon = new Carbon($date); $range = Preferences::get('viewRange', '1M')->data; - $start = Navigation::startOfPeriod($carbon, $range); - $end = Navigation::endOfPeriod($carbon, $range); + $start = Navigation::startOfPeriod($date, $range); + $end = Navigation::endOfPeriod($date, $range); $data = $this->makePeriodChart($repository, $category, $start, $end); return Response::json($data); @@ -350,11 +334,11 @@ class CategoryController extends Controller $spent = $repository->spentInPeriod(new Collection([$category]), $accounts, $start, $start); $earned = $repository->earnedInPeriod(new Collection([$category]), $accounts, $start, $start); $sum = bcadd($spent, $earned); - $label = Navigation::periodShow($start, '1D'); + $label = trim(Navigation::periodShow($start, '1D')); - $chartData[0]['entries'][$label] = bcmul($spent, '-1'); - $chartData[1]['entries'][$label] = $earned; - $chartData[2]['entries'][$label] = $sum; + $chartData[0]['entries'][$label] = round(bcmul($spent, '-1'),12); + $chartData[1]['entries'][$label] = round($earned,12); + $chartData[2]['entries'][$label] = round($sum,12); $start->addDay(); diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php index d989f4775e..fa94a1b612 100644 --- a/app/Http/Controllers/TagController.php +++ b/app/Http/Controllers/TagController.php @@ -244,7 +244,7 @@ class TagController extends Controller $end = null; $periods = new Collection; $apiKey = env('GOOGLE_MAPS_API_KEY', ''); - $sum = '0'; + $sum = '0'; // prep for "all" view. @@ -252,7 +252,7 @@ class TagController extends Controller $subTitle = trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]); $start = $repository->firstUseDate($tag); $end = new Carbon; - $sum = $repository->sumOfTag($tag); + $sum = $repository->sumOfTag($tag); } // prep for "specific date" view. @@ -265,6 +265,7 @@ class TagController extends Controller 'start' => $start->formatLocalized($this->monthAndDayFormat), 'end' => $end->formatLocalized($this->monthAndDayFormat)] ); $periods = $this->getPeriodOverview($tag); + $sum = $repository->sumOfTag($tag, $start, $end); } // prep for current period @@ -304,7 +305,7 @@ class TagController extends Controller ); } - return view('tags.show', compact('apiKey','tag', 'periods', 'subTitle', 'subTitleIcon', 'journals', 'sum', 'start', 'end', 'moment')); + return view('tags.show', compact('apiKey', 'tag', 'periods', 'subTitle', 'subTitleIcon', 'journals', 'sum', 'start', 'end', 'moment')); } diff --git a/app/Http/breadcrumbs.php b/app/Http/breadcrumbs.php index 75de1e06cd..1b98afd9b4 100644 --- a/app/Http/breadcrumbs.php +++ b/app/Http/breadcrumbs.php @@ -77,13 +77,13 @@ Breadcrumbs::register( if ($moment === 'all') { $breadcrumbs->push(trans('firefly.everything'), route('accounts.show', [$account->id, 'all'])); } - // when is specific period: - if (strlen($moment) > 0 && $moment !== 'all') { + // when is specific period or when empty: + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), - 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] + 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] ); - $breadcrumbs->push($title, route('accounts.show', [$account->id, $moment])); + $breadcrumbs->push($title, route('accounts.show', [$account->id, $moment, $start, $end])); } } @@ -258,7 +258,7 @@ Breadcrumbs::register( $breadcrumbs->push(trans('firefly.everything'), route('budgets.no-budget', ['all'])); } // when is specific period: - if (strlen($moment) > 0 && $moment !== 'all') { + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] @@ -334,7 +334,7 @@ Breadcrumbs::register( $breadcrumbs->push(trans('firefly.everything'), route('categories.show', [$category->id, 'all'])); } // when is specific period: - if (strlen($moment) > 0 && $moment !== 'all') { + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] @@ -355,7 +355,7 @@ Breadcrumbs::register( $breadcrumbs->push(trans('firefly.everything'), route('categories.no-category', ['all'])); } // when is specific period: - if (strlen($moment) > 0 && $moment !== 'all') { + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] @@ -730,7 +730,7 @@ Breadcrumbs::register( if ($moment === 'all') { $breadcrumbs->push(trans('firefly.everything'), route('tags.show', [$tag->id], $moment)); } - if ($moment !== '') { + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] @@ -754,7 +754,7 @@ Breadcrumbs::register( } // when is specific period: - if (strlen($moment) > 0 && $moment !== 'all') { + if ($moment !== 'all') { $title = trans( 'firefly.between_dates_breadcrumb', ['start' => $start->formatLocalized(strval(trans('config.month_and_day'))), 'end' => $end->formatLocalized(strval(trans('config.month_and_day')))] diff --git a/public/js/ff/categories/show.js b/public/js/ff/categories/show.js index e1d5905d24..9efadd8828 100644 --- a/public/js/ff/categories/show.js +++ b/public/js/ff/categories/show.js @@ -8,11 +8,15 @@ * See the LICENSE file for details. */ -/** global: all, current, specific */ +/** global: everything, current, specific */ $(function () { "use strict"; - columnChart(all, 'all'); - columnChart(current, 'period'); - columnChart(specific, 'period-specific-period'); + + console.log('Getting charts'); + columnChart(everything, 'category-everything'); + + console.log('Specific: ' + specific); + columnChart(specific, 'specific-period'); + }); \ No newline at end of file diff --git a/public/js/ff/charts.js b/public/js/ff/charts.js index 7b88b064bd..35b99f0b00 100644 --- a/public/js/ff/charts.js +++ b/public/js/ff/charts.js @@ -186,7 +186,7 @@ function doubleYNonStackedChart(URI, container) { */ function columnChart(URI, container) { "use strict"; - + console.log('Going to draw column chart for ' + URI + ' in ' + container); var colorData = true; var options = defaultChartOptions; var chartType = 'bar'; diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 7726cf97a9..da1c9bcb43 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -97,7 +97,7 @@ return [ 'cannot_redirect_to_account' => 'Firefly III cannot redirect you to the correct page. Apologies.', 'sum_of_expenses' => 'Sum of expenses', 'sum_of_income' => 'Sum of income', - 'total_sum' => 'Total sum', + 'total_sum' => 'Total sum', 'spent_in_specific_budget' => 'Spent in budget ":budget"', 'sum_of_expenses_in_budget' => 'Spent total in budget ":budget"', 'left_in_budget_limit' => 'Left to spend according to budgeting', @@ -109,7 +109,11 @@ return [ 'current_period' => 'Current period', 'show_the_current_period_and_overview' => 'Show the current period and overview', 'pref_languages_locale' => 'For a language other than English to work properly, your operating system must be equipped with the correct locale-information. If these are not present, currency data, dates and amounts may be formatted wrong.', - 'budget_in_period' => '":name" between :start and :end', + 'budget_in_period' => 'All transactions for budget ":name" between :start and :end', + 'chart_budget_in_period' => 'Chart for all transactions for budget ":name" between :start and :end', + 'chart_account_in_period' => 'Chart for all transactions for account ":name" between :start and :end', + 'chart_category_in_period' => 'Chart for all transactions for category ":name" between :start and :end', + 'chart_category_all' => 'Chart for all transactions for category ":name"', 'budget_in_period_breadcrumb' => 'Between :start and :end', 'clone_withdrawal' => 'Clone this withdrawal', 'clone_deposit' => 'Clone this deposit', diff --git a/resources/views/accounts/show.twig b/resources/views/accounts/show.twig index 27339321b7..afcae2a2e0 100644 --- a/resources/views/accounts/show.twig +++ b/resources/views/accounts/show.twig @@ -13,7 +13,7 @@ {% if moment == 'all' %} {{ trans('firefly.chart_all_journals_for_account', {name:account.name}) }} {% else %} - xxx + {{ trans('firefly.chart_account_in_period', {name: account.name, start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat) }) }} {% endif %} @@ -116,13 +116,13 @@
- {% if period.spent != 0 or (accountType == 'Asset account') %} + {% if period.spent != 0 %} {% endif %} - {% if period.earned != 0 or (accountType == 'Asset account') %} + {% if period.earned != 0 %} diff --git a/resources/views/budgets/show.twig b/resources/views/budgets/show.twig index 8224508dea..eddccefe1d 100644 --- a/resources/views/budgets/show.twig +++ b/resources/views/budgets/show.twig @@ -11,7 +11,7 @@

{% if budgetLimit %} - XXXX + {{ trans('firefly.chart_budget_in_period', {name: budget.name, start: budgetLimit.start_date.formatLocalized(monthAndDayFormat), end: budgetLimit.end_date.formatLocalized(monthAndDayFormat) }) }} {% else %} {{ trans('firefly.chart_all_journals_for_budget', {name:budget.name}) }} {% endif %} diff --git a/resources/views/categories/show.twig b/resources/views/categories/show.twig index d3d29e3b8a..a158564b56 100644 --- a/resources/views/categories/show.twig +++ b/resources/views/categories/show.twig @@ -6,38 +6,29 @@ {% block content %}
- {% if moment != 'all' and moment != '' %} + {% if moment != 'all' %} {# both charts #}
-

{{ 'overview'|_ }} ({{ 'per_period'|_|lower }})

+

+ {{ trans('firefly.chart_category_in_period', {name: category.name, start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat) }) }} +

- +
-

{{ 'overview'|_ }} ({{ 'all_periods'|_|lower }})

+

+ {{ trans('firefly.chart_category_all', {name: category.name }) }} +

- -
-
-
- {% endif %} - {% if moment == '' %} - {# single chart #} -
-
-
-

{{ subTitle }}

-
-
- +
@@ -47,10 +38,12 @@
-

{{ 'overview'|_ }} ({{ 'all_periods'|_|lower }})

+

+ {{ trans('firefly.chart_category_all', {name: category.name }) }} +

- +
@@ -73,7 +66,7 @@

{{ 'spent'|_ }} {{ period.spent|formatAmount }}
{{ 'earned'|_ }} {{ period.earned|formatAmount }}