API improvements

This commit is contained in:
3wc
2023-11-17 22:54:25 +00:00
parent a01652f301
commit 1145f5e806
3 changed files with 58 additions and 3 deletions

View File

@ -1,4 +1,5 @@
from textual.app import ComposeResult
from textual.coordinate import Coordinate
from textual.binding import Binding
from textual.screen import Screen
from textual.widgets import DataTable, TabbedContent, TabPane, Header, Footer
@ -12,6 +13,9 @@ from ..db import (
KimaiCustomer,
KimaiActivity,
)
from ..kimaiapi import (
Timesheet as KimaiAPITimesheet
)
from .list import ListPane
@ -89,6 +93,7 @@ class KimaiActivityList(ListPane):
("s", "sort", "Sort"),
("r", "refresh", "Refresh"),
("g", "get", "Get data"),
("#", "count", "Count"),
("/", "filter", "Search"),
Binding(key="escape", action="cancelfilter", show=False),
]
@ -122,6 +127,7 @@ class KimaiActivityList(ListPane):
activity.id,
truncate(activity.name, 40),
activity.visible,
'?'
]
for activity in activities
]
@ -144,10 +150,23 @@ class KimaiActivityList(ListPane):
"id",
"name",
"visible",
"times",
)
self.sort = (self.columns[1], self.columns[3])
self._refresh()
def action_count(self) -> None:
row_idx: int = self.table.cursor_row
row_cells = self.table.get_row_at(row_idx)
activity_id = row_cells[2]
count = len(KimaiAPITimesheet.list_by(self.app.api, activity=activity_id))
self.table.update_cell_at(
Coordinate(row_idx, 5),
count
)
class KimaiScreen(Screen):
BINDINGS = [