Ajout de la fonctionnalité de recherche textuelle + ameliorations ergonomiques mineures
This commit is contained in:
parent
bf42b2aba2
commit
f5e66ae8f6
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.idea/
|
72
custom.js
72
custom.js
|
@ -1,4 +1,13 @@
|
||||||
jQuery( document ).ready(function($) {
|
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() {
|
$(".measure-wrapper .measure-title").click(function() {
|
||||||
$(this).next(".measure-content").slideToggle(500, "swing");
|
$(this).next(".measure-content").slideToggle(500, "swing");
|
||||||
})
|
})
|
||||||
|
@ -8,6 +17,14 @@ jQuery( document ).ready(function($) {
|
||||||
|
|
||||||
/** Filtrage des propositions **/
|
/** 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
|
// 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(){
|
$(".home-graph-item .status-title").click(function(){
|
||||||
var stat = $(this).attr("status");
|
var stat = $(this).attr("status");
|
||||||
|
@ -17,6 +34,14 @@ jQuery( document ).ready(function($) {
|
||||||
var htmlFilter = "<div class='measure-filter filter-" + stat +"' status='" + stat + "'><p class='name'>"+ $(this).text() + "</p><div class='filter-close'>+</div></div>";
|
var htmlFilter = "<div class='measure-filter filter-" + stat +"' status='" + stat + "'><p class='name'>"+ $(this).text() + "</p><div class='filter-close'>+</div></div>";
|
||||||
$("div.filters-container").append(htmlFilter);
|
$("div.filters-container").append(htmlFilter);
|
||||||
$("div.filters-container").trigger("filters-change");
|
$("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
|
// 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 (){
|
$("body").on("click", "div.filters-container .filter-close", function (){
|
||||||
$(this).closest('.measure-filter').remove();
|
$(this).closest('.measure-filter').remove();
|
||||||
|
|
||||||
$("div.filters-container").trigger("filters-change");
|
$("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.
|
// 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() {
|
$("div.filters-container").on("filters-change", function() {
|
||||||
|
clearSearchField();
|
||||||
|
|
||||||
// d'abord on remasque tout
|
// d'abord on remasque tout
|
||||||
$(".measure-wrapper").hide();
|
$(".measure-wrapper").hide();
|
||||||
$(".measure-wrapper + hr").hide();
|
|
||||||
// si aucun filtre on affiche tout
|
// si aucun filtre on affiche tout
|
||||||
if (!$.trim($("div.filters-container").html() )) {
|
if (!$.trim($("div.filters-container").html() )) {
|
||||||
$(".measure-wrapper").show();
|
css_selector = ".measure-wrapper";
|
||||||
$(".measure-wrapper + hr").show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//sinon on parcourt les filtres et on affiche les éléments correspondants
|
//sinon on parcourt les filtres et on affiche les éléments correspondants
|
||||||
else {
|
else {
|
||||||
|
css_selector = "";
|
||||||
$("div.filters-container > .measure-filter").each(function () {
|
$("div.filters-container > .measure-filter").each(function (index) {
|
||||||
var stat = $(this).attr("status");
|
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");
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
|
@ -70,6 +70,8 @@ function generate_home_posts_list() {
|
||||||
|
|
||||||
// Conteneur pour les filtres
|
// Conteneur pour les filtres
|
||||||
$html = "<div class='filters-container'></div>";
|
$html = "<div class='filters-container'></div>";
|
||||||
|
// input pour la recherche
|
||||||
|
$html .= "<div class='search-container'><input id='measure-search' type='text' name='filters-search' placeholder='Rechercher'><button type='reset' id='measure-search-reset'><span class='dashicons dashicons-no-alt'></span></button> </div>";
|
||||||
|
|
||||||
foreach ($measures as $measure) {
|
foreach ($measures as $measure) {
|
||||||
$status = get_the_category($measure->ID)[0];
|
$status = get_the_category($measure->ID)[0];
|
||||||
|
|
62
style.css
62
style.css
|
@ -69,6 +69,7 @@ Version: 0.1
|
||||||
.measure-wrapper {
|
.measure-wrapper {
|
||||||
border: 2px solid;
|
border: 2px solid;
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-content h3.measure-title,
|
.entry-content h3.measure-title,
|
||||||
|
@ -128,6 +129,11 @@ Version: 0.1
|
||||||
background-color: #FFFFFF9E;
|
background-color: #FFFFFF9E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.measure-wrapper[style*="display: none;"] + hr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/** homepage graphs ***/
|
/** homepage graphs ***/
|
||||||
|
|
||||||
.home-graph-item h3 {
|
.home-graph-item h3 {
|
||||||
|
@ -167,7 +173,7 @@ Version: 0.1
|
||||||
/* filters */
|
/* filters */
|
||||||
|
|
||||||
.filters-container {
|
.filters-container {
|
||||||
margin-bottom: 1em;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.measure-filter {
|
.measure-filter {
|
||||||
|
@ -205,6 +211,60 @@ Version: 0.1
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* search */
|
||||||
|
.search-container {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container::before {
|
||||||
|
content: "\f179";
|
||||||
|
font-family: "dashicons";
|
||||||
|
display: block;
|
||||||
|
font-size: 32px;
|
||||||
|
color: #686868;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto;
|
||||||
|
width: 51px;
|
||||||
|
height: 51px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container input {
|
||||||
|
padding-left: 51px;
|
||||||
|
border-radius: 30px;
|
||||||
|
border: 1px solid #686868;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container #measure-search-reset {
|
||||||
|
position: absolute;
|
||||||
|
background-color: transparent;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto;
|
||||||
|
padding: 0;
|
||||||
|
color: #686868;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container #measure-search-reset span {
|
||||||
|
font-size: 2em;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container #measure-search-reset:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container input:placeholder-shown + #measure-search-reset {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
|
|
||||||
RESPONSIVE
|
RESPONSIVE
|
||||||
|
|
Loading…
Reference in a new issue