diff options
| author | polo <ordipolo@gmx.fr> | 2025-07-20 16:38:52 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-07-20 16:38:52 +0200 |
| commit | 245f1c1f4f60f6841b557312ff49b2ee6bac9bf3 (patch) | |
| tree | f7103b73670fcf7019ccc1a9e18b7f5e55cad039 /public/js/calendar_admin.js | |
| parent | 976eaa544322be18c9feb1a165b9645533af4538 (diff) | |
| download | cms-245f1c1f4f60f6841b557312ff49b2ee6bac9bf3.tar.gz cms-245f1c1f4f60f6841b557312ff49b2ee6bac9bf3.tar.bz2 cms-245f1c1f4f60f6841b557312ff49b2ee6bac9bf3.zip | |
sélections correctes calendrier écran tactile
Diffstat (limited to 'public/js/calendar_admin.js')
| -rw-r--r-- | public/js/calendar_admin.js | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/public/js/calendar_admin.js b/public/js/calendar_admin.js index 7f167a4..90e2942 100644 --- a/public/js/calendar_admin.js +++ b/public/js/calendar_admin.js | |||
| @@ -29,9 +29,8 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 29 | // pour recalculer la taille au redimensionnement du parent, exécuter: calendar.updateSize() | 29 | // pour recalculer la taille au redimensionnement du parent, exécuter: calendar.updateSize() |
| 30 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll | 30 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll |
| 31 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois | 31 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois |
| 32 | selectable: true, // sélection de jours multiples | 32 | selectable: true, // sélection de jours en cliquant dessus |
| 33 | longPressDelay: 0, /* par défaut sur mobile, select est déclenché avec un appui d'une seconde, | 33 | longPressDelay: 300, // 1000ms par défaut |
| 34 | chatgpt déconseille 0 par risque de conflit entre selection et scrolling, mettre plutôt 200 ou 300ms */ | ||
| 35 | navLinks: true, // numéros de jour et de semaines clicables | 34 | navLinks: true, // numéros de jour et de semaines clicables |
| 36 | 35 | ||
| 37 | // vue semaine | 36 | // vue semaine |
| @@ -58,10 +57,11 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 58 | const end = new Date(info.endStr); | 57 | const end = new Date(info.endStr); |
| 59 | 58 | ||
| 60 | if(calendar.view.type == 'dayGridMonth'){ | 59 | if(calendar.view.type == 'dayGridMonth'){ |
| 61 | start_value = info.startStr + 'T10:00'; | 60 | const start = new Date(info.startStr); |
| 61 | start_value = start.toISOString().split('T')[0] + 'T10:00'; | ||
| 62 | |||
| 62 | end.setDate(end.getDate() - 1); // jour de fin modifié pour ne pas faire bizarre pour l'utilisateur | 63 | end.setDate(end.getDate() - 1); // jour de fin modifié pour ne pas faire bizarre pour l'utilisateur |
| 63 | end.setHours(11); | 64 | end_value = end.toISOString().split('T')[0] + 'T10:30'; |
| 64 | end_value = end.toISOString().split('T')[0] + 'T11:00'; | ||
| 65 | } | 65 | } |
| 66 | else if(calendar.view.type == 'timeGridWeek' || calendar.view.type == 'timeGridDay'){ | 66 | else if(calendar.view.type == 'timeGridWeek' || calendar.view.type == 'timeGridDay'){ |
| 67 | const start_array = info.startStr.split("T"); | 67 | const start_array = info.startStr.split("T"); |
| @@ -115,6 +115,26 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 115 | aside.innerHTML = aside_content; | 115 | aside.innerHTML = aside_content; |
| 116 | calendar.updateSize(); | 116 | calendar.updateSize(); |
| 117 | }, | 117 | }, |
| 118 | // sélection d'une date simple sur mobile, évite des problèmes de conflit avec eventClick | ||
| 119 | dateClick: function(info){ | ||
| 120 | if(window.matchMedia('(pointer: coarse)').matches){ | ||
| 121 | const end = new Date(info.date); | ||
| 122 | calendar.view.type == 'dayGridMonth' ? end.setDate(end.getDate() + 1) : end.setMinutes(end.getMinutes() + 30); | ||
| 123 | // vue date: la fin est une date exclue | ||
| 124 | // vue semaine: durée de 30min par défaut | ||
| 125 | |||
| 126 | const local_end_date_array = end.toLocaleDateString().split('/'); | ||
| 127 | let local_end_str = local_end_date_array[2] + '-' + local_end_date_array[1] + '-' + local_end_date_array[0]; | ||
| 128 | |||
| 129 | if(calendar.view.type != 'dayGridMonth'){ | ||
| 130 | local_end_str += 'T' + end.toLocaleTimeString(); | ||
| 131 | } | ||
| 132 | |||
| 133 | // on a besoin de deux chaînes représentant l'heure locale pour obtenir le même objet "info" qu'avec l'évènement select | ||
| 134 | // la vue "dayGridMonth" nécessite deux paramètres, par sécurité on en enverra toujours deux | ||
| 135 | calendar.select(info.dateStr, local_end_str); | ||
| 136 | } | ||
| 137 | }, | ||
| 118 | //unselect: function(event, view){}, | 138 | //unselect: function(event, view){}, |
| 119 | eventClick: function(info){ | 139 | eventClick: function(info){ |
| 120 | event_selected = true; // variable "globale" | 140 | event_selected = true; // variable "globale" |
