Jarvis/jarvis/people/templates/gymnasts/reports/report_periodical.html

480 lines
25 KiB
HTML

{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="Gregory Trullemans">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="apple-touch-icon" sizes="76x76" href="{% static "img/apple-icon.png" %}">
<link rel="icon" type="image/png" href="{% static "img/favicon.png" %}">
<title>{{ gymnast.first_name }} {{ gymnast.last_name }}</title>
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,600,700,800" rel="stylesheet" />
<!-- Font Awesome Pro -->
<link href="{% static "css/gymnast_report.css" %}" rel="stylesheet" />
<link href="{% static "css/font_awesome_all_5.15.3.css" %}" rel="stylesheet" />
<link href="{% static "css/black-dashboard_report.css" %}" rel="stylesheet" />
</head>
<header class="white-content">
<div class="row">
<div id="header-left" class="col-7 text-12">
{{ SITE_TITLE }} - {{ CLUB_NAME }}<br />
{{ ADDRESS }} - {{ ZIP }} {{ CITY }}<br />
Season {{ season }}{% if period != "season" %} - {% if period == "week" %}week{% endif %} {{ period_value }}{% endif %} ({{ date_begin | date:"j N Y" }} - {{ date_end | date:"j N Y" }})
</div>
<div id="header-right" class="col-5 text-right text-12">
Head Coach : {{ HEAD_COACH }}<br />
{{ HEAD_COACH_EMAIL }}<br />
{{ today | date:"j F Y" }}
</div>
</div>
</header>
<br />
<body class="white-content">
<div class="row">
<div class="col-2">
<img src="{% static 'img/default-avatar.png' %}" class="profil_img" />
</div>
<div class="col-9" style="text-align: justify;">
<h3 class="title mb-0">{{ gymnast.first_name }} {{ gymnast.last_name }}</h3>
<p class="mb-3 text-muted">{{ gymnast.age }} years - {% if gymnast.orientation %}{{ gymnast.get_orientation_display }}{% else %}unknown{% endif %} twisting side.<br />
{{season_informations.number_of_hours_per_week}}h training ({{ season_informations.number_of_training_sessions_per_week }}/w) - {{ season_informations.number_of_s_and_c_hours_per_week}}h S&C ({{ season_informations.number_of_s_and_c_sessions_per_week }}/w)<br />
<b>{{ season_informations.get_category_display }}</b>
</p>
{% if gymnast.informations %}
{{ gymnast.to_markdown | safe }}
{% endif %}
</div>
</div>
<div class="row">
<div class="col-4">
<h4 class="mb-1">Physiological</h4>
{% if mindstate_score.mean_mindstate_value or height_weight_value.mean_height_value %}
<table class="table">
<thead>
<th class="pt-0 pb-0"></th>
<th class="pt-0 pb-0 text-right">Min</th>
<th class="pt-0 pb-0 text-right">Average</th>
<th class="pt-0 pb-0 text-right">Max</th>
</thead>
{% if mindstate_score %}
<tr>
<td class="pt-0 pb-0"><b>Mind state</b></td>
<td class="pt-0 pb-0 text-right">{{ mindstate_score.min_mindstate_value }}</td>
<td class="pt-0 pb-0 text-right">{{ mindstate_score.mean_mindstate_value|stringformat:".1f" }}</td>
<td class="pt-0 pb-0 text-right">{{ mindstate_score.max_mindstate_value }}</td>
</tr>
{% endif %}
{% if height_weight_value.mean_height_value %}
<tr>
<td class="pt-0 pb-0"><b>Height</b></td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.min_height_value }}</td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.mean_height_value|stringformat:".1f" }}</td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.max_height_value }}</td>
</tr>
{% endif %}
{% if height_weight_value.mean_weight_value %}
<tr>
<td class="pt-0 pb-0"><b>Weight</b></td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.min_weight_value }}</td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.mean_weight_value|stringformat:".1f" }}</td>
<td class="pt-0 pb-0 text-right">{{ height_weight_value.max_weight_value }}</td>
</tr>
{% endif %}
</table>
{% else %}
No information for selected week.
{% endif %}
</div>
<div class="col-4">
<h4 class="mb-1">Intensity</h4>
{% if intensity_value.mean_intensity_time_value %}
<table class="table">
<thead>
<th class="pt-0 pb-0 text-right"></th>
<th class="pt-0 pb-0 text-right">Min</th>
<th class="pt-0 pb-0 text-right">Average</th>
<th class="pt-0 pb-0 text-right">Max</th>
</thead>
<tbody>
<tr>
<td class="pt-0 pb-0"><b>Time</b></td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.min_intensity_time_value }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.mean_intensity_time_value|stringformat:".0f" }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.max_intensity_time_value }}</td>
</tr>
<tr>
<td class="pt-0 pb-0"><b>Diff.</b></td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.min_intensity_difficulty_value }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.mean_intensity_difficulty_value|stringformat:".0f" }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.max_intensity_difficulty_value }}</td>
</tr>
<tr>
<td class="pt-0 pb-0"><b># Skill</b></td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.min_quantity_of_skill_value }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.mean_quantity_of_skill_value|stringformat:".0f" }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.max_quantity_of_skill_value }}</td>
</tr>
<tr>
<td class="pt-0 pb-0"><b># Passes</b></td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.min_number_of_passes_value }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.mean_number_of_passes_value|stringformat:".0f" }}</td>
<td class="pt-0 pb-0 text-right">{{ intensity_value.max_number_of_passes_value }}</td>
</tr>
</tbody>
</table>
{% else %}
No intensty for selected period.
{% endif %}
</div>
</div>
<br />
<div class="row">
<div class="col-6">
<h4 class="mb-1">Time of flight</h4>
{% if number_of_tof_straightjump or number_of_tof_q1r1 or number_of_tof_q1r2 %}
<table class="table">
<thead>
<th class="pt-0 pb-0"></th>
<th class="pt-0 pb-0"></th>
<th class="pt-0 pb-0 text-right">Min</th>
<th class="pt-0 pb-0 text-right">Average</th>
<th class="pt-0 pb-0 text-right">Max</th>
</thead>
{% if best_tof_straightjump.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>10 |</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_straightjump }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_straightjump.min_tof }} ({{ best_tof_straightjump.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_straightjump.mean_tof|stringformat:".3f" }} ({{ best_tof_straightjump.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_straightjump.max_tof }} ({{ best_tof_straightjump.max_score }})</td>
</tr>
{% endif %}
{% if best_tof_q1r1.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>Q1R1</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_q1r1 }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r1.min_tof }} ({{ best_tof_q1r1.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r1.mean_tof|stringformat:".3f" }} ({{ best_tof_q1r1.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r1.max_tof }} ({{ best_tof_q1r1.max_score }})</td>
</tr>
{% endif %}
{% if best_tof_q1r2.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>Q1R2</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_q1r2 }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r2.min_tof }} ({{ best_tof_q1r2.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r2.mean_tof|stringformat:".3f" }} ({{ best_tof_q1r2.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q1r2.max_tof }} ({{ best_tof_q1r2.max_score }})</td>
</tr>
{% endif %}
{% if best_tof_q2r1.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>Q2R1</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_q2r1 }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q2r1.min_tof }} ({{ best_tof_q2r1.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q2r1.mean_tof|stringformat:".3f" }} ({{ best_tof_q2r1.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_q2r1.max_tof }} ({{ best_tof_q2r1.max_score }})</td>
</tr>
{% endif %}
{% if best_tof_sf.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>SF</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_sf }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_sf.min_tof }} ({{ best_tof_sf.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_sf.mean_tof|stringformat:".3f" }} ({{ best_tof_sf.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_sf.max_tof }} ({{ best_tof_sf.max_score }})</td>
</tr>
{% endif %}
{% if best_tof_f.mean_score %}
<tr>
<td class="pt-0 pb-0"><b>F</b></td>
<td class="pt-0 pb-0">({{ number_of_tof_f }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_f.min_tof }} ({{ best_tof_f.min_score }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_f.mean_tof|stringformat:".3f" }} ({{ best_tof_f.mean_score|stringformat:".3f" }})</td>
<td class="pt-0 pb-0 text-right">{{ best_tof_f.max_tof }} ({{ best_tof_f.max_score }})</td>
</tr>
{% endif %}
</table>
{% else %}
No chrono/ToF found.
{% endif %}
</div>
<div class="col-6">
<h4 class="mb-1">Best Scores</h4>
{% if best_point_routine_1 or best_point_routine_2 or best_point_routine_3 or best_point_routine_4 or best_point_routine_5 %}
<table class="table">
<thead>
<th class="pt-0 pb-0"></th>
<th class="pt-0 pb-0 text-right">Exe.</th>
<th class="pt-0 pb-0 text-right">Diff.</th>
<th class="pt-0 pb-0 text-right">HD</th>
<th class="pt-0 pb-0 text-right">ToF</th>
<th class="pt-0 pb-0 text-right">Total</th>
<th class="pt-0 pb-0"></th>
</thead>
{% if best_point_routine_1 %}
<tr>
<td class="pt-0 pb-0"><b>Q1R1</b></td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.point_execution }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.point_difficulty }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.point_horizontal_displacement }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.point_time_of_flight }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.total }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_1.event.date_begin|date:"j M Y" }}</td>
</tr>
{% endif %}
{% if best_point_routine_2 %}
<tr>
<td class="pt-0 pb-0"><b>Q1R2</b></td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.point_execution }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.point_difficulty }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.point_horizontal_displacement }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.point_time_of_flight }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.total }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_2.event.date_begin|date:"j M Y" }}</td>
</tr>
{% endif %}
{% if best_point_routine_3 %}
<tr>
<td class="pt-0 pb-0"><b>Q2R1</b></td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.point_execution }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.point_difficulty }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.point_horizontal_displacement }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.point_time_of_flight }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.total }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_3.event.date_begin|date:"j M Y" }}</td>
</tr>
{% endif %}
{% if best_point_routine_4 %}
<tr>
<td class="pt-0 pb-0"><b>SF</b></td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.point_execution }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.point_difficulty }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.point_horizontal_displacement }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.point_time_of_flight }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.total }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_4.event.date_begin|date:"j M Y" }}</td>
</tr>
{% endif %}
{% if best_point_routine_5 %}
<tr>
<td class="pt-0 pb-0"><b>F</b></td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.point_execution }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.point_difficulty }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.point_horizontal_displacement }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.point_time_of_flight }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.total }}</td>
<td class="pt-0 pb-0 text-right">{{ best_point_routine_5.event.date_begin|date:"j M Y" }}</td>
</tr>
{% endif %}
</table>
{% else %}
No scores during the selected week.
{% endif %}
</div>
</div>
<br />
<div class="row" id="learned_skill_and_plan">
<div class="col-6">
<h4 class="mb-1">Last learned skills</h4>
{% if learned_skills %}
<table class="table">
{% for learned_skill in learned_skills %}
<tr>
<td class="pt-1 pb-0">{{ learned_skill.skill.short_label }}</td>
<td class="pt-1 pb-0">({{ learned_skill.get_learning_step_display }})</td>
<td class="pt-1 pb-0">{{ learned_skill.skill.notation }}</td>
<td class="pt-1 pb-0">{{ learned_skill.date|date:"j M Y" }}</td>
</tr>
{% endfor %}
</table>
{% else %}
No new skill learned on the selected week.
{% endif %}
</div>
<div class="col-6">
<h4 class="mb-1">Objectives</h4>
{% if plan_list %}
<table class="table">
{% for plan in plan_list %}
<tr>
<td class="pt-1 pb-0">{{ plan.educative.short_label }}</td>
<td class="pt-1 pb-0">({{ plan.get_learning_step_display }})</td>
<td class="pt-1 pb-0">{{ plan.skill.notation }}</td>
<td class="pt-1 pb-0">{{ plan.date | date:"j M Y" }}</td>
</tr>
{% endfor %}
</table>
{% else %}
No objective for the selected week.
{% endif %}
</div>
</div>
<br />
<div class="row">
<div class="col-6">
<h4 class="mb-1">Next Events</h4>
{% if next_event_list %}
<table class="table">
{% for event in next_event_list %}
<tr>
<td class="pt-1 pb-0">{{ event.date_begin | date:"j M Y" }}</td>
<td class="pt-1 pb-0">in {{ event.number_of_week_from_today }} week(s)</td>
<td class="pt-1 pb-0">{{ event.name }}</td>
</tr>
{% endfor %}
</table>
{% else %}
No events on the selected week.
{% endif %}
</div>
</div>
<br />
<div class="row" id="note">
<div class="col-12">
<h4 class="mb-1">Notes</h4>
{% if notes %}
{% for note in notes %}
{{ note.to_markdown | safe }}
{% endfor %}
{% else %}
No note for the selected week.
{% endif %}
</div>
</div>
<br />
<div class="row" id="Routines" style="break-before: page;">
{% if q1r1 or q1r2 or q2r1 or sfinal or final %}
<div class="col-12">
<h4 class="mb-1">Routines</h4>
</div>
<div class="col-2">
<h5>Q1 routine 1</h5>
{% if q1r1 %}
<table class="table">
{% for routine_skill in q1r1.routine.skill_links.all %}
<tr>
<td class="pt-1 pb-0">{{ routine_skill.skill.notation }}</td>
<td class="pt-1 pb-0 text-right">{{ routine_skill.skill.difficulty }}</td>
</tr>
{% endfor %}
<tr>
<td class="pt-1 pb-0"></td>
<td class="pt-1 pb-0 text-right"><b>{{ q1r1.routine.difficulty }}</b></td>
</tr>
</table>
{% else %}
No routine defined.
{% endif %}
{% if q1r1_done_stat.total_succeeded %}
{{ q1r1_done_stat.total_succeeded }} | {{ q1r1_done_stat.total_try }} ({% widthratio q1r1_done_stat.total_succeeded q1r1_done_stat.total_try 100 %}%)
{% endif %}
</div>
<div class="col-2">
<h5>Q1 routine 2</h5>
{% if q1r2 %}
<table class="table">
{% for routine_skill in q1r2.routine.skill_links.all %}
<tr>
<td class="pt-1 pb-0">{{ routine_skill.skill.notation }}</td>
<td class="pt-1 pb-0 text-right">{{ routine_skill.skill.difficulty }}</td>
</tr>
{% endfor %}
<tr>
<td class="pt-1 pb-0"></td>
<td class="pt-1 pb-0 text-right"><b>{{ q1r2.routine.difficulty }}</b></td>
</tr>
</table>
{% else %}
No routine defined.
{% endif %}
{% if q1r2_done_stat.total_succeeded %}
{{ q1r2_done_stat.total_succeeded }} | {{ q1r2_done_stat.total_try }} ({% widthratio q1r2_done_stat.total_succeeded q1r2_done_stat.total_try 100 %}%)
{% endif %}
</div>
<div class="col-2">
<h5>Q2 routine 1</h5>
{% if q2r1 %}
<table class="table">
{% for routine_skill in q2r1.routine.skill_links.all %}
<tr>
<td class="pt-1 pb-0">{{ routine_skill.skill.notation }}</td>
<td class="pt-1 pb-0 text-right">{{ routine_skill.skill.difficulty }}</td>
</tr>
{% endfor %}
<tr>
<td class="pt-1 pb-0"></td>
<td class="pt-1 pb-0 text-right"><b>{{ q2r1.routine.difficulty }}</b></td>
</tr>
</table>
{% else %}
No routine defined.
{% endif %}
{% if q2r1_done_stat.total_succeeded %}
{{ q2r1_done_stat.total_succeeded }} | {{ q2r1_done_stat.total_try }} ({% widthratio q2r1_done_stat.total_succeeded q2r1_done_stat.total_try 100 %}%)
{% endif %}
</div>
<div class="col-2">
<h5>Semi-final routine</h5>
{% if sfinal %}
<table class="table">
{% for routine_skill in sfinal.routine.skill_links.all %}
<tr>
<td class="pt-1 pb-0">{{ routine_skill.skill.notation }}</td>
<td class="pt-1 pb-0 text-right">{{ routine_skill.skill.difficulty }}</td>
</tr>
{% endfor %}
<tr>
<td class="pt-1 pb-0"></td>
<td class="pt-1 pb-0 text-right"><b>{{ sfinal.routine.difficulty }}</b></td>
</tr>
</table>
{% else %}
No routine defined.
{% endif %}
{% if sfinal_done_stat.total_succeeded %}
{{ sfinal_done_stat.total_succeeded }} | {{ sfinal_done_stat.total_try }} ({% widthratio sfinal_done_stat.total_succeeded sfinal_done_stat.total_try 100 %}%)
{% endif %}
</div>
<div class="col-2">
<h5>Final routine</h5>
{% if final %}
<table class="table">
{% for routine_skill in final.routine.skill_links.all %}
<tr>
<td class="pt-1 pb-0">{{ routine_skill.skill.notation }}</td>
<td class="pt-1 pb-0 text-right">{{ routine_skill.skill.difficulty }}</td>
</tr>
{% endfor %}
<tr>
<td class="pt-1 pb-0"></td>
<td class="pt-1 pb-0 text-right"><b>{{ final.routine.difficulty }}</b></td>
</tr>
</table>
{% else %}
No routine defined.
{% endif %}
{% if final_done_stat.total_succeeded %}
{{ final_done_stat.total_succeeded }} | {{ final_done_stat.total_try }} ({% widthratio final_done_stat.total_succeeded final_done_stat.total_try 100 %}%)
{% endif %}
</div>
{% endif %}
</div>
</div>
</body>
</html>