From 600fbca86951c28b4cf96a93b1a5fe5ba6149161 Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 15 Jan 2026 23:14:05 +0100 Subject: =?UTF-8?q?am=C3=A9lioration=20code=20calendar.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/calendar.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'public/js/calendar.js') diff --git a/public/js/calendar.js b/public/js/calendar.js index 8809246..b3aa927 100644 --- a/public/js/calendar.js +++ b/public/js/calendar.js @@ -1,7 +1,7 @@ // js/calendar.js document.addEventListener('DOMContentLoaded', function(){ - const calendarEl = document.getElementById('calendar'); + const calendarEl = getElementOrThrow('calendar'); let selected_start_string = null; const calendar = new FullCalendar.Calendar(calendarEl,{ @@ -58,7 +58,10 @@ document.addEventListener('DOMContentLoaded', function(){ //unselect: function(event, view){}, eventClick: function(info){ - const aside = document.querySelector('aside'); + const modal = getElementOrThrow('event_modal'); + if(!info.event.start || !info.event.end){ + throw new Error('modale non conforme'); + } const checked = info.event.allDay ? 'checked' : ''; // change des objets Date en chaînes compatibles avec les input @@ -75,25 +78,25 @@ document.addEventListener('DOMContentLoaded', function(){ const start_date = start.split('T')[0]; const start_hour = (info.event.allDay ? '' : '
à ' + start.split('T')[1]).replace(":", "h"); const formated_start = start_date.split('-')[2] + '/' + start_date.split('-')[1] + '/' + start_date.split('-')[0] + start_hour; - const end = formatDate(info.event.allDay ? minusOneDay(info.event.end) : info.event.end, info.event.allDay); + const end = formatDate(info.event.allDay ? minusOneDay(info.event.end) : info.event.end); const end_date = end.split('T')[0]; const end_hour = (info.event.allDay ? '' : '
à ' + end.split('T')[1]).replace(":", "h"); const formated_end = end_date.split('-')[2] + '/' + end_date.split('-')[1] + '/' + end_date.split('-')[0] + end_hour; - let aside_content = `
+ let modal_content = `

` + info.event.title + `

` + info.event.extendedProps.description + `

`; if(checked && (formated_start === formated_end)){ // affichage simplifié évènement d'un jour - aside_content = aside_content + `

le ` + formated_start + `

`; + modal_content = modal_content + `

le ` + formated_start + `

`; } else{ - aside_content = aside_content + `

du ` + formated_start + `

+ modal_content = modal_content + `

du ` + formated_start + `

au ` + formated_end + `

`; } - aside_content += ` + modal_content += `
`; - aside.innerHTML = aside_content; + modal.innerHTML = modal_content; calendar.updateSize(); }, viewDidMount: function(info){ // déclenché lorsque qu'une nouvelle vue est chargée (mois, semaine...) @@ -105,8 +108,8 @@ document.addEventListener('DOMContentLoaded', function(){ }); function hideModal(){ - const aside = document.querySelector('aside'); - aside.innerHTML = ''; + const modal = getElementOrThrow('event_modal'); + modal.innerHTML = ''; calendar.updateSize(); } @@ -118,6 +121,10 @@ document.addEventListener('DOMContentLoaded', function(){ // technique de la délégation d'événements pour utiliser un bouton ajouté dynamiquement document.addEventListener('click', function(event){ + if(!event.target){ + throw new Error('évènement click non conforme'); + } + assertElementType(event.target, HTMLElement); if(event.target.classList.contains('event_close_button')){ hideModal(); } -- cgit v1.2.3