Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1833 → Rev 2094

/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationPresenteur.java
New file
0,0 → 1,70
package org.tela_botanica.del.client.composants.votes.details;
 
import java.util.HashMap;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ListeVotesDeterminationCallback;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class DetailListeVotesDeterminationPresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public void afficherVotes(PropositionDetermination propositionDetermination);
 
void stopChargement();
 
void startChargement();
 
public void afficherAucuneDonnees();
}
 
private Vue vue;
 
public DetailListeVotesDeterminationPresenteur(Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
 
public void afficherVotes(final PropositionDetermination propositionDetermination) {
vue.startChargement();
VoteDeterminationServiceConcret voteService = new VoteDeterminationServiceConcret();
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new ListeVotesDeterminationCallback() {
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.stopChargement();
}
 
@Override
public void surRetour(HashMap<String, VoteDetermination> votesComplets) {
if (votesComplets != null && votesComplets.size() > 0) {
for (VoteDetermination voteDetermination : votesComplets.values()) {
voteDetermination.setPropositionDetermination(propositionDetermination);
}
 
propositionDetermination.setVotesDeterminations(votesComplets);
vue.afficherVotes(propositionDetermination);
vue.stopChargement();
} else {
vue.afficherAucuneDonnees();
vue.stopChargement();
}
}
});
}
 
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
}
}
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationVue.java
New file
0,0 → 1,144
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);
}
}
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/LigneVoteVue.ui.xml
New file
0,0 → 1,12
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="ligneVote.css" />
<g:HTMLPanel styleName="nettoyage">
<g:Label ui:field="auteur" styleName="{style.auteur}"></g:Label>
<g:Label ui:field="dateOuNb" styleName="{style.colonne2}"></g:Label>
</g:HTMLPanel>
</ui:UiBinder>
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/LigneVotePresenteur.java
New file
0,0 → 1,59
package org.tela_botanica.del.client.composants.votes.details;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.VoteDetermination;
 
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class LigneVotePresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public void setAuteur(String auteur);
public void setColonneDateEtNb(String date);
}
private Vue vue;
private VoteDetermination vote;
public LigneVotePresenteur(Vue vue, VoteDetermination vote) {
this.vue = vue;
this.vote = vote;
afficherProposition();
}
//Pour les votes anonymes
public LigneVotePresenteur(Vue vue, int nbVotes) {
this.vue = vue;
vue.setAuteur(I18n.getMessages().etVotesAnonymes(String.valueOf(nbVotes)));
}
public void afficherProposition() {
String nomAuteur = vote.getAuteur().getNomComplet();
if (nomAuteur == null || nomAuteur.equals("")) {
nomAuteur = I18n.getVocabulary().utilisateurAnonyme();
}
vue.setAuteur(nomAuteur);
vue.setColonneDateEtNb(DateTimeFormat.getFormat("dd/MM/yyyy").format(vote.getDate()));
}
/**
* Declenchement du présenteur
*/
public void go(HasWidgets container) {
container.add(vue.asWidget());
gererEvenements();
}
 
protected void gererEvenements() {
}
 
}
 
 
 
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/LigneVoteVue.java
New file
0,0 → 1,32
package org.tela_botanica.del.client.composants.votes.details;
 
