|
import gradio as gr |
|
from gradio_modal import Modal |
|
from climateqa.constants import POSSIBLE_REPORTS |
|
from typing import TypedDict |
|
|
|
class ConfigPanel(TypedDict): |
|
config_open: gr.State |
|
config_modal: Modal |
|
dropdown_sources: gr.CheckboxGroup |
|
dropdown_reports: gr.Dropdown |
|
dropdown_external_sources: gr.CheckboxGroup |
|
search_only: gr.Checkbox |
|
dropdown_audience: gr.Dropdown |
|
after: gr.Slider |
|
output_query: gr.Textbox |
|
output_language: gr.Textbox |
|
|
|
|
|
def create_config_modal(): |
|
config_open = gr.State(value=True) |
|
with Modal(visible=False, elem_id="modal-config") as config_modal: |
|
gr.Markdown("Reminders: You can talk in any language, ClimateQ&A is multi-lingual!") |
|
|
|
dropdown_sources = gr.CheckboxGroup( |
|
choices=["IPCC", "IPBES", "IPOS"], |
|
label="Select source (by default search in all sources)", |
|
value=["IPCC"], |
|
interactive=True |
|
) |
|
|
|
dropdown_reports = gr.Dropdown( |
|
choices=POSSIBLE_REPORTS, |
|
label="Or select specific reports", |
|
multiselect=True, |
|
value=None, |
|
interactive=True |
|
) |
|
|
|
dropdown_external_sources = gr.CheckboxGroup( |
|
choices=["Figures (IPCC/IPBES)", "Papers (OpenAlex)", "Graphs (OurWorldInData)","POC region"], |
|
label="Select database to search for relevant content", |
|
value=["Figures (IPCC/IPBES)","POC region"], |
|
interactive=True |
|
) |
|
|
|
search_only = gr.Checkbox( |
|
label="Search only for recommended content without chating", |
|
value=False, |
|
interactive=True, |
|
elem_id="checkbox-chat" |
|
) |
|
|
|
dropdown_audience = gr.Dropdown( |
|
choices=["Children", "General public", "Experts"], |
|
label="Select audience", |
|
value="Experts", |
|
interactive=True |
|
) |
|
|
|
after = gr.Slider( |
|
minimum=1950, |
|
maximum=2023, |
|
step=1, |
|
value=1960, |
|
label="Publication date", |
|
show_label=True, |
|
interactive=True, |
|
elem_id="date-papers", |
|
visible=False |
|
) |
|
|
|
output_query = gr.Textbox( |
|
label="Query used for retrieval", |
|
show_label=True, |
|
elem_id="reformulated-query", |
|
lines=2, |
|
interactive=False, |
|
visible=False |
|
) |
|
|
|
output_language = gr.Textbox( |
|
label="Language", |
|
show_label=True, |
|
elem_id="language", |
|
lines=1, |
|
interactive=False, |
|
visible=False |
|
) |
|
|
|
dropdown_external_sources.change( |
|
lambda x: gr.update(visible="Papers (OpenAlex)" in x), |
|
inputs=[dropdown_external_sources], |
|
outputs=[after] |
|
) |
|
|
|
close_config_modal_button = gr.Button("Validate and Close", elem_id="close-config-modal") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return { |
|
"config_open" : config_open, |
|
"config_modal": config_modal, |
|
"dropdown_sources": dropdown_sources, |
|
"dropdown_reports": dropdown_reports, |
|
"dropdown_external_sources": dropdown_external_sources, |
|
"search_only": search_only, |
|
"dropdown_audience": dropdown_audience, |
|
"after": after, |
|
"output_query": output_query, |
|
"output_language": output_language, |
|
"close_config_modal_button": close_config_modal_button |
|
} |