From 7b0fb5ef5d5218af3b52161ab3aeea5fdbf2ebcf Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Sat, 24 Feb 2024 21:50:53 +0100 Subject: [PATCH] added dynamic ids --- src/web/layout/labels.py | 63 +++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/src/web/layout/labels.py b/src/web/layout/labels.py index 54ce658..12d3655 100644 --- a/src/web/layout/labels.py +++ b/src/web/layout/labels.py @@ -2,7 +2,9 @@ from dash import html, dcc import dash_mantine_components as dmc from typing import List -from src.model_experiential import ExperientialModelOutput +from src.model_experiential import ( + VisualSyntaxModelOutput +) from src.model_interpersonal import ( ContactModelOutput, AngleModelOutput, @@ -26,46 +28,53 @@ def generate_option_labels(model) -> List[str]: ] return labels -def generate_experiential_options_map(): - """Generate map of titles and options for experiential labels.""" +def generate_visual_syntax_options_map(): + """Generate map of titles and options for visual syntax labels.""" options_map = {} # add experiential labels - options_map["experiential".title()] = generate_option_labels(ExperientialModelOutput) + options_map["visual syntax"] = VisualSyntaxModelOutput.list_fields() return options_map def generate_interpersonal_options_map(): """Generate map of titles and options for interpersonal labels.""" options_map = {} # add interpersonal labels - options_map["contact".title()] = generate_option_labels(ContactModelOutput) - options_map["angle".title()] = generate_option_labels(AngleModelOutput) - options_map["point of view".title()] = generate_option_labels(PointOfViewModelOutput) - options_map["distance".title()] = generate_option_labels(DistanceModelOutput) - options_map["modality lighting".title()] = generate_option_labels(ModalityLightingModelOutput) - options_map["modality color".title()] = generate_option_labels(ModalityColorModelOutput) - options_map["modality depth".title()] = generate_option_labels(ModalityDepthModelOutput) + options_map["contact"] = generate_option_labels(ContactModelOutput) + options_map["angle"] = generate_option_labels(AngleModelOutput) + options_map["point of view"] = generate_option_labels(PointOfViewModelOutput) + options_map["distance"] = generate_option_labels(DistanceModelOutput) + options_map["modality lighting"] = generate_option_labels(ModalityLightingModelOutput) + options_map["modality color"] = generate_option_labels(ModalityColorModelOutput) + options_map["modality depth"] = generate_option_labels(ModalityDepthModelOutput) return options_map def generate_textual_options_map(): """Generate map of titles and options for textual labels.""" options_map = {} # add textual labels - options_map["information value".title()] = generate_option_labels(InformationValueModelOutput) - options_map["framing".title()] = generate_option_labels(FramingModelOutput) - options_map["salience".title()] = generate_option_labels(SalienceModelOutput) + options_map["information value"] = generate_option_labels(InformationValueModelOutput) + options_map["framing"] = generate_option_labels(FramingModelOutput) + options_map["salience"] = generate_option_labels(SalienceModelOutput) return options_map # prepare experiential container -experiential_map = generate_experiential_options_map() +experiential_map = generate_visual_syntax_options_map() experiential_container = dmc.Col( children=[ - dmc.Container([ - html.H4(list(experiential_map.keys())[0]), - html.B("visual syntax".title()), - dcc.RadioItems(options=list(experiential_map.values())[0]), - ]) + html.H4("experiential".title()), ], span=5 ) +for title, options in experiential_map.items(): + id_dict = {"type": "annotation", "index": title.replace('_', '-')} + experiential_container.children.append( + dmc.Container([ + html.B(title.title()), + dcc.RadioItems( + options=options, + id=id_dict, + ), + ]) + ) # prepare interpersonal container interpersonal_map = generate_interpersonal_options_map() interpersonal_container = dmc.Col( @@ -74,10 +83,14 @@ interpersonal_container = dmc.Col( ], span=3 ) for title, options in interpersonal_map.items(): + id_dict = {"type": "annotation", "index": title.replace('_', '-')} interpersonal_container.children.append( dmc.Container([ - html.B(title), - dcc.RadioItems(options) + html.B(title.title()), + dcc.RadioItems( + options=options, + id=id_dict, + ), ]) ) # prepare textual container @@ -88,10 +101,14 @@ textual_container = dmc.Col( ], span=4 ) for title, options in textual_map.items(): + id_dict = {"type": "annotation", "index": title.replace('_', '-')} textual_container.children.append( dmc.Container([ html.B(title), - dcc.RadioItems(options) + dcc.RadioItems( + options=options, + id=id_dict, + ), ]) )