langue select
This commit is contained in:
parent
62cf615ed4
commit
90bb68af53
@ -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 || []);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user