From d7b58858841bea26e761f799067b8b2a7fb77106 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Tue, 13 Jun 2023 23:46:15 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20des=20vid=C3=A9os=20dans=20les=20types?=
 =?UTF-8?q?=20de=20courses.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 WSR/models.py                   |  1 +
 WSR/static/scss/components.scss |  2 +-
 WSR/templates/race-types.html   | 49 +++++++++++++++++++++++++++++++--
 3 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/WSR/models.py b/WSR/models.py
index 35de010..3933e72 100644
--- a/WSR/models.py
+++ b/WSR/models.py
@@ -34,6 +34,7 @@ class RaceType(models.Model):
     description = models.TextField(default="", blank=True)
     icon = models.ImageField(upload_to='racetypes', default="", blank=True, verbose_name="Logo d'illustration")
     image = models.ImageField(upload_to='racetypes', default="", blank=True, verbose_name="Image d'illustration")
+    video = models.FileField(upload_to='racetypes', default="", blank=True, verbose_name="Vidéo de démonstration")
 
     def __str__(self):
         return self.name
diff --git a/WSR/static/scss/components.scss b/WSR/static/scss/components.scss
index 0595905..d9ba4d2 100644
--- a/WSR/static/scss/components.scss
+++ b/WSR/static/scss/components.scss
@@ -282,7 +282,7 @@ footer {
       margin-bottom: map-get($spacers, 2);
       width: 100%;
 
-      img {
+      img, video {
         width: inherit;
       }
     }
diff --git a/WSR/templates/race-types.html b/WSR/templates/race-types.html
index 7fac1ee..6984d10 100644
--- a/WSR/templates/race-types.html
+++ b/WSR/templates/race-types.html
@@ -11,8 +11,8 @@
 
             <div class="race-types-container">
                 {% for epreuve in epreuves %}
-                    <div class="card">
-                        <div class="header">
+                    <div class="card" id="type-{{ epreuve.id }}">
+                        <div class="header" data-video-url="{% get_media_prefix %}{{ epreuve.video }}">
                             <img src="{% get_media_prefix %}{{ epreuve.image }}" alt="{{ epreuve.name }}">
                         </div>
                         <div class="content">
@@ -31,4 +31,49 @@
             </div>
         </div>
     </div>
+{% endblock %}
+{% block javascripts %}
+    <script type="text/javascript">
+        // Sélectionne tous les éléments de classe 'card' dont l'ID commence par 'type-'
+        const cards = document.querySelectorAll('.card[id^="type-"]');
+
+        cards.forEach((card) => {
+            let timeoutId;
+            let originalContent;
+
+            card.addEventListener('mouseenter', () => {
+                const header = card.querySelector('.header');
+                const videoUrl = header.dataset.videoUrl;
+
+                if (videoUrl && !header.querySelector('video')) {
+                    timeoutId = setTimeout(() => {
+                        const video = document.createElement('video');
+                        video.src = videoUrl;
+                        video.controls = false;
+                        video.autoplay = true;
+                        video.muted = true;
+                        video.loop = true;
+
+                        // Sauvegarde le contenu d'origine du header pour pouvoir le restaurer plus tard
+                        originalContent = header.innerHTML;
+
+                        header.innerHTML = '';
+                        header.appendChild(video);
+                    }, 1000);
+                }
+            });
+
+            card.addEventListener('mouseleave', () => {
+                clearTimeout(timeoutId);
+
+                const header = card.querySelector('.header');
+                const video = header.querySelector('video');
+
+                if (video) {
+                    // Supprime la vidéo et réaffiche l'image d'origine
+                    header.innerHTML = originalContent;
+                }
+            });
+        });
+    </script>
 {% endblock %}
\ No newline at end of file
-- 
GitLab