Files
iptvnator/libs/workspace/dashboard/feature/README.md
T

65 lines
3.3 KiB
Markdown

# Workspace Dashboard Feature
This library owns the workspace dashboard rails UI. The dashboard is a
read-only surface over existing playlist, recent, favorites, EPG, and Xtream
catalog data; it should not introduce Electron IPC, SQLite schema, or route
contracts on its own.
## Dashboard Surfaces
The dashboard renders a surface only when the matching setting is enabled. Data
rails also require the underlying data slice to have at least one item.
- `hero` shows the full-width cinematic banner that rotates between the
newest unfinished title, a favourite (or recent) channel with a programme on
air, and favourite / recently added titles. Contract:
`docs/architecture/workspace-dashboard.md#cinematic-hero`.
- `continueWatching` shows recent movies and series from
`DashboardDataService.globalRecentVodItems()` using cover cards with playback
progress when a saved resume position is available.
- `liveFavorites` shows favorited live TV channels from
`DashboardDataService.globalFavoriteLiveItems()` using the channel layout
with EPG title, time range, and progress when XMLTV data is available.
- `recentlyWatchedLive` shows recently watched live TV channels from
`DashboardDataService.globalRecentLiveItems()` using the same channel layout.
- `favoriteMoviesAndSeries` shows favorited movies and series from
`DashboardDataService.globalFavoriteItems()`, excluding live favorites, using
cover cards.
- `recentSources` shows recently used playlist/source entries.
- `xtreamRecentlyAdded` shows recently added Xtream catalog items.
- `tmdbRecommendations` shows "Because you watched X" — TMDB
recommendations seeded from recently watched movies/series, kept to
titles that exist in an imported Xtream library. Needs the TMDB opt-in
and the Electron DB worker (hidden in the PWA), and hides itself below
five matched cards. Data:
`DashboardRecommendationsService` in `workspace/dashboard/data-access`.
- `tmdbTrending` shows TMDB's weekly trending titles, matched against the
imported Xtream libraries. Same TMDB/Electron gating; unmatched cards
open the global search prefilled. Data: `DashboardTrendingService`.
## Settings
Per-surface visibility lives on `Settings.dashboardRails` as a
`DashboardRailsSettings` object. Every surface defaults to enabled. Stored
settings are deep-merged with `DEFAULT_DASHBOARD_RAILS_SETTINGS` by
`SettingsStore`, so existing users and older partial settings keep newly added
surfaces visible unless they explicitly turn them off.
The global `showDashboard` flag remains a top-level `Settings` property because
workspace startup and route guards already depend on that contract. The Settings
UI groups `showDashboard` and the per-surface checkboxes in the Dashboard
section. When `showDashboard` is off, the per-surface checkboxes are disabled
because the dashboard route itself is hidden.
## Navigation
Rail cards use the navigation state provided by `DashboardDataService` for the
underlying item. Rail "See all" links may also pass router state:
- live rails open the relevant collection on Live TV.
- cover rails for movies/series open Global Recent or Global Favorites on
Movies when movie items are present, otherwise on Series.
This keeps the global collection pages from defaulting to Live TV when a
dashboard rail is clearly about movies or series.