From 367aa23bbafb44b9da51605e8d2ce38ac49deace Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Wed, 26 Apr 2023 09:54:05 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20date=20de=20d=C3=A9but=20et=20de?=
 =?UTF-8?q?=20fin=20de=20saisie=20possible=20pour=20le=20calendar?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 components/UCalendar.vue | 49 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/components/UCalendar.vue b/components/UCalendar.vue
index 01f2da5..e978e66 100644
--- a/components/UCalendar.vue
+++ b/components/UCalendar.vue
@@ -33,7 +33,7 @@
                         <component :is="event.component" :event="event"></component>
                     </div>
 
-                    <div v-if="canAddEvent">
+                    <div v-if="canAdd(jour)">
                         <button @click="addEvent" :data-jour="jour" class="btn btn-light btn-sm">
                             <u-icon name="plus"/>
                             Nouvel événement
@@ -53,6 +53,8 @@ export default {
         date: {type: Date, required: true},
         events: {type: Array, required: true},
         canAddEvent: {type: Boolean, required: true, default: true},
+        addDateDebut: {type: String, required: false},
+        addDateFin: {type: String, required: false},
     },
     data()
     {
@@ -135,6 +137,41 @@ export default {
             return annees;
         },
 
+        canAdd(numJour)
+        {
+            let dateDebut = this.addDateDebut;
+
+            if (undefined === dateDebut){
+                dateDebut = new Date('2000-01-01');
+            }else if ('now' === dateDebut){
+                dateDebut = new Date();
+            }else{
+                dateDebut = new Date(dateDebut);
+            }
+
+
+            let dateFin = this.addDateFin;
+            if (undefined === dateFin){
+                dateFin = new Date('2500-01-01');
+            }else if ('now' === dateFin){
+                dateFin = new Date();
+            }else{
+                dateFin = new Date(dateFin);
+            }
+
+            let date = new Date(this.date);
+            date.setDate(numJour);
+
+            dateDebut = this.isoDateOnly(dateDebut);
+            dateFin = this.isoDateOnly(dateFin);
+            date = this.isoDateOnly(date);
+
+            if (date < dateDebut) return false;
+            if (date > dateFin) return false;
+
+            return true;
+        },
+
         addEvent(event)
         {
             const dateObj = new Date(this.date);
@@ -175,6 +212,16 @@ export default {
             }
             return res;
         },
+
+        isoDateOnly(dateObj)
+        {
+            const year = dateObj.getFullYear();
+            const month = String(dateObj.getMonth() + 1).padStart(2, '0');
+            const day = String(dateObj.getDate()).padStart(2, '0');
+            const formattedDate = `${year}-${month}-${day}`;
+
+            return formattedDate;
+        },
     }
 }
 </script>
-- 
GitLab