/branches/v1.12-aluminium/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); |
} |
} |
/branches/v1.12-aluminium/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; |
} |
/branches/v1.12-aluminium/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> |
/branches/v1.12-aluminium/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:(' - '); |
} |
/branches/v1.12-aluminium/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 |
} |
} |
/branches/v1.12-aluminium/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); |
} |
} |
/branches/v1.12-aluminium/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> |
/branches/v1.12-aluminium/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() { |
} |
} |