diff --git a/assets/js/modules/agenda-admin-permanences.js b/assets/js/modules/agenda-admin-permanences.js index 8012010..70559d4 100644 --- a/assets/js/modules/agenda-admin-permanences.js +++ b/assets/js/modules/agenda-admin-permanences.js @@ -187,6 +187,18 @@ function setupPreviewListeners() { heuresInputs.forEach(input => { input.addEventListener('change', updatePreview); }); + + // Écouter les changements de durée de permanence (1h ou 15min) + const dureeInputs = document.querySelectorAll('input[name="duree_permanence"]'); + dureeInputs.forEach(input => { + input.addEventListener('change', updatePreview); + }); + + // Écouter les changements du nombre de tranches (si 15min) + const nbTranchesSelect = document.getElementById('nb-tranches'); + if (nbTranchesSelect) { + nbTranchesSelect.addEventListener('change', updatePreview); + } } /** @@ -200,6 +212,8 @@ function updatePreview() { .map(input => input.value) .sort(); // Trier les heures pour un affichage cohérent const moisDebut = document.getElementById('mois-debut')?.value; + const dureePermanence = document.querySelector('input[name="duree_permanence"]:checked')?.value || '1h'; + const nbTranches = dureePermanence === '15min' ? parseInt(document.getElementById('nb-tranches')?.value || '1') : 1; if (heuresChecked.length === 0) { clearPreview(); @@ -217,15 +231,37 @@ function updatePreview() { } // Calculer les tranches horaires à partir des heures sélectionnées - // Chaque heure sélectionnée = 1 tranche d'1 heure - const tranches = heuresChecked.map(heureDebut => { - const [h, m] = heureDebut.split(':').map(Number); - const heureFin = `${String(h + 1).padStart(2, '0')}:${String(m).padStart(2, '0')}`; - return { - debut: heureDebut, - fin: heureFin - }; - }); + let tranches = []; + + if (dureePermanence === '15min') { + // Mode 15 minutes : créer des tranches de 15 minutes + heuresChecked.forEach(heureDebut => { + const [h, m] = heureDebut.split(':').map(Number); + + for (let i = 0; i < nbTranches; i++) { + const minutesDebut = m + (i * 15); + const minutesFin = m + ((i + 1) * 15); + + const trancheDebut = `${String(h).padStart(2, '0')}:${String(minutesDebut).padStart(2, '0')}`; + const trancheFin = `${String(h).padStart(2, '0')}:${String(minutesFin).padStart(2, '0')}`; + + tranches.push({ + debut: trancheDebut, + fin: trancheFin + }); + } + }); + } else { + // Mode 1 heure : chaque heure sélectionnée = 1 tranche d'1 heure + tranches = heuresChecked.map(heureDebut => { + const [h, m] = heureDebut.split(':').map(Number); + const heureFin = `${String(h + 1).padStart(2, '0')}:${String(m).padStart(2, '0')}`; + return { + debut: heureDebut, + fin: heureFin + }; + }); + } // Calculer les dates à partir du mois de début sélectionné const [year, month] = moisDebut.split('-').map(Number); diff --git a/templates/admin/permanences-admin.php b/templates/admin/permanences-admin.php index 02986c8..82abef3 100644 --- a/templates/admin/permanences-admin.php +++ b/templates/admin/permanences-admin.php @@ -281,23 +281,34 @@ if (!is_wp_error($langues_terms) && !empty($langues_terms)) {
Aucune langue n'a été créée dans la taxonomie "Langues". Les permanences seront créées sans langue associée.
++ Pour ajouter des langues, rendez-vous dans + + Traducteurs > Langues + + +
+