forked from DGNum/gestioCOF
Plug new history in templates
This commit is contained in:
parent
0221221d53
commit
f7ce2edd87
3 changed files with 35 additions and 231 deletions
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
{% block extra_head %}
|
{% block extra_head %}
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
|
||||||
|
<script type="text/javascript" src="{% url 'js_reverse' %}" ></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment.min.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment.min.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/vendor/moment/fr.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/vendor/moment/fr.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment-timezone-with-data-2012-2022.min.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment-timezone-with-data-2012-2022.min.js' %}"></script>
|
||||||
|
@ -81,7 +82,7 @@ $(document).ready(function() {
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div id="history" class="full"></div>
|
<div id="history"></div>
|
||||||
</section>
|
</section>
|
||||||
</div><!-- history tab -->
|
</div><!-- history tab -->
|
||||||
|
|
||||||
|
@ -93,29 +94,22 @@ $(document).ready(function() {
|
||||||
|
|
||||||
khistory = new KHistory({
|
khistory = new KHistory({
|
||||||
display_trigramme: false,
|
display_trigramme: false,
|
||||||
});
|
fetch_options: {
|
||||||
|
|
||||||
function getHistory() {
|
|
||||||
var data = {
|
|
||||||
'accounts': [{{ account.pk }}],
|
'accounts': [{{ account.pk }}],
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$.ajax({
|
$(document).on('keydown', function (e) {
|
||||||
dataType: "json",
|
if (e.keyCode == 46) {
|
||||||
url : "{% url 'kfet.history.json' %}",
|
// DEL (Suppr)
|
||||||
method : "POST",
|
khistory.cancel_selected()
|
||||||
data : data,
|
|
||||||
})
|
|
||||||
.done(function(data) {
|
|
||||||
for (var i=0; i<data['opegroups'].length; i++) {
|
|
||||||
khistory.addOpeGroup(data['opegroups'][i]);
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
khistory.fetch().done(function () {
|
||||||
var nb_opes = khistory.$container.find('.ope:not(.canceled)').length;
|
var nb_opes = khistory.$container.find('.ope:not(.canceled)').length;
|
||||||
$('#nb_opes').text(nb_opes);
|
$('#nb_opes').text(nb_opes);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
getHistory();
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'kfet/vendor/multiple-select/multiple-select.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'kfet/vendor/multiple-select/multiple-select.css' %}">
|
||||||
<script type="text/javascript" src="{% static 'kfet/vendor/multiple-select/multiple-select.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/vendor/multiple-select/multiple-select.js' %}"></script>
|
||||||
{{ filter_form.media }}
|
{{ filter_form.media }}
|
||||||
|
<script type="text/javascript" src="{% url 'js_reverse' %}" ></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment-timezone-with-data-2012-2022.min.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment-timezone-with-data-2012-2022.min.js' %}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -40,6 +41,8 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
settings = { 'subvention_cof': parseFloat({{ kfet_config.subvention_cof|unlocalize }})}
|
settings = { 'subvention_cof': parseFloat({{ kfet_config.subvention_cof|unlocalize }})}
|
||||||
|
|
||||||
|
window.lock = 0;
|
||||||
|
|
||||||
khistory = new KHistory();
|
khistory = new KHistory();
|
||||||
|
|
||||||
var $from_date = $('#id_from_date');
|
var $from_date = $('#id_from_date');
|
||||||
|
@ -67,16 +70,7 @@ $(document).ready(function() {
|
||||||
var accounts = getSelectedMultiple($accounts);
|
var accounts = getSelectedMultiple($accounts);
|
||||||
data['accounts'] = accounts;
|
data['accounts'] = accounts;
|
||||||
|
|
||||||
$.ajax({
|
khistory.fetch(data).done(function () {
|
||||||
dataType: "json",
|
|
||||||
url : "{% url 'kfet.history.json' %}",
|
|
||||||
method : "POST",
|
|
||||||
data : data,
|
|
||||||
})
|
|
||||||
.done(function(data) {
|
|
||||||
for (var i=0; i<data['opegroups'].length; i++) {
|
|
||||||
khistory.addOpeGroup(data['opegroups'][i]);
|
|
||||||
}
|
|
||||||
var nb_opes = khistory.$container.find('.ope:not(.canceled)').length;
|
var nb_opes = khistory.$container.find('.ope:not(.canceled)').length;
|
||||||
$('#nb_opes').text(nb_opes);
|
$('#nb_opes').text(nb_opes);
|
||||||
});
|
});
|
||||||
|
@ -117,125 +111,12 @@ $(document).ready(function() {
|
||||||
getHistory();
|
getHistory();
|
||||||
});
|
});
|
||||||
|
|
||||||
khistory.$container.selectable({
|
|
||||||
filter: 'div.opegroup, div.ope',
|
|
||||||
selected: function(e, ui) {
|
|
||||||
$(ui.selected).each(function() {
|
|
||||||
if ($(this).hasClass('opegroup')) {
|
|
||||||
var opegroup = $(this).data('opegroup');
|
|
||||||
$(this).siblings('.ope').filter(function() {
|
|
||||||
return $(this).data('opegroup') == opegroup
|
|
||||||
}).addClass('ui-selected');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('keydown', function (e) {
|
$(document).on('keydown', function (e) {
|
||||||
if (e.keyCode == 46) {
|
if (e.keyCode == 46) {
|
||||||
// DEL (Suppr)
|
// DEL (Suppr)
|
||||||
var opes_to_cancel = [];
|
khistory.cancel_selected()
|
||||||
khistory.$container.find('.ope.ui-selected').each(function () {
|
|
||||||
opes_to_cancel.push($(this).data('ope'));
|
|
||||||
});
|
|
||||||
if (opes_to_cancel.length > 0)
|
|
||||||
confirmCancel(opes_to_cancel);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function confirmCancel(opes_to_cancel) {
|
|
||||||
var nb = opes_to_cancel.length;
|
|
||||||
var content = nb+" opérations vont être annulées";
|
|
||||||
$.confirm({
|
|
||||||
title: 'Confirmation',
|
|
||||||
content: content,
|
|
||||||
backgroundDismiss: true,
|
|
||||||
animation: 'top',
|
|
||||||
closeAnimation: 'bottom',
|
|
||||||
keyboardEnabled: true,
|
|
||||||
confirm: function() {
|
|
||||||
cancelOperations(opes_to_cancel);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function requestAuth(data, callback) {
|
|
||||||
var content = getErrorsHtml(data);
|
|
||||||
content += '<input type="password" name="password" autofocus>',
|
|
||||||
$.confirm({
|
|
||||||
title: 'Authentification requise',
|
|
||||||
content: content,
|
|
||||||
backgroundDismiss: true,
|
|
||||||
animation:'top',
|
|
||||||
closeAnimation:'bottom',
|
|
||||||
keyboardEnabled: true,
|
|
||||||
confirm: function() {
|
|
||||||
var password = this.$content.find('input').val();
|
|
||||||
callback(password);
|
|
||||||
},
|
|
||||||
onOpen: function() {
|
|
||||||
var that = this;
|
|
||||||
this.$content.find('input').on('keypress', function(e) {
|
|
||||||
if (e.keyCode == 13)
|
|
||||||
that.$confirmButton.click();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getErrorsHtml(data) {
|
|
||||||
var content = '';
|
|
||||||
if ('missing_perms' in data['errors']) {
|
|
||||||
content += 'Permissions manquantes';
|
|
||||||
content += '<ul>';
|
|
||||||
for (var i=0; i<data['errors']['missing_perms'].length; i++)
|
|
||||||
content += '<li>'+data['errors']['missing_perms'][i]+'</li>';
|
|
||||||
content += '</ul>';
|
|
||||||
}
|
|
||||||
if ('negative' in data['errors']) {
|
|
||||||
var url_base = "{% url 'kfet.account.update' LIQ}";
|
|
||||||
url_base = base_url(0, url_base.length-8);
|
|
||||||
for (var i=0; i<data['errors']['negative'].length; i++) {
|
|
||||||
content += '<a class="btn btn-primary" href="'+url_base+data['errors']['negative'][i]+'/edit" target="_blank">Autorisation de négatif requise pour '+data['errors']['negative'][i]+'</a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
function cancelOperations(opes_array, password = '') {
|
|
||||||
var data = { 'operations' : opes_array }
|
|
||||||
$.ajax({
|
|
||||||
dataType: "json",
|
|
||||||
url : "{% url 'kfet.kpsul.cancel_operations' %}",
|
|
||||||
method : "POST",
|
|
||||||
data : data,
|
|
||||||
beforeSend: function ($xhr) {
|
|
||||||
$xhr.setRequestHeader("X-CSRFToken", csrftoken);
|
|
||||||
if (password != '')
|
|
||||||
$xhr.setRequestHeader("KFetPassword", password);
|
|
||||||
},
|
|
||||||
|
|
||||||
})
|
|
||||||
.done(function(data) {
|
|
||||||
khistory.$container.find('.ui-selected').removeClass('ui-selected');
|
|
||||||
})
|
|
||||||
.fail(function($xhr) {
|
|
||||||
var data = $xhr.responseJSON;
|
|
||||||
switch ($xhr.status) {
|
|
||||||
case 403:
|
|
||||||
requestAuth(data, function(password) {
|
|
||||||
cancelOperations(opes_array, password);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 400:
|
|
||||||
displayErrors(getErrorsHtml(data));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
getHistory();
|
getHistory();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
{% extends 'kfet/base_col_2.html' %}
|
{% extends 'kfet/base_col_2.html' %}
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
|
{% load l10n staticfiles widget_tweaks %}
|
||||||
|
|
||||||
{% block title %}Transferts{% endblock %}
|
{% block title %}Transferts{% endblock %}
|
||||||
{% block header-title %}Transferts{% endblock %}
|
{% block header-title %}Transferts{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_head %}
|
||||||
|
<script type="text/javascript" src="{% url 'js_reverse' %}" ></script>
|
||||||
|
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
|
||||||
|
<script type="text/javascript" src="{% static 'kfet/vendor/moment/moment-timezone-with-data-2012-2022.min.js' %}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block fixed %}
|
{% block fixed %}
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
|
@ -16,109 +23,31 @@
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
|
|
||||||
<div id="history">
|
<table id="history" class="table">
|
||||||
{% for transfergroup in transfergroups %}
|
</table>
|
||||||
<div class="opegroup transfergroup" data-transfergroup="{{ transfergroup.pk }}">
|
|
||||||
<span>{{ transfergroup.at }}</span>
|
|
||||||
<span>{{ transfergroup.valid_by.trigramme }}</span>
|
|
||||||
<span>{{ transfergroup.comment }}</span>
|
|
||||||
</div>
|
|
||||||
{% for transfer in transfergroup.transfers.all %}
|
|
||||||
<div class="ope transfer{% if transfer.canceled_at %} canceled{% endif %}" data-transfer="{{ transfer.pk }}" data-transfergroup="{{ transfergroup.pk }}">
|
|
||||||
<span class="amount">{{ transfer.amount }} €</span>
|
|
||||||
<span class="from_acc">{{ transfer.from_acc.trigramme }}</span>
|
|
||||||
<span class="glyphicon glyphicon-arrow-right"></span>
|
|
||||||
<span class="to_acc">{{ transfer.to_acc.trigramme }}</span>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
lock = 0;
|
window.lock = 0;
|
||||||
|
settings = { 'subvention_cof': parseFloat({{ kfet_config.subvention_cof|unlocalize }})}
|
||||||
function displayErrors(html) {
|
|
||||||
$.alert({
|
|
||||||
title: 'Erreurs',
|
|
||||||
content: html,
|
|
||||||
backgroundDismiss: true,
|
|
||||||
animation: 'top',
|
|
||||||
closeAnimation: 'bottom',
|
|
||||||
keyboardEnabled: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function cancelTransfers(transfers_array, password = '') {
|
var khistory = new KHistory({
|
||||||
if (lock == 1)
|
fetch_options:{
|
||||||
return false
|
transfersonly: true,
|
||||||
lock = 1;
|
|
||||||
var data = { 'transfers' : transfers_array }
|
|
||||||
$.ajax({
|
|
||||||
dataType: "json",
|
|
||||||
url : "{% url 'kfet.transfers.cancel' %}",
|
|
||||||
method : "POST",
|
|
||||||
data : data,
|
|
||||||
beforeSend: function ($xhr) {
|
|
||||||
$xhr.setRequestHeader("X-CSRFToken", csrftoken);
|
|
||||||
if (password != '')
|
|
||||||
$xhr.setRequestHeader("KFetPassword", password);
|
|
||||||
},
|
|
||||||
|
|
||||||
})
|
|
||||||
.done(function(data) {
|
|
||||||
for (var i=0; i<data['canceled'].length; i++) {
|
|
||||||
$('#history').find('.transfer[data-transfer='+data['canceled'][i]+']')
|
|
||||||
.addClass('canceled');
|
|
||||||
}
|
}
|
||||||
$('#history').find('.ui-selected').removeClass('ui-selected');
|
|
||||||
lock = 0;
|
|
||||||
})
|
|
||||||
.fail(function($xhr) {
|
|
||||||
var data = $xhr.responseJSON;
|
|
||||||
switch ($xhr.status) {
|
|
||||||
case 403:
|
|
||||||
requestAuth(data, function(password) {
|
|
||||||
cancelTransfers(transfers_array, password);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 400:
|
|
||||||
displayErrors(getErrorsHtml(data));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lock = 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#history').selectable({
|
|
||||||
filter: 'div.transfergroup, div.transfer',
|
|
||||||
selected: function(e, ui) {
|
|
||||||
$(ui.selected).each(function() {
|
|
||||||
if ($(this).hasClass('transfergroup')) {
|
|
||||||
var transfergroup = $(this).attr('data-transfergroup');
|
|
||||||
$(this).siblings('.ope').filter(function() {
|
|
||||||
return $(this).attr('data-transfergroup') == transfergroup
|
|
||||||
}).addClass('ui-selected');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('keydown', function (e) {
|
$(document).on('keydown', function (e) {
|
||||||
if (e.keyCode == 46) {
|
if (e.keyCode == 46) {
|
||||||
// DEL (Suppr)
|
// DEL (Suppr)
|
||||||
var transfers_to_cancel = [];
|
khistory.cancel_selected()
|
||||||
$('#history').find('.transfer.ui-selected').each(function () {
|
|
||||||
transfers_to_cancel.push($(this).attr('data-transfer'));
|
|
||||||
});
|
|
||||||
if (transfers_to_cancel.length > 0)
|
|
||||||
cancelTransfers(transfers_to_cancel);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
khistory.fetch()
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in a new issue