File size: 2,939 Bytes
cf815ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from database_functions import getUniqueSubmitDate, getUniqueClass
from teachers_dashboard import show_dashboard, updateReportByDateAndClass, chat_with_json_output

def create_teachers_dashboard_tab():
    with gr.Tab("Teacher's Dashboard") as teacher_dash_tab:
        with gr.Column() as login_dash:
            password_input = gr.Textbox(label="Enter Password", type="password")
            btn_login_dash = gr.Button("Submit")
            dashboard_content = gr.HTML()

        with gr.Column(visible=False) as teacher_dash:
            gr.Markdown("## Teacher Dash (unlocked)")
            with gr.Tab("Select Date Range and Class"):
                date_choices = getUniqueSubmitDate()
                ddl_start_date = gr.Dropdown(choices=date_choices, label="Start Date")
                ddl_end_date = gr.Dropdown(choices=date_choices, label="End Date")
                class_choices = getUniqueClass()
                ddl_class = gr.Dropdown(choices=class_choices, label="Select a class")
                display_ai_feedback = gr.Checkbox(label="Display AI Feedback", value=True)
                btn_show_report_date_range_class = gr.Button("Display Submissions")
                submission_report = gr.JSON(label="Submissions for Selected Date Range and Class")

            gr.Markdown("You can use the following example queries to analyze the student responses:")
            query_input = gr.Textbox(label="Teacher's Query")
            additional_inputs_accordion = gr.Accordion(label="Example Queries", open=True)
            with additional_inputs_accordion:
                gr.Examples(examples=[
                    ["General Analysis: Summarize overall performance and identify patterns"],
                    ["Specific Analysis: Identify common misconceptions and suggest interventions"],
                    ["Specific Analysis: Analyze the effectiveness of strategies used"],
                    ["Specific Analysis: Compare performance of different student groups"],
                    ["Specific Analysis: Track individual student progress over time"],
                    ["Completion Rate Analysis: Breakdown of questions attempted and insights"]
                ], inputs=[query_input])

            chat_interface = gr.Chatbot(label="Overall Analysis on Students Responses")
            chat_button = gr.Button("Chat")

            chat_button.click(
                chat_with_json_output,
                inputs=[query_input, submission_report, chat_interface],
                outputs=chat_interface
            )

        btn_login_dash.click(show_dashboard, inputs=[password_input], outputs=[dashboard_content, teacher_dash, login_dash, ddl_start_date, ddl_class])
        btn_show_report_date_range_class.click(updateReportByDateAndClass, inputs=[ddl_start_date, ddl_end_date, ddl_class, display_ai_feedback], outputs=[submission_report, chat_interface])

    return teacher_dash_tab