Update skill statistics

This commit is contained in:
Gregory Trullemans 2022-10-18 11:42:12 +02:00
parent 69cd14b440
commit f8d75b4af2
5 changed files with 46 additions and 51 deletions

View File

@ -69,3 +69,23 @@ a.maillink {
textarea.form-control {
max-height: 200px !important;
}
.text-unknown {
color: #fd5d93 !important;
}
.text-with-help {
color: #ff9300 !important;
}
.text-without-help {
color: #E6E200 !important;
}
.text-chained {
color: #04CD89 !important;
}
.text-masterised {
color: #0CA3E0 !important;
}

View File

@ -95,16 +95,16 @@
<a href="{% url 'plan_update' plan.id %}">
<span class="tim-icons icon-pencil text-warning"></span>
</a>
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="1">
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill text-with-help" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="1">
<i class="far fa-check"></i>
</button>
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="2">
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill text-without-help" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="2">
<i class="far fa-check-double"></i>
</button>
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="3">
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill text-chained" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="3">
<i class="far fa-link"></i>
</button>
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="4">
<button type="button" rel="tooltip" class="btn btn-success btn-link btn-sm btn-icon checkUnknownSkill text-masterised" data-gymnastid="{{ gymnast.id }}" data-skillid="{{ plan.educative.id }}" data-link="4">
<i class="fal fa-thumbs-up"></i>
</button>
</td>

View File

@ -135,7 +135,7 @@ class Accident(Markdownizable, Seasonisable):
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return "%s(%s)" % (
return "%s (%s)" % (
self.gymnast,
self.date,
)
@ -169,6 +169,13 @@ class LearnedSkill(Seasonisable):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return "%s - %s - %s" % (
self.gymnast,
self.date,
self.skill,
)
class Plan(Seasonisable, Markdownizable):
"""

View File

@ -11,52 +11,20 @@ def generate_skill_doughnut(gymnast_id):
withoutRécupère les différents nombres de skill du gymnaste (masterised, chained, without help,
with help or no) à la dernière date connue et les renvoie pour en faire un graphique.
"""
# base_queryset = LearnedSkill.objects.filter(gymnast=gymnast_id).order_by("-date")
skill_learned_by_phase = [0] * 5
learned_skills = LearnedSkill.objects.filter(gymnast=gymnast_id).order_by('skill_id', '-date').distinct('skill_id')
# total = 0
# skills_capacity = [0] * 5
# checked_skills = set()
# for learned_skill in base_queryset:
# if learned_skill not in checked_skills:
# checked_skills.add(learned_skill)
# skills_capacity[learned_skill.learning_step] += 1
# total += 1
skill_whith_help = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=1)
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step__gte=2)
.distinct()
.count()
)
skill_without_help = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=2)
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step=3)
.distinct()
.count()
)
skill_chained = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step=4)
.distinct()
.count()
)
skill_masterised = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step__gte=4)
.distinct()
.count()
)
for learned_skill in learned_skills:
skill_learned_by_phase[learned_skill.learning_step] += 1
nb_skill = Skill.objects.all().count()
nb_unknown_skill = nb_skill - skill_whith_help - skill_without_help - skill_chained - skill_masterised
nb_unknown_skill = nb_skill - learned_skill.count()
return {
"nb_skill_whith_help": skill_whith_help,
"nb_skill_without_help": skill_without_help,
"nb_skill_chained": skill_chained,
"nb_skill_masterised": skill_masterised,
# "lost_skill": skills_capacity[0],
"lost_skill": skill_learned_by_phase[0],
"nb_skill_whith_help": skill_learned_by_phase[1],
"nb_skill_without_help": skill_learned_by_phase[2],
"nb_skill_chained": skill_learned_by_phase[3],
"nb_skill_masterised": skill_learned_by_phase[4],
"nb_unknown_skill": nb_unknown_skill,
}

View File

@ -439,7 +439,7 @@ def gymnast_create_or_update(request, gymnast_id=None):
@login_required
@require_http_methods(["GET"])
def gymnast_display_skill(request, gymnast_id):
"""Tag affichant les statistiques de skill d'un gymnaste
""" Tag affichant les statistiques de skill d'un gymnaste
Le nombre de saut qu'il sait faire (total, par niveau, par rank, …), calcule la complétude, …
@ -478,19 +478,19 @@ def gymnast_display_skill(request, gymnast_id):
skill_whith_help = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=1)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step__gte=2)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step__gt=1)
.distinct()
)
skill_without_help = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=2)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step=3)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step__gt=2)
.distinct()
)
skill_chained = (
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step=4)
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step__gt=3)
.distinct()
)