Browse Source

Correction bug tableau résultats quand arrivée en direct

Modifications icônes boutons interface
master
scayac 3 months ago
parent
commit
ed1fdecb2a
  1. 35
      templates/course_detail.html
  2. 10
      templates/main.html

35
templates/course_detail.html

@ -81,7 +81,12 @@
<td>{% if a.temps %}{{ a.temps|seconds_to_hms }}{% endif %}</td> <td>{% if a.temps %}{{ a.temps|seconds_to_hms }}{% endif %}</td>
</tr> </tr>
{% empty %} {% empty %}
<tr><td colspan="4">Aucun coureur arrivé.</td></tr> <tr>
<td>Aucun coureur arrivé.</td>
<td></td>
<td></td>
<td></td>
</tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
@ -104,14 +109,26 @@ const wsUrl = `${wsScheme}://${window.location.host}/ws/course/${courseId}/`;
const socket = new WebSocket(wsUrl); const socket = new WebSocket(wsUrl);
socket.onmessage = function(e) { socket.onmessage = function(e) {
// Recharge juste le tbody via AJAX // Ajoute dynamiquement la nouvelle ligne reçue via WebSocket
fetch(window.location.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) let data;
.then(response => response.text()) try {
.then(html => { data = JSON.parse(e.data);
const table = document.getElementById('arriveesTable').getElementsByTagName('tbody')[0]; } catch {
table.innerHTML = html; return;
$('#arriveesTable').DataTable(); }
}); // Vérifie le format des données reçues
let rowData;
if (Array.isArray(data)) {
rowData = data;
} else if (typeof data === 'object' && data !== null) {
// Transforme l'objet en tableau dans l'ordre attendu
rowData = [data.rang, data.nom || (data.coureur && data.coureur.nom), data.classe || (data.coureur && data.coureur.classe), data.temps];
} else {
// Format inconnu, ignore
return;
}
var dt = $('#arriveesTable').DataTable();
dt.row.add(rowData).draw(false);
}; };
// Modal confirmation fin de course // Modal confirmation fin de course

10
templates/main.html

@ -38,18 +38,20 @@
</div> </div>
<div class="card-body d-flex justify-content-center gap-3"> <div class="card-body d-flex justify-content-center gap-3">
<button class="btn btn-success mb-2" id="btnNewCourse"> <button class="btn btn-success mb-2" id="btnNewCourse">
<i class="fas fa-plus"></i> <i class="fas fa-plus" title="Créer une nouvelle course"></i>
&nbsp;Créer une nouvelle course &nbsp;
<i class="fas fa-running" title="Créer une nouvelle course"></i>
</button> </button>
<a href="{% url 'dossards' %}" class="btn btn-warning mb-2 ml-2"> <a href="{% url 'dossards' %}" class="btn btn-warning mb-2 ml-2">
<i class="fas fa-plus" title="Générer les dossards"></i> <i class="fas fa-plus" title="Générer les dossards"></i>
&nbsp;Générer les dossards &nbsp;
<i class="fas fa-qrcode" title="Générer les dossards"></i>
</a> </a>
<form action="{% url 'logout' %}" method="post" style="display:inline;"> <form action="{% url 'logout' %}" method="post" style="display:inline;">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="next" value="{% url 'login' %}"> <input type="hidden" name="next" value="{% url 'login' %}">
<button type="submit" class="btn btn-danger mb-2 ml-2"> <button type="submit" class="btn btn-danger mb-2 ml-2">
<i class="fas fa-sign-out-alt"></i> Déconnexion <i class="fas fa-sign-out-alt"></i>
</button> </button>
</form> </form>
</div> </div>

Loading…
Cancel
Save