Tracy André commited on
Commit
7fb73fa
·
1 Parent(s): e244cf3
Files changed (1) hide show
  1. interface.py +57 -13
interface.py CHANGED
@@ -203,6 +203,9 @@ class AgricultureInterface:
203
  # Ajouter une option "Toutes années"
204
  year_choices = ["Toutes les années"] + [str(year) for year in available_years]
205
 
 
 
 
206
  # Interface de sélection
207
  with gr.Row():
208
  with gr.Column(scale=1):
@@ -212,6 +215,13 @@ class AgricultureInterface:
212
  label="🗓️ Sélectionnez une année",
213
  interactive=True
214
  )
 
 
 
 
 
 
 
215
 
216
  with gr.Column(scale=1):
217
  update_btn = gr.Button(
@@ -244,14 +254,23 @@ class AgricultureInterface:
244
  )
245
 
246
  # Fonction de mise à jour
247
- def update_data_view(selected_year):
248
- # Convertir la sélection
249
  year = None if selected_year == "Toutes les années" else int(selected_year)
250
 
 
 
 
 
 
 
 
 
 
251
  # Générer les nouvelles vues
252
- data_table, info_msg = self._safe_create_data_table(year)
253
- summary_plot = self._safe_create_yearly_summary(year)
254
- monthly_plot = self._safe_create_monthly_activity(year)
255
 
