Tidy up kimai screen a bit

This commit is contained in:
3wc 2023-11-04 00:01:53 +00:00
parent fd28955da0
commit a01652f301
2 changed files with 15 additions and 13 deletions

View File

@ -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()

2
hamstertools/utils.py Normal file
View File

@ -0,0 +1,2 @@
def truncate(string: str, length: int) -> str:
return string[: length - 2] + ".." if len(string) > 52 else string