Skip to content

Commit a324ae0

Browse files
author
James Boulton
committed
More table functionality
1 parent 415db2f commit a324ae0

1 file changed

Lines changed: 30 additions & 8 deletions

File tree

dashio/iotcontrol/table.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def __init__(
164164
self._max_columns = columns
165165

166166
def get_state(self):
167-
return "".join(map(self._send_row, self._rows))
167+
return "".join([self._send_row(indx, row) for indx, row in enumerate(self._rows)])
168168

169169
@classmethod
170170
def from_cfg_dict(cls, cfg_dict: dict, column_no=1):
@@ -194,23 +194,25 @@ def from_cfg_dict(cls, cfg_dict: dict, column_no=1):
194194
tmp_cls.parent_id = cfg_dict["parentID"]
195195
return tmp_cls
196196

197-
def _send_row(self, table_row: TableRow) -> str:
197+
def _send_row(self, row_number: int, table_row: TableRow | None) -> str:
198198
header_str = self._control_hdr_str
199+
if table_row is None:
200+
return f"{header_str}{row_number}\n"
199201
columns = '\t'.join(map(str, table_row.columns[:self._max_columns - 1]))
200202
if table_row.units is not None:
201203
row_label = table_row.label
202204
if table_row.label is None:
203205
row_label = ""
204-
return f"{header_str}{len(self._rows)}\t{columns}\t{row_label}\t{table_row.units}\n"
206+
return f"{header_str}{row_number}\t{columns}\t{row_label}\t{table_row.units}\n"
205207
else:
206208
if table_row.label is None:
207-
return f"{header_str}{len(self._rows)}\t{columns}\n"
208-
return f"{header_str}{len(self._rows)}\t{columns}\t{row_label}\n"
209+
return f"{header_str}{row_number}\t{columns}\n"
210+
return f"{header_str}{row_number}\t{columns}\t{row_label}\n"
209211

210212
def add_table_row(self, table_row: TableRow):
211213
"""Add a row to the table and send it"""
212214
self._rows.append(table_row)
213-
self.state_str = self._send_row(table_row)
215+
self.state_str = self._send_row(len(self._rows) - 1, table_row)
214216

215217
def update_table_row(self, table_row: TableRow, row_number: int) -> int:
216218
"""Update the row at row_number. If it doesn't exist then append it.
@@ -229,7 +231,27 @@ def update_table_row(self, table_row: TableRow, row_number: int) -> int:
229231
"""
230232
if row_number < len(self._rows):
231233
self._rows[row_number] = table_row
234+
self.state_str = self._send_row(row_number, table_row)
232235
return row_number
233236
self._rows.append(table_row)
234-
self.state_str = self._send_row(table_row)
235-
return len(self._rows)
237+
self.state_str = self._send_row(len(self._rows) - 1, table_row)
238+
return len(self._rows - 1)
239+
240+
def clear_row(self, row_number: int):
241+
"""Clears the row at row_numer
242+
243+
Parameters
244+
----------
245+
row_number : int
246+
The row to clear
247+
"""
248+
self._rows[row_number] = None
249+
header_str = self._control_hdr_str + f"{row_number}\n"
250+
self.state_str = header_str
251+
252+
def clear_table(self):
253+
"""Clears the table
254+
"""
255+
self._rows = []
256+
header_str = self._control_hdr_str + '\n'
257+
self.state_str = header_str

0 commit comments

Comments
 (0)