Subversion Repositories eFlore/Applications.del

Rev

Rev 2076 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2076 Rev 2109
1
package org.tela_botanica.del.client.vues.identiplante.moteur;
1
package org.tela_botanica.del.client.vues.identiplante.moteur;
2
 
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
6
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
6
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
7
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
7
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
9
import org.tela_botanica.del.client.config.Config;
9
import org.tela_botanica.del.client.config.Config;
10
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
10
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
11
import org.tela_botanica.del.client.modeles.ActiviteUtilisateur;
11
import org.tela_botanica.del.client.modeles.ActiviteUtilisateur;
12
import org.tela_botanica.del.client.modeles.ModeRecherche;
12
import org.tela_botanica.del.client.modeles.ModeRecherche;
13
import org.tela_botanica.del.client.modeles.Utilisateur;
13
import org.tela_botanica.del.client.modeles.Utilisateur;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
15
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
16
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
16
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
17
import org.tela_botanica.del.client.services.rest.ObservationService;
17
import org.tela_botanica.del.client.services.rest.ObservationService;
18
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
18
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
19
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
19
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
20
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
20
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
-
 
21
import org.tela_botanica.del.client.utils.Analytics;
21
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur;
22
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur;
22
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue;
23
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue;
23
 
24
 
24
import com.google.gwt.event.dom.client.ClickEvent;
25
import com.google.gwt.event.dom.client.ClickEvent;
25
import com.google.gwt.event.dom.client.ClickHandler;
26
import com.google.gwt.event.dom.client.ClickHandler;
26
import com.google.gwt.event.dom.client.HasClickHandlers;
27
import com.google.gwt.event.dom.client.HasClickHandlers;
27
import com.google.gwt.user.client.Timer;
28
import com.google.gwt.user.client.Timer;
28
import com.google.gwt.user.client.Window;
29
import com.google.gwt.user.client.Window;
29
import com.google.gwt.user.client.ui.HasWidgets;
30
import com.google.gwt.user.client.ui.HasWidgets;
30
import com.google.gwt.user.client.ui.IsWidget;
31
import com.google.gwt.user.client.ui.IsWidget;
31
import com.google.gwt.user.client.ui.Panel;
32
import com.google.gwt.user.client.ui.Panel;
32
 
33
 
33
public class MoteurIdentiplantePresenteur extends Presenteur {
34
public class MoteurIdentiplantePresenteur extends Presenteur {
34
 
35
 
35
	public interface Vue extends IsWidget {
36
	public interface Vue extends IsWidget {
36
		public HasWidgets getZoneRecherche();
37
		public HasWidgets getZoneRecherche();
37
 
38
 
38
		public HasWidgets getZoneResultats();
39
		public HasWidgets getZoneResultats();
39
 
40
 
40
		public HasClickHandlers getOngletAConfirmer();
41
		public HasClickHandlers getOngletAConfirmer();
41
		
42
		
42
		public HasClickHandlers getOngletADeterminer();
43
		public HasClickHandlers getOngletADeterminer();
43
		
44
		
44
		public HasClickHandlers getOngletTout();
45
		public HasClickHandlers getOngletTout();
45
 
46
 
46
		public HasClickHandlers getOngletValidees();
47
		public HasClickHandlers getOngletValidees();
47
		
48
		
48
		public HasClickHandlers getOngletMonActivite();
49
		public HasClickHandlers getOngletMonActivite();
49
		
50
		
50
		public void setOngletADeterminerActif();
51
		public void setOngletADeterminerActif();
51
		
52
		
52
		public void setOngletToutActif();
53
		public void setOngletToutActif();
53
		
54
		
54
		public void setOngletAConfirmerActif();
55
		public void setOngletAConfirmerActif();
55
 
56
 
56
		public void setOngletValideesActif();
57
		public void setOngletValideesActif();
57
 
58
 
58
		void afficherCacherOngletMonActivite(boolean afficher);
59
		void afficherCacherOngletMonActivite(boolean afficher);
59
 
60
 
60
		void setOngletMonActiviteActif();
61
		void setOngletMonActiviteActif();
61
 
62
 
62
		void setOngletActif(String onglet);
63
		void setOngletActif(String onglet);
63
 
64
 
64
		public void afficherNbEvenements(String nbEvenements);	
65
		public void afficherNbEvenements(String nbEvenements);	
65
		
66
		
66
		public void cacherNbEvenements();	
67
		public void cacherNbEvenements();	
67
	}
68
	}
68
 
69
 
69
	private Vue vue;
70
	private Vue vue;
70
	private Timer timerRequeteActiviteUtilisateur = null;
71
	private Timer timerRequeteActiviteUtilisateur = null;
71
 
72
 
72
	public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
73
	public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
73
		this.vue = vue;
74
		this.vue = vue;
74
	}
75
	}
