diff --git a/apps/family/static/family/js/achievements.js b/apps/family/static/family/js/achievements.js index ebec8689..b9774579 100644 --- a/apps/family/static/family/js/achievements.js +++ b/apps/family/static/family/js/achievements.js @@ -57,7 +57,6 @@ function addChallenge (id, name, amount) { /** Ajout de 1 à chaque clic d'un bouton déjà choisi */ buttons.forEach(function (b) { if (b.id === id) { - b.quantity += 1 challenge = b } }) @@ -65,8 +64,6 @@ function addChallenge (id, name, amount) { challenge = { id: id, name: name, - quantity: 1, - amount: amount, } buttons.push(challenge) } @@ -76,8 +73,7 @@ function addChallenge (id, name, amount) { const list = 'consos_list' let html = '' buttons.forEach(function (challenge) { - html += li('conso_button_' + challenge.id, challenge.name + - '' + challenge.quantity + '') + html += li('conso_button_' + challenge.id, challenge.name) }) document.getElementById(list).innerHTML = html @@ -94,7 +90,6 @@ function addChallenge (id, name, amount) { * Reset the page as its initial state. */ function reset () { - console.log("reset lancée") notes_display.length = 0 notes.length = 0 buttons.length = 0 @@ -113,7 +108,6 @@ function reset () { * Apply all transactions: all notes in `notes` buy each item in `buttons` */ function consumeAll () { - console.log("test"); if (LOCK) { return } LOCK = true @@ -131,13 +125,10 @@ function consumeAll () { LOCK = false return } - console.log("couocu") // Récupérer les IDs des familles et des challenges const family_ids = notes_display.map(fam => fam.id) const challenge_ids = buttons.map(chal => chal.id) - console.log(family_ids) - console.log(challenge_ids) $.ajax({ url: '/family/api/family/achievements/batch/', type: 'POST', @@ -318,7 +309,6 @@ function autoCompleteFamily(field_id, family_list_id, families, families_display var disp = null families_display.forEach(function (d) { if (d.id === family.id) { - d.quantity += 1 disp = d } }) @@ -327,7 +317,6 @@ function autoCompleteFamily(field_id, family_list_id, families, families_display name: family.name, id: family.id, family: family, - quantity: 1 } families_display.push(disp) } @@ -338,9 +327,7 @@ function autoCompleteFamily(field_id, family_list_id, families, families_display let html = '' families_display.forEach(function (disp) { html += li(family_prefix + '_' + disp.id, - disp.name + - '' + - disp.quantity + '', + disp.name, '') }) @@ -398,12 +385,6 @@ function removeFamily(d, family_prefix, families_display, family_list_id, user_f const new_families_display = [] let html = '' families_display.forEach(function (disp) { - if (disp.quantity > 1 || disp.id !== d.id) { - disp.quantity -= disp.id === d.id ? 1 : 0 - new_families_display.push(disp) - html += li(family_prefix + '_' + disp.id, disp.name + - '' + disp.quantity + '') - } }) families_display.length = 0 diff --git a/apps/family/tables.py b/apps/family/tables.py index 709ca90c..728058ae 100644 --- a/apps/family/tables.py +++ b/apps/family/tables.py @@ -5,14 +5,13 @@ import django_tables2 as tables from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from django_tables2 import A - from django.urls import reverse, reverse_lazy - from note_kfet.middlewares import get_current_request from permission.backends import PermissionBackend from .models import Achievement, Challenge, Family, FamilyMembership + class FamilyTable(tables.Table): """ List all families diff --git a/apps/family/templates/family/manage.html b/apps/family/templates/family/manage.html index b284ffff..70419342 100644 --- a/apps/family/templates/family/manage.html +++ b/apps/family/templates/family/manage.html @@ -52,7 +52,12 @@ SPDX-License-Identifier: GPL-3.0-or-later {# User search with autocompletion #}
@@ -210,6 +215,55 @@ SPDX-License-Identifier: GPL-3.0-or-later document.getElementById("consume_all").addEventListener("click", function () { $('#validationModal').modal('show'); }); + + {% if user_family %} + document.getElementById("select_my_family").addEventListener("click", function () { + // Simulate selecting the user's family + var userFamily = { + id: {{ user_family.id }}, + name: "{{ user_family.name|escapejs }}", + display_image: "{{ user_family.display_image.url|default:'/static/member/img/default_picture.png'|escapejs }}" + }; + + // Check if family is already selected + var alreadySelected = false; + notes_display.forEach(function (d) { + if (d.id === userFamily.id) { + alreadySelected = true; + } + }); + + if (!alreadySelected) { + // Add the family to the selected families + var disp = { + name: userFamily.name, + id: userFamily.id, + family: userFamily, + }; + notes_display.push(disp); + + // Update the display + const family_list = $('#note_list'); + let html = ''; + notes_display.forEach(function (disp) { + html += li('note_' + disp.id, disp.name, ''); + }); + + family_list.html(html); + + // Add click handlers for removal + notes_display.forEach(function (disp) { + const line_obj = $('#note_' + disp.id); + line_obj.hover(function () { + displayFamily(disp.family, disp.name, 'user_note', 'profile_pic'); + }); + line_obj.click(removeFamily(disp, 'note', notes_display, 'note_list', 'user_note', 'profile_pic')); + }); + + // Display the family info + displayFamily(userFamily, userFamily.name, 'user_note', 'profile_pic'); + } + }); + {% endif %} - {% endblock %} \ No newline at end of file diff --git a/apps/family/views.py b/apps/family/views.py index aee6f276..fee0c5ad 100644 --- a/apps/family/views.py +++ b/apps/family/views.py @@ -301,6 +301,13 @@ class FamilyManageView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView context["can_add_family"] = PermissionBackend.check_perm(self.request, "family.family_create") context["can_add_challenge"] = PermissionBackend.check_perm(self.request, "family.challenge_create") + # Get the user's family if they have one + try: + user_family_membership = FamilyMembership.objects.get(user=self.request.user) + context["user_family"] = user_family_membership.family + except FamilyMembership.DoesNotExist: + context["user_family"] = None + return context def get_table(self, **kwargs):