mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
237 lines
13 KiB
Twig
237 lines
13 KiB
Twig
{% extends "./layout/default" %}
|
|
|
|
{% block breadcrumbs %}
|
|
{{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName) }}
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="row">
|
|
<div class="col-lg-9 col-md-8 col-sm-12 col-xs-12">
|
|
<div class="box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ periodStart }} — {{ periodEnd }}</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
|
|
<small>{{ 'budgeted'|_ }}: <span id="budgetedAmount" class="text-success">{{ budgeted|formatAmountPlain }}</span></small>
|
|
</div>
|
|
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="text-align:right;">
|
|
<small id="availableBar">{{ trans('firefly.available_between',{start : periodStart, end: periodEnd }) }}:
|
|
<a href="#" class="updateIncome"><span id="available"
|
|
data-value="{{ available }}">{{ available|formatAmountPlain }}</span></a>
|
|
</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
|
<div class="progress budgetedBar">
|
|
<div class="progress-bar progress-bar-danger" id="progress-bar-danger" role="progressbar" aria-valuenow="0" aria-valuemin="0"
|
|
aria-valuemax="100" style="width: 0;"></div>
|
|
<div class="progress-bar progress-bar-warning" id="progress-bar-warning" role="progressbar" aria-valuenow="10" aria-valuemin="0"
|
|
aria-valuemax="100" style="width: 0;"></div>
|
|
<div class="progress-bar progress-bar-info" id="progress-bar-default" role="progressbar" aria-valuenow="0" aria-valuemin="0"
|
|
aria-valuemax="100" style="width: 0;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row" id="spentBar">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
|
<small>{{ trans('firefly.spent_between', {start: periodStart, end: periodEnd}) }}: {{ spent|formatAmount }}</small>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
|
<div class="progress spentBar">
|
|
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"
|
|
style="width: 0;"></div>
|
|
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"
|
|
style="width: 0;"></div>
|
|
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"
|
|
style="width: 0;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-3 col-md-4 col-sm-12 col-xs-12">
|
|
<div class="box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ 'transactionsWithoutBudget'|_ }}</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<p>
|
|
<a href="{{ route('budgets.no-budget') }}">
|
|
{{ trans('firefly.transactions_no_budget', {start: periodStart, end: periodEnd }) }}
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
{% if budgets.count > 0 and inactive.count > 0 %}
|
|
<div class="box" id="createBudgetBox">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ 'createBudget'|_ }}</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<a href="{{ route('budgets.create') }}" class="btn btn-success pull-right">{{ 'createBudget'|_ }}</a>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% if budgets.count == 0 and inactive.count == 0 %}
|
|
{% include 'partials.empty' with {what: 'default', type: 'budgets',route: route('budgets.create')} %}
|
|
{# make FF ignore demo for now. #}
|
|
{% set shownDemo = true %}
|
|
{% endif %}
|
|
|
|
{# date thing #}
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
|
<div class="box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ 'budget_period_navigator'|_ }}</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<div class="row" id="periodNavigator">
|
|
<div class="col-lg-2 col-md-4 col-sm-12 col-xs-12">
|
|
<select class="form-control selectPeriod" name="previous">
|
|
<option label="{{ 'select_date'|_ }}" value="x">{{ 'select_date'|_ }}</option>
|
|
{% for format, previousLabel in previousLoop %}
|
|
<option label="{{ previousLabel }}" value="{{ format }}">{{ previousLabel }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="col-lg-8 col-md-4 col-sm-12 col-xs-12 text-center">
|
|
<div class="btn btn-group btn-group-lg" style="padding-top:0;">
|
|
<a href="{{ route('budgets.index', [prev.format('Y-m-d')]) }}" class="btn btn-default" title="{{ prevText }}">←</a>
|
|
<a href="{{ route('budgets.index', [start.format('Y-m-d')]) }}" class="btn btn-default">{{ currentMonth }}</a>
|
|
<a href="{{ route('budgets.index', [next.format('Y-m-d')]) }}" class="btn btn-default" title="{{ nextText }}">→</a>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2 col-md-4 col-sm-12 col-xs-12 text-right">
|
|
<select class="form-control selectPeriod" name="next">
|
|
<option label="{{ 'select_date'|_ }}" value="x">{{ 'select_date'|_ }}</option>
|
|
{% for format, nextLabel in nextLoop %}
|
|
<option label="{{ nextLabel }}" value="{{ format }}">{{ nextLabel }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
|
<div class="box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ 'budgets'|_ }}</h3>
|
|
</div>
|
|
<div class="box-body no-padding">
|
|
<table class="table table-bordered table-striped sortable" id="budgetList">
|
|
<thead>
|
|
<tr>
|
|
<th data-defaultsort="disabled" class="hidden-sm hidden-xs" style="width:10%;"> </th>
|
|
<th data-defaultsign="az">{{ 'budget'|_ }}</th>
|
|
<th data-defaultsign="_19" style="width:25%;">{{ 'budgeted'|_ }}</th>
|
|
<th data-defaultsign="_19" class="hidden-sm hidden-xs">{{ 'spent'|_ }}</th>
|
|
<th data-defaultsign="_19" class="hidden-sm hidden-xs">{{ 'left'|_ }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
{% for budget in budgets %}
|
|
<tr>
|
|
<td class="hidden-sm hidden-xs">
|
|
<div class="btn-group btn-group-xs">
|
|
<a href="{{ route('budgets.edit',budget.id) }}" class="btn btn-xs btn-default"><i class="fa fa-fw fa-pencil"></i></a>
|
|
<a href="{{ route('budgets.delete',budget.id) }}" class="btn btn-xs btn-danger"><i class="fa fa-fw fa-trash-o"></i></a>
|
|
</div>
|
|
</td>
|
|
<td data-value="{{ budget.name }}">
|
|
{% if budgetInformation[budget.id]['currentLimit'] %}
|
|
<a href="{{ route('budgets.show.limit', [budget.id, budgetInformation[budget.id]['currentLimit'].id]) }}"
|
|
class="budget-link"
|
|
data-id="{{ budget.id }}">{{ budget.name }}</a>
|
|
{% else %}
|
|
<a href="{{ route('budgets.show',budget.id) }}" class="budget-link" data-id="{{ budget.id }}">{{ budget.name }}</a>
|
|
{% endif %}
|
|
</td>
|
|
{% if budgetInformation[budget.id]['currentLimit'] %}
|
|
{% set repAmount = budgetInformation[budget.id]['currentLimit'].amount %}
|
|
{% else %}
|
|
{% set repAmount = '0' %}
|
|
{% endif %}
|
|
|
|
<td data-value="{{ repAmount }}">
|
|
<div class="input-group">
|
|
<div class="input-group-addon">{{ defaultCurrency.symbol|raw }}</div>
|
|
<input type="hidden" name="balance_currency_id" value="{{ defaultCurrency.id }}"/>
|
|
<input class="form-control budgetAmount" data-original="{{ repAmount }}"
|
|
data-id="{{ budget.id }}" value="{{ repAmount|round }}" autocomplete="off"
|
|
step="1" min="0" name="amount" type="number">
|
|
</div>
|
|
</td>
|
|
<td class="hidden-sm hidden-xs spent" data-id="{{ budget.id }}" data-spent="{{ budgetInformation[budget.id]['spent'] }}"
|
|
data-value="{{ budgetInformation[budget.id]['spent'] }}">
|
|
{{ budgetInformation[budget.id]['spent']|formatAmount }}
|
|
</td>
|
|
<td class="hidden-sm hidden-xs left" data-id="{{ budget.id }}"
|
|
data-value="{{ (repAmount + budgetInformation[budget.id]['spent']) }}">
|
|
{{ (repAmount + budgetInformation[budget.id]['spent'])|formatAmount }}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if inactive|length > 0 %}
|
|
<div class="row">
|
|
<div class="col-lg-3 col-sm-4 col-md-6">
|
|
<div class="box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">{{ 'inactiveBudgets'|_ }}</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
{% for budget in inactive %}
|
|
{% if loop.index == inactive.count() %}
|
|
<a href="{{ route('budgets.show',budget.id) }}">{{ budget.name }}</a>
|
|
{% else %}
|
|
<a href="{{ route('budgets.show',budget.id) }}">{{ budget.name }}</a>,
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block styles %}
|
|
<link href="css/bootstrap-sortable.css" type="text/css" rel="stylesheet" media="all">
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script type="text/javascript">
|
|
// actually spent bar data:
|
|
var spent = {{ spent * -1 }}; // must be positive for the calculation to work.
|
|
var currencySymbol = "{{ getCurrencySymbol()|raw }}";
|
|
|
|
// budgeted data:
|
|
var budgeted = {{ budgeted }};
|
|
var available = {{ available }};
|
|
var budgetIndexURI = "{{ route('budgets.index','REPLACE') }}";
|
|
</script>
|
|
<script type="text/javascript" src="js/lib/bootstrap-sortable.js"></script>
|
|
<script type="text/javascript" src="js/ff/budgets/index.js"></script>
|
|
{% endblock %}
|