diff --git a/assets/js/modules/agenda-modal-select.js b/assets/js/modules/agenda-modal-select.js index dfa162f..5137005 100644 --- a/assets/js/modules/agenda-modal-select.js +++ b/assets/js/modules/agenda-modal-select.js @@ -292,6 +292,12 @@ function filterSelectOptions(data, currentEventData = null) { const isPermanence = extendedProps.type === 'permanence'; const languesDisponibles = extendedProps.langues_disponibles; + console.log('🌐 [LANGUE] Filtrage des langues', { + isPermanence, + languesDisponibles, + totalLangues: (data.langues || []).length + }); + // Si c'est une permanence ET qu'il y a des langues_disponibles non vides, filtrer // Sinon (pas de permanence OU pas de langues_disponibles OU vide), afficher toutes les langues if (isPermanence && languesDisponibles && typeof languesDisponibles === 'string' && languesDisponibles.trim() !== '') { @@ -306,9 +312,46 @@ function filterSelectOptions(data, currentEventData = null) { languesPermises.includes(langueSlugStr) || languesPermises.includes(langueStr); }); + + // Calculer les langues cachées + const languesCachees = (data.langues || []).filter(langue => { + const langueIdStr = langue.id != null ? langue.id.toString() : null; + const langueSlugStr = langue.slug != null ? langue.slug.toString() : null; + const langueStr = typeof langue === 'string' ? langue : null; + + return !(languesPermises.includes(langueIdStr) || + languesPermises.includes(langueSlugStr) || + languesPermises.includes(langueStr)); + }); + + console.log('✅ [LANGUE] Langues disponibles (affichées):', languesFiltrees.map(l => ({ id: l.id, nom: l.nom, slug: l.slug }))); + console.log('❌ [LANGUE] Langues cachées:', languesCachees.map(l => ({ id: l.id, nom: l.nom, slug: l.slug }))); + console.log('📋 [LANGUE] Langues permises (slugs):', languesPermises); + filterSelect('langue', languesFiltrees); + + // Rafraîchir Select2 pour le select langue après filtrage + const langueSelect = document.getElementById('langue'); + if (langueSelect && window.jQuery && jQuery(langueSelect).hasClass('select2-hidden-accessible')) { + const $select = jQuery(langueSelect); + // Forcer la mise à jour de Select2 pour refléter les options filtrées + setTimeout(() => { + // Rafraîchir Select2 en déclenchant un événement qui force la mise à jour + $select.trigger('change.select2'); + // Si Select2 est ouvert, forcer la fermeture/ouverture pour rafraîchir + if ($select.data('select2')) { + const select2Instance = $select.data('select2'); + // Forcer la mise à jour de la liste déroulante + if (select2Instance.isOpen()) { + $select.select2('close'); + setTimeout(() => $select.select2('open'), 10); + } + } + }, 100); + } } else { // Afficher toutes les langues (pas de permanence OU pas de langues_disponibles OU vide) + console.log('🌍 [LANGUE] Affichage de toutes les langues (pas de filtrage)'); filterSelect('langue', data.langues || []); } }