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