| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- {% extends '_layout.html' %}
- {% block title %}
- Rapport: Sprints
- {% endblock %}
- {% block breadcrumb %}
- <li><a href="{% url 'index' %}">Accueil</a></li>
- <li><a href="{% url 'reports' %}">Rapports</a></li>
- <li><a>Les Sprints</a></li>
- {% endblock %}
- {% block main %}
- {% load martortags %}
- <section id="backlog">
- <header>
- <div class="flex-row">
- <h2 class="flex-extend">Les Sprints</h2>
- </div>
- </header>
-
- <canvas id="chart-velocity" width="400" height="120"></canvas>
-
- <ul class="sprints-list">
- {% for sprint in sprints %}
- <li class="sprint-li">
- <div class="flex-col">
-
- <div class="flex-row">
- <h4>Sprint #{{ sprint.number }} : {{ sprint.date_start|date:"d M. Y" }} au {{ sprint.date_end|date:"d M. Y" }}</h4>
- {% if sprint.running %}<span class="running" style="margin-left: 14px;">En cours</span>{% endif %}
- </div>
-
- <div class="flex-row flex-space-around" style="margin-bottom: 20px;">
- <b>Stories programmées: <a href="{% url 'story_index' %}?sprint={{ sprint.id }}">{{ sprint.nb_stories }}</a> </b>
- <b>Vélocité prévue: {{ sprint.planned_velocity }} </b>
- <b>Vélocité réelle: {{ sprint.real_velocity }} </b>
- <b>Non-planifié: {{ sprint.unplanned }} </b>
- </div>
-
- {% if sprint.retro %}
- <div class="sprint-retro">
- {{ sprint.retro|safe_markdown }}
- </div>
- {% endif %}
- </div>
- </li>
- {% endfor %}
- </ul>
-
- </section>
- <script>
- var ctx = document.getElementById("chart-velocity").getContext('2d');
- var myChart = new Chart(ctx, {
- type: 'line',
- data: {
- labels: [{% for sprint in sprints|dictsort:"id" %}{% if sprint.closed %}"Sprint #{{ sprint.id }}",{% endif %}{% endfor %}],
- datasets: [{
- label: 'Vélocité réelle',
- data: [{% for sprint in sprints|dictsort:"id" %}{% if sprint.closed %}{{ sprint.real_velocity }},{% endif %}{% endfor %}],
- backgroundColor: [
- 'rgba(255, 255, 255, 0.2)'
- ],
- borderColor: [
- 'rgba(0,150,0,1)',
- ],
- borderWidth: 1
- },
- {
- label: 'Vélocité prévue',
- data: [{% for sprint in sprints|dictsort:"id" %}{% if sprint.closed %}{{ sprint.planned_velocity }},{% endif %}{% endfor %}],
- backgroundColor: [
- 'rgba(255, 255, 255, 0.2)'
- ],
- borderColor: [
- 'rgba(0,0,150,1)',
- ],
- borderWidth: 1
- },
- {
- label: 'Charge non-prévue',
- data: [{% for sprint in sprints|dictsort:"id" %}{% if sprint.closed %}{{ sprint.unplanned }},{% endif %}{% endfor %}],
- backgroundColor: [
- 'rgba(255, 255, 255, 0.2)'
- ],
- borderColor: [
- 'rgba(200,50,50,1)',
- ],
- borderWidth: 1
- }]
- },
- options: {
- scales: {
- yAxes: [{
- ticks: {
- beginAtZero:true
- }
- }]
- }
- }
- });
- </script>
- {% endblock %}
|