Format log filenames as readable date/time columns in logs screen

Show '2026-03-06' and '14:45:16' instead of 'gniza-20260306-144516.log'.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-06 16:46:10 +02:00
parent f9f7ae6ad3
commit 0b0204dada

View File

@@ -1,4 +1,7 @@
import re
from datetime import datetime
from pathlib import Path
from textual.app import ComposeResult
from textual.screen import Screen
from textual.widgets import Header, Footer, Static, Button, DataTable, RichLog
@@ -7,6 +10,17 @@ from textual.containers import Vertical, Horizontal
from tui.config import LOG_DIR
_LOG_NAME_RE = re.compile(r"gniza-(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})\.log")
def _format_log_name(name: str) -> tuple[str, str]:
"""Format 'gniza-20260306-144516.log' as ('2026-03-06', '14:45:16')."""
m = _LOG_NAME_RE.match(name)
if m:
return f"{m[1]}-{m[2]}-{m[3]}", f"{m[4]}:{m[5]}:{m[6]}"
return name, ""
class LogsScreen(Screen):
BINDINGS = [("escape", "go_back", "Back")]
@@ -29,7 +43,7 @@ class LogsScreen(Screen):
def _refresh_table(self) -> None:
table = self.query_one("#logs-table", DataTable)
table.clear(columns=True)
table.add_columns("File", "Size")
table.add_columns("Date", "Time", "Size")
log_dir = Path(LOG_DIR)
if not log_dir.is_dir():
return
@@ -42,7 +56,8 @@ class LogsScreen(Screen):
size_str = f"{size / 1024:.1f} KB"
else:
size_str = f"{size} B"
table.add_row(f.name, size_str, key=f.name)
date_str, time_str = _format_log_name(f.name)
table.add_row(date_str, time_str, size_str, key=f.name)
def _selected_log(self) -> str | None:
table = self.query_one("#logs-table", DataTable)