| import gradio as gr |
| from utils.utils_config import get_custom_config_dropdowns |
| from validation_submission.utils_individual import add_data_to_individual |
|
|
|
|
| |
| def retrieve_config_options(label, dropdown_config): |
| options = list(dropdown_config[label].keys()) |
| options = [option.title() for option in options] |
| return options |
|
|
|
|
| def reinitialise_level2(): |
| dropdown_level2 = gr.Dropdown(choices=[], visible=False) |
| openfield_level2 = gr.Textbox(visible=False) |
| dropdown_extra_level2 = gr.Dropdown(choices=[], visible=False) |
| return dropdown_level2, openfield_level2, dropdown_extra_level2 |
|
|
|
|
| def create_dropdown_level1(label, individual): |
| dropdown_config = get_custom_config_dropdowns("config_dropdown_circumstances.json") |
| options = retrieve_config_options(label, dropdown_config) |
| dropdown = gr.Dropdown(choices=options, label=label, interactive=True, visible=True) |
| dropdown_level2, openfield_level2, dropdown_extra_level2 = reinitialise_level2() |
| return ( |
| dropdown, |
| dropdown_level2, |
| openfield_level2, |
| dropdown_extra_level2, |
| individual, |
| ) |
|
|
|
|
| def dropdown_collision(individual): |
| label = "Collision with a means of transport" |
| individual = add_data_to_individual("circumstance", label.lower(), individual) |
| return create_dropdown_level1(label, individual) |
|
|
|
|
| def dropdown_deliberate_destruction(individual): |
| label = "Destruction / Deliberatly removed" |
| individual = add_data_to_individual("circumstance", label.lower(), individual) |
| return create_dropdown_level1(label, individual) |
|
|
|
|
| def dropdown_indirect_destruction(individual): |
| label = "Indirect destruction" |
| individual = add_data_to_individual("circumstance", label.lower(), individual) |
| return create_dropdown_level1(label, individual) |
|
|
|
|
| def dropdown_natural_cause(individual): |
| label = "Natural cause" |
| individual = add_data_to_individual("circumstance", label.lower(), individual) |
| return create_dropdown_level1(label, individual) |
|
|
|
|
| |
| def get_options(value): |
| value = value.lower() |
| options_label = None |
| options_dropdown = None |
| open_field = None |
| extras = None |
| extras_label = None |
| dropdown_config = get_custom_config_dropdowns("config_dropdown_circumstances.json") |
| for _, sub_dict in dropdown_config.items(): |
| nested_dict = sub_dict.get(value) |
| if nested_dict is not None: |
| if "Options" in nested_dict.keys(): |
| options_dict = nested_dict["Options"] |
| options_label = list(options_dict.keys())[0] |
| options_dropdown = list(options_dict.values())[0] |
| options_dropdown = [option.title() for option in options_dropdown] |
| if "Open" in nested_dict.keys(): |
| open_field = nested_dict["Open"] |
| open_field = open_field.title() |
| if "Extra" in nested_dict.keys(): |
| for key, val in nested_dict["Extra"].items(): |
| extras_label = key |
| extras = val |
| extras = [extra.title() for extra in extras] |
| return options_label, options_dropdown, open_field, extras, extras_label |
|
|
|
|
| def on_select(evt: gr.SelectData, individual): |
| options_label, options_dropdown, open_field, extras, extras_label = get_options( |
| evt.value |
| ) |
| individual = add_data_to_individual( |
| "circumstance_type", |
| { |
| "type": (evt.value).lower(), |
| "option_dropdown_label": options_label.lower() |
| if options_label is not None |
| else "NA", |
| "open_field_label": open_field.lower() if open_field is not None else "NA", |
| "extra_label": extras_label.lower() if extras_label is not None else "NA", |
| }, |
| individual, |
| ) |
| if options_dropdown is not None: |
| dropdown_level2 = gr.Dropdown( |
| choices=options_dropdown, label=evt.value, interactive=True, visible=True |
| ) |
| else: |
| dropdown_level2 = gr.Dropdown(choices=[], visible=False) |
|
|
| if open_field is not None: |
| openfield_level2 = gr.Textbox(label=open_field, interactive=True, visible=True) |
| else: |
| openfield_level2 = gr.Textbox(visible=False) |
|
|
| if extras is not None: |
| dropdown_extra_level2 = gr.Dropdown( |
| choices=extras, label=extras_label, interactive=True, visible=True |
| ) |
| else: |
| dropdown_extra_level2 = gr.Dropdown(choices=[], visible=False) |
| return dropdown_level2, openfield_level2, dropdown_extra_level2, individual |
|
|
|
|
| def on_select_dropdown_level2(evt: gr.SelectData, individual): |
| individual = add_data_to_individual( |
| "circumstance_option_dropdown", evt.value.lower(), individual |
| ) |
| return individual |
|
|
|
|
| def on_select_dropdown_extra_level2(evt: gr.SelectData, individual): |
| individual = add_data_to_individual( |
| "circumstance_extra", evt.value.lower(), individual |
| ) |
| return individual |
|
|
|
|
| def on_change_openfield_level2(openfield_level2_dead, individual): |
| individual = add_data_to_individual( |
| "circumstance_open_field", str(openfield_level2_dead).lower(), individual |
| ) |
| return individual |
|
|