From 6c002aacaa1d85f08107bbb232c6db989da81131 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO <yohann.danello@gmail.com> Date: Tue, 17 Mar 2020 18:47:16 +0100 Subject: [PATCH] JS from transfer page is now externalized --- static/js/transfer.js | 157 +++++++++++++++++++++++++ templates/note/transaction_form.html | 164 +-------------------------- 2 files changed, 162 insertions(+), 159 deletions(-) create mode 100644 static/js/transfer.js diff --git a/static/js/transfer.js b/static/js/transfer.js new file mode 100644 index 00000000..a0c2d88a --- /dev/null +++ b/static/js/transfer.js @@ -0,0 +1,157 @@ +sources = []; +sources_notes_display = []; +dests = []; +dests_notes_display = []; + +function refreshHistory() { + $("#history").load("/note/transfer/ #history"); +} + +function reset() { + sources_notes_display.length = 0; + sources.length = 0; + dests_notes_display.length = 0; + dests.length = 0; + $("#source_note_list").html(""); + $("#dest_note_list").html(""); + $("#source_alias_matched").html(""); + $("#dest_alias_matched").html(""); + $("#amount").val(""); + $("#reason").val(""); + $("#last_name").val(""); + $("#first_name").val(""); + $("#bank").val(""); + refreshBalance(); + refreshHistory(); +} + +$(document).ready(function() { + autoCompleteNote("source_note", "source_alias_matched", "source_note_list", sources, sources_notes_display, + "source_alias", "source_note", "user_note", "profile_pic"); + autoCompleteNote("dest_note", "dest_alias_matched", "dest_note_list", dests, dests_notes_display, + "dest_alias", "dest_note", "user_note", "profile_pic", function() { + let last = dests_notes_display[dests_notes_display.length - 1]; + dests_notes_display.length = 0; + dests_notes_display.push(last); + + last.quantity = 1; + + $.getJSON("/api/user/" + last.note.user + "/", function(user) { + $("#last_name").val(user.last_name); + $("#first_name").val(user.first_name); + }); + + return true; + }); + + + // Ensure we begin in gift mode. Removing these lines may cause problems when reloading. + $("#type_gift").prop('checked', 'true'); + $("#type_transfer").removeAttr('checked'); + $("#type_credit").removeAttr('checked'); + $("#type_debit").removeAttr('checked'); + $("label[for='type_transfer']").attr('class', 'btn btn-sm btn-outline-primary'); + $("label[for='type_credit']").attr('class', 'btn btn-sm btn-outline-primary'); + $("label[for='type_debit']").attr('class', 'btn btn-sm btn-outline-primary'); +}); + +$("#transfer").click(function() { + if ($("#type_gift").is(':checked')) { + dests_notes_display.forEach(function (dest) { + $.post("/api/note/transaction/transaction/", + { + "csrfmiddlewaretoken": CSRF_TOKEN, + "quantity": dest.quantity, + "amount": 100 * $("#amount").val(), + "reason": $("#reason").val(), + "valid": true, + "polymorphic_ctype": TRANSFER_POLYMORPHIC_CTYPE, + "resourcetype": "Transaction", + "source": user_id, + "destination": dest.id + }, function () { + addMsg("Le transfert de " + + pretty_money(dest.quantity * 100 * $("#amount").val()) + " de votre note " + + " vers la note " + dest.name + " a été fait avec succès !", "success"); + + reset(); + }).fail(function (err) { + addMsg("Le transfert de " + + pretty_money(dest.quantity * 100 * $("#amount").val()) + " de votre note " + + " vers la note " + dest.name + " a échoué : " + err.responseText, "danger"); + + reset(); + }); + }); + } + else if ($("#type_transfer").is(':checked')) { + sources_notes_display.forEach(function (source) { + dests_notes_display.forEach(function (dest) { + $.post("/api/note/transaction/transaction/", + { + "csrfmiddlewaretoken": CSRF_TOKEN, + "quantity": source.quantity * dest.quantity, + "amount": 100 * $("#amount").val(), + "reason": $("#reason").val(), + "valid": true, + "polymorphic_ctype": TRANSFER_POLYMORPHIC_CTYPE, + "resourcetype": "Transaction", + "source": source.id, + "destination": dest.id + }, function () { + addMsg("Le transfert de " + + pretty_money(source.quantity * dest.quantity * 100 * $("#amount").val()) + " de la note " + source.name + + " vers la note " + dest.name + " a été fait avec succès !", "success"); + + reset(); + }).fail(function (err) { + addMsg("Le transfert de " + + pretty_money(source.quantity * dest.quantity * 100 * $("#amount").val()) + " de la note " + source.name + + " vers la note " + dest.name + " a échoué : " + err.responseText, "danger"); + + reset(); + }); + }); + }); + } else if ($("#type_credit").is(':checked') || $("#type_debit").is(':checked')) { + let special_note = $("#credit_type").val(); + let user_note = dests_notes_display[0].id; + let given_reason = $("#reason").val(); + let source, dest, reason; + if ($("#type_credit").is(':checked')) { + source = special_note; + dest = user_note; + reason = "Crédit " + $("#credit_type option:selected").text().toLowerCase(); + if (given_reason.length > 0) + reason += " (" + given_reason + ")"; + } + else { + source = user_note; + dest = special_note; + reason = "Retrait " + $("#credit_type option:selected").text().toLowerCase(); + if (given_reason.length > 0) + reason += " (" + given_reason + ")"; + } + $.post("/api/note/transaction/transaction/", + { + "csrfmiddlewaretoken": CSRF_TOKEN, + "quantity": 1, + "amount": 100 * $("#amount").val(), + "reason": reason, + "valid": true, + "polymorphic_ctype": SPECIAL_TRANSFER_POLYMORPHIC_CTYPE, + "resourcetype": "SpecialTransaction", + "source": source, + "destination": dest, + "last_name": $("#last_name").val(), + "first_name": $("#first_name").val(), + "bank": $("#bank").val() + }, function () { + addMsg("Le crédit/retrait a bien été effectué !", "success"); + reset(); + }).fail(function (err) { + addMsg("Le crédit/transfert a échoué : " + err.responseText, "danger"); + reset(); + }); + } +}); \ No newline at end of file diff --git a/templates/note/transaction_form.html b/templates/note/transaction_form.html index b75ad7c6..f320083e 100644 --- a/templates/note/transaction_form.html +++ b/templates/note/transaction_form.html @@ -132,7 +132,7 @@ SPDX-License-Identifier: GPL-2.0-or-later <div class="form-group col-md-6"> <label for="reason">{% trans "Reason" %} :</label> - <input class="form-control mx-auto d-block" type="text" id="reason" /> + <input class="form-control mx-auto d-block" type="text" id="reason" required /> </div> </div> @@ -154,62 +154,9 @@ SPDX-License-Identifier: GPL-2.0-or-later {% block extrajavascript %} <script> - sources = []; - sources_notes_display = []; - dests = []; - dests_notes_display = []; - - function refreshHistory() { - $("#history").load("/note/transfer/ #history"); - } - - function reset() { - sources_notes_display.length = 0; - sources.length = 0; - dests_notes_display.length = 0; - dests.length = 0; - $("#source_note_list").html(""); - $("#dest_note_list").html(""); - $("#source_alias_matched").html(""); - $("#dest_alias_matched").html(""); - $("#amount").val(""); - $("#reason").val(""); - $("#last_name").val(""); - $("#first_name").val(""); - $("#bank").val(""); - refreshBalance(); - refreshHistory(); - } - - $(document).ready(function() { - autoCompleteNote("source_note", "source_alias_matched", "source_note_list", sources, sources_notes_display, - "source_alias", "source_note", "user_note", "profile_pic"); - autoCompleteNote("dest_note", "dest_alias_matched", "dest_note_list", dests, dests_notes_display, - "dest_alias", "dest_note", "user_note", "profile_pic", function() { - let last = dests_notes_display[dests_notes_display.length - 1]; - dests_notes_display.length = 0; - dests_notes_display.push(last); - - last.quantity = 1; - - $.getJSON("/api/user/" + last.note.user + "/", function(user) { - $("#last_name").val(user.last_name); - $("#first_name").val(user.first_name); - }); - - return true; - }); - - - // Ensure we begin in gift mode. Removing these lines may cause problems when reloading. - $("#type_gift").prop('checked', 'true'); - $("#type_transfer").removeAttr('checked'); - $("#type_credit").removeAttr('checked'); - $("#type_debit").removeAttr('checked'); - $("label[for='type_transfer']").attr('class', 'btn btn-sm btn-outline-primary'); - $("label[for='type_credit']").attr('class', 'btn btn-sm btn-outline-primary'); - $("label[for='type_debit']").attr('class', 'btn btn-sm btn-outline-primary'); - }); + TRANSFER_POLYMORPHIC_CTYPE = {{ polymorphic_ctype }}; + SPECIAL_TRANSFER_POLYMORPHIC_CTYPE = {{ special_polymorphic_ctype }}; + user_id = {{ user.note.pk }}; $("#type_gift").click(function() { $("#emitters_div").hide(); @@ -238,107 +185,6 @@ SPDX-License-Identifier: GPL-2.0-or-later $("#dests_div").attr('class', 'col-md-4'); $("#dest_title").text("{% trans "Debit note" %}"); }); - - $("#transfer").click(function() { - if ($("#type_gift").is(':checked')) { - dests_notes_display.forEach(function (dest) { - $.post("/api/note/transaction/transaction/", - { - "csrfmiddlewaretoken": CSRF_TOKEN, - "quantity": dest.quantity, - "amount": 100 * $("#amount").val(), - "reason": $("#reason").val(), - "valid": true, - "polymorphic_ctype": {{ polymorphic_ctype }}, - "resourcetype": "Transaction", - "source": {{ user.note.id }}, - "destination": dest.id - }, function () { - addMsg("Le transfert de " - + pretty_money(dest.quantity * 100 * $("#amount").val()) + " de votre note " - + " vers la note " + dest.name + " a été fait avec succès !", "success"); - - reset(); - }).fail(function (err) { - addMsg("Le transfert de " - + pretty_money(dest.quantity * 100 * $("#amount").val()) + " de votre note " - + " vers la note " + dest.name + " a échoué : " + err.responseText, "danger"); - - reset(); - }); - }); - } - else if ($("#type_transfer").is(':checked')) { - sources_notes_display.forEach(function (source) { - dests_notes_display.forEach(function (dest) { - $.post("/api/note/transaction/transaction/", - { - "csrfmiddlewaretoken": CSRF_TOKEN, - "quantity": source.quantity * dest.quantity, - "amount": 100 * $("#amount").val(), - "reason": $("#reason").val(), - "valid": true, - "polymorphic_ctype": {{ polymorphic_ctype }}, - "resourcetype": "Transaction", - "source": source.id, - "destination": dest.id - }, function () { - addMsg("Le transfert de " - + pretty_money(source.quantity * dest.quantity * 100 * $("#amount").val()) + " de la note " + source.name - + " vers la note " + dest.name + " a été fait avec succès !", "success"); - - reset(); - }).fail(function (err) { - addMsg("Le transfert de " - + pretty_money(source.quantity * dest.quantity * 100 * $("#amount").val()) + " de la note " + source.name - + " vers la note " + dest.name + " a échoué : " + err.responseText, "danger"); - - reset(); - }); - }); - }); - } else if ($("#type_credit").is(':checked') || $("#type_debit").is(':checked')) { - let special_note = $("#credit_type").val(); - let user_note = dests_notes_display[0].id; - let given_reason = $("#reason").val(); - let source, dest, reason; - if ($("#type_credit").is(':checked')) { - source = special_note; - dest = user_note; - reason = "Crédit " + $("#credit_type option:selected").text().toLowerCase(); - if (given_reason.length > 0) - reason += " (" + given_reason + ")"; - } - else { - source = user_note; - dest = special_note; - type = "debit"; - reason = "Retrait " + $("#credit_type option:selected").text().toLowerCase(); - if (given_reason.length > 0) - reason += " (" + given_reason + ")"; - } - $.post("/api/note/transaction/transaction/", - { - "csrfmiddlewaretoken": CSRF_TOKEN, - "quantity": 1, - "amount": 100 * $("#amount").val(), - "reason": reason, - "valid": true, - "polymorphic_ctype": {{ special_polymorphic_ctype }}, - "resourcetype": "SpecialTransaction", - "source": source, - "destination": dest, - "last_name": $("#last_name").val(), - "first_name": $("#first_name").val(), - "bank": $("#bank").val() - }, function () { - addMsg("Le crédit/retrait a bien été effectué !", "success"); - reset(); - }).fail(function (err) { - addMsg("Le crédit/transfert a échoué : " + err.responseText, "danger"); - reset(); - }); - } - }); </script> + <script src="/static/js/transfer.js"></script> {% endblock %} -- GitLab