Subversion Repositories eFlore/Applications.del

Rev

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