diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..62c8935
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea/
\ No newline at end of file
diff --git a/custom.js b/custom.js
index d5a963e..106be13 100644
--- a/custom.js
+++ b/custom.js
@@ -1,4 +1,13 @@
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");
})
@@ -8,6 +17,14 @@ jQuery( document ).ready(function($) {
/** 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");
@@ -17,6 +34,14 @@ jQuery( document ).ready(function($) {
var htmlFilter = "
"+ $(this).text() + "
+
";
$("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");
}
}
);
@@ -24,33 +49,62 @@ jQuery( document ).ready(function($) {
// 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");
- console.log($("div.filters-container").length);
});
// 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();
- $(".measure-wrapper + hr").hide();
// si aucun filtre on affiche tout
if (!$.trim($("div.filters-container").html() )) {
- $(".measure-wrapper").show();
- $(".measure-wrapper + hr").show();
+ css_selector = ".measure-wrapper";
}
//sinon on parcourt les filtres et on affiche les éléments correspondants
else {
-
- $("div.filters-container > .measure-filter").each(function () {
+ css_selector = "";
+ $("div.filters-container > .measure-filter").each(function (index) {
var stat = $(this).attr("status");
- $(".measure-wrapper.measure-"+ stat).show();
- $(".measure-wrapper.measure-"+ stat + " + hr").show();
+
+ 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");
});
});
\ No newline at end of file
diff --git a/functions.php b/functions.php
index 6bbd727..64f92c2 100644
--- a/functions.php
+++ b/functions.php
@@ -70,6 +70,8 @@ function generate_home_posts_list() {
// Conteneur pour les filtres
$html = "";
+ // input pour la recherche
+ $html .= "