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

@ -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

@ -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()
)