114 lines
3.5 KiB
Python
114 lines
3.5 KiB
Python
from __future__ import annotations
|
|
|
|
import dash_mantine_components as dmc
|
|
from dash import dcc
|
|
from dash import html
|
|
|
|
from core.dto import AngleData
|
|
from core.dto import ContactData
|
|
from core.dto import DistanceData
|
|
from core.dto import FramingData
|
|
from core.dto import InformationValueData
|
|
from core.dto import ModalityColorData
|
|
from core.dto import ModalityDepthData
|
|
from core.dto import ModalityLightingData
|
|
from core.dto import PointOfViewData
|
|
from core.dto import SalienceData
|
|
from core.dto import VisualSyntaxData
|
|
|
|
|
|
def generate_visual_syntax_options_map():
|
|
"""Generate map of titles and options for visual syntax labels."""
|
|
options_map = {}
|
|
# add experiential labels
|
|
options_map['visual syntax'] = VisualSyntaxData.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'] = ContactData.list_fields()
|
|
options_map['angle'] = AngleData.list_fields()
|
|
options_map['point of view'] = PointOfViewData.list_fields()
|
|
options_map['distance'] = DistanceData.list_fields()
|
|
options_map['modality lighting'] = ModalityLightingData.list_fields()
|
|
options_map['modality color'] = ModalityColorData.list_fields()
|
|
options_map['modality depth'] = ModalityDepthData.list_fields()
|
|
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'] = InformationValueData.list_fields()
|
|
options_map['framing'] = FramingData.list_fields()
|
|
options_map['salience'] = SalienceData.list_fields()
|
|
return options_map
|
|
|
|
|
|
# prepare experiential container
|
|
experiential_map = generate_visual_syntax_options_map()
|
|
experiential_container = dmc.Col(
|
|
children=[
|
|
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=[text.replace('_', ' ') for text in options],
|
|
id=id_dict,
|
|
),
|
|
]),
|
|
)
|
|
# prepare interpersonal container
|
|
interpersonal_map = generate_interpersonal_options_map()
|
|
interpersonal_container = dmc.Col(
|
|
children=[
|
|
html.H4('interpersonal'.title()),
|
|
], 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.title()),
|
|
dcc.RadioItems(
|
|
options=[text.replace('_', ' ') for text in options],
|
|
id=id_dict,
|
|
),
|
|
]),
|
|
)
|
|
# prepare textual container
|
|
textual_map = generate_textual_options_map()
|
|
textual_container = dmc.Col(
|
|
children=[
|
|
html.H4('textual'.title()),
|
|
], 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.title()),
|
|
dcc.RadioItems(
|
|
options=[text.replace('_', ' ') for text in options],
|
|
id=id_dict,
|
|
),
|
|
]),
|
|
)
|
|
|
|
labels_element = dmc.Grid(
|
|
children=[
|
|
experiential_container,
|
|
interpersonal_container,
|
|
textual_container,
|
|
],
|
|
)
|