Skip to content

Commit f8931e8

Browse files
committed
add property delete button if not required
1 parent 2b618a5 commit f8931e8

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/fourc_webviewer/fourc_webserver.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,14 @@ def change_export_mode(self, export_mode, **kwargs):
11021102

11031103
"""------------------- Controller functions -------------------"""
11041104

1105+
@controller.set("delete_row")
1106+
def delete_row(self, item_key, **kwargs):
1107+
"""Deletes a row from the table."""
1108+
del self.state.general_sections[self.state.selected_main_section_name][
1109+
self.state.selected_section_name
1110+
][item_key]
1111+
self.init_general_sections_state_and_server_vars()
1112+
11051113
@controller.set("click_info_button")
11061114
def click_info_button(self, **kwargs):
11071115
"""Toggles the info mode, which displays a bottom sheet containing file

src/fourc_webviewer/gui_utils.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ def _functions_panel(server):
576576
)
577577

578578

579-
def _prop_value_table():
579+
def _prop_value_table(server):
580580
"""Table (property - value) layout (for general sections)."""
581581
with vuetify.VTable(
582582
v_if=(
@@ -604,10 +604,27 @@ def _prop_value_table():
604604
),
605605
key="item_key",
606606
):
607-
with html.Td(classes="text-center"):
607+
with html.Td(classes="text-center pa-0", style="position: relative;"):
608+
with vuetify.VBtn(
609+
v_if="edit_mode == all_edit_modes['edit_mode'] && !json_schema['properties']?.[selected_section_name]?.['required']?.includes(item_key)",
610+
tag="a",
611+
v_bind="{...props, target: '_blank'}",
612+
v_tooltip="Delete this property",
613+
click=(server.controller.delete_row, "[item_key]"),
614+
icon=True,
615+
ripple=False,
616+
elevation="0",
617+
style="position:absolute; left:6px; top:50%; transform:translateY(-50%); "
618+
"min-width:0; padding:0;",
619+
):
620+
vuetify.VIcon(
621+
"mdi-trash-can-outline", # "mdi-trash-can-outline",#"mdi-book-open-blank-variant-outline",
622+
size=26,
623+
color="#f77",
624+
)
608625
with vuetify.VTooltip(location="bottom"):
609626
with html.Template(v_slot_activator="{ props }"):
610-
html.P(v_text=("item_key",), v_bind="props")
627+
html.Span(v_text=("item_key",), v_bind="props")
611628
html.P(
612629
v_text=(
613630
"json_schema['properties']?.[selected_section_name]?.['properties']?.[item_key]?.['description'] || 'no description'",
@@ -1259,7 +1276,7 @@ def create_gui(server, render_window):
12591276

12601277
# Further elements with conditional rendering (see above)
12611278
_sections_dropdown()
1262-
_prop_value_table()
1279+
_prop_value_table(server)
12631280
_materials_panel()
12641281
_functions_panel(server)
12651282
_design_conditions_panel()

0 commit comments

Comments
 (0)