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

View File

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