""" File: practical_task_sorted.py Author: Elena Ryumina and Dmitry Ryumin Description: Event handler for the practical task sorted to the Gradio app. License: MIT License """ import gradio as gr from pathlib import Path # Importing necessary components for the Gradio app from app.video_metadata import video_metadata from app.components import video_create_ui, textbox_create_ui def event_handler_practical_task_sorted( files, practical_task_sorted, evt_data: gr.SelectData ): person_id = int(practical_task_sorted.iloc[evt_data.index[0]]["Person ID"]) - 1 if evt_data.index[0] == 0: label = "Best" else: label = "" label += " Person ID" if Path(files[person_id]).name in video_metadata: person_metadata_list = video_metadata[Path(files[person_id]).name] person_metadata = ( gr.Column(visible=True), gr.Row(visible=True), gr.Row(visible=True), gr.Image(visible=True), textbox_create_ui( person_metadata_list[0], "text", "First name", None, None, 1, True, False, True, False, 1, False, ), gr.Row(visible=True), gr.Image(visible=True), textbox_create_ui( person_metadata_list[1], "text", "Last name", None, None, 1, True, False, True, False, 1, False, ), gr.Row(visible=True), gr.Row(visible=True), gr.Image(visible=True), textbox_create_ui( person_metadata_list[2], "email", "Email", None, None, 1, True, False, True, False, 1, False, ), gr.Row(visible=True), gr.Image(visible=True), textbox_create_ui( person_metadata_list[3], "text", "Phone number", None, None, 1, True, False, True, False, 1, False, ), ) else: person_metadata = ( gr.Column(visible=False), gr.Row(visible=False), gr.Row(visible=False), gr.Image(visible=False), textbox_create_ui(visible=False), gr.Row(visible=False), gr.Image(visible=False), textbox_create_ui(visible=False), gr.Row(visible=False), gr.Row(visible=False), gr.Image(visible=False), textbox_create_ui(visible=False), gr.Row(visible=False), gr.Image(visible=False), textbox_create_ui(visible=False), ) existing_tuple = ( gr.Column(visible=True), video_create_ui( value=files[person_id], file_name=Path(files[person_id]).name, label=f"{label} - " + str(person_id + 1), visible=True, elem_classes="video-sorted-container", ), ) return existing_tuple + person_metadata