File size: 4,011 Bytes
e32213f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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 ConfigPanel(
        #     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
        # )
        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
        }