From a01652f301d898c72c5acb1717d05eba6cd8432c Mon Sep 17 00:00:00 2001 From: 3wc <3wc@doesthisthing.work> Date: Sat, 4 Nov 2023 00:01:53 +0000 Subject: [PATCH] Tidy up kimai screen a bit --- hamstertools/screens/kimai.py | 26 +++++++++++++------------- hamstertools/utils.py | 2 ++ 2 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 hamstertools/utils.py diff --git a/hamstertools/screens/kimai.py b/hamstertools/screens/kimai.py index 0ca0eaa..dac5593 100644 --- a/hamstertools/screens/kimai.py +++ b/hamstertools/screens/kimai.py @@ -5,6 +5,7 @@ from textual.widgets import DataTable, TabbedContent, TabPane, Header, Footer from peewee import fn, JOIN +from ..utils import truncate from ..sync import sync from ..db import ( KimaiProject, @@ -36,7 +37,8 @@ class KimaiProjectList(ListPane): projects = ( KimaiProject.select( KimaiProject, - KimaiCustomer, + KimaiCustomer.id, + fn.COALESCE(KimaiCustomer.name, "").alias("customer_name"), fn.Count(KimaiActivity.id).alias("activities_count"), ) .join(KimaiCustomer, JOIN.LEFT_OUTER) @@ -55,8 +57,8 @@ class KimaiProjectList(ListPane): self.table.add_rows( [ [ - project.customer.id, - project.customer.name, + str(project.customer_id) if project.customer_id is not None else "", + project.customer_name, project.id, project.name, project.activities_count, @@ -66,7 +68,7 @@ class KimaiProjectList(ListPane): ] ) - self.table.sort(self.sort) + self.table.sort(*self.sort) def action_get(self) -> None: sync() @@ -78,8 +80,7 @@ class KimaiProjectList(ListPane): self.columns = self.table.add_columns( "customer id", "customer", "project id", "project", "activities", "visible" ) - # self.sort = (self.columns[1], self.columns[3]) - self.sort = self.columns[1] + self.sort = (self.columns[1], self.columns[3]) self._refresh() @@ -100,8 +101,8 @@ class KimaiActivityList(ListPane): activities = ( KimaiActivity.select( KimaiActivity, - fn.COALESCE(KimaiProject.name, "None").alias("project_name"), - fn.COALESCE(KimaiCustomer.name, "None").alias("customer_name"), + fn.COALESCE(KimaiProject.name, "").alias("project_name"), + fn.COALESCE(KimaiCustomer.name, "").alias("customer_name"), ) .join(KimaiProject, JOIN.LEFT_OUTER) .join(KimaiCustomer, JOIN.LEFT_OUTER) @@ -117,16 +118,16 @@ class KimaiActivityList(ListPane): # activity.project.customer_id if activity.project is not None else '', # activity.customer_name, str(activity.project_id) if activity.project_id is not None else "", - activity.project_name, + truncate(activity.project_name, 40), activity.id, - activity.name, + truncate(activity.name, 40), activity.visible, ] for activity in activities ] ) - self.table.sort(self.sort) + self.table.sort(*self.sort) def action_get(self) -> None: sync() @@ -144,8 +145,7 @@ class KimaiActivityList(ListPane): "name", "visible", ) - # self.sort = (self.columns[1], self.columns[3]) - self.sort = self.columns[3] + self.sort = (self.columns[1], self.columns[3]) self._refresh() diff --git a/hamstertools/utils.py b/hamstertools/utils.py new file mode 100644 index 0000000..40e57cc --- /dev/null +++ b/hamstertools/utils.py @@ -0,0 +1,2 @@ +def truncate(string: str, length: int) -> str: + return string[: length - 2] + ".." if len(string) > 52 else string