Switch to tabs
This commit is contained in:
52
hamstertools/screens/list.py
Normal file
52
hamstertools/screens/list.py
Normal file
@ -0,0 +1,52 @@
|
||||
from datetime import datetime
|
||||
|
||||
from textual import on
|
||||
from textual.app import ComposeResult
|
||||
from textual.containers import Horizontal, Vertical, Container
|
||||
from textual.widgets import DataTable, Input
|
||||
|
||||
|
||||
class ListPane(Container):
|
||||
def compose(self) -> ComposeResult:
|
||||
with Vertical():
|
||||
yield DataTable()
|
||||
with Horizontal(id="filter"):
|
||||
yield Input(
|
||||
id="search", placeholder="Category/activity name contains text"
|
||||
)
|
||||
yield Input(
|
||||
id="date",
|
||||
placeholder="After date, in {0} format".format(
|
||||
datetime.now().strftime("%Y-%m-%d")
|
||||
),
|
||||
)
|
||||
|
||||
def action_refresh(self) -> None:
|
||||
self._refresh()
|
||||
|
||||
def action_sort(self) -> None:
|
||||
self.table.cursor_type = "column"
|
||||
|
||||
def on_data_table_column_selected(self, event):
|
||||
self.sort = (event.column_key,)
|
||||
event.data_table.sort(*self.sort)
|
||||
event.data_table.cursor_type = "row"
|
||||
|
||||
def action_filter(self) -> None:
|
||||
self.query_one("#filter").display = True
|
||||
self._refresh()
|
||||
self.query_one("#filter #search").focus()
|
||||
|
||||
def on_input_submitted(self, event):
|
||||
self.table.focus()
|
||||
|
||||
def action_cancelfilter(self) -> None:
|
||||
self.query_one("#filter").display = False
|
||||
self.query_one("#filter #search").clear()
|
||||
self.query_one("#filter #date").clear()
|
||||
self.table.focus()
|
||||
self._refresh()
|
||||
|
||||
@on(Input.Changed, "#filter Input")
|
||||
def filter(self, event):
|
||||
self._refresh()
|
Reference in New Issue
Block a user