| 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 | }
 |