<commit_before>/**
 * Initialisation
 ******************************************/
$(document).ready(function()
{
    $('.hamza_style .autocompletion_tags').rechercheTableParTags();
});

/**
 * Initialise la recherche dans un tableau
 * HTML par tags
 * $(s).rechercheTableParTags();
 ******************************************/
$.fn.rechercheTableParTags = function()
{
    var bloc = $(this);
    var table = $(bloc.attr('data-table'));
    var tableLignes = table.find('tbody tr');
    var tableLigneVide = tableLignes.filter('.vide');
    
    var objRecherche =
    {
        bloc : bloc,
        source : eval(bloc.attr('data-source')),
        table : table,
        tableLignes : tableLignes,
        tableLigneVide : tableLigneVide,
        listeTags : bloc.find('.tags'),
        tabTags : [],
        tagsSource : [],
        tagsAjoutes : $(),
        nbTagsAjoutes : 0,
        idSelectionnes : [],
        nbResultats : 0
    };
    
    // Création des tags
    $.creerListeTags(objRecherche);
};

/**
 * Créé la liste des tags pour l'autocomplétion
 * $.creerListeTags(objRecherche);
 ******************************************/
$.creerListeTags = function(objRecherche)
{
    
    // Récupération de tous les tags avec les doublons
    $.each(objRecherche.source, function(id, tagsAssocies)
    {
        $.merge(objRecherche.tabTags, tagsAssocies);
    });
    
    // Récupération de tous les tags sans les doublons
    $.each(objRecherche.tabTags, function(i, tag)
    {
        if($.inArray(tag, objRecherche.tagsSource) < 0)
        {
            objRecherche.tagsSource.push(tag);
        }
    });
    
    // Initialisation de l'autocomplétion
    objRecherche.listeTags.tagit
    ({
        tagSource: objRecherche.tagsSource,
        singleField: true,
        caseSensitive: false,
        allowNewTags: false,
        select: true,
        
        // Ajout ou suppression d'un tag
        tagsChanged: function(tagValue, action, element)
        {
            if(action == 'added' || action == 'popped')
            {
                $.fn.selectionIdParTags(objRecherche);
            }
        }
    });
    
    objRecherche.tagsAjoutes = objRecherche.listeTags.next('.tagit-hiddenSelect');
};


/**
 * Sélectionne les id en fonction des tags
 * $(s).selectionIdParTags(objRecherche);
 ******************************************/
$.fn.selectionIdParTags = function(objRecherche)
{
    var tagsAjoutes = objRecherche.tagsAjoutes.val();
    
    // Nombre de tags ajoutés
    if(tagsAjoutes) objRecherche.nbTagsAjoutes = tagsAjoutes.length;
    else objRecherche.nbTagsAjoutes = 0;
    
    // Vide le tableau d'Id
    objRecherche.idSelectionnes.length = 0; 
    
    
    // S'il y a des tags à trouver
    if(objRecherche.nbTagsAjoutes > 0)
    {   
        // Parcours de tous les id
        $.each(objRecherche.source, function(id, tabTags)
        {
            var trouve = true;
            var i = 0;
            
            // Parcours des tags ajoutés
            while(trouve && i <= (objRecherche.nbTagsAjoutes-1) )
            {
                // Si le tag courant est absent du tableau de tags de l'id courant
                if($.inArray(tagsAjoutes[i], tabTags) == -1)
                    trouve = false;
                
                i++;
            }
            
            // Ajout de l'id
            if(trouve) objRecherche.idSelectionnes.push('#'+id); 
        });
        
        objRecherche.nbResultats = objRecherche.idSelectionnes.length;
    }   
    
    // Pas de tags à trouver
    else
    {
        objRecherche.nbResultats = -1;
    }
    
    // Tri du tableau
    $.triTableParTags(objRecherche);
};


/**
 * Tri la table en fonction des tags
 * $.triTableParTags(objRecherche);
 ******************************************/
$.triTableParTags = function(objRecherche)
{
    var selecteur = '';
    
    // Si aucun tag
    if(objRecherche.nbResultats == -1)
    {
        objRecherche.tableLignes.show();
        objRecherche.tableLigneVide.hide();
    }
    
    // Si pas de résultat, affichage de la ligne vide
    else if(objRecherche.nbResultats == 0)
    {
        objRecherche.tableLignes.hide();
        objRecherche.tableLigneVide.show();
    }
    
    // Sinon, affichage des lignes concernées
    else
    {
        objRecherche.tableLigneVide.hide();
        objRecherche.tableLignes.hide();
    
        $.each(objRecherche.idSelectionnes, function(i, id)
        {
            if(i == 0) selecteur += id;
            else selecteur += ', ' + id;
        });
        
        $(selecteur).show();
    }
};<commit_msg>- Méthodes pour ajouter des tags à partir d'une url ou d'une chaine de   caractère<commit_after>/**
 * Initialisation
 ******************************************/
$(document).ready(function()
{
    $('.hamza_style .autocompletion_tags').rechercheTableParTags();
});

/**
 * Initialise la recherche dans un tableau
 * HTML par tags
 * $(s).rechercheTableParTags();
 ******************************************/