import com.google.gwt.core.client.GWT;
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.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class LigneVoteVue extends Composite implements LigneVotePresenteur.Vue {
 
interface LigneVoteVueUiBinder extends UiBinder<Widget, LigneVoteVue> {};
private static LigneVoteVueUiBinder uiBinder = GWT.create(LigneVoteVueUiBinder.class);
//Composants
@UiField
Label auteur, dateOuNb;
public LigneVoteVue() {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public void setAuteur(String auteur) {
this.auteur.setText(auteur);
}
@Override
public void setColonneDateEtNb(String date) {
this.dateOuNb.setText(date);
}
}
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/detailListeVotesDeterminationVue.css
New file
0,0 → 1,93
.conteneurTableauVotes {
z-index: 1500;
padding: 30px;
padding-right: 21px;
padding-top: 20px;
background: white;
width: 600px;
margin: 0 auto;
margin-top: 75px;
padding-bottom:25px;
}
 
.chargement {
padding-left: 165px;
}
 
.auteur {
color: #6C6865;
font-family: arial;
font-size: 13px;
letter-spacing: 0;
line-height: 18px;
text-transform: none;
}
 
.date {
color: #6C6865;
font-family: arial;
font-size: 13px;
letter-spacing: 0;
line-height: 18px;
text-transform: none;
margin-left:3px
}
 
.dateLabel {
color: #6C6865;
font-family: arial;
font-size: 13px;
letter-spacing: 0;
line-height: 18px;
text-transform: none;
margin-left:3px;
text-transform:lowercase
}
 
 
.detailVotePour {
width:250px;
float:left;
margin-bottom:15px
}
.detailVoteContre {
width:250px;
float:left;
}
.titreVotes div {
font-size:16px;
color:#8EB533;
margin-bottom:5px;
margin-right:15px;
float:left;
font-weight:bold;
}
.titreVotesContre div {
color:#f06a6a;
}
.detailVotes {
clear:left;
}
.detailVotes div {
float:left;
font-size:12px;
margin-bottom:1px;
}
.espece {
font-size: 15px;
font-weight: bold;
margin-right:3px;
margin-bottom:10px;
}
 
.lignePonderation {
margin-top:4px;
margin-left:20px;
}
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationVue.ui.xml
New file
0,0 → 1,46
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="detailListeVotesDeterminationVue.css" />
<g:HTMLPanel styleName="{style.conteneurTableauVotes}">
<g:HorizontalPanel> <g:HTMLPanel ui:field='titre' styleName="{style.espece}" />
<g:HTMLPanel ui:field='auteur' styleName="{style.auteur}" />
<g:Label text="{constants.dateReleve}" styleName="{style.dateLabel}"></g:Label>
<g:Label ui:field='date' styleName="{style.date}"></g:Label>
</g:HorizontalPanel>
<g:HTML><hr /></g:HTML>
<g:HTMLPanel styleName="{style.detailVotePour}">
<g:HTMLPanel styleName="{style.titreVotes}">
<g:Label>Votes Pour</g:Label>
<g:Label ui:field="scorePour">%</g:Label>
</g:HTMLPanel>
<g:HTMLPanel ui:field="detailVotePour" styleName="{style.detailVotes}">
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.detailVoteContre}">
<g:HorizontalPanel styleName="{style.titreVotes} {style.titreVotesContre}">
<g:Label>Votes Contre</g:Label>
<g:Label ui:field="scoreContre">%</g:Label>
</g:HorizontalPanel>
<g:HTMLPanel ui:field="detailVoteContre" styleName="{style.detailVotes}">
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTML><hr class="nettoyage"/></g:HTML>
<g:HTMLPanel ui:field="panneauChargement" styleName="{style.chargement}">
<g:Image url="./img/wait.gif"></g:Image>
</g:HTMLPanel>
<g:HTMLPanel ui:field="aucuneDonnees" visible="false"><g:Label text="{constants.aucunVoteEffectue}"></g:Label></g:HTMLPanel>
<g:HTML>
<br class="nettoyage" />
</g:HTML>
<g:HTML styleName="petit aide">Ces votes permettent de confirmer ou non une détermination proposée par un membre du réseau. <br />
Vous pouvez changer à tout moment votre vote à l'aide de <img src="./img/pouce_bas.png" /> ou <img src="./img/pouce_haut.png" />. <br />
</g:HTML>
<g:HTML styleName="{style.lignePonderation} petit">Une pondération s'opère pour le calcul des votes : vote en tant que membre identifié (3 points) / non identifié (1 point).</g:HTML>
</g:HTMLPanel>
</ui:UiBinder>
/tags/v1.10-sodium/src/org/tela_botanica/del/client/composants/votes/details/ligneVote.css
New file
0,0 → 1,9
.auteur {
padding-right:10px;
width:150px;
}
 
.colonne2:before {
content:(' - ');
}