Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev Author Line No. Line
210 aurelien 1
 
2
/**
3
************************************************************************************************
4
************************************************************************************************
5
 
6
    Fonctions pour l'administration
7
 
8
************************************************************************************************
9
************************************************************************************************
10
**/
11
 
12
var liste_utilisateurs_en_cours;
13
var indice_utilisateur_en_cours;
14
var timerRequeteAutocompletion;
15
var timerAffichageAutocompletion;
16
 
17
function ajouterAutoCompletionUtilisateurs() {
18
 
19
	$('input#identite_utilisateur').after('<div class="conteneur_suggestions_utilisateur"></div>');
20
	$('input#identite_utilisateur').parent().addClass('autocompletion');
21
	$('input#identite_utilisateur').attr('autocomplete','off');
22
	$('.conteneur_suggestions_utilisateur').hide();
23
	rendreListeAutoCompletionUtilisateursInteractive('input#identite_utilisateur');
24
}
25
 
26
function obtenirInformationsUtilisateur(nom_utilisateur) {
27
 
28
	if(jQuery.trim(nom_utilisateur) == '') {
29
		$('.conteneur_suggestions_utilisateur').hide();
30
		return;
31
	}
32
 
259 aurelien 33
	$.get(getUrlBaseJrest()+'OdsUtilisateur/'+nom_utilisateur, function(data) {
210 aurelien 34
 
35
		infos_utilisateurs = jQuery.parseJSON(data);
36
		afficherListeAutoCompletionUtilisateur(infos_utilisateurs);
37
	});
38
}
39
 
40
 
41
function afficherListeAutoCompletionUtilisateur(tableau_utilisateur) {
42
 
43
	liste_utilisateurs_en_cours = tableau_utilisateur;
44
 
45
	html_liste_utilisateurs = '<ul class="liste_suggestions">';
46
 
47
	for(i = 0; i < tableau_utilisateur.length; i++) {
48
 
49
		html_liste_utilisateurs += '<li id="utilisateur_'+i+'" class="element_auto_completion_utilisateur">'+tableau_utilisateur[i]['nom']+'</li>';
50
	}
51
 
52
	html_liste_utilisateurs += '</ul>';
53
 
54
	$('.conteneur_suggestions_utilisateur').html(html_liste_utilisateurs);
55
 
56
	$('.element_auto_completion_utilisateur').hover(function() {
57
		indice = $(this).attr('id').split('_')[1];
58
		mettreEnSurbrillanceUtilisateur(indice);
59
	});
60
 
61
	$('.element_auto_completion_utilisateur').click(function() {
62
		$('#identite_utilisateur').val($(this).val());
63
		$('#form_changement_identite').submit();
64
	});
65
 
66
	if(tableau_utilisateur.length > 0) {
67
		$('.conteneur_suggestions_utilisateur').show();
68
		mettreEnSurbrillanceUtilisateur(0);
69
	}
70
}
71
 
72
function mettreEnSurbrillanceUtilisateur(indice) {
73
 
74
	if(indice_utilisateur_en_cours != null) {
75
		$('#utilisateur_'+indice_utilisateur_en_cours).removeClass('element_selectionne');
76
	}
77
	$('#utilisateur_'+indice).addClass('element_selectionne');
78
	indice_utilisateur_en_cours = indice;
79
 
80
	reprogrammerTimerPourCacherListeAutoCompletion();
81
}
82
 
83
function rendreListeAutoCompletionUtilisateursInteractive(selecteur) {
84
 
85
	$(selecteur).keyup(function(event) {
86
		if(event.which == 8 || (event.which >= 48 && event.which <= 90)) {
87
 
88
			reprogrammerTimerPourCacherListeAutoCompletion();
89
			reprogrammerTimerPourLancerRequeteUtilisateur();
90
		}
91
	});
92
 
93
	$(selecteur).keydown(function(event) {
94
 
95
		reprogrammerTimerPourCacherListeAutoCompletion();
96
 
97
		// entree
98
		if(event.which==13){
99
			selectionnerUtilisateur(indice_utilisateur_en_cours);
100
		}
101
 
102
		// haut
103
		if(event.which == 38){
104
			if(indice_utilisateur_en_cours > 0) {
105
				mettreEnSurbrillanceUtilisateur(indice_utilisateur_en_cours - 1);
106
			}
107
		}
108
 
109
		// bas
110
		if(event.which == 40){
111
			if(indice_utilisateur_en_cours < liste_utilisateurs_en_cours.length - 1) {
112
				mettreEnSurbrillanceUtilisateur(indice_utilisateur_en_cours + 1);
113
			}
114
		}
115
	});
116
 
117
	$('.conteneur_suggestions_utilisateur').blur(function() {
118
		$('.conteneur_suggestions_utilisateur').hide();
119
	});
120
}
121
 
122
function reprogrammerTimerPourCacherListeAutoCompletion() {
123
 
124
	if(timerAffichageAutocompletion != null) {
125
		window.clearTimeout(timerAffichageAutocompletion);
126
	}
127
 
128
	timerAffichageAutocompletion = window.setTimeout(function() {
129
		$('.conteneur_suggestions_utilisateur').hide();
130
	}, 2000);
131
}
132
 
133
function reprogrammerTimerPourLancerRequeteUtilisateur() {
134
 
135
	if(timerRequeteAutocompletion != null) {
136
		window.clearTimeout(timerRequeteAutocompletion);
137
	}
138
 
139
	timerRequeteAutocompletion = window.setTimeout(function() {
140
		obtenirInformationsUtilisateur($('input#identite_utilisateur').val());
141
	}, 350);
142
}
143
 
144
function selectionnerUtilisateur(indice) {
145
 
146
	infos_utilisateur = liste_utilisateurs_en_cours[indice];
147
 
148
	$('input#identite_utilisateur').val(infos_utilisateur['nom']);
149
	$('.conteneur_suggestions_utilisateur').hide();
150
}
151
 
152
$('#identite_utilisateur').ready(function() {
153
	ajouterAutoCompletionUtilisateurs();
154
});