From 0e3c4fcaf6dea06590259447c977c15001d2cdec Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 3 Aug 2020 10:03:51 +0200 Subject: [PATCH] Warn users when a transaction has no source or no destination --- static/js/base.js | 3 +++ static/js/consos.js | 16 ++++++++++++++++ static/js/transfer.js | 20 ++++++++++---------- templates/note/conso_form.html | 4 ++-- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/static/js/base.js b/static/js/base.js index f485635b..cf67759b 100644 --- a/static/js/base.js +++ b/static/js/base.js @@ -217,6 +217,7 @@ function autoCompleteNote(field_id, note_list_id, notes, notes_display, alias_pr // Clear search on click field.click(function () { field.tooltip('hide'); + field.removeClass('is-invalid'); field.val(""); }); @@ -233,6 +234,8 @@ function autoCompleteNote(field_id, note_list_id, notes, notes_display, alias_pr // When the user type something, the matched aliases are refreshed field.keyup(function (e) { + field.removeClass('is-invalid'); + if (e.originalEvent.charCode === 13) return; diff --git a/static/js/consos.js b/static/js/consos.js index 7a295b78..3b6b5bc5 100644 --- a/static/js/consos.js +++ b/static/js/consos.js @@ -154,6 +154,22 @@ function reset() { * Apply all transactions: all notes in `notes` buy each item in `buttons` */ function consumeAll() { + let error = false; + + if (notes_display.length === 0) { + $("#note").addClass('is-invalid'); + $("#note_list").html(li("", "Ajoutez des émetteurs.", "text-danger")); + error = true; + } + + if (buttons.length === 0) { + $("#consos_list").html(li("", "Ajoutez des consommations.", "text-danger")); + error = true; + } + + if (error) + return; + notes_display.forEach(function(note_display) { buttons.forEach(function(button) { consume(note_display.note, note_display.name, button.dest, button.quantity * note_display.quantity, button.amount, diff --git a/static/js/transfer.js b/static/js/transfer.js index 45d5508a..70cf10dc 100644 --- a/static/js/transfer.js +++ b/static/js/transfer.js @@ -219,6 +219,16 @@ $("#btn_transfer").click(function() { error = true; } + if (!sources_notes_display.length && !$("#type_credit").is(':checked')) { + $("#source_note").addClass('is-invalid'); + error = true; + } + + if (!dests_notes_display.length && !$("#type_debit").is(':checked')) { + $("#dest_note").addClass('is-invalid'); + error = true; + } + if (error) return; @@ -300,11 +310,6 @@ $("#btn_transfer").click(function() { let given_reason = reason; let source_id, dest_id; if ($("#type_credit").is(':checked')) { - if (!dests_notes_display.length) { - $("#dest_note").addClass('is-invalid'); - return; - } - user_note = dests_notes_display[0].note.id; source_id = special_note; dest_id = user_note; @@ -313,11 +318,6 @@ $("#btn_transfer").click(function() { reason += " (" + given_reason + ")"; } else { - if (!sources_notes_display.length) { - $("#source_note").addClass('is-invalid'); - return; - } - user_note = sources_notes_display[0].note.id; source_id = user_note; dest_id = special_note; diff --git a/templates/note/conso_form.html b/templates/note/conso_form.html index e6335c6e..a63f7ffe 100644 --- a/templates/note/conso_form.html +++ b/templates/note/conso_form.html @@ -53,9 +53,9 @@