langue select

This commit is contained in:
theShlavuk 2026-01-21 21:50:15 +01:00
parent 62cf615ed4
commit 90bb68af53

View File

@ -292,48 +292,48 @@ function filterSelectOptions(data, currentEventData = null) {
const isPermanence = extendedProps.type === 'permanence'; const isPermanence = extendedProps.type === 'permanence';
const languesDisponibles = extendedProps.langues_disponibles; const languesDisponibles = extendedProps.langues_disponibles;
console.log('🌐 [LANGUE] Filtrage des langues', { const langueSelect = document.getElementById('langue');
isPermanence, if (langueSelect && isPermanence && languesDisponibles && typeof languesDisponibles === 'string' && languesDisponibles.trim() !== '') {
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() !== '') {
const languesPermises = languesDisponibles.split(',').map(l => l.trim()).filter(l => l !== ''); const languesPermises = languesDisponibles.split(',').map(l => l.trim()).filter(l => l !== '');
const languesFiltrees = (data.langues || []).filter(langue => {
// Convertir en string pour comparaison (éviter problème string vs number)
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) || if (languesPermises.length > 0) {
languesPermises.includes(langueSlugStr) || // Parcourir les options et cacher celles dont le data-slug n'est pas dans langues_disponibles
languesPermises.includes(langueStr); Array.from(langueSelect.options).forEach(option => {
}); if (option.value === '') {
// Garder l'option vide visible
option.style.display = '';
option.disabled = false;
return;
}
// Calculer les langues cachées const optionSlug = option.getAttribute('data-slug');
const languesCachees = (data.langues || []).filter(langue => { const isPermise = optionSlug && languesPermises.includes(optionSlug);
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) || if (isPermise) {
languesPermises.includes(langueSlugStr) || option.style.display = '';
languesPermises.includes(langueStr)); option.disabled = false;
}); } else {
option.style.display = 'none';
option.disabled = true;
}
});
console.log('✅ [LANGUE] Langues disponibles (affichées):', languesFiltrees.map(l => ({ id: l.id, nom: l.nom, slug: l.slug }))); console.log('✅ [LANGUE] Options filtrées selon langues_disponibles:', languesPermises);
console.log('❌ [LANGUE] Langues cachées:', languesCachees.map(l => ({ id: l.id, nom: l.nom, slug: l.slug }))); } else {
console.log('📋 [LANGUE] Langues permises (slugs):', languesPermises); // Si langues_disponibles est vide, afficher toutes les options
Array.from(langueSelect.options).forEach(option => {
filterSelect('langue', languesFiltrees); option.style.display = '';
option.disabled = false;
// Le select langue n'est plus en Select2, donc pas besoin de rafraîchir Select2 });
}
} else { } else {
// Afficher toutes les langues (pas de permanence OU pas de langues_disponibles OU vide) // Pas de permanence ou pas de langues_disponibles : afficher toutes les options
console.log('🌍 [LANGUE] Affichage de toutes les langues (pas de filtrage)'); if (langueSelect) {
Array.from(langueSelect.options).forEach(option => {
option.style.display = '';
option.disabled = false;
});
}
filterSelect('langue', data.langues || []); filterSelect('langue', data.langues || []);
} }
} }