More code for the tag report.

This commit is contained in:
James Cole 2017-02-24 20:27:26 +01:00
parent f63c6875cd
commit 3d4feff7de
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
5 changed files with 125 additions and 11 deletions

View File

@ -47,7 +47,6 @@ class MetaPieChart implements MetaPieChartInterface
'budget' => ['transaction_journal_budget_id', 'transaction_budget_id'],
'category' => ['transaction_journal_category_id', 'transaction_category_id'],
];
/** @var array */
protected $repositories
= [
@ -55,10 +54,10 @@ class MetaPieChart implements MetaPieChartInterface
'budget' => BudgetRepositoryInterface::class,
'category' => CategoryRepositoryInterface::class,
];
/** @var Carbon */
protected $start;
/** @var Collection */
protected $tags;
/** @var string */
protected $total = '0';
/** @var User */
@ -87,7 +86,6 @@ class MetaPieChart implements MetaPieChartInterface
if ($this->collectOtherObjects && $direction === 'expense') {
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setUser($this->user);
$collector->setAccounts($this->accounts)->setRange($this->start, $this->end)->setTypes([TransactionType::WITHDRAWAL]);
$journals = $collector->getJournals();
$sum = strval($journals->sum('transaction_amount'));
@ -182,6 +180,18 @@ class MetaPieChart implements MetaPieChartInterface
return $this;
}
/**
* @param Collection $tags
*
* @return MetaPieChartInterface
*/
public function setTags(Collection $tags): MetaPieChartInterface
{
$this->tags = $tags;
return $this;
}
/**
* @param User $user
*
@ -219,6 +229,11 @@ class MetaPieChart implements MetaPieChartInterface
if ($this->categories->count() > 0) {
$collector->setCategories($this->categories);
}
if ($this->tags->count() > 0) {
$collector->setTags($this->tags);
$collector->withCategoryInformation();
$collector->withBudgetInformation();
}
$accountIds = $this->accounts->pluck('id')->toArray();
$transactions = $collector->getJournals();

View File

@ -72,6 +72,13 @@ interface MetaPieChartInterface
*/
public function setStart(Carbon $start): MetaPieChartInterface;
/**
* @param Collection $tags
*
* @return MetaPieChartInterface
*/
public function setTags(Collection $tags): MetaPieChartInterface;
/**
* @param User $user
*

View File

@ -15,6 +15,7 @@ namespace FireflyIII\Http\Controllers\Chart;
use Carbon\Carbon;
use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
use FireflyIII\Generator\Report\Tag\MonthReportGenerator;
use FireflyIII\Helpers\Chart\MetaPieChartInterface;
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Models\Tag;
@ -40,6 +41,100 @@ class TagReportController extends Controller
$this->generator = app(GeneratorInterface::class);
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param string $others
*
* @return \Illuminate\Http\JsonResponse
*/
public function accountExpense(Collection $accounts, Collection $tags, Carbon $start, Carbon $end, string $others)
{
/** @var MetaPieChartInterface $helper */
$helper = app(MetaPieChartInterface::class);
$helper->setAccounts($accounts);
$helper->setTags($tags);
$helper->setStart($start);
$helper->setEnd($end);
$helper->setCollectOtherObjects(intval($others) === 1);
$chartData = $helper->generate('expense', 'account');
$data = $this->generator->pieChart($chartData);
return Response::json($data);
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param string $others
*
* @return \Illuminate\Http\JsonResponse
*/
public function accountIncome(Collection $accounts, Collection $tags, Carbon $start, Carbon $end, string $others)
{
/** @var MetaPieChartInterface $helper */
$helper = app(MetaPieChartInterface::class);
$helper->setAccounts($accounts);
$helper->setTags($tags);
$helper->setStart($start);
$helper->setEnd($end);
$helper->setCollectOtherObjects(intval($others) === 1);
$chartData = $helper->generate('income', 'account');
$data = $this->generator->pieChart($chartData);
return Response::json($data);
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return \Illuminate\Http\JsonResponse
*/
public function budgetExpense(Collection $accounts, Collection $tags, Carbon $start, Carbon $end)
{
/** @var MetaPieChartInterface $helper */
$helper = app(MetaPieChartInterface::class);
$helper->setAccounts($accounts);
$helper->setTags($tags);
$helper->setStart($start);
$helper->setEnd($end);
$helper->setCollectOtherObjects(false);
$chartData = $helper->generate('expense', 'budget');
$data = $this->generator->pieChart($chartData);
return Response::json($data);
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return \Illuminate\Http\JsonResponse
*/
public function categoryExpense(Collection $accounts, Collection $tags, Carbon $start, Carbon $end)
{
/** @var MetaPieChartInterface $helper */
$helper = app(MetaPieChartInterface::class);
$helper->setAccounts($accounts);
$helper->setTags($tags);
$helper->setStart($start);
$helper->setEnd($end);
$helper->setCollectOtherObjects(false);
$chartData = $helper->generate('expense', 'category');
$data = $this->generator->pieChart($chartData);
return Response::json($data);
}
/**
* @param Collection $accounts
* @param Collection $tags
@ -146,7 +241,6 @@ class TagReportController extends Controller
return Response::json($data);
}
/**
* @param Collection $accounts
* @param Collection $tags

View File

@ -7,9 +7,6 @@
{% block content %}
{% if journals.count == 0 %}
{% include 'partials.empty' with {what: what, type: 'transactions',route: route('transactions.create', [what])} %}
{% else %}
<div class="row">
<div class="col-lg-10 col-md-10 col-sm-12">
<div class="box">
@ -44,7 +41,6 @@
</div>
</div>
{% endif %}
{% endblock %}
{% block scripts %}
<script type="text/javascript" src="js/ff/transactions/list.js"></script>

View File

@ -333,13 +333,15 @@ Route::group(
'account/expense/{accountList}/{tagList}/{start_date}/{end_date}/{others}',
['uses' => 'TagReportController@accountExpense', 'as' => 'account-expense']
);
// new routes
Route::get(
'budget/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@budgetExpense', 'as' => 'budget-expense']
);
Route::get(
'category/expense/{accountList}/{tagList}/{start_date}/{end_date}',
Route::get('category/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@categoryExpense', 'as' => 'category-expense']
);