/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVoteVue.java |
---|
1,21 → 1,14 |
package org.tela_botanica.del.client.composants.votes.moyennevotes; |
import java.util.List; |
import org.cobogw.gwt.user.client.ui.Rating; |
import org.tela_botanica.del.client.composants.votes.barrerepartition.InfoBulleAnim; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasMouseMoveHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FocusPanel; |
37,18 → 30,19 |
private int valeurOrigine; |
private InfoBulleAnim animerVotePrisEnCompte; |
private InfoBulleAnim animerVoteModifie; |
private InfoBulleAnim animerVoteSupprime; |
@UiField |
FocusPanel voter; |
@UiField |
Panel votePrisEnCompte, voteModifie, zoneFleur; |
Panel votePrisEnCompte, voteModifie, voteSupprime, zoneFleur; |
@UiField |
Label nbVotes, protocole, noteGenerale; |
@UiField |
Button boutonVoter, boutonAnnuler; |
Button boutonAnnuler; |
@UiField |
Label zoneVoter; |
59,16 → 53,12 |
votes.setReadOnly(false); |
voter.add(votes); |
masquerBoutonAnnuler(); |
masquerBoutonVoter(); |
votePrisEnCompte.setVisible(false); |
animerVotePrisEnCompte = new InfoBulleAnim(votePrisEnCompte); |
animerVoteModifie = new InfoBulleAnim(voteModifie); |
animerVoteSupprime = new InfoBulleAnim(voteSupprime); |
} |
public HasClickHandlers getBoutonVoter() { |
return boutonVoter; |
} |
public HasClickHandlers getBoutonAnnuler() { |
return boutonAnnuler; |
} |
84,19 → 74,11 |
public int getValeurVote() { |
return votes.getValue(); |
} |
public void afficherBoutonVoter() { |
boutonVoter.setVisible(true); |
} |
public void afficherBoutonAnnuler() { |
boutonAnnuler.setVisible(true); |
} |
public void masquerBoutonVoter() { |
boutonVoter.setVisible(false); |
} |
public void masquerBoutonAnnuler() { |
boutonAnnuler.setVisible(false); |
} |
157,6 → 139,12 |
animerVoteModifie.run(2000); |
} |
@Override |
public void afficherVoteSupprime() { |
voteSupprime.setStyleName("voteSupprime"); |
animerVoteSupprime.run(2000); |
} |
public HasMouseMoveHandlers getZoneVoter() { |
return zoneVoter; |
} |
164,4 → 152,20 |
public void masquerZoneVoter() { |
zoneVoter.setVisible(false); |
} |
@Override |
public void desactiverInteractionVote() { |
votes.setReadOnly(true); |
boutonAnnuler.setEnabled(false); |
boutonAnnuler.addStyleName("elementMasque"); |
votes.addStyleName("elementMasque"); |
} |
@Override |
public void activerInteractionVote() { |
votes.setReadOnly(false); |
boutonAnnuler.setEnabled(true); |
boutonAnnuler.removeStyleName("elementMasque"); |
votes.removeStyleName("elementMasque"); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/moyenne.css |
---|
31,7 → 31,8 |
border: none; |
padding-left: 16px; |
padding-top: 16px; |
margin-left: 5px |
margin-left: 5px; |
cursor: pointer; |
} |
.zoneNoteGlobale { |
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVoteVue.ui.xml |
---|
19,9 → 19,9 |
<g:FocusPanel ui:field="voter" styleName="{style.barreVote}"/> |
<g:HTMLPanel ui:field="votePrisEnCompte"><g:Label text="{constants.votePrisEnCompte}"></g:Label></g:HTMLPanel> |
<g:HTMLPanel ui:field="voteModifie"><g:Label text="{constants.voteModifie}"></g:Label></g:HTMLPanel> |
<g:HTMLPanel ui:field="voteSupprime"><g:Label text="{constants.voteSupprime}"></g:Label></g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneBoutonsVote}"> |
<g:Button ui:field="boutonVoter" text="" styleName="{style.validerVote} boutonOK"></g:Button> |
<g:Button ui:field="boutonAnnuler" text=" " styleName="{style.annuler}"></g:Button> |
<g:Button ui:field="boutonAnnuler" title="{constants.supprimerVote}" styleName="{style.annuler}"></g:Button> |
</g:HTMLPanel> |
</g:HorizontalPanel> |
</g:HTMLPanel> |
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVotePresenteur.java |
---|
8,7 → 8,13 |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur; |
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur; |
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleService; |
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback; |
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback; |
import com.google.gwt.event.dom.client.ClickEvent; |
17,6 → 23,7 |
import com.google.gwt.event.dom.client.HasMouseMoveHandlers; |
import com.google.gwt.event.dom.client.MouseMoveEvent; |
import com.google.gwt.event.dom.client.MouseMoveHandler; |
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; |
24,8 → 31,6 |
public class MoyenneVotePresenteur { |
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonVoter(); |
public HasClickHandlers getBoutonAnnuler(); |
public HasClickHandlers getVotes(); |
32,12 → 37,8 |
public int getValeurVote(); |
public void afficherBoutonVoter(); |
public void afficherBoutonAnnuler(); |
public void masquerBoutonVoter(); |
public void masquerBoutonAnnuler(); |
public void afficherNbVotes(); |
64,6 → 65,12 |
public void masquerZoneVoter(); |
public void setNoteGeneraleToolTip(double valeurVoteTotalPrecise); |
void desactiverInteractionVote(); |
void activerInteractionVote(); |
void afficherVoteSupprime(); |
} |
private Vue vue; |
111,7 → 118,7 |
@Override |
public void onClick(ClickEvent event) { |
valeurVoteUtilisateur = vue.getValeurVote(); |
vue.afficherBoutonVoter(); |
enregistrerVote(); |
vue.afficherBoutonAnnuler(); |
vue.masquerNbVotes(); |
} |
121,21 → 128,17 |
@Override |
public void onClick(ClickEvent event) { |
valeurVoteUtilisateur = valeurVoteDefaut; |
vue.masquerBoutonVoter(); |
vue.masquerBoutonAnnuler(); |
supprimerVote(); |
vue.afficherNbVotes(); |
vue.reinitialiserVotes(); |
} |
}); |
vue.getBoutonVoter().addClickHandler(new ClickHandler() { |
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() { |
@Override |
public void onClick(ClickEvent event) { |
enregistrerVote(); |
vue.masquerBoutonVoter(); |
vue.masquerBoutonAnnuler(); |
vue.afficherNbVotes(); |
vue.reinitialiserVotes(); |
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) { |
rafraichirVue(); |
} |
}); |
} |
145,6 → 148,7 |
} |
public void enregistrerVote() { |
vue.desactiverInteractionVote(); |
final VoteProtocole voteProtocole = new VoteProtocole(); |
voteProtocole.setProtocole(this.protocole); |
voteProtocole.setVote(valeurVoteUtilisateur); |
151,31 → 155,57 |
String idContributeur = CacheClient.getInstance().getUtilisateur() |
.getId(); |
voteProtocole.setContributeur(idContributeur); |
// 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(Void objetRetour) { |
// TODO: voir si l'on affiche un message en cas de succès ? |
image.ajouterVoteProtocole(voteProtocole); |
rafraichirVue(); |
} |
}; |
//TODO: ceci devrait pouvoir être factorisé |
if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", |
idContributeur)) { |
voteProtocole.setId(image.getVotesProtocoles(this.protocole.getId()+"").get(idContributeur).getId()); |
VoteProtocoleCallback vpc = new VoteProtocoleCallback() { |
@Override |
public void surRetour(Void objetRetour) { |
image.ajouterVoteProtocole(voteProtocole); |
rafraichirVue(); |
vue.afficherVoteModifie(); |
vue.activerInteractionVote(); |
} |
}; |
voteProtocoleService.modifierVote(image.getIdImage(), |
voteProtocole, vpc); |
vue.afficherVoteModifie(); |
} else { |
AjoutVoteProtocoleCallback vpc = new AjoutVoteProtocoleCallback() { |
@Override |
public void surRetour(String idVote) { |
voteProtocole.setId(idVote); |
image.ajouterVoteProtocole(voteProtocole); |
rafraichirVue(); |
vue.afficherVotePrisEnCompte(); |
vue.activerInteractionVote(); |
} |
}; |
voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, |
vpc); |
vue.afficherVotePrisEnCompte(); |
} |
} |
public void supprimerVote() { |
vue.desactiverInteractionVote(); |
final String idContributeur = CacheClient.getInstance().getUtilisateur() |
.getId(); |
final VoteProtocole voteProtocole = image.getVotesProtocoles(protocole.getId()).get(idContributeur); |
VoteProtocoleCallback vpc = new VoteProtocoleCallback() { |
@Override |
public void surRetour(Void objetRetour) { |
// TODO: voir si l'on affiche un message en cas de succès ? |
image.supprimerVoteProtocole(protocole.getId() + "", idContributeur); |
rafraichirVue(); |
vue.afficherVoteSupprime(); |
vue.activerInteractionVote(); |
} |
}; |
voteProtocoleService.supprimerVote(image.getIdImage(), voteProtocole, vpc); |
} |
public int getValeurVoteTotal() { |
return valeurVoteTotal; |
} |
195,6 → 225,10 |
voteUtilisateur = voteProtocole.getVote(); |
vue.masquerZoneVoter(); |
} |
if(image.utilisateurAVotePourProtocole(protocole.getId()+"", CacheClient.getInstance().getUtilisateur().getId())) { |
vue.afficherBoutonAnnuler(); |
} |
VoteFleurPresenteur presenteurFleur = new VoteFleurPresenteur( |
new VoteFleurVue()); |
/trunk/src/org/tela_botanica/del/client/modeles/Image.java |
---|
55,6 → 55,12 |
getVotesProtocoles(voteProcotole.getIdProtocole()).put(voteProcotole.getContributeur(), voteProcotole); |
} |
public void supprimerVoteProtocole(String idProtocole, String idContributeur) { |
if(utilisateurAVotePourProtocole(idProtocole, idContributeur)) { |
votesProtocoles.get(idProtocole).remove(idContributeur); |
} |
} |
public boolean utilisateurAVotePourProtocole(String idProtocole, String idContributeur) { |
boolean aVote = false; |
if (votesProtocoles.containsKey(idProtocole) && votesProtocoles.get(idProtocole).containsKey(idContributeur)) { |
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.properties |
---|
51,8 → 51,10 |
aucunResultat = Aucun resultat trouvé |
par = par |
publiee = Publiée le |
supprimerVote = Supprimer votre vote |
votePrisEnCompte = Vote pris en compte |
voteModifie = Vote modifié |
voteSupprime = Vote supprimé |
ajouterObservation = Proposez une observation à déterminer |
ajouterImage = Ajouter une image |
legendeAjouterObservation = Soumettez au réseau une observation à déterminer \n Si vous avez déjà un carnet en ligne, ajoutez votre observation dans le projet "aDeterminer" |
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.java |
---|
1114,6 → 1114,15 |
String station(); |
/** |
* Translated "Supprimer votre vote". |
* |
* @return translated "Supprimer votre vote" |
*/ |
@DefaultStringValue("Supprimer votre vote") |
@Key("supprimerVote") |
String supprimerVote(); |
/** |
* Translated "Tag". |
* |
* @return translated "Tag" |
1402,6 → 1411,15 |
String votePrisEnCompte(); |
/** |
* Translated "Vote supprimé". |
* |
* @return translated "Vote supprimé" |
*/ |
@DefaultStringValue("Vote supprimé") |
@Key("voteSupprime") |
String voteSupprime(); |
/** |
* Translated "Moyenne des votes". |
* |
* @return translated "Moyenne des votes" |
/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java |
---|
389,6 → 389,7 |
JSONObject voteEnCours = votesPourCeProtocoles.get(itVotes.next()).isObject(); |
VoteProtocole vd = new VoteProtocole(); |
vd.setContributeur(voteEnCours.get("auteur.id").isString().stringValue()); |
vd.setId(voteEnCours.get("vote.id").isString().stringValue()); |
// TODO récupérer la date du vote et la parser |
vd.setDate(parserDateObservation(getValeurOuVide(voteEnCours, "date"))); |
int valeurVote = Integer.parseInt(voteEnCours.get("vote").isString().stringValue()); |
669,4 → 670,12 |
} |
return motsCles; |
} |
public static String parserRetourAjoutVoteProtocole(JSONObject retour) { |
String id = ""; |
if (retour != null) { |
id = getValeurOuVide(retour, "id_vote"); |
} |
return id; |
} |
} |
/trunk/src/org/tela_botanica/del/client/services/rest/VoteProtocoleService.java |
---|
3,6 → 3,7 |
import java.util.List; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback; |
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback; |
public interface VoteProtocoleService { |
11,8 → 12,10 |
public List<VoteProtocole> getVotePourImageEtProtocole(String idImage, String protocolName); |
void ajouterVote(String idImage, VoteProtocole voteProtocole, VoteProtocoleCallback callback); |
void ajouterVote(String idImage, VoteProtocole voteProtocole, AjoutVoteProtocoleCallback callback); |
public void modifierVote(String idImage, VoteProtocole voteProtocole, VoteProtocoleCallback vpc); |
public void supprimerVote(String idImage, VoteProtocole voteProtocole, VoteProtocoleCallback vpc); |
} |
/trunk/src/org/tela_botanica/del/client/services/rest/async/AjoutVoteProtocoleCallback.java |
---|
New file |
0,0 → 1,13 |
package org.tela_botanica.del.client.services.rest.async; |
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat; |
import com.google.gwt.json.client.JSONParser; |
public abstract class AjoutVoteProtocoleCallback extends PHPCallback<String> { |
@Override |
public String parserJSON(String retourService) { |
return UtilitairesServiceResultat.parserRetourAjoutVoteProtocole(JSONParser.parseStrict(retourService).isObject()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/services/rest/VoteProtocoleServiceConcret.java |
---|
4,6 → 4,7 |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback; |
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete; |
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback; |
36,7 → 37,7 |
} |
@Override |
public void ajouterVote(String idImage, VoteProtocole voteProtocole, VoteProtocoleCallback callback) { |
public void ajouterVote(String idImage, VoteProtocole voteProtocole, AjoutVoteProtocoleCallback callback) { |
RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, baseUrl+"images/"+idImage+"/votes/"); |
callback.setMode(ModeRequete.AJOUT); |
String chainePost = assemblerChaineRequeteAjoutModif(voteProtocole); |
53,7 → 54,7 |
"valeur="+voteProtocole.getVote(); |
return chaineRequete; |
} |
@Override |
public void modifierVote(String idImage, VoteProtocole voteProtocole, VoteProtocoleCallback callback) { |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, baseUrl+"images/"+idImage+"/votes/"); |
65,4 → 66,16 |
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ? |
} |
} |
@Override |
public void supprimerVote(String idImage, VoteProtocole voteProtocole, |
VoteProtocoleCallback callback) { |
RequestBuilder rb = new RequestBuilder(RequestBuilder.DELETE, baseUrl+"images/"+idImage+"/votes/"+voteProtocole.getId()); |
callback.setMode(ModeRequete.SUPPRESSION); |
try { |
rb.sendRequest(null, callback); |
} catch (Exception e) { |
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ? |
} |
} |
} |