Subversion Repositories eFlore/Applications.del

Rev

Rev 984 | Rev 991 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
986 aurelien 1
/**----------------------------------------------------------------------------------------------------------*/
2
/** Variables globales et initialisation
3
 *  Variables crées par php dans le squelettes
4
 *
983 aurelien 5
 * var g_idObservation : id de l'observation en cours de consultation
984 aurelien 6
 * var g_urlServiceVotes : url du service web des votes à appeler
7
 * var g_urlServiceUtilisateurs : url du service web utilisateur à appeler
8
 * var g_votes : tableau des votes
986 aurelien 9
 *
983 aurelien 10
 */
11
var boutonClique = null;
986 aurelien 12
var g_idUtilisateur = null;
983 aurelien 13
 
986 aurelien 14
$(document).ready(function() {
15
	getIdUtilisateur();
16
	gererEvenementsClicsVotes();
17
	gererEvenementClicImageSecondaire();
18
});
19
 
20
function getIdUtilisateur() {
21
	$.getJSON(g_urlServiceUtilisateurs, function(data) {
22
		g_idUtilisateur = data.id_utilisateur;
23
		mettreEnValeurVotesUtilisateur();
24
	});
25
}
26
 
983 aurelien 27
function gererEvenementsClicsVotes() {
28
	$('.bouton_vote').click(function(event) {
29
		boutonClique = $(this);
30
		voter(getValeurVote());
31
	});
32
}
33
 
986 aurelien 34
function gererEvenementClicImageSecondaire() {
35
	$('.image_secondaire').click(function(event) {
36
		$('.image_secondaire').removeClass('image_active');
37
 
38
		var urlImageSecondaire = $(this).attr('src');
39
		urlImageSecondaireAgrandie = urlImageSecondaire.replace('XS','CRS');
40
 
41
		var urlImagePrincipale = $('#image_principale').attr('src');
42
		urlImagePrincipaleMiniature = urlImagePrincipale.replace('CRS','XS');
43
 
44
		$(this).addClass('image_active');
45
		$('#image_principale').attr('src', urlImageSecondaireAgrandie);
46
	});
983 aurelien 47
}
48
 
984 aurelien 49
 
983 aurelien 50
function getValeurVote() {
986 aurelien 51
	valeur = 0;
983 aurelien 52
	if(boutonClique.hasClass('bouton_vote_oui')) {
986 aurelien 53
		valeur = 1;
983 aurelien 54
	}
55
	return valeur;
56
}
57
 
986 aurelien 58
function getIdProposition() {
59
	var chaineProposition = boutonClique.parent().attr('id');
60
	return chaineProposition.replace('vote_determination_', '');
61
}
62
 
63
 
64
/**----------------------------------------------------------------------------------------------------------*/
65
/** Affichage **/
66
 
67
function mettreEnValeurBoutonClique() {
68
	boutonClique.parent().find(".bouton_vote").removeClass("bouton_selectionne");
69
	boutonClique.effect("highlight", {}, 500, function() {$(this).addClass("bouton_selectionne");});
70
}
71
 
72
function mettreEnValeurVotesUtilisateur() {
73
	$('.votes_determination').each(function() {
74
		var id_proposition = $(this).attr('id').replace('vote_determination_', '');
75
		if(g_votes[id_proposition] != undefined && g_votes[id_proposition][g_idUtilisateur] != undefined) {
76
			if(g_votes[id_proposition][g_idUtilisateur] == 1) {
77
				$(this).children('.bouton_vote_oui').addClass("bouton_selectionne");
78
			} else {
79
				$(this).children('.bouton_vote_non').addClass("bouton_selectionne");
80
			}
81
		}
82
	});
83
}
84
 
85
function mettreAJourAffichageNbVotes(idProposition) {
984 aurelien 86
	affichageVotes = boutonClique.parent().find(".nb_votes");
87
	affichageVotes.each(function() {
88
		if($(this).hasClass("nb_votes_oui")) {
986 aurelien 89
			$(this).html(calculerVotes(idProposition,1));
984 aurelien 90
		}
91
 
92
		if($(this).hasClass("nb_votes_non")) {
986 aurelien 93
			$(this).html(calculerVotes(idProposition,0));
984 aurelien 94
		}
95
	});
983 aurelien 96
}
97
 
986 aurelien 98
/**----------------------------------------------------------------------------------------------------------*/
99
/** Requetes **/
100
 
101
function getUrlVoteProposition(idProposition) {
102
	return g_urlServiceVotes+'/'+idProposition+'/vote/';
984 aurelien 103
}
104
 
986 aurelien 105
function getMethodeRequete(idProposition, idUtilisateur) {
106
	var methode = "PUT";
107
	if(g_votes[idProposition] != undefined && g_votes[idProposition] != null &&
108
			g_votes[idProposition][idUtilisateur] != undefined && g_votes[idProposition][idUtilisateur] != null) {
109
		methode = "POST";
984 aurelien 110
	}
986 aurelien 111
	return methode;
984 aurelien 112
}
113
 
986 aurelien 114
function voter(ouiOuNon) {
115
	var idProposition = getIdProposition();
116
	var urlVote = getUrlVoteProposition(idProposition);
117
	var type = getMethodeRequete(idProposition, g_idUtilisateur);
118
 
119
	if(!voteEstIdentique(idProposition, g_idUtilisateur, ouiOuNon)) {
120
		$.ajax({
121
			url : urlVote,
122
			type: type,
123
			data: "utilisateur="+g_idUtilisateur+"&valeur="+ouiOuNon
124
		}).done(function(data) {
125
			mettreAjourTableauVotes(idProposition, g_idUtilisateur, ouiOuNon);
126
			mettreAJourAffichageNbVotes(idProposition);
127
			mettreEnValeurBoutonClique();
128
			boutonClique = null;
129
		});
130
	}
983 aurelien 131
}
132
 
986 aurelien 133
/**----------------------------------------------------------------------------------------------------------*/
134
/** Mise à jour et accès au tableau des votes **/
983 aurelien 135
 
986 aurelien 136
function mettreAjourTableauVotes(idProposition, idUtilisateur, valeurVote) {
137
	if(g_votes[idProposition] == undefined) {
138
		g_votes[idProposition] = new Array();
139
	}
140
	g_votes[idProposition][idUtilisateur] = valeurVote;
983 aurelien 141
}
142
 
986 aurelien 143
function calculerVotes(id_proposition, ouiOuNon) {
144
	var nb = 0;
145
	for (var votant in g_votes[id_proposition]) {
146
		if(g_votes[id_proposition][votant] == ouiOuNon) {
147
			nb++;
148
		}
149
	}
150
	return nb;
984 aurelien 151
}
152
 
986 aurelien 153
function voteEstIdentique(id_proposition, id_utilisateur, ouiOuNon) {
154
	return (g_votes[id_proposition] != undefined &&
155
			g_votes[id_proposition][id_utilisateur] != undefined &&
156
			g_votes[id_proposition][id_utilisateur] == ouiOuNon);
157
}