Rev 1833 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.votes.details;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.utils.StringUtils;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
public class DetailListeVotesDeterminationVue extends Composite implements DetailListeVotesDeterminationPresenteur.Vue {
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class);
interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailListeVotesDeterminationVue> {
};
@UiField
HTMLPanel titre, auteur, aucuneDonnees, detailVotePour, detailVoteContre;
@UiField
Label scorePour, scoreContre, date;
@UiField
Panel panneauChargement;
public DetailListeVotesDeterminationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
public String formaterDate(String dateNonFormatee) {
try {
DateTimeFormat parseur = DateTimeFormat.getFormat("yyyy-dd-MM HH:mm:ss");
Date date = parseur.parse(dateNonFormatee);
DateTimeFormat formateur = DateTimeFormat.getFormat("dd/MM/yyyy");
return formateur.format(date);
} catch (IllegalArgumentException e) {
return "";
}
}
public String formaterDateQuiEstVraimentUneDateEtPasUnString(Date dateNonFormatee) {
String retour = "";
try {
DateTimeFormat formateur = DateTimeFormat.getFormat("dd/MM/yyyy");
retour = formateur.format(dateNonFormatee);
} catch (IllegalArgumentException e) {
}
return retour;
}
@Override
public void afficherVotes(PropositionDetermination propositionDetermination) {
HTML htmlTitre = new HTML(propositionDetermination.getEspece());
titre.add(htmlTitre);
HTML htmlAuteur = new HTML(I18n.getVocabulary().proposePar()+propositionDetermination.getAuteur());
auteur.add(htmlAuteur);
Date datePropDet = propositionDetermination.getDate();
String date = formaterDateQuiEstVraimentUneDateEtPasUnString(datePropDet);
this.date.setText(date);
Map<String, VoteDetermination> listeVotes = propositionDetermination.getVotesDeterminations();
int votesAnonymesPour = 0;
int votesAnonymesContre = 0;
float votesPour = 0;
float totalVotes = listeVotes.size();
for (Iterator<String> iterator = listeVotes.keySet().iterator(); iterator.hasNext();) {
VoteDetermination voteDetermination = listeVotes.get(iterator.next());
if (voteDetermination.getVote() == 1) {
//Votes pour
if (voteDetermination.getAuteur() != null) {
ajouterVote(voteDetermination, detailVotePour);
} else {
votesAnonymesPour++;
}
votesPour++;
} else {
//Votes contre
if (voteDetermination.getAuteur() != null) {
ajouterVote(voteDetermination, detailVoteContre);
} else {
votesAnonymesContre++;
}
}
}
float moyennePour = (votesPour/totalVotes*100);
scorePour.setText(StringUtils.formaterNombre(moyennePour, 2)+"%");
scoreContre.setText(StringUtils.formaterNombre(100 - moyennePour, 2)+"%");
if (votesAnonymesPour > 0) {
LigneVotePresenteur presenteurVote= new LigneVotePresenteur(new LigneVoteVue(), votesAnonymesPour);
presenteurVote.go(detailVotePour);
}
if (votesAnonymesContre > 0) {
LigneVotePresenteur presenteurVote= new LigneVotePresenteur(new LigneVoteVue(), votesAnonymesContre);
presenteurVote.go(detailVoteContre);
}
}
public void ajouterVote(VoteDetermination vote, HasWidgets panel) {
LigneVotePresenteur presenteurVote = new LigneVotePresenteur(new LigneVoteVue(), vote);
presenteurVote.go(panel);
}
@Override
public void startChargement() {
panneauChargement.setHeight((this.getOffsetHeight()/2)+"px");
panneauChargement.setWidth((this.getOffsetWidth()/2)+"px");
panneauChargement.setVisible(true);
}
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
@Override
public void afficherAucuneDonnees() {
aucuneDonnees.setVisible(true);
}
}