75
 
76
 
76
	public void go(HasWidgets composite) {
77
	public void go(HasWidgets composite) {
77
 
78
 
78
		composite.add(vue.asWidget());
79
		composite.add(vue.asWidget());
79
		ajouterMoteurRechercheAvancee();
80
		ajouterMoteurRechercheAvancee();
80
		gererEvenements();
81
		gererEvenements();
81
		gererAffichageOngletMonActivite();
82
		gererAffichageOngletMonActivite();
82
		gererTimerRequeteActiviteUtilisateur();
83
		gererTimerRequeteActiviteUtilisateur();
83
	}
84
	}
84
 
85
 
85
	private void gererAffichageOngletMonActivite() {
86
	private void gererAffichageOngletMonActivite() {
86
		vue.afficherCacherOngletMonActivite(CacheClient.getInstance().getUtilisateur().estIdentifie());
87
		vue.afficherCacherOngletMonActivite(CacheClient.getInstance().getUtilisateur().estIdentifie());
87
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
88
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
88
			@Override
89
			@Override
89
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
90
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
90
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
91
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
91
				vue.afficherCacherOngletMonActivite(utilisateur.estIdentifie());
92
				vue.afficherCacherOngletMonActivite(utilisateur.estIdentifie());
92
				vue.cacherNbEvenements();
93
				vue.cacherNbEvenements();
93
				if(!utilisateur.estIdentifie()) {
94
				if(!utilisateur.estIdentifie()) {
94
					activerOnglet("tous");
95
					activerOnglet("tous");
95
				} else {
96
				} else {
96
					if(utilisateur.getActivite().getNbEvenementsInt() > 0) {
97
					if(utilisateur.getActivite().getNbEvenementsInt() > 0) {
97
						vue.afficherNbEvenements(utilisateur.getActivite().getNbEvenements());
98
						vue.afficherNbEvenements(utilisateur.getActivite().getNbEvenements());
98
						CacheClient.ajouterAuTitreOngletNavigateur(" ("+utilisateur.getActivite().getNbEvenements()+")");
99
						CacheClient.ajouterAuTitreOngletNavigateur(" ("+utilisateur.getActivite().getNbEvenements()+")");
99
					}
100
					}
100
				}
101
				}
101
			}
102
			}
102
		});
103
		});
103
	}
104
	}
104
 
105
 
105
	protected void ajouterMoteurRechercheAvancee() {
106
	protected void ajouterMoteurRechercheAvancee() {
106
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {
107
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {
107
		}, ModeRecherche.MODE_OBSERVATION) {
108
		}, ModeRecherche.MODE_OBSERVATION) {
108
 
109
 
109
			@Override
110
			@Override
110
			public void lancerRecherche() {
111
			public void lancerRecherche() {
111
				chercherObservations();
112
				chercherObservations();
112
			}
113
			}
113
		};
114
		};
114
		presenteur.go(vue.getZoneRecherche());
115
		presenteur.go(vue.getZoneRecherche());
115
	}
116
	}
116
 
117
 
117
	public void chercherObservations() {
118
	public void chercherObservations() {
118
		vue.getZoneResultats().clear();
119
		vue.getZoneResultats().clear();
119
		CacheClient.getInstance().mettreAjourUrlCourante();
120
		CacheClient.getInstance().mettreAjourUrlCourante();
120
		new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());
121
		new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());
121
	}
122
	}
122
 
123
 
