Preserve historical activity selection (#103)
This commit is contained in:
@@ -13,12 +13,23 @@ class IntervalIdentity:
|
||||
end_ts: str
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class HistoryDayIdentity:
|
||||
"""Stable identity for one recorded local-day summary."""
|
||||
|
||||
local_date: str
|
||||
timezone: str
|
||||
utc_start: str
|
||||
utc_end: str
|
||||
|
||||
|
||||
class ActivitySelection:
|
||||
"""Keep activity navigation state separate from its Textual rendering."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.view = "live"
|
||||
self.browse_date: str | None = None
|
||||
self.selected_history_day: HistoryDayIdentity | None = None
|
||||
self.selected_history_hour: str | None = None
|
||||
self.history_range_days = HISTORY_RANGE_DEFAULT
|
||||
self.measure = "written"
|
||||
@@ -34,11 +45,23 @@ class ActivitySelection:
|
||||
if view == "live":
|
||||
self.follow_live()
|
||||
|
||||
def select_history_date(self, date: str | None) -> None:
|
||||
"""Keep the chosen historical local date across refresh."""
|
||||
if date != self.browse_date:
|
||||
def select_history_date(
|
||||
self,
|
||||
date: str | None,
|
||||
identity: HistoryDayIdentity | None = None,
|
||||
) -> None:
|
||||
"""Keep requested date and evidence identity across refresh."""
|
||||
if date != self.browse_date or (
|
||||
identity is not None and identity != self.selected_history_day
|
||||
):
|
||||
self.selected_history_hour = None
|
||||
if date != self.browse_date:
|
||||
self.selected_history_day = None
|
||||
self.browse_date = date
|
||||
if identity is not None:
|
||||
self.selected_history_day = identity
|
||||
elif date is None:
|
||||
self.selected_history_day = None
|
||||
|
||||
def select_history_hour(self, hour: str | None) -> None:
|
||||
"""Keep the chosen historical hour across refresh."""
|
||||
@@ -53,6 +76,7 @@ class ActivitySelection:
|
||||
"""Resume following the newest interval and clear stale-pin notices."""
|
||||
self.view = "live"
|
||||
self.browse_date = None
|
||||
self.selected_history_day = None
|
||||
self.selected_history_hour = None
|
||||
self.following_live = True
|
||||
self.selected_live_interval = None
|
||||
|
||||
Reference in New Issue
Block a user