Spaces:
Sleeping
Sleeping
| """ | |
| File: tabs.py | |
| Author: Elena Ryumina and Dmitry Ryumin | |
| Description: Gradio app tabs - Contains the definition of various tabs for the Gradio app interface. | |
| License: MIT License | |
| """ | |
| import gradio as gr | |
| # Importing necessary components for the Gradio app | |
| from app.description import DESCRIPTION | |
| from app.description_steps import STEP_1, STEP_2 | |
| from app.mbti_description import MBTI_DESCRIPTION, MBTI_DATA | |
| from app.app import APP | |
| from app.authors import AUTHORS | |
| from app.config import config_data | |
| from app.practical_tasks import supported_practical_tasks | |
| from app.utils import read_csv_file, extract_profession_weights | |
| from app.components import ( | |
| html_message, | |
| files_create_ui, | |
| video_create_ui, | |
| button, | |
| dataframe, | |
| radio_create_ui, | |
| number_create_ui, | |
| dropdown_create_ui, | |
| ) | |
| def app_tab(): | |
| gr.Markdown(value=DESCRIPTION) | |
| gr.HTML(value=STEP_1) | |
| with gr.Row(): | |
| files = files_create_ui() | |
| video = video_create_ui() | |
| with gr.Row(): | |
| examples = button( | |
| config_data.OtherMessages_EXAMPLES_APP, True, 1, True, "examples_oceanai" | |
| ) | |
| calculate_pt_scores = button( | |
| config_data.OtherMessages_CALCULATE_PT_SCORES, | |
| False, | |
| 3, | |
| True, | |
| "calculate_oceanai", | |
| ) | |
| clear_app = button( | |
| config_data.OtherMessages_CLEAR_APP, False, 1, True, "clear_oceanai" | |
| ) | |
| notifications = html_message(config_data.InformationMessages_NOTI_VIDEOS, False) | |
| pt_scores = dataframe(visible=False) | |
| csv_pt_scores = files_create_ui( | |
| None, | |
| "single", | |
| [".csv"], | |
| config_data.OtherMessages_EXPORT_PT_SCORES, | |
| True, | |
| False, | |
| False, | |
| "csv-container", | |
| ) | |
| step_2 = gr.HTML(value=STEP_2, visible=False) | |
| first_practical_task = next(iter(supported_practical_tasks)) | |
| with gr.Column(scale=1, visible=False, render=True) as practical_tasks_column: | |
| practical_tasks = radio_create_ui( | |
| first_practical_task, | |
| config_data.Labels_PRACTICAL_TASKS_LABEL, | |
| list(map(str, supported_practical_tasks.keys())), | |
| config_data.InformationMessages_PRACTICAL_TASKS_INFO, | |
| True, | |
| True, | |
| ) | |
| practical_subtasks = radio_create_ui( | |
| supported_practical_tasks[first_practical_task][0], | |
| config_data.Labels_PRACTICAL_SUBTASKS_LABEL, | |
| supported_practical_tasks[first_practical_task], | |
| config_data.InformationMessages_PRACTICAL_SUBTASKS_INFO, | |
| True, | |
| True, | |
| ) | |
| with gr.Row( | |
| visible=False, | |
| render=True, | |
| variant="default", | |
| elem_classes="settings-container", | |
| ) as settings_practical_tasks: | |
| dropdown_mbti = dropdown_create_ui( | |
| label=f"Potential candidates by Myers-Briggs Personality Type Indicators ({len(config_data.Settings_DROPDOWN_MBTI)})", | |
| info=config_data.InformationMessages_DROPDOWN_MBTI_INFO, | |
| choices=config_data.Settings_DROPDOWN_MBTI, | |
| value=config_data.Settings_DROPDOWN_MBTI[0], | |
| visible=False, | |
| elem_classes="dropdown-container", | |
| ) | |
| threshold_mbti = number_create_ui( | |
| value=0.5, | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.01, | |
| label=config_data.Labels_THRESHOLD_MBTI_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| threshold_professional_skills = number_create_ui( | |
| value=0.5, | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.01, | |
| label=config_data.Labels_THRESHOLD_PROFESSIONAL_SKILLS_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| dropdown_professional_skills = dropdown_create_ui( | |
| label=f"Professional skills ({len(config_data.Settings_DROPDOWN_PROFESSIONAL_SKILLS)})", | |
| info=config_data.InformationMessages_DROPDOWN_PROFESSIONAL_SKILLS_INFO, | |
| choices=config_data.Settings_DROPDOWN_PROFESSIONAL_SKILLS, | |
| value=config_data.Settings_DROPDOWN_PROFESSIONAL_SKILLS[0], | |
| visible=False, | |
| elem_classes="dropdown-container", | |
| ) | |
| target_score_ope = number_create_ui( | |
| value=config_data.Values_TARGET_SCORES[0], | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.000001, | |
| label=config_data.Labels_TARGET_SCORE_OPE_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| target_score_con = number_create_ui( | |
| value=config_data.Values_TARGET_SCORES[1], | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.000001, | |
| label=config_data.Labels_TARGET_SCORE_CON_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| target_score_ext = number_create_ui( | |
| value=config_data.Values_TARGET_SCORES[2], | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.000001, | |
| label=config_data.Labels_TARGET_SCORE_EXT_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| target_score_agr = number_create_ui( | |
| value=config_data.Values_TARGET_SCORES[3], | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.000001, | |
| label=config_data.Labels_TARGET_SCORE_AGR_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| target_score_nneu = number_create_ui( | |
| value=config_data.Values_TARGET_SCORES[4], | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.000001, | |
| label=config_data.Labels_TARGET_SCORE_NNEU_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| equal_coefficient = number_create_ui( | |
| value=0.5, | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.01, | |
| label=config_data.Labels_EQUAL_COEFFICIENT_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| df_correlation_coefficients = read_csv_file( | |
| config_data.Links_CAR_CHARACTERISTICS, | |
| ["Trait", "Style and performance", "Safety and practicality"], | |
| ) | |
| number_priority = number_create_ui( | |
| value=1, | |
| minimum=1, | |
| maximum=df_correlation_coefficients.columns.size, | |
| step=1, | |
| label=config_data.Labels_NUMBER_PRIORITY_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| 1, df_correlation_coefficients.columns.size | |
| ), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| number_importance_traits = number_create_ui( | |
| value=1, | |
| minimum=1, | |
| maximum=5, | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_TRAITS_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(1, 5), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| threshold_consumer_preferences = number_create_ui( | |
| value=0.55, | |
| minimum=0.0, | |
| maximum=1.0, | |
| step=0.01, | |
| label=config_data.Labels_THRESHOLD_CONSUMER_PREFERENCES_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format(0, 1.0), | |
| show_label=True, | |
| interactive=True, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| dropdown_candidates = dropdown_create_ui( | |
| label=f"Potential candidates by professional responsibilities ({len(config_data.Settings_DROPDOWN_CANDIDATES)})", | |
| info=config_data.InformationMessages_DROPDOWN_CANDIDATES_INFO, | |
| choices=config_data.Settings_DROPDOWN_CANDIDATES, | |
| value=config_data.Settings_DROPDOWN_CANDIDATES[0], | |
| visible=False, | |
| elem_classes="dropdown-container", | |
| ) | |
| df_traits_priority_for_professions = read_csv_file( | |
| config_data.Links_PROFESSIONS | |
| ) | |
| weights_professions, interactive_professions = extract_profession_weights( | |
| df_traits_priority_for_professions, | |
| config_data.Settings_DROPDOWN_CANDIDATES[0], | |
| ) | |
| number_openness = number_create_ui( | |
| value=weights_professions[0], | |
| minimum=config_data.Values_0_100[0], | |
| maximum=config_data.Values_0_100[1], | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_OPE_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| config_data.Values_0_100[0], config_data.Values_0_100[1] | |
| ), | |
| show_label=True, | |
| interactive=interactive_professions, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| number_conscientiousness = number_create_ui( | |
| value=weights_professions[1], | |
| minimum=config_data.Values_0_100[0], | |
| maximum=config_data.Values_0_100[1], | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_CON_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| config_data.Values_0_100[0], config_data.Values_0_100[1] | |
| ), | |
| show_label=True, | |
| interactive=interactive_professions, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| number_extraversion = number_create_ui( | |
| value=weights_professions[2], | |
| minimum=config_data.Values_0_100[0], | |
| maximum=config_data.Values_0_100[1], | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_EXT_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| config_data.Values_0_100[0], config_data.Values_0_100[1] | |
| ), | |
| show_label=True, | |
| interactive=interactive_professions, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| number_agreeableness = number_create_ui( | |
| value=weights_professions[3], | |
| minimum=config_data.Values_0_100[0], | |
| maximum=config_data.Values_0_100[1], | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_AGR_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| config_data.Values_0_100[0], config_data.Values_0_100[1] | |
| ), | |
| show_label=True, | |
| interactive=interactive_professions, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| number_non_neuroticism = number_create_ui( | |
| value=weights_professions[4], | |
| minimum=config_data.Values_0_100[0], | |
| maximum=config_data.Values_0_100[1], | |
| step=1, | |
| label=config_data.Labels_NUMBER_IMPORTANCE_NNEU_LABEL, | |
| info=config_data.InformationMessages_VALUE_FROM_TO_INFO.format( | |
| config_data.Values_0_100[0], config_data.Values_0_100[1] | |
| ), | |
| show_label=True, | |
| interactive=interactive_professions, | |
| visible=False, | |
| render=True, | |
| elem_classes="number-container", | |
| ) | |
| calculate_practical_task = button( | |
| config_data.OtherMessages_CALCULATE_PRACTICAL_TASK, | |
| True, | |
| 1, | |
| False, | |
| "calculate_practical_task", | |
| ) | |
| with gr.Row( | |
| visible=False, | |
| render=True, | |
| variant="default", | |
| ) as sorted_videos: | |
| with gr.Column(scale=1, visible=False, render=True) as sorted_videos_column: | |
| practical_task_sorted = dataframe(visible=False) | |
| with gr.Accordion( | |
| label=config_data.Labels_NOTE_MBTI_LABEL, | |
| open=False, | |
| visible=False, | |
| ) as mbti_accordion: | |
| mbti_description = gr.HTML(value=MBTI_DESCRIPTION, visible=False) | |
| mbti_description_data = dataframe( | |
| headers=MBTI_DATA.columns.tolist(), | |
| values=MBTI_DATA.values.tolist(), | |
| visible=False, | |
| elem_classes="mbti-dataframe", | |
| ) | |
| csv_practical_task_sorted = files_create_ui( | |
| None, | |
| "single", | |
| [".csv"], | |
| config_data.OtherMessages_EXPORT_PS, | |
| True, | |
| False, | |
| False, | |
| "csv-container", | |
| ) | |
| video_sorted = video_create_ui( | |
| visible=False, elem_classes="video-sorted-container" | |
| ) | |
| practical_subtasks_selected = gr.JSON( | |
| value={ | |
| str(task): supported_practical_tasks.get(task, [None])[0] | |
| for task in supported_practical_tasks.keys() | |
| }, | |
| visible=False, | |
| render=True, | |
| ) | |
| in_development = html_message( | |
| config_data.InformationMessages_NOTI_IN_DEV, False, False | |
| ) | |
| return ( | |
| notifications, | |
| files, | |
| video, | |
| examples, | |
| calculate_pt_scores, | |
| clear_app, | |
| pt_scores, | |
| csv_pt_scores, | |
| step_2, | |
| practical_tasks, | |
| practical_subtasks, | |
| settings_practical_tasks, | |
| dropdown_mbti, | |
| threshold_mbti, | |
| threshold_professional_skills, | |
| dropdown_professional_skills, | |
| target_score_ope, | |
| target_score_con, | |
| target_score_ext, | |
| target_score_agr, | |
| target_score_nneu, | |
| equal_coefficient, | |
| number_priority, | |
| number_importance_traits, | |
| threshold_consumer_preferences, | |
| dropdown_candidates, | |
| number_openness, | |
| number_conscientiousness, | |
| number_extraversion, | |
| number_agreeableness, | |
| number_non_neuroticism, | |
| calculate_practical_task, | |
| practical_subtasks_selected, | |
| practical_tasks_column, | |
| sorted_videos, | |
| sorted_videos_column, | |
| practical_task_sorted, | |
| csv_practical_task_sorted, | |
| mbti_accordion, | |
| mbti_description, | |
| mbti_description_data, | |
| video_sorted, | |
| in_development, | |
| ) | |
| def about_app_tab(): | |
| return gr.HTML(value=APP) | |
| def about_authors_tab(): | |
| return gr.HTML(value=AUTHORS) | |