feat: complete core state variables (Task 3.1)

- Add datetime imports for date handling
- Add data state variables: last_updated, raw_data, latest_date_in_data
- Set last_seen date defaults (6 months ago to today)
- Add last_updated_display computed var for top bar
- Update top bar to show dynamic refresh timestamp
This commit is contained in:
Andrew Charlwood
2026-02-04 14:03:28 +00:00
parent 80997cb0de
commit fead4bf7dd
2 changed files with 80 additions and 21 deletions
+18 -16
View File
@@ -93,24 +93,26 @@ cd pathways_app && timeout 60 python -m reflex run 2>&1 | head -30
## Phase 3: State Management
### 3.1 Core State Variables
- [ ] Define filter state variables in `AppState`:
- [x] Define filter state variables in `AppState`:
- `initiated_filter_enabled: bool = False`
- `initiated_from: datetime`
- `initiated_to: datetime`
- `initiated_from_date: str = ""` (ISO date string)
- `initiated_to_date: str = ""`
- `last_seen_filter_enabled: bool = True`
- `last_seen_from: datetime` (default: 6 months ago)
- `last_seen_to: datetime` (default: latest in dataset)
- `selected_drugs: List[str]` (default: all)
- `selected_indications: List[str]` (default: all)
- `selected_directorates: List[str]` (default: all)
- [ ] Define data state variables:
- `data_loaded: bool`
- `total_records: int`
- `last_updated: datetime`
- `filtered_data: pd.DataFrame` (or computed)
- [ ] Define UI state variables:
- `chart_loading: bool`
- `error_message: str`
- `last_seen_from_date: str` (default: 6 months ago, computed at class definition)
- `last_seen_to_date: str` (default: today, updated on data load)
- `selected_drugs: list[str] = []` (empty = all)
- `selected_indications: list[str] = []` (empty = all)
- `selected_directorates: list[str] = []` (empty = all)
- [x] Define data state variables:
- `data_loaded: bool = False`
- `total_records: int = 0`
- `last_updated: str = ""` (ISO timestamp)
- `raw_data: list[dict[str, Any]] = []` (list of dicts, Reflex-friendly)
- `latest_date_in_data: str = ""` (for "to" date defaults)
- [x] Define UI state variables:
- `chart_loading: bool = False`
- `error_message: str = ""`
- `current_chart: str = "icicle"`
### 3.2 Data Loading
- [ ] Create `load_data()` method that reads from SQLite