Statistik in den tree eingebaut. Ein paar Fixes in der Logik. Erweiterungen des

This commit is contained in:
2024-03-19 13:17:31 +01:00
parent 6d52f160e8
commit 83a250e66b
2 changed files with 132 additions and 21 deletions
+23 -1
View File
@@ -57,7 +57,7 @@ class TreeView():
# hier Anzahl der sichtbaren Zeilen des Baums angeben:
self.tree = ttk.Treeview(frame, height=65)
# TODO hier anstatt root die Statistik rein schreiben.
self.tree.heading('#0', text='root', anchor=tk.W)
#self.tree.heading('#0', text='root', anchor=tk.W)
self.tree.grid(row=nrow, column=0, sticky=tk.NSEW)
# add a scrollbar
@@ -69,12 +69,33 @@ class TreeView():
self.tree.bind('<Double-Button-1>', self.item_selected) # Doppelklick:
self.trid2sivasId = dict()
def set_heading_text(self, parent_children_mapping, red_ids):
done_items = set()
undone_items = set()
for parent,children in parent_children_mapping.items():
if parent in red_ids:
undone_items.add(parent)
else:
done_items.add(parent)
for c in children:
if c in red_ids:
undone_items.add(c)
else:
done_items.add(c)
num_done = len(done_items)
num_undone = len(undone_items)
percentage = round(num_done / (num_done + num_undone) * 100, 1)
heading = "{percent}% ({done} ✔, {undone} ☐)".format(percent=percentage, done=num_done, undone=num_undone)
self.tree.heading('#0', text=heading, anchor=tk.W)
def set_controller(self, controller):
self._controller = controller
def refresh(self, parent_children_mapping, red_ids, orange_ids):
self.clear()
self.set_heading_text(parent_children_mapping, red_ids)
self.create(parent_children_mapping, red_ids, orange_ids)
def clear(self):
@@ -90,6 +111,7 @@ class TreeView():
def create(self, parent_children_mapping, red_ids, orange_ids):
pool = dict()
self.set_heading_text(parent_children_mapping, red_ids)
for parent, children in parent_children_mapping.items():
# parent erzeugen, falls es diese nicht schon gibt (check der pool ids)
if parent not in pool: