Display optimisations. [skip ci]

This commit is contained in:
James Cole 2016-12-03 21:24:55 +01:00
parent c5d31bccc5
commit 53daa89fcb
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
2 changed files with 60 additions and 32 deletions

View File

@ -21,6 +21,7 @@ use FireflyIII\Models\Category;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Support\CacheProperties;
use Illuminate\Support\Collection;
use Log;
use Navigation;
/**
@ -40,7 +41,16 @@ class CategoryController extends Controller
*/
public function categoryPeriodReport(Carbon $start, Carbon $end, Collection $accounts)
{
$cache = new CacheProperties;
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty('category-period-report');
$cache->addProperty($accounts->pluck('id')->toArray());
if ($cache->has()) {
Log::debug('Return report from cache');
return $cache->get();
}
/** @var CategoryRepositoryInterface $repository */
$repository = app(CategoryRepositoryInterface::class);
$categories = $repository->getCategories();
@ -50,6 +60,8 @@ class CategoryController extends Controller
$result = view('reports.partials.category-period', compact('categories', 'periods', 'report'))->render();
$cache->store($result);
return $result;
}
@ -90,23 +102,24 @@ class CategoryController extends Controller
*/
private function filterCategoryPeriodReport(array $data): array
{
foreach ($data as $key => $set) {
/**
* @var int $categoryId
* @var array $set
*/
foreach ($set as $categoryId => $info) {
/**
* @var string $type
* @var array $report
*/
foreach ($data as $type => $report) {
foreach ($report as $categoryId => $set) {
$sum = '0';
foreach ($info['entries'] as $amount) {
foreach ($set['entries'] as $amount) {
$sum = bcadd($amount, $sum);
}
$data[$key][$categoryId]['sum'] = $sum;
$data[$type][$categoryId]['sum'] = $sum;
if (bccomp('0', $sum) === 0) {
unset($data[$key][$categoryId]);
unset($data[$type][$categoryId]);
}
}
}
return $data;
}

View File

@ -19,42 +19,57 @@
<tbody>
{% for category in categories %}
{% if report.income[category.id] or report.expense[category.id] %}
<tr>
<td data-value="{{ category.name }}">
<a title="{{ category.name }}" href="#" data-category="{{ category.id }}" class="category-chart-activate">{{ category.name }}</a>
</td>
<tr>
<td data-value="{{ category.name }}">
<a title="{{ category.name }}" href="#" data-category="{{ category.id }}" class="category-chart-activate">{{ category.name }}</a>
</td>
{% for key, period in periods %}
{# income first #}
{% if(report.income[category.id].entries[key]) %}
<td data-value="{{ report.income[category.id].entries[key] }}">
{{ report.income[category.id].entries[key]|formatAmount }}
{% for key, period in periods %}
{# income first #}
{% if(report.income[category.id].entries[key]) %}
<td data-value="{{ report.income[category.id].entries[key] }}">
{{ report.income[category.id].entries[key]|formatAmount }}
</td>
{% else %}
<td data-value="0">
{{ 0|formatAmount }}
</td>
{% endif %}
{# expenses #}
{% if(report.expense[category.id].entries[key]) %}
<td data-value="{{ report.expense[category.id].entries[key] }}">
{{ report.expense[category.id].entries[key]|formatAmount }}
</td>
{% else %}
<td data-value="0">
{{ 0|formatAmount }}
</td>
{% endif %}
{% endfor %}
{# if sum of income, display: #}
{% if report.income[category.id].sum %}
<td data-value="{{ report.income[category.id].sum }}">
{{ report.income[category.id].sum }}
</td>
{% else %}
<td data-value="0">
{{ 0|formatAmount }}
</td>
{% endif %}
{# expenses #}
{% if(report.expense[category.id].entries[key]) %}
<td data-value="{{ report.expense[category.id].entries[key] }}">
{{ report.expense[category.id].entries[key]|formatAmount }}
{# if sum of expense, display: #}
{% if report.expense[category.id].sum %}
<td data-value="{{ report.expense[category.id].sum }}">
{{ report.expense[category.id].sum }}
</td>
{% else %}
<td data-value="0">
{{ 0|formatAmount }}
</td>
{% endif %}
{% endfor %}
<td data-value="{{ report.income[category.id].sum }}">
{{ report.income[category.id].sum|formatAmount }}
</td>
<td data-value="{{ report.expense[category.id].sum }}">
{{ report.expense[category.id].sum|formatAmount }}
</td>
</tr>
{% endif %}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>