167 lines
5.1 KiB
JavaScript
Vendored
167 lines
5.1 KiB
JavaScript
Vendored
|
|
$(document).ready(function() {
|
|
|
|
/******************************
|
|
Moteur de recherche de médias
|
|
**********************************/
|
|
|
|
// ---- Initialisation du module de recherche
|
|
if($('.search_wrapper').length){
|
|
|
|
// ---- Initialisation des listes
|
|
$(".filter_selector .filter_btn").on('click',function(event) {
|
|
$(".filter_selector .list").not($(this).parent().find(".list")).hide();
|
|
$(this).parent().find(".list").toggle();
|
|
});
|
|
|
|
// ---- Initialisation du champ de recherche
|
|
$(".search_filters .search_value").on('keypress',function(event) {
|
|
if (event.keyCode == 13) {
|
|
$(".search_filters .search_btn").trigger('click');
|
|
}
|
|
});
|
|
|
|
// ---- Clique sur le bouton de recherche
|
|
$(".search_filters .search_btn").on('click', function(event) {
|
|
// on créé un object filtre
|
|
var filter = {
|
|
type: "search",
|
|
legend : "Recherche : ",
|
|
value: $(".search_filters .search_value").val(),
|
|
libelle: [$(".search_filters .search_value").val()],
|
|
};
|
|
|
|
// MAJ du filtre principal et de l'affichage
|
|
updateFilter(filter);
|
|
|
|
// On lance la recherche
|
|
var sujet_id = $("#sujet_selector").val();
|
|
$(window).data('offset', 0);
|
|
loadMedia(sujet_id, 1);
|
|
});
|
|
|
|
// ---- Clique sur un filtre
|
|
$(".filter").on('click', 'input[type="checkbox"]', function(event) {
|
|
var values = [];
|
|
var libelles = [];
|
|
|
|
// on créé un object filtre
|
|
var filter = {
|
|
type: $(this).parents(".filter").attr('data-type'),
|
|
legend : $(this).parents(".filter").attr('data-lib-type'),
|
|
value: [],
|
|
libelle: [],
|
|
};
|
|
|
|
// on y insère toutes les valeurs de ce même type de filtre
|
|
$(this).parents(".filter").find('input[type="checkbox"]').each(function (index, cb){
|
|
if($(this).is(':checked')){
|
|
filter.value.push($(this).val());
|
|
filter.libelle.push($(this).next("label").html());
|
|
}
|
|
});
|
|
|
|
// MAJ du filtre principal et de l'affichage
|
|
updateFilter(filter);
|
|
|
|
// On lance la recherche
|
|
var sujet_id = $("#sujet_selector").val();
|
|
$(window).data('offset', 0);
|
|
loadMedia(sujet_id);
|
|
});
|
|
|
|
// ---- Réinitialisation de la recherche
|
|
$(".reinit_search_btn").on('click', function(event) {
|
|
event.preventDefault();
|
|
// Vide la bar recherche
|
|
$.each(Object.keys($(window).data('filter')), function (index, value) {
|
|
if(value != "currentFolder")
|
|
$(".search_filters_list #"+value).remove();
|
|
});
|
|
// supprime tous les éléments de recherche
|
|
$(window).data('filter', {});
|
|
// masque le bouton de reinitialisation
|
|
$(".filter_wrapper .reinit_search_btn").hide();
|
|
|
|
// ---- Initialisation des listes
|
|
$(".filter").find('input[type="checkbox"]').prop( "checked", false );
|
|
|
|
// On lance la recherche
|
|
var sujet_id = $("#sujet_selector").val();
|
|
$(window).data('offset', 0);
|
|
loadMedia(sujet_id);
|
|
});
|
|
|
|
// ---- Suppression d'un filtre
|
|
$(".search_filters_list").on('click', '.filter_item', function(event) {
|
|
event.preventDefault();
|
|
var filters = $(window).data('filter');
|
|
var type = $(this).attr('id');
|
|
|
|
// Supprime l'élément dans la bar recherche
|
|
$(".search_filters_list #"+type).remove();
|
|
|
|
if(type == "currentFolder"){
|
|
$(".folder_container .dd3-content").removeClass('selected');
|
|
$(".folder_container .root_folder").removeClass('selected');
|
|
$(window).data('currentFolder', -1);
|
|
}else{
|
|
// supprime la propriété dans l'objet
|
|
if("undefined" !== typeof(filters[type]) ){ // si l'object à cette propriété
|
|
delete filters[type]; // on l'a supprime
|
|
}
|
|
$(window).data('filter', filters);
|
|
|
|
// ---- Initialisation des listes
|
|
$(".search_filters .filter[data-type='"+type+"']").find('input[type="checkbox"]').prop( "checked", false );
|
|
}
|
|
|
|
// masque le bouton de reinitialisation
|
|
if(Object.keys($(window).data('filter')).length == 0){
|
|
$(".filter_wrapper .reinit_search_btn").hide();
|
|
}
|
|
|
|
// On lance la recherche
|
|
var sujet_id = $("#sujet_selector").val();
|
|
$(window).data('offset', 0);
|
|
loadMedia(sujet_id);
|
|
});
|
|
}
|
|
});
|
|
|
|
window.updateFilter = function(filter){
|
|
var filters = $(window).data('filter');
|
|
|
|
// si ce filtre n'a pas de valeur
|
|
if(filter.value.length == 0 ){
|
|
$(".search_filters_list #"+filter.type).remove(); // on supprime le filtre de la liste
|
|
if("undefined" !== typeof(filters[filter.type]) ){ // si l'object à cette propriété
|
|
delete filters[filter.type]; // on l'a supprime
|
|
}
|
|
|
|
// si on a des valeurs pour ce filtre
|
|
}else{
|
|
// on met à jour l'objet filtre
|
|
filters[filter.type] = filter;
|
|
$(window).data('filter', filters);
|
|
|
|
// si le filtre n'existe pas dans la liste on l'ajoute
|
|
if(!$(".search_filters_list #"+filter.type).length){
|
|
var output = '<a id="'+filter.type+'" class="filter_item" href="#">';
|
|
output += '<span class="libelle">'+filter.legend+'</span>';
|
|
output += '<span class="value"></span>';
|
|
output += '<i class="delete_filter fal fa-times"></i>';
|
|
output += '</a>';
|
|
$(".search_filters_list").append(output);
|
|
}
|
|
|
|
$(".search_filters_list #"+filter.type+" .value").html(filter.libelle.join());
|
|
}
|
|
|
|
// affiche/masque le bouton de reinitialisation
|
|
if(Object.keys($(window).data('filter')).length > 0){
|
|
$(".filter_wrapper .reinit_search_btn").show();
|
|
}else{
|
|
$(".filter_wrapper .reinit_search_btn").hide();
|
|
}
|
|
}
|