DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
edit_cell_screen.EditCellScreen Class Reference
Inheritance diagram for edit_cell_screen.EditCellScreen:
[legend]
Collaboration diagram for edit_cell_screen.EditCellScreen:
[legend]

Public Member Functions

None __init__ (self, TableCellEvent event, str|None name=None, str|None id=None, str|None classes=None)
ComposeResult compose (self)
None on_mount (self)
None on_input_submitted (self, Input.Submitted event)
 cast_to_type_by_str (cls, str input_variable, str data_type)
 process_multivalue_input (cls, str input_value, str data_type)

Static Public Attributes

str css_file_path = f"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
str CSS_PATH = f"{css_file_path}/edit_cell_layout.tcss"

Protected Attributes

 _data_table = main_screen.query_one("DataTable")
 _config_table = main_screen.query_one("ConfigTable")
 _row_key = event.row_key
 _current_row = self._data_table.get_row(event.row_key)
 _controller = main_screen.query_one(ConfigurationController)

Detailed Description

Definition at line 16 of file edit_cell_screen.py.

Constructor & Destructor Documentation

◆ __init__()

None edit_cell_screen.EditCellScreen.__init__ ( self,
TableCellEvent event,
str | None name = None,
str | None id = None,
str | None classes = None )

Definition at line 21 of file edit_cell_screen.py.

22 self, event: TableCellEvent, name: str | None = None, id: str | None = None, classes: str | None = None) -> None:
23 super().__init__(name=name, id=id, classes=classes)
24 """Screen which pops up when a cell is clicked in the ConfigTable
25 """
26
27 # Need to get the main screen configuration
28 main_screen = self.app.get_screen("main")
29 self._data_table = main_screen.query_one("DataTable")
30 self._config_table = main_screen.query_one("ConfigTable")
31 # self._config_table = main_screen.query_one("ConfigTable")
32
33 # Get necessary info from table
34 self._row_key = event.row_key
35 self._current_row = self._data_table.get_row(event.row_key)
36 self._controller = main_screen.query_one(ConfigurationController)
37

Member Function Documentation

◆ cast_to_type_by_str()

edit_cell_screen.EditCellScreen.cast_to_type_by_str ( cls,
str input_variable,
str data_type )
Attempt to enforce type-checking/convertion on input variable based on type-name in table. Will not work for non-built-in types

Definition at line 75 of file edit_cell_screen.py.

75 def cast_to_type_by_str(cls, input_variable: str, data_type: str):
76 """Attempt to enforce type-checking/convertion on input variable based on type-name in table. Will not work for non-built-in types
77 """
78 try:
79 return getattr(__builtins__, data_type)(input_variable)
80 except:
81 return input_variable
82

◆ compose()

ComposeResult edit_cell_screen.EditCellScreen.compose ( self)

Definition at line 38 of file edit_cell_screen.py.

38 def compose(self) -> ComposeResult:
39 with Container(id="edit_cell"):
40 yield Label(f"Enter new value for {self._current_row[0]}")
41 yield Input()
42

◆ on_input_submitted()

None edit_cell_screen.EditCellScreen.on_input_submitted ( self,
Input.Submitted event )
Applies update to the configuration object

Arguments:
    event -- Information from table row

Definition at line 51 of file edit_cell_screen.py.

51 def on_input_submitted(self, event: Input.Submitted) -> None:
52 """Applies update to the configuration object
53
54 Arguments:
55 event -- Information from table row
56 """
57 attr_name = self._current_row[0]
58 update_value = event.value
59 attr_type = self._current_row[2]
60 is_multivalue = self._current_row[3]
61
62 # Need to properly cast to list
63 if is_multivalue:
64 update_value=self.process_multivalue_input(update_value, attr_type)
65 else:
66 update_value = self.cast_to_type_by_str(update_value, attr_type)
67
68 self._controller.update_configuration(attr_name, update_value)
69 self._config_table.update_table(self._controller.current_dal)
70
71 self.app.pop_screen()
72
73

◆ on_mount()

None edit_cell_screen.EditCellScreen.on_mount ( self)
Finds the cell that was clicked and populates the input field

Definition at line 43 of file edit_cell_screen.py.

43 def on_mount(self) -> None:
44 """Finds the cell that was clicked and populates the input field
45 """
46 cell_input = self.query_one(Input)
47 # Harcoded...
48 cell_input.value = str(self._current_row[1])
49 cell_input.focus()
50

◆ process_multivalue_input()

edit_cell_screen.EditCellScreen.process_multivalue_input ( cls,
str input_value,
str data_type )
Processing required to ensure multi-variate objects are correctly placed in the table

Definition at line 84 of file edit_cell_screen.py.

84 def process_multivalue_input(cls, input_value: str, data_type: str):
85 """Processing required to ensure multi-variate objects are correctly placed in the table
86
87 """
88 # Strip brackets
89 input_value = input_value.replace("[", "")
90 input_value = input_value.replace("]", "")
91 # Strip space
92 input_value = input_value.replace(" ", "")
93 input_value = [cls.cast_to_type_by_str(i, data_type) for i in input_value.split(",")]
94
95 return input_value

Member Data Documentation

◆ _config_table

edit_cell_screen.EditCellScreen._config_table = main_screen.query_one("ConfigTable")
protected

Definition at line 30 of file edit_cell_screen.py.

◆ _controller

edit_cell_screen.EditCellScreen._controller = main_screen.query_one(ConfigurationController)
protected

Definition at line 36 of file edit_cell_screen.py.

◆ _current_row

edit_cell_screen.EditCellScreen._current_row = self._data_table.get_row(event.row_key)
protected

Definition at line 35 of file edit_cell_screen.py.

◆ _data_table

edit_cell_screen.EditCellScreen._data_table = main_screen.query_one("DataTable")
protected

Definition at line 29 of file edit_cell_screen.py.

◆ _row_key

edit_cell_screen.EditCellScreen._row_key = event.row_key
protected

Definition at line 34 of file edit_cell_screen.py.

◆ css_file_path

str edit_cell_screen.EditCellScreen.css_file_path = f"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
static

Definition at line 17 of file edit_cell_screen.py.

◆ CSS_PATH

str edit_cell_screen.EditCellScreen.CSS_PATH = f"{css_file_path}/edit_cell_layout.tcss"
static

Definition at line 19 of file edit_cell_screen.py.


The documentation for this class was generated from the following file: