mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 09:12:11 +01:00 
			
		
		
		
	JS from transfer page is now externalized
This commit is contained in:
		
							
								
								
									
										157
									
								
								static/js/transfer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								static/js/transfer.js
									
									
									
									
									
										Normal file
									
								
							@@ -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();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
@@ -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 %}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user