From 8d808f63b63168221de249f4a39ef34fa3a9608a Mon Sep 17 00:00:00 2001 From: juancarmore Date: Wed, 4 Nov 2026 12:24:17 +0100 Subject: [PATCH] openvidu-dashboard: the Analytics title names a node scope by its media node label --- .../src/lib/features/analytics/analytics-page.spec.ts | 8 ++++++++ .../src/lib/features/analytics/analytics-page.ts | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.spec.ts b/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.spec.ts index 8357e8bdd..77f39053a 100644 --- a/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.spec.ts +++ b/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.spec.ts @@ -407,6 +407,14 @@ describe('AnalyticsPage', () => { expect(text(identities?.querySelector('.chart-heading + .chart-note'))).toBe('per UTC day'); }); + it('names a node scope in the title by its media node label', async () => { + const { element } = await open('/analytics?from=now-24h&to=now&tz=UTC&scope=node:media-node-10-0-1-23', [ + 'per-node-breakdown' + ]); + + expect(text(element.querySelector('h1'))).toBe('Analytics · media-node-10-0-1-23'); + }); + it('locks the PRO strip on CE without any PRO request', async () => { const { requests, element, http } = await open('/analytics?from=now-24h&to=now&tz=UTC'); const locks = [...element.querySelectorAll('ovd-pro-lock-overlay')].map(text); diff --git a/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.ts b/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.ts index ef19bf6a8..de9bfef4e 100644 --- a/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.ts +++ b/openvidu-dashboard/dashboard-ce/frontend/projects/dashboard-ui/src/lib/features/analytics/analytics-page.ts @@ -262,8 +262,9 @@ export class AnalyticsPage implements AnalyticsPageContext { readonly mediaStats = computed(() => this.summary()?.mediaStats); protected readonly mediaStatsTexts = RANGE_MEDIA_STATS; + /** "Analytics", or "Analytics · " for a node scope. */ protected readonly title = computed(() => - this.scope() === 'global' ? 'Analytics' : `Analytics · ${this.scope()}` + this.scope() === 'global' ? 'Analytics' : `Analytics · ${this.scope().replace(/^node:/, '')}` ); /** Names what `auto` resolves to for the range, whatever value is selected. */ protected readonly autoLabel = computed(() => {