Loading poolpay/admin/PersonsTable.py +19 −10 Original line number Diff line number Diff line Loading @@ -10,6 +10,16 @@ from textual.widgets.data_table import ColumnKey from poolpay.model.Person import Person def to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = re.sub(r"\s*€$", "", str_value) try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value def to_chunked_hex(i: int) -> str: i_hex = hex(i).removeprefix("0x") Loading Loading @@ -44,16 +54,15 @@ class PersonsTable(DataTable): def add_all_persons(self) -> None: self.add_rows(to_row(p) for p in Person.get_all()) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: def convert_to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = re.sub(r"\s*€$", "", str_value) try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value def reload(self) -> None: self.clear() self.add_all_persons() if self.sort_key: self.sort( self.sort_key, key=to_decimal_if_numeric, reverse=self.sort_reversed ) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: if self.sort_key == event.column_key: self.sort_reversed = not self.sort_reversed else: Loading @@ -62,5 +71,5 @@ class PersonsTable(DataTable): self.sort_key = event.column_key self.sort( self.sort_key, key=convert_to_decimal_if_numeric, reverse=self.sort_reversed self.sort_key, key=to_decimal_if_numeric, reverse=self.sort_reversed ) poolpay/admin/PoolPayAdminApp.py +1 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,7 @@ class PoolPayAdminApp(App): def action_reload(self) -> None: table = self.query_one(PersonsTable) table.clear() table.add_all_persons() table.reload() def action_add_person(self) -> None: def add_person(person_details: tuple[str, str, str]) -> None: Loading Loading
poolpay/admin/PersonsTable.py +19 −10 Original line number Diff line number Diff line Loading @@ -10,6 +10,16 @@ from textual.widgets.data_table import ColumnKey from poolpay.model.Person import Person def to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = re.sub(r"\s*€$", "", str_value) try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value def to_chunked_hex(i: int) -> str: i_hex = hex(i).removeprefix("0x") Loading Loading @@ -44,16 +54,15 @@ class PersonsTable(DataTable): def add_all_persons(self) -> None: self.add_rows(to_row(p) for p in Person.get_all()) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: def convert_to_decimal_if_numeric(thing: str | Text) -> str | Decimal: str_value = thing.plain if isinstance(thing, Text) else thing str_value_no_currency_symbol = re.sub(r"\s*€$", "", str_value) try: return parse_decimal(str_value_no_currency_symbol) except NumberFormatError: return str_value def reload(self) -> None: self.clear() self.add_all_persons() if self.sort_key: self.sort( self.sort_key, key=to_decimal_if_numeric, reverse=self.sort_reversed ) def on_data_table_header_selected(self, event: DataTable.HeaderSelected) -> None: if self.sort_key == event.column_key: self.sort_reversed = not self.sort_reversed else: Loading @@ -62,5 +71,5 @@ class PersonsTable(DataTable): self.sort_key = event.column_key self.sort( self.sort_key, key=convert_to_decimal_if_numeric, reverse=self.sort_reversed self.sort_key, key=to_decimal_if_numeric, reverse=self.sort_reversed )
poolpay/admin/PoolPayAdminApp.py +1 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,7 @@ class PoolPayAdminApp(App): def action_reload(self) -> None: table = self.query_one(PersonsTable) table.clear() table.add_all_persons() table.reload() def action_add_person(self) -> None: def add_person(person_details: tuple[str, str, str]) -> None: Loading