Subversion Repositories eFlore/Applications.del

Rev

Rev 1150 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
901 aurelien 1
package org.tela_botanica.del.client.composants.votes.details;
2
 
1104 gduche 3
import java.util.Date;
901 aurelien 4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.Map;
7
 
8
import org.tela_botanica.del.client.i18n.I18n;
1102 gduche 9
import org.tela_botanica.del.client.modeles.MoyenneVote;
901 aurelien 10
import org.tela_botanica.del.client.modeles.PropositionDetermination;
11
import org.tela_botanica.del.client.modeles.VoteDetermination;
1102 gduche 12
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
901 aurelien 13
 
14
import com.google.gwt.core.client.GWT;
15
import com.google.gwt.i18n.client.DateTimeFormat;
16
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
17
import com.google.gwt.uibinder.client.UiBinder;
18
import com.google.gwt.uibinder.client.UiField;
19
import com.google.gwt.user.client.ui.Composite;
20
import com.google.gwt.user.client.ui.FlexTable;
21
import com.google.gwt.user.client.ui.HTML;
22
import com.google.gwt.user.client.ui.HTMLPanel;
1102 gduche 23
import com.google.gwt.user.client.ui.HasWidgets;
24
import com.google.gwt.user.client.ui.Label;
901 aurelien 25
import com.google.gwt.user.client.ui.Panel;
26
import com.google.gwt.user.client.ui.Widget;
27
 
28
public class DetailListeVotesDeterminationVue extends Composite implements DetailListeVotesDeterminationPresenteur.Vue {
29
 
30
	private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class);
31
 
32
	interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailListeVotesDeterminationVue> {
33
	};
34
 
35
	@UiField
1102 gduche 36
	HTMLPanel titre, auteur, aucuneDonnees, detailVotePour, detailVoteContre;
901 aurelien 37
 
38
	@UiField
1104 gduche 39
	Label scorePour, scoreContre, date;
1102 gduche 40
 
41
	@UiField
901 aurelien 42
	Panel panneauChargement;
43
 
44
	public DetailListeVotesDeterminationVue() {
45
		initWidget(uiBinder.createAndBindUi(this));
46
	}
1104 gduche 47
 
48
	public String formaterDate(String dateNonFormatee) {
49
 
50
		try {
51
		DateTimeFormat parseur = DateTimeFormat.getFormat("yyyy-dd-MM HH:mm:ss");
52
		Date date = parseur.parse(dateNonFormatee);
53
 
54
		DateTimeFormat formateur = DateTimeFormat.getFormat("dd/MM/yyyy");
55
		return formateur.format(date);
56
		} catch (IllegalArgumentException e) {
57
			return "";
58
		}
59
	}
901 aurelien 60
 
61
	@Override
62
	public void afficherVotes(PropositionDetermination propositionDetermination) {
63
 
64
		HTML htmlTitre = new HTML(propositionDetermination.getEspece());
65
		titre.add(htmlTitre);
66
 
973 aurelien 67
		HTML htmlAuteur = new HTML(I18n.getVocabulary().proposePar()+propositionDetermination.getAuteur());
68
		auteur.add(htmlAuteur);
69
 
1104 gduche 70
		String date = formaterDate(propositionDetermination.getObservation().getDateReleve());
71
		this.date.setText(date);
72
 
901 aurelien 73
		Map<String, VoteDetermination> listeVotes = propositionDetermination.getVotesDeterminations();
74
 
1102 gduche 75
		int votesAnonymesPour = 0;
76
		int votesAnonymesContre = 0;
1139 aurelien 77
		MoyenneVote moyenne = CalculVoteDeterminationService.calculerMoyenneVoteDetermination(propositionDetermination, listeVotes.size());
1150 aurelien 78
		scorePour.setText(moyenne.getScore()+"%");
79
		scoreContre.setText((100 - moyenne.getScore())+"%");
1102 gduche 80
 
901 aurelien 81
		for (Iterator<String> iterator = listeVotes.keySet().iterator(); iterator.hasNext();) {
1102 gduche 82
			VoteDetermination voteDetermination = listeVotes.get(iterator.next());
83
			if (voteDetermination.getVote() == 1) {
84
				//Votes pour
85
				if (voteDetermination.getAuteur() != null) {
86
					ajouterVote(voteDetermination, detailVotePour);
87
				} else {
88
					votesAnonymesPour++;
89
				}
90
			} else {
91
				//Votes contre
92
				if (voteDetermination.getAuteur() != null) {
93
					ajouterVote(voteDetermination, detailVoteContre);
94
				} else {
95
					votesAnonymesContre++;
96
				}
97
			}
901 aurelien 98
		}
99
 
1102 gduche 100
		if (votesAnonymesPour > 0) {
101
			LigneVotePresenteur presenteurVote= new LigneVotePresenteur(new LigneVoteVue(), votesAnonymesPour);
102
			presenteurVote.go(detailVotePour);
901 aurelien 103
		}
104
 
1102 gduche 105
		if (votesAnonymesContre > 0) {
106
			LigneVotePresenteur presenteurVote= new LigneVotePresenteur(new LigneVoteVue(), votesAnonymesContre);
107
			presenteurVote.go(detailVoteContre);
901 aurelien 108
		}
109
	}
110
 
1102 gduche 111
	public void ajouterVote(VoteDetermination vote, HasWidgets panel) {
112
		LigneVotePresenteur presenteurVote = new LigneVotePresenteur(new LigneVoteVue(), vote);
113
		presenteurVote.go(panel);
114
	}
115
 
901 aurelien 116
	@Override
117
	public void startChargement() {
118
		panneauChargement.setHeight((this.getOffsetHeight()/2)+"px");
119
		panneauChargement.setWidth((this.getOffsetWidth()/2)+"px");
120
		panneauChargement.setVisible(true);
121
	}
122
 
123
	@Override
124
	public void stopChargement() {
125
		panneauChargement.setVisible(false);
126
	}
909 aurelien 127
 
128
	@Override
129
	public void afficherAucuneDonnees() {
130
		aucuneDonnees.setVisible(true);
131
	}
901 aurelien 132
}