Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 210 | Blame | Compare with Previous | Last modification | View Log | RSS feed


/** 
************************************************************************************************
************************************************************************************************

    Fonctions pour l'administration

************************************************************************************************
************************************************************************************************
**/ 

var liste_utilisateurs_en_cours;
var indice_utilisateur_en_cours;
var timerRequeteAutocompletion;
var timerAffichageAutocompletion;

function ajouterAutoCompletionUtilisateurs() {
        
        $('input#identite_utilisateur').after('<div class="conteneur_suggestions_utilisateur"></div>');
        $('input#identite_utilisateur').parent().addClass('autocompletion');
        $('input#identite_utilisateur').attr('autocomplete','off');
        $('.conteneur_suggestions_utilisateur').hide();
        rendreListeAutoCompletionUtilisateursInteractive('input#identite_utilisateur');
}

function obtenirInformationsUtilisateur(nom_utilisateur) {
        
        if(jQuery.trim(nom_utilisateur) == '') {
                $('.conteneur_suggestions_utilisateur').hide();
                return;
        }
        
        $.get(getUrlBaseJrest()+'OdsUtilisateur/'+nom_utilisateur, function(data) {     
                                
                infos_utilisateurs = jQuery.parseJSON(data);
                afficherListeAutoCompletionUtilisateur(infos_utilisateurs);             
        });
}


function afficherListeAutoCompletionUtilisateur(tableau_utilisateur) {
        
        liste_utilisateurs_en_cours = tableau_utilisateur;
        
        html_liste_utilisateurs = '<ul class="liste_suggestions">';
        
        for(i = 0; i < tableau_utilisateur.length; i++) {
                
                html_liste_utilisateurs += '<li id="utilisateur_'+i+'" class="element_auto_completion_utilisateur">'+tableau_utilisateur[i]['nom']+'</li>';
        }
        
        html_liste_utilisateurs += '</ul>';
        
        $('.conteneur_suggestions_utilisateur').html(html_liste_utilisateurs);
        
        $('.element_auto_completion_utilisateur').hover(function() {
                indice = $(this).attr('id').split('_')[1];
                mettreEnSurbrillanceUtilisateur(indice);
        });
        
        $('.element_auto_completion_utilisateur').click(function() {
                $('#identite_utilisateur').val($(this).val());
                $('#form_changement_identite').submit();
        });
        
        if(tableau_utilisateur.length > 0) {
                $('.conteneur_suggestions_utilisateur').show();
                mettreEnSurbrillanceUtilisateur(0);
        }
}

function mettreEnSurbrillanceUtilisateur(indice) {
        
        if(indice_utilisateur_en_cours != null) { 
                $('#utilisateur_'+indice_utilisateur_en_cours).removeClass('element_selectionne');
        }
        $('#utilisateur_'+indice).addClass('element_selectionne');
        indice_utilisateur_en_cours = indice;
        
        reprogrammerTimerPourCacherListeAutoCompletion();
}

function rendreListeAutoCompletionUtilisateursInteractive(selecteur) {
        
        $(selecteur).keyup(function(event) {
                if(event.which == 8 || (event.which >= 48 && event.which <= 90)) { 
                        
                        reprogrammerTimerPourCacherListeAutoCompletion();
                        reprogrammerTimerPourLancerRequeteUtilisateur();
                }
        });
        
        $(selecteur).keydown(function(event) {
                
                reprogrammerTimerPourCacherListeAutoCompletion();
                
                // entree
                if(event.which==13){
                        selectionnerUtilisateur(indice_utilisateur_en_cours);
                }
                
                // haut
                if(event.which == 38){
                        if(indice_utilisateur_en_cours > 0) { 
                                mettreEnSurbrillanceUtilisateur(indice_utilisateur_en_cours - 1);
                        }
                }
                
                // bas
                if(event.which == 40){
                        if(indice_utilisateur_en_cours < liste_utilisateurs_en_cours.length - 1) { 
                                mettreEnSurbrillanceUtilisateur(indice_utilisateur_en_cours + 1);
                        }
                }
        });
        
        $('.conteneur_suggestions_utilisateur').blur(function() {
                $('.conteneur_suggestions_utilisateur').hide();
        });
}

function reprogrammerTimerPourCacherListeAutoCompletion() {
        
        if(timerAffichageAutocompletion != null) {
                window.clearTimeout(timerAffichageAutocompletion);
        }
        
        timerAffichageAutocompletion = window.setTimeout(function() {
                $('.conteneur_suggestions_utilisateur').hide();
        }, 2000);
}

function reprogrammerTimerPourLancerRequeteUtilisateur() {
        
        if(timerRequeteAutocompletion != null) {
                window.clearTimeout(timerRequeteAutocompletion);
        }
        
        timerRequeteAutocompletion = window.setTimeout(function() {
                obtenirInformationsUtilisateur($('input#identite_utilisateur').val());
        }, 350);
}

function selectionnerUtilisateur(indice) {
        
        infos_utilisateur = liste_utilisateurs_en_cours[indice];
        
        $('input#identite_utilisateur').val(infos_utilisateur['nom']);
        $('.conteneur_suggestions_utilisateur').hide();
}

$('#identite_utilisateur').ready(function() {
        ajouterAutoCompletionUtilisateurs();
});