123
	protected void gererEvenements() {
124
	protected void gererEvenements() {
124
		// Gestion du clic sur les onglets
125
		// Gestion du clic sur les onglets
125
		vue.getOngletTout().addClickHandler(new ClickHandler() {		
126
		vue.getOngletTout().addClickHandler(new ClickHandler() {		
126
			@Override
127
			@Override
127
			public void onClick(ClickEvent event) {
128
			public void onClick(ClickEvent event) {
128
				activerOnglet("tous");
129
				activerOnglet("tous");
-
 
130
				// stats
-
 
131
				Analytics.pageVisitee("Identiplante/tous");
129
			}
132
			}
130
		});
133
		});
131
		
134
		
132
		vue.getOngletADeterminer().addClickHandler(new ClickHandler() {		
135
		vue.getOngletADeterminer().addClickHandler(new ClickHandler() {
133
			@Override
136
			@Override
134
			public void onClick(ClickEvent event) {
137
			public void onClick(ClickEvent event) {
135
				activerOnglet("adeterminer");
138
				activerOnglet("adeterminer");
-
 
139
				// stats
-
 
140
				Analytics.pageVisitee("Identiplante/adeterminer");
136
			}
141
			}
137
		});
142
		});
138
		
143
		
139
		vue.getOngletAConfirmer().addClickHandler(new ClickHandler() {			
144
		vue.getOngletAConfirmer().addClickHandler(new ClickHandler() {
140
			@Override
145
			@Override
141
			public void onClick(ClickEvent event) {
146
			public void onClick(ClickEvent event) {
142
				activerOnglet("aconfirmer");
147
				activerOnglet("aconfirmer");
-
 
148
				// stats
-
 
149
				Analytics.pageVisitee("Identiplante/aconfirmer");
143
			}
150
			}
144
		});
151
		});
145
 
152
 
146
		vue.getOngletValidees().addClickHandler(new ClickHandler() {		
153
		vue.getOngletValidees().addClickHandler(new ClickHandler() {
147
			@Override
154
			@Override
148
			public void onClick(ClickEvent event) {
155
			public void onClick(ClickEvent event) {
149
				activerOnglet("validees");
156
				activerOnglet("validees");
-
 
157
				// stats
-
 
158
				Analytics.pageVisitee("Identiplante/validees");
150
			}
159
			}
151
		});
160
		});
152
		
161
		
153
		vue.getOngletMonActivite().addClickHandler(new ClickHandler() {			
162
		vue.getOngletMonActivite().addClickHandler(new ClickHandler() {
154
			@Override
163
			@Override
155
			public void onClick(ClickEvent event) {	
164
			public void onClick(ClickEvent event) {	
156
				// S'il y a de nouveau évènements sur l'obs, on les affichera tous sur la même page (dans la limite de 50)
165
				// S'il y a de nouveau évènements sur l'obs, on les affichera tous sur la même page (dans la limite de 50)
157
				int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();	
166
				int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();	
158
				nbEvents = Math.min(nbEvents, 50);
167
				nbEvents = Math.min(nbEvents, 50);
159
				if(CacheClient.getInstance().getPasPagination() < nbEvents) {
168
				if(CacheClient.getInstance().getPasPagination() < nbEvents) {
160
					CacheClient.getInstance().setPasPagination(nbEvents);
169
					CacheClient.getInstance().setPasPagination(nbEvents);
161
				}
170
				}
162
				
171
				
163
				activerOnglet("monactivite");
172
				activerOnglet("monactivite");
-
 
173
				// stats
-
 
174
				Analytics.pageVisitee("Identiplante/monactivite");
164
				vue.cacherNbEvenements();
175
				vue.cacherNbEvenements();
165
				CacheClient.reinitialiserTitreOngletNavigateur();
176
				CacheClient.reinitialiserTitreOngletNavigateur();
166
			}
177
			}
167
		});
178
		});
168
	}
179
	}
169
	
180
	
170
	
181
	
171
	public void gererTimerRequeteActiviteUtilisateur() {
182
	public void gererTimerRequeteActiviteUtilisateur() {
172
		timerRequeteActiviteUtilisateur = new Timer() {			
183
		timerRequeteActiviteUtilisateur = new Timer() {			
173
			@Override
184
			@Override
174
			public void run() {
185
			public void run() {
175
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
186
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
176
				if(utilisateur.estIdentifie()) {
187
				if(utilisateur.estIdentifie()) {
177
					UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();
188
					UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();
178
					serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {					
189
					serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {					
179
						@Override
190
						@Override
180
						public void surRetour(ActiviteUtilisateur activite) {
191
						public void surRetour(ActiviteUtilisateur activite) {
181
							CacheClient.getInstance().getUtilisateur().setActivite(activite);
192
							CacheClient.getInstance().getUtilisateur().setActivite(activite);
182
							if(activite.getNbEvenementsInt() > 0) {
193
							if(activite.getNbEvenementsInt() > 0) {
183
								vue.afficherNbEvenements(activite.getNbEvenements());
194
								vue.afficherNbEvenements(activite.getNbEvenements());
184
								CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");
195
								CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");
185
							}
196
							}
186
						}
197
						}
187
					});
198
					});
188
				}
199
				}
189
			}
200
			}
190
		};
201
		};
191
		
202
		
192
		timerRequeteActiviteUtilisateur.scheduleRepeating(30000);
203
		timerRequeteActiviteUtilisateur.scheduleRepeating(30000);
193
	}
204
	}
194
	
205
	
195
	protected void activerOnglet(String onglet) {
206
	protected void activerOnglet(String onglet) {
196
		CacheClient.getInstance().setFiltreStatut(onglet);
207
		CacheClient.getInstance().setFiltreStatut(onglet);
197
		CacheClient.getInstance().setPageCouranteRechercheObservations(1);
208
		CacheClient.getInstance().setPageCouranteRechercheObservations(1);
198
		chercherObservations();
209
		chercherObservations();
199
		vue.setOngletActif(onglet);
210
		vue.setOngletActif(onglet);
200
	}
211
	}
201
}
212
}