1,7 → 1,6 |
package org.tela_botanica.del.client.composants.votes.moyennevotes; |
|
import java.util.Iterator; |
import java.util.List; |
|
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.modeles.Image; |
10,10 → 9,10 |
import org.tela_botanica.del.client.services.rest.VoteProtocoleService; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback; |
|
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
22,32 → 21,45 |
|
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonVoter(); |
|
public HasClickHandlers getBoutonAnnuler(); |
|
public HasText getNbVotes(); |
|
public HasClickHandlers getVotes(); |
|
public int getValeurVote(); |
|
public void afficherBoutonVoter(); |
|
public void afficherBoutonAnnuler(); |
|
public void masquerBoutonVoter(); |
|
public void masquerBoutonAnnuler(); |
|
public void afficherNbVotes(); |
public void masquerNbVotes(); |
|
public void masquerNbVotes(); |
|
public void reinitialiserVotes(); |
|
public void rafraichir(int moyenneVote, int nbVotes); |
|
public void ajouterAuParent(HasWidgets composite); |
} |
|
|
private Vue vue; |
private Protocole protocole; |
private Image image; |
|
|
private int valeurVoteDefaut = -1; |
private int valeurVoteUtilisateur = -1; |
private int valeurVoteTotal = 0; |
|
//TODO: on devrait passer un conteneur qui permet d'accéder à ces services |
|
// TODO: on devrait passer un conteneur qui permet d'accéder à ces services |
private VoteProtocoleService voteProtocoleService = new VoteProtocoleServiceConcret(); |
|
|
public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue) { |
this.vue = vue; |
this.protocole = protocole; |
59,7 → 71,7 |
gererEvenements(); |
rafraichirVue(); |
} |
|
|
public void gererEvenements() { |
vue.getVotes().addClickHandler(new ClickHandler() { |
@Override |
70,7 → 82,7 |
vue.masquerNbVotes(); |
} |
}); |
|
|
vue.getBoutonAnnuler().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
81,7 → 93,7 |
vue.reinitialiserVotes(); |
} |
}); |
|
|
vue.getBoutonVoter().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
93,13 → 105,13 |
} |
}); |
} |
|
|
public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) { |
this.valeurVoteUtilisateur = valeurVoteUtilisateur; |
} |
|
|
public void enregistrerVote() { |
final VoteProtocole voteProtocole = new VoteProtocole(); |
final VoteProtocole voteProtocole = new VoteProtocole(); |
voteProtocole.setProtocole(this.protocole); |
voteProtocole.setVote(valeurVoteUtilisateur); |
String idContributeur = CacheClient.getInstance().getUtilisateur().getId(); |
107,26 → 119,23 |
// TODO: Mettre un message de chargement pendant l'envoi du vote ? |
// C'est très rapide mais bon |
VoteProtocoleCallback vpc = new VoteProtocoleCallback() { |
|
@Override |
public void surRetour(String messageRetour) { |
//TODO: voir si l'on affiche un message en cas de succès ? |
public void surRetour(Void objetRetour) { |
// TODO: voir si l'on affiche un message en cas de succès ? |
image.ajouterVoteProtocole(voteProtocole); |
rafraichirVue(); |
} |
|
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
|
}; |
|
if(image.utilisateurAVotePourProtocole(this.protocole.getId()+"", idContributeur)) { |
|
if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", idContributeur)) { |
voteProtocoleService.modifierVote(image.getIdImage(), voteProtocole, vpc); |
} else { |
voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, vpc); |
} |
} |
|
|
public int getValeurVoteTotal() { |
return valeurVoteTotal; |
} |
134,26 → 143,26 |
public IsWidget getVue() { |
return vue; |
} |
|
|
private void rafraichirVue() { |
valeurVoteTotal = calculerMoyenneVotes(); |
vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size()); |
} |
|
|
public int calculerMoyenneVotes() { |
double valeurVote = 0; |
int nbVote = 0; |
for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) { |
VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next()); |
valeurVote += (double)imageCelValidationData.getVote()/5; |
valeurVote += (double) imageCelValidationData.getVote() / 5; |
nbVote++; |
} |
|
|
if (nbVote > 0) { |
valeurVote /= nbVote; |
valeurVote *= 5; |
} |
|
return (int)Math.round(valeurVote); |
return (int) Math.round(valeurVote); |
} |
} |