New file |
0,0 → 1,162 |
/**----------------------------------------------------------------------------------------------------------*/ |
/** Variables globales et initialisation |
* Variables crées par php dans le squelettes |
* |
* var g_idObservation : id de l'observation en cours de consultation |
* var g_urlServiceVotes : url du service web des votes à appeler |
* var g_urlServiceUtilisateurs : url du service web utilisateur à appeler |
* var g_votes : tableau des votes |
* |
*/ |
var boutonClique = null; |
var g_idUtilisateur = null; |
|
$(document).ready(function() { |
getIdUtilisateur(); |
gererEvenementsClicsVotes(); |
gererEvenementClicImageSecondaire(); |
}); |
|
$(document).bind('pageload', function() { |
gererEvenementsClicsVotes(); |
mettreEnValeurVotesUtilisateur(); |
}); |
|
function getIdUtilisateur() { |
$.getJSON(g_urlServiceUtilisateurs, function(data) { |
g_idUtilisateur = data.id_utilisateur; |
mettreEnValeurVotesUtilisateur(); |
}); |
} |
|
function gererEvenementsClicsVotes() { |
$('.bouton_vote').unbind('click'); |
$('.bouton_vote').click(function(event) { |
boutonClique = $(this); |
voter(getValeurVote()); |
}); |
} |
|
function gererEvenementClicImageSecondaire() { |
$('.image_secondaire').live('click', function(event) { |
$('.image_secondaire').removeClass('image_active'); |
var urlImageSecondaire = $(this).attr('src'); |
urlImageSecondaireAgrandie = urlImageSecondaire.replace('CRX2S','CRS'); |
|
var urlImagePrincipale = $('.image_principale').attr('src'); |
urlImagePrincipaleMiniature = urlImagePrincipale.replace('CRS','CRX2S'); |
|
$(this).addClass('image_active'); |
$('.image_principale').attr('src', urlImageSecondaireAgrandie); |
}); |
} |
|
|
function getValeurVote() { |
valeur = 0; |
if(boutonClique.hasClass('bouton_vote_oui')) { |
valeur = 1; |
} |
return valeur; |
} |
|
function getIdProposition() { |
var chaineProposition = boutonClique.parent().attr('id'); |
return chaineProposition.replace('vote_determination_', ''); |
} |
|
|
/**----------------------------------------------------------------------------------------------------------*/ |
/** Affichage **/ |
|
function mettreEnValeurBoutonClique() { |
boutonClique.parent().find(".bouton_vote").removeClass("bouton_selectionne"); |
boutonClique.effect("highlight", {}, 500, function() {$(this).addClass("bouton_selectionne");}); |
} |
|
function mettreEnValeurVotesUtilisateur() { |
$('.votes_determination').each(function() { |
var id_proposition = $(this).attr('id').replace('vote_determination_', ''); |
if(g_votes[id_proposition] != undefined && g_votes[id_proposition][g_idUtilisateur] != undefined) { |
if(g_votes[id_proposition][g_idUtilisateur] == 1) { |
$(this).children('.bouton_vote_oui').addClass("bouton_selectionne"); |
} else { |
$(this).children('.bouton_vote_non').addClass("bouton_selectionne"); |
} |
} |
}); |
} |
|
function mettreAJourAffichageNbVotes(idProposition) { |
affichageVotes = boutonClique.parent().find(".nb_votes"); |
affichageVotes.each(function() { |
if($(this).hasClass("nb_votes_oui")) { |
$(this).html(calculerVotes(idProposition,1)); |
} |
|
if($(this).hasClass("nb_votes_non")) { |
$(this).html(calculerVotes(idProposition,0)); |
} |
}); |
} |
|
/**----------------------------------------------------------------------------------------------------------*/ |
/** Requetes **/ |
|
function getUrlVoteProposition(idProposition) { |
return g_urlServiceVotes+'/'+idProposition+'/vote/'; |
} |
|
function getMethodeRequete(idProposition, idUtilisateur) { |
var methode = "PUT"; |
if(g_votes[idProposition] != undefined && g_votes[idProposition] != null && |
g_votes[idProposition][idUtilisateur] != undefined && g_votes[idProposition][idUtilisateur] != null) { |
methode = "POST"; |
} |
return methode; |
} |
|
function voter(ouiOuNon) { |
var idProposition = getIdProposition(); |
var urlVote = getUrlVoteProposition(idProposition); |
var type = getMethodeRequete(idProposition, g_idUtilisateur); |
|
if(!voteEstIdentique(idProposition, g_idUtilisateur, ouiOuNon)) { |
$.ajax({ |
url : urlVote, |
type: type, |
data: "utilisateur="+g_idUtilisateur+"&valeur="+ouiOuNon |
}).done(function(data) { |
mettreAjourTableauVotes(idProposition, g_idUtilisateur, ouiOuNon); |
mettreAJourAffichageNbVotes(idProposition); |
mettreEnValeurBoutonClique(); |
boutonClique = null; |
}); |
} |
} |
|
/**----------------------------------------------------------------------------------------------------------*/ |
/** Mise à jour et accès au tableau des votes **/ |
|
function mettreAjourTableauVotes(idProposition, idUtilisateur, valeurVote) { |
if(g_votes[idProposition] == undefined) { |
g_votes[idProposition] = new Array(); |
} |
g_votes[idProposition][idUtilisateur] = valeurVote; |
} |
|
function calculerVotes(id_proposition, ouiOuNon) { |
var nb = 0; |
for (var votant in g_votes[id_proposition]) { |
if(g_votes[id_proposition][votant] == ouiOuNon) { |
nb++; |
} |
} |
return nb; |
} |
|
function voteEstIdentique(id_proposition, id_utilisateur, ouiOuNon) { |
return (g_votes[id_proposition] != undefined && |
g_votes[id_proposition][id_utilisateur] != undefined && |
g_votes[id_proposition][id_utilisateur] == ouiOuNon); |
} |