jQuery( document ).ready(function($) {
// ajout d'un contains non sensible à la casse
$.expr[":"].Contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
$(".measure-wrapper .measure-title").click(function() {
$(this).next(".measure-content").slideToggle(500, "swing");
$(this).toggleClass("open");
})
/** Filtrage des propositions **/
var css_selector = ".measure-wrapper, .measure-wrapper";
function clearSearchField() {
$(".search-container #measure-search").val("");
}
/* Par catégories */
// Au clic sur un des titres des catégories : on crée le div de filtre correspondnt (avec le slug en attr "statut") et on trigger l'event filtre
$(".home-graph-item .status-title").click(function(){
var stat = $(this).attr("status");
// on conditionne l'action au fait que le filtre ne soit pas déjà actif
if ( $("div.filters-container .filter-" + stat).length === 0) {
var htmlFilter = "
";
$("div.filters-container").append(htmlFilter);
$("div.filters-container").trigger("filters-change");
$([document.documentElement, document.body]).animate({
scrollTop: $(".measures-col").offset().top
}, 200);
}
else {
$("div.filters-container .filter-" + stat).remove();
$("div.filters-container").trigger("filters-change");
}
}
);
// Au clic sur une croix d'un filtre on supprime le div concerné et on trigger l'event filtre
$("body").on("click", "div.filters-container .filter-close", function (){
$(this).closest('.measure-filter').remove();
$("div.filters-container").trigger("filters-change");
});
// Event filtre : on récupère les slugs des catégories présente dans la div des filtres, et on masque tous les autres. Si il n'y a aucun filtre on affiche tout.
$("div.filters-container").on("filters-change", function() {
clearSearchField();
// d'abord on remasque tout
$(".measure-wrapper").hide();
// si aucun filtre on affiche tout
if (!$.trim($("div.filters-container").html() )) {
css_selector = ".measure-wrapper";
}
//sinon on parcourt les filtres et on affiche les éléments correspondants
else {
css_selector = "";
$("div.filters-container > .measure-filter").each(function (index) {
var stat = $(this).attr("status");
if (index !== 0) {
css_selector += ", ";
}
css_selector += ".measure-wrapper.measure-" + stat;
})
}
//on affiche les mesures correspondant au sélecteur
$(css_selector).show();
});
/* Par recherche texte */
$(".search-container #measure-search").keyup(function() {
// récupération du query actuel
var query = $.trim($(this).val());
if (query === "") { // si il est vide on affiche tout
// on affiche toutes les propositions, en tenant compte des filtres éventuels
$(css_selector).show();
}
else {
// on va chercher les mentions de ce query dans les mesures et on cache celles qui ne l'ont pas
$(css_selector).show().not(':Contains(' + query + ')').hide();
}
});
$(".search-container #measure-search-reset").click(function () {
clearSearchField();
$(".search-container #measure-search").trigger("keyup");
});
});