From ad66988e09443afa153a01fa0e365dc8fc3be2a5 Mon Sep 17 00:00:00 2001 From: sroth Date: Sun, 27 Apr 2025 11:54:32 +0200 Subject: [PATCH] sorting of columns was not nice, should be better now --- src/brovski-adress-etiketten-verwaltung.py | 37 ++++++++++------------ 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/brovski-adress-etiketten-verwaltung.py b/src/brovski-adress-etiketten-verwaltung.py index 4d979cc..a3a2e10 100644 --- a/src/brovski-adress-etiketten-verwaltung.py +++ b/src/brovski-adress-etiketten-verwaltung.py @@ -32,6 +32,7 @@ class Application: self.address_list = [] self.current_record: int | None = None self.sort_order = False + self.last_sort_field = "#3" # init paths to json and csv file self.json_file_name = "brovski-adress-etiketten-verwaltung.json" @@ -95,6 +96,8 @@ class Application: self._load_json_file() + self.first_sort_after_start() + self.root.mainloop() def load_config(self): @@ -197,25 +200,17 @@ class Application: def click_on_header(self, event): column = self.table.identify_column(event.x) - match column: - case "#1": - self.address_list.sort(key=lambda x: x[int(column[-1]) - 1], reverse=self.sort_order) - self.populate_table() - case "#2": - self.address_list.sort(key=lambda x: x[int(column[-1]) - 1], reverse=self.sort_order) - self.populate_table() - case "#3": - self.address_list.sort(key=lambda x: x[int(column[-1]) - 1], reverse=self.sort_order) - self.populate_table() - case "#4": - self.address_list.sort(key=lambda x: x[int(column[-1]) - 1], reverse=self.sort_order) - self.populate_table() - case "#5": - self.address_list.sort(key=lambda x: x[int(column[-1]) - 1], reverse=self.sort_order) - self.populate_table() - case _: - print(column) - self.sort_order = not self.sort_order + if self.last_sort_field == column: + self.sort_order = False if self.sort_order else True + else: + self.sort_order = False + self.last_sort_field = column + self.address_list.sort(key=lambda x: (x[int(column[-1]) - 1]), reverse=self.sort_order) + + # special case company sort + if column == "#2": + self.address_list.sort(key=lambda x: (x[1], x[2]), reverse=self.sort_order) + self.populate_table() def click_on_cell(self): self.current_record = self.table.focus() @@ -310,7 +305,9 @@ class Application: count += 1 self.length_address_list_active = count - + def first_sort_after_start(self): + self.address_list.sort(key=lambda x: (x[1], x[2])) + self.populate_table() if __name__ == '__main__':