correction filtre rapides
This commit is contained in:
parent
23dd434546
commit
14a7c216c5
@ -985,35 +985,49 @@ class CRVI_TraductionLangue_Model extends Main_Model {
|
||||
}
|
||||
}
|
||||
|
||||
// Récupérer toutes les capacités actives
|
||||
$capacites = self::getActiveCapacites([], false);
|
||||
// Récupérer uniquement les termes de la taxonomie 'langue' qui sont liés à des posts 'traduction_langue' actifs
|
||||
$langues_terms = \get_terms([
|
||||
'taxonomy' => 'langue',
|
||||
'hide_empty' => true, // Important: ne récupérer que les termes utilisés
|
||||
'object_ids' => \get_posts([
|
||||
'post_type' => 'traduction_langue',
|
||||
'post_status' => 'publish',
|
||||
'numberposts' => -1,
|
||||
'fields' => 'ids'
|
||||
])
|
||||
]);
|
||||
|
||||
$langues_ids = [];
|
||||
foreach ($capacites as $capacite) {
|
||||
$capacite_langues = is_array($capacite->langue) ? $capacite->langue : [$capacite->langue];
|
||||
$langues_ids = array_merge($langues_ids, $capacite_langues);
|
||||
if (\is_wp_error($langues_terms) || empty($langues_terms)) {
|
||||
// Mettre en cache un résultat vide
|
||||
if ($use_cache) {
|
||||
\set_transient($cache_key, [], 1 * \DAY_IN_SECONDS);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
$langues_ids = array_unique($langues_ids);
|
||||
|
||||
$result = [];
|
||||
|
||||
foreach ($langues_ids as $langue_id) {
|
||||
$langue_term = \get_term($langue_id, 'langue');
|
||||
if ($langue_term && !\is_wp_error($langue_term)) {
|
||||
// Obtenir les disponibilités avec ventilation par jour
|
||||
$dispos = self::getDisponibilitesByLangueWithJours($langue_id, $date, $use_cache);
|
||||
foreach ($langues_terms as $langue_term) {
|
||||
// Vérifier qu'il existe au moins une capacité active pour cette langue
|
||||
$capacites = self::getActiveCapacites(['langue' => $langue_term->term_id], false);
|
||||
|
||||
$result[$langue_term->slug] = [
|
||||
'id' => $langue_id,
|
||||
'name' => $langue_term->name,
|
||||
'slug' => $langue_term->slug,
|
||||
'total' => $dispos['total'],
|
||||
'remaining' => $dispos['remaining'],
|
||||
'by_periode' => $dispos['by_periode'],
|
||||
'by_jour' => $dispos['by_jour'],
|
||||
];
|
||||
if (empty($capacites)) {
|
||||
// Pas de capacité active pour cette langue, on saute
|
||||
continue;
|
||||
}
|
||||
|
||||
// Obtenir les disponibilités avec ventilation par jour
|
||||
$dispos = self::getDisponibilitesByLangueWithJours($langue_term->term_id, $date, $use_cache);
|
||||
|
||||
$result[$langue_term->slug] = [
|
||||
'id' => $langue_term->term_id,
|
||||
'name' => $langue_term->name,
|
||||
'slug' => $langue_term->slug,
|
||||
'total' => $dispos['total'],
|
||||
'remaining' => $dispos['remaining'],
|
||||
'by_periode' => $dispos['by_periode'],
|
||||
'by_jour' => $dispos['by_jour'],
|
||||
];
|
||||
}
|
||||
|
||||
// Trier par nom de langue
|
||||
@ -1021,9 +1035,9 @@ class CRVI_TraductionLangue_Model extends Main_Model {
|
||||
return strcmp($a['name'], $b['name']);
|
||||
});
|
||||
|
||||
// Mettre en cache le résultat (2 jours)
|
||||
// Mettre en cache le résultat (1 jour)
|
||||
if ($use_cache) {
|
||||
\set_transient($cache_key, $result, 2 * \DAY_IN_SECONDS);
|
||||
\set_transient($cache_key, $result, 1 * \DAY_IN_SECONDS);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
@ -126,12 +126,12 @@
|
||||
<!-- Filtres visuels -->
|
||||
<section class="visual-filters-container mb-4">
|
||||
<div class="card crvi-quick-filters">
|
||||
<div class="card-header d-flex justify-content-between align-items-center" style="cursor: pointer;" data-bs-toggle="collapse" data-bs-target="#visualFiltersCollapse" aria-expanded="true" aria-controls="visualFiltersCollapse">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">
|
||||
<i class="fas fa-filter me-2"></i>Filtres rapides
|
||||
</h5>
|
||||
<button class="btn btn-link text-decoration-none p-0" type="button">
|
||||
<i class="fas fa-chevron-down" id="visual-filters-toggle-icon"></i>
|
||||
<button class="btn btn-link text-decoration-none p-0" type="button" data-bs-toggle="collapse" data-bs-target="#visualFiltersCollapse" aria-expanded="true" aria-controls="visualFiltersCollapse">
|
||||
<i class="fas fa-chevron-down transition-transform" id="visual-filters-toggle-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div id="visualFiltersCollapse" class="collapse show">
|
||||
@ -182,14 +182,19 @@
|
||||
const toggleIcon = document.getElementById('visual-filters-toggle-icon');
|
||||
|
||||
if (collapseElement && toggleIcon) {
|
||||
// Définir l'état initial de l'icône
|
||||
toggleIcon.style.transition = 'transform 0.3s ease';
|
||||
if (collapseElement.classList.contains('show')) {
|
||||
toggleIcon.style.transform = 'rotate(180deg)';
|
||||
}
|
||||
|
||||
// Écouter les événements de collapse
|
||||
collapseElement.addEventListener('show.bs.collapse', function() {
|
||||
toggleIcon.style.transform = 'rotate(180deg)';
|
||||
toggleIcon.style.transition = 'transform 0.3s ease';
|
||||
});
|
||||
|
||||
collapseElement.addEventListener('hide.bs.collapse', function() {
|
||||
toggleIcon.style.transform = 'rotate(0deg)';
|
||||
toggleIcon.style.transition = 'transform 0.3s ease';
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user