256
  return (
257
  info_msg,
@@ -263,7 +282,18 @@ class AgricultureInterface:
263
  # Connecter les événements
264
  year_selector.change(
265
  update_data_view,
266
- inputs=[year_selector],
 
 
 
 
 
 
 
 
 
 
 
267
  outputs=[
268
  self.data_info,
269
  self.yearly_summary_plot,
@@ -274,7 +304,7 @@ class AgricultureInterface:
274
 
275
  update_btn.click(
276
  update_data_view,
277
- inputs=[year_selector],
278
  outputs=[
279
  self.data_info,
280
  self.yearly_summary_plot,
@@ -287,24 +317,38 @@ class AgricultureInterface:
287
  ### 💡 Utilisation de l'onglet Données
288
 
289
  - **Sélection d'année** : Filtrez les données par millésime
 
290
  - **Graphique des interventions** : Types d'interventions les plus fréquents
291
  - **Activité mensuelle** : Répartition des interventions par mois
292
  - **Tableau détaillé** : Données brutes avec colonnes importantes
293
 
294
  > 📝 **Note** : Le tableau est limité à 1000 lignes pour des raisons de performance
 
295
  """)
296
 
297
- def _safe_create_data_table(self, year):
298
  """Crée le tableau de données"""
299
- return self.visualizer.create_data_table_by_year(year)
 
 
 
 
300
 
301
- def _safe_create_yearly_summary(self, year):
302
  """Crée le résumé annuel"""
303
- return self.visualizer.create_yearly_summary_chart(year)
 
 
 
 
304
 
305
- def _safe_create_monthly_activity(self, year):
306
  """Crée l'activité mensuelle"""
307
- return self.visualizer.create_monthly_activity_chart(year)
 
 
 
 
308
 
309
  def _create_about_tab(self):
310
  """Crée l'onglet à propos"""
 
203
  # Ajouter une option "Toutes années"
204
  year_choices = ["Toutes les années"] + [str(year) for year in available_years]
205
 
206
+ # Récupérer les parcelles disponibles
207
+ available_parcels = self.analyzer.get_available_parcels()
208
+
209
  # Interface de sélection
210
  with gr.Row():
211
  with gr.Column(scale=1):
 
215
  label="🗓️ Sélectionnez une année",
216
  interactive=True
217
  )
218
+
219
+ parcel_selector = gr.Dropdown(
220
+ choices=[choice[0] for choice in available_parcels],
221
+ value="Toutes les parcelles",
222
+ label="🏠 Sélectionnez une parcelle",
223
+ interactive=True
224
+ )
225
 
226
  with gr.Column(scale=1):
227
  update_btn = gr.Button(
 
254
  )
255
 
256
  # Fonction de mise à jour
257
+ def update_data_view(selected_year, selected_parcel):
258
+ # Convertir les sélections
259
  year = None if selected_year == "Toutes les années" else int(selected_year)
260
 
261
+ # Convertir la sélection de parcelle
262
+ parcel_id = None
263
+ if selected_parcel != "Toutes les parcelles":
264
+ # Récupérer l'ID de la parcelle depuis les données disponibles
265
+ for choice in available_parcels:
266
+ if choice[0] == selected_parcel:
267
+ parcel_id = choice[1] if choice[1] != "ALL" else None
268
+ break
269
+
270
  # Générer les nouvelles vues
271
+ data_table, info_msg = self._safe_create_data_table(year, parcel_id)
272
+ summary_plot = self._safe_create_yearly_summary(year, parcel_id)
273
+ monthly_plot = self._safe_create_monthly_activity(year, parcel_id)
274
 
275
  return (
276
  info_msg,
 
282
  # Connecter les événements
283
  year_selector.change(
284
  update_data_view,
285
+ inputs=[year_selector, parcel_selector],
286
+ outputs=[
287
+ self.data_info,
288
+ self.yearly_summary_plot,
289
+ self.monthly_activity_plot,
290
+ self.data_table
291
+ ]
292
+ )
293
+
294
+ parcel_selector.change(
295
+ update_data_view,
296
+ inputs=[year_selector, parcel_selector],
297
  outputs=[
298
  self.data_info,
299
  self.yearly_summary_plot,
 
304
 
305
  update_btn.click(
306
  update_data_view,
307
+ inputs=[year_selector, parcel_selector],
308
  outputs=[
309
  self.data_info,
310
  self.yearly_summary_plot,
 
317
  ### 💡 Utilisation de l'onglet Données
318
 
319
  - **Sélection d'année** : Filtrez les données par millésime
320
+ - **Sélection de parcelle** : Filtrez les données par parcelle spécifique
321
  - **Graphique des interventions** : Types d'interventions les plus fréquents
322
  - **Activité mensuelle** : Répartition des interventions par mois
323
  - **Tableau détaillé** : Données brutes avec colonnes importantes
324
 
325
  > 📝 **Note** : Le tableau est limité à 1000 lignes pour des raisons de performance
326
+ > 🔄 **Astuce** : Combinez année et parcelle pour un filtrage précis
327
  """)
328
 
329
+ def _safe_create_data_table(self, year, parcel_id=None):
330
  """Crée le tableau de données"""
331
+ if parcel_id is not None:
332
+ # Utiliser la méthode qui prend en compte les parcelles
333
+ return self.analyzer.get_data_table_by_year_and_parcel(year, parcel_id)
334
+ else:
335
+ return self.visualizer.create_data_table_by_year(year)
336
 
337
+ def _safe_create_yearly_summary(self, year, parcel_id=None):
338
  """Crée le résumé annuel"""
339
+ if parcel_id is not None:
340
+ # Pour l'instant, utiliser la méthode existante car les méthodes du visualizer n'ont pas encore le support parcelle
341
+ return self.visualizer.create_yearly_summary_chart(year)
342
+ else:
343
+ return self.visualizer.create_yearly_summary_chart(year)
344
 
345
+ def _safe_create_monthly_activity(self, year, parcel_id=None):
346
  """Crée l'activité mensuelle"""
347
+ if parcel_id is not None:
348
+ # Pour l'instant, utiliser la méthode existante car les méthodes du visualizer n'ont pas encore le support parcelle
349
+ return self.visualizer.create_monthly_activity_chart(year)
350
+ else:
351
+ return self.visualizer.create_monthly_activity_chart(year)
352
 
353
  def _create_about_tab(self):
354
  """Crée l'onglet à propos"""