import gradio as gr
# from mistralai import Mistral, UserMessage
from chatbot_gaia.src.main_flow import kickoff
import pandas as pd
import os
from func_utils import *
def go_to_page_1():
return gr.Column(visible=True), gr.Column(visible=False)
with gr.Blocks() as demo:
with gr.Row():
page_1 = gr.Column(visible=True)
with page_1:
gr.HTML(
"""
"""
)
demo.title = "Démo GAIA - Les bénéfices de l'ombrage"
gr.HTML(
"
Les bénéfices de l'ombrage
"
)
gr.HTML(
"Découvrez le potentiel de l'ombrage sur votre exploitation !
"
)
with gr.Blocks() as infos:
infos.title = "Informations sur votre exploitation"
gr.HTML(
"Renseignez les informations relatives à votre projet
"
)
with gr.Row(equal_height=True):
with gr.Column(
variant="panel", scale=1, elem_classes=["white-background"]
):
with gr.Row(equal_height=True, elem_classes=["card"]):
with gr.Tab(label="Adresse", scale=1, elem_classes="tab"):
address = gr.Textbox(
label="Addresse",
placeholder="Entrez une adresse",
elem_classes=["adress-card"],
)
with gr.Tab(label="Coordonnées GPS", scale=1):
lat = gr.Number(
label="Latitude", elem_classes=["white-background"]
)
lon = gr.Number(
label="Longitude", elem_classes=["white-background"]
)
place_btn = gr.Button(
value="Valider la localisation",
size="md",
elem_classes=["ok-button"],
)
place_cancel_btn = gr.Button(
value="Réinitialiser la localisation",
size="md",
elem_classes=["back-button"],
variant="primary",
)
with gr.Row(elem_classes=["card"]):
culture = gr.Dropdown(
label="Culture",
scale=1,
elem_classes="culture_box",
choices=[
"Blé tendre d'hiver",
"Colza d'hiver",
"Orge d'hiver",
],
)
with gr.Column(variant="panel", scale=3):
map = gr.HTML()
simulation_btn = gr.Button(
value="Lancer la simulation", size="md", elem_classes=["ok-button"]
)
gr.HTML(
"* Quand vous lancez une simulation, soyez patient: on calcule pour vous...
"
)
go_to_page_2_btn = gr.Button(
"Aller aux résultats",
visible=False,
elem_classes=["ok-button"],
variant="primary",
)
page_2 = gr.Column(visible=False)
with page_2:
with gr.Blocks() as results:
gr.HTML(
"Résultats de la simulation : les conséquences du changement climatique pour l'exploitation jusqu'en 2099
"
)
go_to_page_1_btn = gr.Button(
value="Retour",
size="md",
elem_classes=["back-button"],
variant="primary",
)
with gr.Row(equal_height=True, elem_classes="result-page"):
with gr.Tab(label="Prévisions climatiques", scale=1):
with gr.Column(elem_classes="box"):
with gr.Row():
gr.HTML(
"Prévisions climatiques
"
)
with gr.Row():
plot_1 = gr.Plot()
with gr.Row():
plot_2 = gr.Plot()
with gr.Row():
plot_3 = gr.Plot()
with gr.Tab(
label="Prévisions pour l'exploitation sans ombrage", scale=1
):
with gr.Row(elem_classes="box"):
with gr.Column():
gr.HTML(
"Prévisions spécifiques à l'exploitation, sans solution d'ombrage
"
)
current_situation_summary = gr.Markdown(
elem_classes="summary"
)
with gr.Row(elem_classes="box"):
with gr.Column():
gr.HTML(
"Déficit hydrique
"
)
plot_4 = gr.Plot()
with gr.Column():
gr.HTML("Rendements
")
current_plot_yields = gr.Plot()
with gr.Tab(
label="Prévisions pour l'exploitation avec ombrage", scale=1
):
with gr.Row(elem_classes="box"):
with gr.Column():
gr.HTML(
"Synthèse des bénéfices pour l'exploitation suite à la mise en place d'une solution d'ombrage
"
)
agripv_summary = gr.Markdown(elem_classes="summary")
with gr.Row(elem_classes="box"):
with gr.Column():
gr.HTML(
"Déficit hydrique
"
)
plot_5 = gr.Plot()
with gr.Column():
gr.HTML("Rendements
")
shaded_plot_yields = gr.Plot()
demo.load(on_init, [lat, lon, address], [lat, lon, map])
place_btn.click(on_init, [lat, lon, address], [lat, lon, map])
place_cancel_btn.click(on_delete, [lat, lon, map], [lat, lon, address, map])
go_to_page_2_btn.click(
fn=go_to_page_2,
inputs="",
outputs=[page_1, page_2],
)
go_to_page_1_btn.click(
fn=go_to_page_1,
inputs="",
outputs=[page_1, page_2],
)
simulation_btn.click(
launch_simulation,
[lat, lon, address, culture],
[
current_situation_summary,
agripv_summary,
plot_1,
plot_2,
plot_3,
plot_4,
plot_5,
current_plot_yields,
shaded_plot_yields,
page_1,
page_2,
go_to_page_2_btn,
],
)
demo.title = "Démo GAIA - Les bénéfices de l'ombrage"
demo.launch()