diff --git a/components/UCalendar.vue b/components/UCalendar.vue index 01f2da5d5ad768cf3d073a5309bf68cac557c86c..e978e66a8fabee5131e9857b3492557a74da99d3 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>