Update skill statistics
This commit is contained in:
parent
69cd14b440
commit
f8d75b4af2
|
@ -68,4 +68,24 @@ a.maillink {
|
||||||
|
|
||||||
textarea.form-control {
|
textarea.form-control {
|
||||||
max-height: 200px !important;
|
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;
|
||||||
}
|
}
|
|
@ -95,16 +95,16 @@
|
||||||
<a href="{% url 'plan_update' plan.id %}">
|
<a href="{% url 'plan_update' plan.id %}">
|
||||||
<span class="tim-icons icon-pencil text-warning"></span>
|
<span class="tim-icons icon-pencil text-warning"></span>
|
||||||
</a>
|
</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>
|
<i class="far fa-check"></i>
|
||||||
</button>
|
</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>
|
<i class="far fa-check-double"></i>
|
||||||
</button>
|
</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>
|
<i class="far fa-link"></i>
|
||||||
</button>
|
</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>
|
<i class="fal fa-thumbs-up"></i>
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -135,7 +135,7 @@ class Accident(Markdownizable, Seasonisable):
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s(%s)" % (
|
return "%s (%s)" % (
|
||||||
self.gymnast,
|
self.gymnast,
|
||||||
self.date,
|
self.date,
|
||||||
)
|
)
|
||||||
|
@ -169,6 +169,13 @@ class LearnedSkill(Seasonisable):
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=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):
|
class Plan(Seasonisable, Markdownizable):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -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,
|
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.
|
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
|
for learned_skill in learned_skills:
|
||||||
# skills_capacity = [0] * 5
|
skill_learned_by_phase[learned_skill.learning_step] += 1
|
||||||
# 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()
|
|
||||||
)
|
|
||||||
|
|
||||||
nb_skill = Skill.objects.all().count()
|
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 {
|
return {
|
||||||
"nb_skill_whith_help": skill_whith_help,
|
"lost_skill": skill_learned_by_phase[0],
|
||||||
"nb_skill_without_help": skill_without_help,
|
"nb_skill_whith_help": skill_learned_by_phase[1],
|
||||||
"nb_skill_chained": skill_chained,
|
"nb_skill_without_help": skill_learned_by_phase[2],
|
||||||
"nb_skill_masterised": skill_masterised,
|
"nb_skill_chained": skill_learned_by_phase[3],
|
||||||
# "lost_skill": skills_capacity[0],
|
"nb_skill_masterised": skill_learned_by_phase[4],
|
||||||
"nb_unknown_skill": nb_unknown_skill,
|
"nb_unknown_skill": nb_unknown_skill,
|
||||||
}
|
}
|
||||||
|
|
|
@ -439,7 +439,7 @@ def gymnast_create_or_update(request, gymnast_id=None):
|
||||||
@login_required
|
@login_required
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
def gymnast_display_skill(request, gymnast_id):
|
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, …
|
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_whith_help = (
|
||||||
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=1)
|
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()
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_without_help = (
|
skill_without_help = (
|
||||||
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=2)
|
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()
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_chained = (
|
skill_chained = (
|
||||||
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
|
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()
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue