diff --git a/main/templates/course_detail.html b/main/templates/course_detail.html
index b9314ee..e79c313 100644
--- a/main/templates/course_detail.html
+++ b/main/templates/course_detail.html
@@ -128,44 +128,18 @@ socket.onmessage = function(e) {
} catch {
return;
}
+
// Vérifie le format des données reçues
let rowData;
- function formatHMS(seconds) {
- // Copie la logique du templatetag temps_format
- if (seconds === undefined || seconds === null || seconds === "") return "--:--:--";
- let total_seconds = 0;
- if (typeof seconds === 'string' && seconds.includes(':')) {
- // déjà formaté
- return seconds;
- }
- if (!isNaN(Number(seconds))) {
- total_seconds = Math.floor(Number(seconds));
- } else {
- return "--:--:--";
- }
- let h = Math.floor(total_seconds / 3600);
- let m = Math.floor((total_seconds % 3600) / 60);
- let s = total_seconds % 60;
- return (h < 10 ? '0' : '') + h + 'h' + (m < 10 ? '0' : '') + m + 'm' + (s < 10 ? '0' : '') + s + 's';
- }
- if (Array.isArray(data)) {
- // Si la ligne reçue n'a pas 5 colonnes, on complète avec des vides
- rowData = data.slice(0, 5);
- while (rowData.length < 5) rowData.push('');
- // Si le temps est en secondes, on le formate
- if (rowData.length > 4 && /^\d+$/.test(rowData[4])) {
- rowData[4] = formatHMS(rowData[4]);
- }
- } else if (typeof data === 'object' && data !== null) {
+
+ if (typeof data === 'object' && data !== null) {
// Transforme l'objet en tableau dans l'ordre attendu
- let temps = data.temps;
- if (/^\d+$/.test(temps)) temps = formatHMS(temps);
rowData = [
data.rang,
data.nom || (data.coureur && data.coureur.nom),
data.prenom || (data.coureur && data.coureur.prenom),
data.classe || (data.coureur && data.coureur.classe),
- temps
+ data.temps
];
} else {
// Format inconnu, ignore
diff --git a/main/views.py b/main/views.py
index 8fe5323..05e68d9 100644
--- a/main/views.py
+++ b/main/views.py
@@ -22,14 +22,13 @@ from PIL import Image
def seconds_to_hms(delta: timedelta) -> str:
- """Format a timedelta as H:MM:SS (handles days too)."""
if delta is None:
return ''
total = int(delta.total_seconds())
hours = total // 3600
minutes = (total % 3600) // 60
seconds = total % 60
- return f"{hours}:{minutes:02d}:{seconds:02d}"
+ return f"{hours}h{minutes:02d}m{seconds:02d}s"
@login_required
def main_view(request):
@@ -141,10 +140,6 @@ def course_detail_view(request, course_id):
is_finished = True
return redirect('course_detail', course_id=course.id)
- if request.headers.get('x-requested-with') == 'XMLHttpRequest':
- from django.template.loader import render_to_string
- tbody = render_to_string('arrivees_tbody.html', {'arrivees': arrivees})
- return HttpResponse(tbody)
return render(request, 'course_detail.html', {
'title': 'Course : '+course.nom+" ("+str(course.date)+")",
'course': course,
@@ -152,6 +147,7 @@ def course_detail_view(request, course_id):
'is_started': is_started,
'is_finished': is_finished
})
+
@login_required
def scan_view(request):
courses = Course.objects.filter(owner=request.user, depart__isnull=False, fin__isnull=True)
diff --git a/static/mp3/error.mp3 b/static/mp3/error.mp3
new file mode 100644
index 0000000..396da7e
Binary files /dev/null and b/static/mp3/error.mp3 differ
diff --git a/static/mp3/ok.mp3 b/static/mp3/ok.mp3
new file mode 100644
index 0000000..cce6abc
Binary files /dev/null and b/static/mp3/ok.mp3 differ