summaryrefslogtreecommitdiff
path: root/public/js/calendar_admin.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/calendar_admin.js')
-rw-r--r--public/js/calendar_admin.js32
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"