This commit is contained in:
theShlavuk 2026-01-21 21:36:03 +01:00
parent d6dad2a7a9
commit c95ec9d09a

View File

@ -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 || []);
}
}