digiwild_bern / app /physical /physical_checkbox.py
katospiegel's picture
Upload 104 files
20bdfba verified
import gradio as gr
from utils.utils_config import get_custom_config_dropdowns
from utils.utils_checkbox import create_checkbox
from validation_submission.add_json import add_data_tmp
#---------------------------------------------------------
def get_body_parts():
dropdown_config = get_custom_config_dropdowns("config_checkbox_physical.json")
return list(dropdown_config.keys())
def retrieve_config_options(label, dropdown_config):
options = list(dropdown_config[label].keys())
options = [option.title() for option in options]
return options
def get_options_description(value):
dropdown_config = get_custom_config_dropdowns("config_checkbox_physical.json")
# get options
options_common = retrieve_config_options("Common", dropdown_config)
options_for_value = retrieve_config_options(value, dropdown_config)
options_common.extend(options_for_value)
options = options_common
# get descriptions
descriptions = []
for key, sub_dict in dropdown_config.items():
if key==value or key=="Common":
for _, option_dict in sub_dict.items():
for description_tag, description in option_dict.items():
if "Description"==description_tag:
descriptions.append(description)
return options, descriptions
#---------------------------------------------------------
def create_checkbox_beak(section, label_checkbox, visible):
body_part="Beak"
options, descriptions = get_options_description(body_part)
return create_checkbox(body_part, section, label_checkbox, visible, options, descriptions)
def create_checkbox_body(section, label_checkbox, visible):
body_part="Body"
options, descriptions = get_options_description(body_part)
return create_checkbox(body_part, section, label_checkbox, visible, options, descriptions)
def create_checkbox_feathers(section, label_checkbox, visible):
body_part="Feathers/Wings/Tail"
options, descriptions = get_options_description(body_part)
return create_checkbox(body_part, section, label_checkbox, visible, options, descriptions)
def create_checkbox_head(section, label_checkbox, visible):
body_part="Head incl. eyes"
options, descriptions = get_options_description(body_part)
return create_checkbox(body_part, section, label_checkbox, visible, options, descriptions)
def create_checkbox_legs(section, label_checkbox, visible):
body_part="Legs"
options, descriptions = get_options_description(body_part)
return create_checkbox(body_part, section, label_checkbox, visible, options, descriptions)
#---------------------------------------------------------
def process_body_parts(section, matched_box):
#take all except "Common"
body_parts = get_body_parts()
body_parts = body_parts[1:]
label_checkbox = "Physical changes to "
visibles = [True if matched_box==body_part else False for body_part in body_parts ]
checkbox_beak, text_beak = create_checkbox_beak(section, label_checkbox, visibles[0])
checkbox_body, text_body = create_checkbox_body(section, label_checkbox, visibles[1])
checkbox_feathers, text_feathers = create_checkbox_feathers(section, label_checkbox, visibles[2])
checkbox_head, text_head = create_checkbox_head(section, label_checkbox, visibles[3])
checkbox_legs, text_legs = create_checkbox_legs(section, label_checkbox, visibles[4])
return checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs
#---------------------------------------------------------
def on_select_body_part(body_part_checkbox, body_part):
add_data_tmp("wounded_dead", "physical_type_"+body_part.lower(), body_part.lower())
body_part_checkbox = [body_part_check.lower() for body_part_check in body_part_checkbox]
add_data_tmp("wounded_dead", "physical_anomaly_"+body_part.lower(), body_part_checkbox)
#---------------------------------------------------------
def hide_physical():
checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs = process_body_parts("wounded", "None")
return checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs