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();
});