Subversion Repositories eFlore/Applications.del

Rev

Rev 983 | Rev 986 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * 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

function gererEvenementsClicsVotes() {
        $('.bouton_vote').click(function(event) {
                boutonClique = $(this);
                voter(getValeurVote());
        }); 
}

function voter(ouiOuNon) {
        var idProposition = obtenirIdProposition();
        var urlVote = getUrlVoteProposition(idProposition);
        var type = getMethodeRequete(idProposition, g_idUtilisateur);
        
        $.ajax({
                url : urlVote,
                type: type,
                data: "utilisateur="+g_idUtilisateur+"&valeur="+ouiOuNon
        }).done(function(data) {
                mettreAjourTableauVotes(idProposition, g_idUtilisateur, ouiOuNon);
                mettreAJourNbVotes(idProposition);
                boutonClique.effect("highlight", {}, 1000);
                boutonClique = null;
        });                                     
}

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 mettreAjourTableauVotes(idProposition, idUtilisateur, valeurVote) {
        if(g_votes[idProposition] == undefined) {
                g_votes[idProposition] = new Array();
        }
        g_votes[idProposition][idUtilisateur] = valeurVote;
}

function getValeurVote() {
        valeur = "0";
        if(boutonClique.hasClass('bouton_vote_oui')) {
                valeur = "1";
        }
        return valeur;
}

function mettreAJourNbVotes(idProposition) {
        affichageVotes = boutonClique.parent().find(".nb_votes");
        affichageVotes.each(function() {
                if($(this).hasClass("nb_votes_oui")) {
                        $(this).html(calculerVotesOui(idProposition));
                }
                
                if($(this).hasClass("nb_votes_non")) {
                        $(this).html(calculerVotesNon(idProposition));
                }
        });
}

function calculerVotesOui(id_proposition) {
        var nbOui = 0;
        g_votes[id_proposition]
        for (var votant in g_votes[id_proposition]) {
                if(g_votes[id_proposition][votant] == 1) {
                        nbOui++;
                }
        }
        return nbOui;
}

function calculerVotesNon(id_proposition) {
        var nbNon = 0;
        g_votes[id_proposition]
        for (var votant in g_votes[id_proposition]) {
                if(g_votes[id_proposition][votant] == 0) {
                        nbNon++;
                }
        }
        return nbNon;
}

function obtenirIdProposition() {
        var chaineProposition = boutonClique.parent().attr('id');
        return chaineProposition.replace('vote_determination_', '');
}

function getUrlVoteProposition(idProposition) {
        return g_urlServiceVotes+'/'+idProposition+'/vote/';
}

function gererEvenementClicImageSecondaire() {
        $('.image_secondaire').click(function(event) {
                $('.image_secondaire').removeClass('image_active');
                
                var urlImageSecondaire = $(this).attr('src');
                urlImageSecondaireAgrandie = urlImageSecondaire.replace('XS','CRS');
                
                var urlImagePrincipale = $('#image_principale').attr('src');
                urlImagePrincipaleMiniature = urlImagePrincipale.replace('CRS','XS');
                
                $(this).addClass('image_active');
                $('#image_principale').attr('src', urlImageSecondaireAgrandie);
        });
}

function getIdUtilisateur() {
        $.getJSON(g_urlServiceUtilisateurs, function(data) {
                g_idUtilisateur = data.id_utilisateur;
        });
}

$(document).ready(function() {
        getIdUtilisateur();
        gererEvenementsClicsVotes();
        gererEvenementClicImageSecondaire();
});