From fffb526a87d7b722873e96de73d6305683d7b7a3 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 28 Jun 2026 17:48:50 +0800 Subject: [PATCH] feat(dashboard): enhance media statistics and memory analytics - Added monthly media counts (movies, TV shows, episodes) to the AnalyticsMediaStatistic component. - Improved layout and styling for better responsiveness in the dashboard summary. - Updated AnalyticsMemory component to display total and available memory with enhanced visuals. - Refactored AnalyticsScheduler to include transfer queue management and improved task display. - Enhanced AnalyticsSpeed component with a more structured speed overview. - Introduced new components for quick actions and recent imports in the dashboard. - Added system information display with runtime and version details in DashboardSystemInfo. - Created a new composable for shortcut tools to streamline dialog management. --- src/api/types.ts | 18 ++ src/components/misc/DashboardElement.vue | 9 + src/composables/useShortcutTools.ts | 152 +++++++++++++++ .../default/components/ShortcutBar.vue | 140 +------------ src/locales/en-US.ts | 35 ++++ src/locales/zh-CN.ts | 35 ++++ src/locales/zh-TW.ts | 35 ++++ src/pages/dashboard.vue | 127 +++++++++--- src/views/dashboard/AnalyticsCpu.vue | 60 +++++- .../dashboard/AnalyticsMediaStatistic.vue | 104 ++++++++-- src/views/dashboard/AnalyticsMemory.vue | 86 +++++++- src/views/dashboard/AnalyticsScheduler.vue | 124 +++++++++--- src/views/dashboard/AnalyticsSpeed.vue | 45 ++++- src/views/dashboard/AnalyticsStorage.vue | 62 +++--- .../dashboard/AnalyticsWeeklyOverview.vue | 2 +- src/views/dashboard/DashboardQuickActions.vue | 85 ++++++++ .../dashboard/DashboardRecentImports.vue | 155 +++++++++++++++ src/views/dashboard/DashboardSystemInfo.vue | 184 ++++++++++++++++++ 18 files changed, 1205 insertions(+), 253 deletions(-) create mode 100644 src/composables/useShortcutTools.ts create mode 100644 src/views/dashboard/DashboardQuickActions.vue create mode 100644 src/views/dashboard/DashboardRecentImports.vue create mode 100644 src/views/dashboard/DashboardSystemInfo.vue diff --git a/src/api/types.ts b/src/api/types.ts index b7549857..71126f0e 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -1000,6 +1000,12 @@ export interface MediaStatistic { episode_count: number | null // 用户数量 user_count: number + // 本月新增电影数量 + movie_count_month: number + // 本月新增电视剧数量 + tv_count_month: number + // 本月新增剧集数量 + episode_count_month: number } // 后台进程 @@ -1020,6 +1026,18 @@ export interface Process { memory: number } +// 仪表板系统摘要 +export interface DashboardSystemInfo { + // 主机名称 + hostname: string + // 操作系统名称 + operating_system: string + // MoviePilot 运行时间,单位秒 + runtime: number + // MoviePilot 后端版本 + version: string +} + // 下载器信息 export interface DownloaderInfo { // 下载速度 diff --git a/src/components/misc/DashboardElement.vue b/src/components/misc/DashboardElement.vue index 031f81e4..8e3f5e14 100644 --- a/src/components/misc/DashboardElement.vue +++ b/src/components/misc/DashboardElement.vue @@ -33,6 +33,9 @@ const builtInDashboardComponentLoaders: Record library: () => import('@/views/dashboard/MediaServerLibrary.vue'), playing: () => import('@/views/dashboard/MediaServerPlaying.vue'), latest: () => import('@/views/dashboard/MediaServerLatest.vue'), + recentImports: () => import('@/views/dashboard/DashboardRecentImports.vue'), + quickActions: () => import('@/views/dashboard/DashboardQuickActions.vue'), + systemInfo: () => import('@/views/dashboard/DashboardSystemInfo.vue'), } const builtInDashboardComponentPromises = new Map>() @@ -74,6 +77,9 @@ const AnalyticsNetwork = createAsyncDashboardComponent('network') const MediaServerLibrary = createAsyncDashboardComponent('library') const MediaServerPlaying = createAsyncDashboardComponent('playing') const MediaServerLatest = createAsyncDashboardComponent('latest') +const DashboardRecentImports = createAsyncDashboardComponent('recentImports') +const DashboardQuickActions = createAsyncDashboardComponent('quickActions') +const DashboardSystemInfo = createAsyncDashboardComponent('systemInfo') // 输入参数 const props = defineProps({ @@ -205,6 +211,9 @@ onUnmounted(() => { + + +