Spaces:
Sleeping
Sleeping
Tracy André
commited on
Commit
·
7fb73fa
1
Parent(s):
e244cf3
updated
Browse files- 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
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 300 |
|
| 301 |
-
def _safe_create_yearly_summary(self, year):
|
| 302 |
"""Crée le résumé annuel"""
|
| 303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 304 |
|
| 305 |
-
def _safe_create_monthly_activity(self, year):
|
| 306 |
"""Crée l'activité mensuelle"""
|
| 307 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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"""
|