File size: 4,440 Bytes
20bdfba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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