Subversion Repositories eFlore/Applications.del

Rev

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