$.fn.rechercheTableParTags = function()
{
    var bloc = $(this);
    var table = $(bloc.attr('data-table'));
    var tableLignes = table.find('tbody tr');
    var tableLigneVide = tableLignes.filter('.vide');
    
    var objRecherche =
    {
        bloc : bloc,
        source : eval(bloc.attr('data-source')),
        table : table,
        tableLignes : tableLignes,
        tableLigneVide : tableLigneVide,
        listeTags : bloc.find('.tags'),
        tabTags : [],
        tagsSource : [],
        tagsAjoutes : $(),
        nbTagsAjoutes : 0,
        idSelectionnes : [],
        nbResultats : 0
    };
    
    // Création des tags
    $.creerListeTags(objRecherche);

    $.ajouterTagsParUrl(objRecherche, document.location.href);

    $('a.lien_hamza_style').click(function(e) {
        $.ajouterTagsParUrl(objRecherche, $(this).attr('href'));
        $(document).scrollTo(table);
        return false;
    });
};

/**
 * Créé la liste des tags pour l'autocomplétion
 * $.creerListeTags(objRecherche);
 ******************************************/
$.creerListeTags = function(objRecherche)
{
    
    // Récupération de tous les tags avec les doublons
    $.each(objRecherche.source, function(id, tagsAssocies)
    {
        $.merge(objRecherche.tabTags, tagsAssocies);
    });
    
    // Récupération de tous les tags sans les doublons
    $.each(objRecherche.tabTags, function(i, tag)
    {
        if($.inArray(tag, objRecherche.tagsSource) < 0)
        {
            objRecherche.tagsSource.push(tag);
        }
    });
    
    // Initialisation de l'autocomplétion
    objRecherche.listeTags.tagit
    ({
        tagSource: objRecherche.tagsSource,
        singleField: true,
        caseSensitive: false,
        allowNewTags: false,
        select: true,
        
        // Ajout ou suppression d'un tag
        tagsChanged: function(tagValue, action, element)
        {
            if(action == 'added' || action == 'popped')
            {
                $.fn.selectionIdParTags(objRecherche);
            }
        }
    });
    
    objRecherche.tagsAjoutes = objRecherche.listeTags.next('.tagit-hiddenSelect');
};


/**
 * Sélectionne les id en fonction des tags
 * $(s).selectionIdParTags(objRecherche);
 ******************************************/
$.fn.selectionIdParTags = function(objRecherche)
{
    var tagsAjoutes = objRecherche.tagsAjoutes.val();
    
    // Nombre de tags ajoutés
    if(tagsAjoutes) objRecherche.nbTagsAjoutes = tagsAjoutes.length;
    else objRecherche.nbTagsAjoutes = 0;
    
    // Vide le tableau d'Id
    objRecherche.idSelectionnes.length = 0; 
    
    
    // S'il y a des tags à trouver
    if(objRecherche.nbTagsAjoutes > 0)
    {   
        // Parcours de tous les id
        $.each(objRecherche.source, function(id, tabTags)
        {
            var trouve = true;
            var i = 0;
         
            // Parcours des tags ajoutés
            while(trouve && i <= (objRecherche.nbTagsAjoutes-1) )
            {
                // Si le tag courant est absent du tableau de tags de l'id courant
                if($.inArray(tagsAjoutes[i], tabTags) == -1)
                    trouve = false;
                
                i++;
            }
            
            // Ajout de l'id
            if(trouve) objRecherche.idSelectionnes.push('#'+id); 
        });
        
        objRecherche.nbResultats = objRecherche.idSelectionnes.length;
    }   
    
    // Pas de tags à trouver
    else
    {
        objRecherche.nbResultats = -1;
    }
    
    // Tri du tableau
    $.triTableParTags(objRecherche);
};


/**
 * Tri la table en fonction des tags
 * $.triTableParTags(objRecherche);
 ******************************************/
$.triTableParTags = function(objRecherche)
{
    var selecteur = '';
    
    // Si aucun tag
    if(objRecherche.nbResultats == -1)
    {
        objRecherche.tableLignes.show();
        objRecherche.tableLigneVide.hide();
    }
    
    // Si pas de résultat, affichage de la ligne vide
    else if(objRecherche.nbResultats == 0)
    {
        objRecherche.tableLignes.hide();
        objRecherche.tableLigneVide.show();
    }
    
    // Sinon, affichage des lignes concernées
    else
    {
        objRecherche.tableLigneVide.hide();
        objRecherche.tableLignes.hide();
    
        $.each(objRecherche.idSelectionnes, function(i, id)
        {
            if(i == 0) selecteur += id;
            else selecteur += ', ' + id;
        });
        
        $(selecteur).show();
    }
};

$.ajouterTagsParUrl = function(objRecherche, url) {
    var url_parser = $.url(url);
    var filtre = url_parser.fparam('filtre');

    return $.ajouterTagsParChaine(objRecherche, filtre);
}

$.ajouterTagsParChaine = function(objRecherche, chaine) {
    objRecherche.listeTags.tagit("reset");

    for(key_tag in objRecherche.tagsSource) {
        var tag = objRecherche.tagsSource[key_tag];
        try {
            if(chaine.match(new RegExp(tag, "i"))) {
               var chaine = chaine.replace(tag, '', 'g');
               objRecherche.listeTags.tagit("add", {label: tag, value: tag});
            }
        } catch (err) {

        }
    }
    
    return true;
}
{'fraction_non_alphanumeric': 0.15829737151824244, 'fraction_numerical': 0.0025500196155355042, 'mean_word_length': 2.127914110429448, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7222780', 'n_tokens_mistral': 3319, 'n_tokens_neox': 3201, 'n_words': 607}