mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
baba943e62
Fix #173 Rewrite multi select widget as a template in order to have all values properly escaped.
128 lines
5.5 KiB
HTML
128 lines
5.5 KiB
HTML
{% extends "sidebar_table_layout.html" %}
|
|
|
|
{% block title %} - {{ g.project.name }}{% endblock %}
|
|
{% block head %}
|
|
<script src="{{ url_for("static", filename="js/bootstrap-datepicker.js") }}"></script>
|
|
<script src="{{ url_for("static", filename="js/locales/bootstrap-datepicker.fr.min.js") }}" charset="utf-8"></script>
|
|
{% endblock %}
|
|
{% block js %}
|
|
{% if add_bill %} $('#new-bill').click(); {% endif %}
|
|
|
|
// Hide all members actions
|
|
$('.action').each(function(){
|
|
$(this).hide();
|
|
});
|
|
|
|
// ask for confirmation before removing an user
|
|
$('.action.delete').each(function(){
|
|
var link = $(this).find('button');
|
|
link.click(function(){
|
|
if ($(this).hasClass("confirm")){
|
|
return true;
|
|
}
|
|
$(this).html("{{_("you sure?")}}");
|
|
$(this).addClass("confirm");
|
|
return false;
|
|
});
|
|
});
|
|
|
|
// display the remove button on mouse over (and hide them per default)
|
|
$('.balance tr').hover(function(){
|
|
$(this).find('.action').show();
|
|
}, function(){
|
|
$(this).find('.action').hide();
|
|
});
|
|
|
|
var highlight_owers = function(){
|
|
var ower_ids = $(this).attr("owers").split(',');
|
|
var payer_id = $(this).attr("payer");
|
|
$.each(ower_ids, function(i, val){
|
|
$('#bal-member-'+val).addClass("ower_line");
|
|
});
|
|
$("#bal-member-"+payer_id).addClass("payer_line");
|
|
};
|
|
|
|
var unhighlight_owers = function(){
|
|
$('[id^="bal-member-"]').removeClass("ower_line payer_line");
|
|
};
|
|
|
|
$('#bill_table tbody tr').hover(highlight_owers, unhighlight_owers);
|
|
|
|
{% endblock %}
|
|
|
|
{% block sidebar %}
|
|
<form id="add-member-form" action="{{ url_for(".add_member") }}" method="post" class="form-inline">
|
|
{{ forms.add_member(member_form) }}
|
|
</form>
|
|
|
|
<div id="table_overflow">
|
|
<table class="balance table">
|
|
{% set balance = g.project.balance %}
|
|
{% for member in g.project.members | sort(attribute='name') if member.activated or balance[member.id]|round(2) != 0 %}
|
|
<tr id="bal-member-{{ member.id }}" action={% if member.activated %}delete{% else %}reactivate{% endif %}>
|
|
<td class="balance-name">{{ member.name }}
|
|
<span class="light{% if not g.project.uses_weights %} extra-info{% endif %}">(x{{ member.weight|minimal_round(1) }})</span>
|
|
</td>
|
|
{% if member.activated %}
|
|
<td>
|
|
<form class="action delete" action="{{ url_for(".remove_member", member_id=member.id) }}" method="POST">
|
|
<button type="submit">{{ _("delete") }}</button></form>
|
|
<form class="action edit" action="{{ url_for(".edit_member", member_id=member.id) }}" method="GET">
|
|
<button type="submit">{{ _("edit") }}</button></form>
|
|
</td>
|
|
{% else %}
|
|
<td>
|
|
<form class="action reactivate" action="{{ url_for(".reactivate", member_id=member.id) }}" method="POST">
|
|
<button type="submit">{{ _("reactivate") }}</button></form></td>
|
|
{% endif %}
|
|
<td class="balance-value {% if balance[member.id]|round(2) > 0 %}positive{% elif balance[member.id]|round(2) < 0 %}negative{% endif %}">
|
|
{% if balance[member.id]|round(2) > 0 %}+{% endif %}{{ "%.2f" | format(balance[member.id]) }}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</table>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="identifier">{{ _("The project identifier is") }} <a href="{{ url_for(".list_bills") }}">{{ g.project.id }}</a>, {{ _("remember it!") }}</div>
|
|
<a id="new-bill" href="{{ url_for(".add_bill") }}" class="btn btn-primary" data-toggle="modal" data-target="#bill-form">{{ _("Add a new bill") }}</a>
|
|
|
|
<div id="bill-form" class="modal fade show" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3 class="modal-title">{{ _('Add a bill') }}</h3>
|
|
<a href="#" class="close" data-dismiss="modal">×</a>
|
|
</div>
|
|
<form action="{{ url_for(".add_bill") }}" method="post" class="modal-body container">
|
|
{{ forms.add_bill(bill_form, title=False) }}
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if bills.count() > 0 %}
|
|
<table id="bill_table" class="col table table-striped table-hover">
|
|
<thead><tr><th>{{ _("When?") }}</th><th>{{ _("Who paid?") }}</th><th>{{ _("For what?") }}</th><th>{{ _("For whom?") }}</th><th>{{ _("How much?") }}</th><th>{{ _("Actions") }}</th></tr></thead>
|
|
<tbody>
|
|
{% for bill in bills %}
|
|
<tr owers="{{bill.owers|join(',','id')}}" payer="{{bill.payer.id}}">
|
|
<td>{{ bill.date }}</td>
|
|
<td>{{ bill.payer }}</td>
|
|
<td>{{ bill.what }}</td>
|
|
<td>{{ bill.owers|join(', ', 'name') }} </td>
|
|
<td>{{ "%0.2f"|format(bill.amount) }} ({{ "%0.2f"|format(bill.pay_each()) }} {{ _("each") }})</td>
|
|
<td class="bill-actions">
|
|
<a class="edit" href="{{ url_for(".edit_bill", bill_id=bill.id) }}" title="{{ _("edit") }}">{{ _('edit') }}</a>
|
|
<a class="delete" href="{{ url_for(".delete_bill", bill_id=bill.id) }}" title="{{ _("delete") }}">{{ _('delete') }}</a>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
|
|
{% else %}
|
|
<p>{{ _("Nothing to list yet. You probably want to") }} <a href="{{ url_for(".add_bill") }}" data-toggle="modal" data-target="#bill-form">{{ _("add a bill") }}</a> ?</p>
|
|
{% endif %}
|
|
{% endblock %}
|