@memberjunction/ng-dashboards 6.2.0-edge.1 → 6.2.0-edge.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +3 -1
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -2
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
- package/dist/AI/components/rubric-drift-series.d.ts +32 -0
- package/dist/AI/components/rubric-drift-series.d.ts.map +1 -0
- package/dist/AI/components/rubric-drift-series.js +49 -0
- package/dist/AI/components/rubric-drift-series.js.map +1 -0
- package/dist/AI/components/rubric-drift.component.d.ts +42 -0
- package/dist/AI/components/rubric-drift.component.d.ts.map +1 -0
- package/dist/AI/components/rubric-drift.component.js +197 -0
- package/dist/AI/components/rubric-drift.component.js.map +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +4 -3
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +5 -2
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +12 -1
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/form-override-dialog.component.js +128 -81
- package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +4 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +47 -13
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts +5 -0
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +151 -136
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +3 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts +11 -0
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js +17 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js.map +1 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +52 -45
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +11 -0
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +47 -10
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Rubrics/catalog-grid.d.ts +4 -0
- package/dist/Rubrics/catalog-grid.d.ts.map +1 -0
- package/dist/Rubrics/catalog-grid.js +22 -0
- package/dist/Rubrics/catalog-grid.js.map +1 -0
- package/dist/Rubrics/rubrics-dashboard.component.d.ts +31 -0
- package/dist/Rubrics/rubrics-dashboard.component.d.ts.map +1 -0
- package/dist/Rubrics/rubrics-dashboard.component.js +285 -0
- package/dist/Rubrics/rubrics-dashboard.component.js.map +1 -0
- package/dist/Rubrics/rubrics-resource.component.d.ts +13 -0
- package/dist/Rubrics/rubrics-resource.component.d.ts.map +1 -0
- package/dist/Rubrics/rubrics-resource.component.js +42 -0
- package/dist/Rubrics/rubrics-resource.component.js.map +1 -0
- package/dist/Rubrics/scales-dashboard.component.d.ts +34 -0
- package/dist/Rubrics/scales-dashboard.component.d.ts.map +1 -0
- package/dist/Rubrics/scales-dashboard.component.js +204 -0
- package/dist/Rubrics/scales-dashboard.component.js.map +1 -0
- package/dist/Rubrics/scales-resource.component.d.ts +13 -0
- package/dist/Rubrics/scales-resource.component.d.ts.map +1 -0
- package/dist/Rubrics/scales-resource.component.js +42 -0
- package/dist/Rubrics/scales-resource.component.js.map +1 -0
- package/dist/TelephonyOperations/telephony-operations-agent-context.d.ts +107 -0
- package/dist/TelephonyOperations/telephony-operations-agent-context.d.ts.map +1 -0
- package/dist/TelephonyOperations/telephony-operations-agent-context.js +216 -0
- package/dist/TelephonyOperations/telephony-operations-agent-context.js.map +1 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts +57 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts.map +1 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.js +805 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.js.map +1 -0
- package/dist/Testing/components/testing-analytics.component.d.ts +15 -0
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +465 -296
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +6 -0
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +289 -173
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts +8 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +68 -43
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/WorkQueue/components/work-queue-bindings.component.d.ts +37 -0
- package/dist/WorkQueue/components/work-queue-bindings.component.d.ts.map +1 -0
- package/dist/WorkQueue/components/work-queue-bindings.component.js +210 -0
- package/dist/WorkQueue/components/work-queue-bindings.component.js.map +1 -0
- package/dist/WorkQueue/components/work-queue-dead-letters.component.d.ts +70 -0
- package/dist/WorkQueue/components/work-queue-dead-letters.component.d.ts.map +1 -0
- package/dist/WorkQueue/components/work-queue-dead-letters.component.js +496 -0
- package/dist/WorkQueue/components/work-queue-dead-letters.component.js.map +1 -0
- package/dist/WorkQueue/components/work-queue-discard-dialog.component.d.ts +22 -0
- package/dist/WorkQueue/components/work-queue-discard-dialog.component.d.ts.map +1 -0
- package/dist/WorkQueue/components/work-queue-discard-dialog.component.js +99 -0
- package/dist/WorkQueue/components/work-queue-discard-dialog.component.js.map +1 -0
- package/dist/WorkQueue/components/work-queue-overview.component.d.ts +29 -0
- package/dist/WorkQueue/components/work-queue-overview.component.d.ts.map +1 -0
- package/dist/WorkQueue/components/work-queue-overview.component.js +278 -0
- package/dist/WorkQueue/components/work-queue-overview.component.js.map +1 -0
- package/dist/WorkQueue/components/work-queue-partitions.component.d.ts +59 -0
- package/dist/WorkQueue/components/work-queue-partitions.component.d.ts.map +1 -0
- package/dist/WorkQueue/components/work-queue-partitions.component.js +359 -0
- package/dist/WorkQueue/components/work-queue-partitions.component.js.map +1 -0
- package/dist/WorkQueue/services/work-queue-operator.service.d.ts +22 -0
- package/dist/WorkQueue/services/work-queue-operator.service.d.ts.map +1 -0
- package/dist/WorkQueue/services/work-queue-operator.service.js +44 -0
- package/dist/WorkQueue/services/work-queue-operator.service.js.map +1 -0
- package/dist/WorkQueue/work-queue-agent-context.d.ts +67 -0
- package/dist/WorkQueue/work-queue-agent-context.d.ts.map +1 -0
- package/dist/WorkQueue/work-queue-agent-context.js +119 -0
- package/dist/WorkQueue/work-queue-agent-context.js.map +1 -0
- package/dist/WorkQueue/work-queue-dashboard.component.d.ts +94 -0
- package/dist/WorkQueue/work-queue-dashboard.component.d.ts.map +1 -0
- package/dist/WorkQueue/work-queue-dashboard.component.js +545 -0
- package/dist/WorkQueue/work-queue-dashboard.component.js.map +1 -0
- package/dist/WorkQueue/work-queue-types.d.ts +40 -0
- package/dist/WorkQueue/work-queue-types.d.ts.map +1 -0
- package/dist/WorkQueue/work-queue-types.js +2 -0
- package/dist/WorkQueue/work-queue-types.js.map +1 -0
- package/dist/core-dashboards.module.d.ts +29 -28
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +7 -0
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/module.d.ts +24 -22
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +14 -0
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +7 -0
- package/dist/public-api.js.map +1 -1
- package/dist/rubrics-dashboards.module.d.ts +17 -0
- package/dist/rubrics-dashboards.module.d.ts.map +1 -0
- package/dist/rubrics-dashboards.module.js +76 -0
- package/dist/rubrics-dashboards.module.js.map +1 -0
- package/dist/work-queue-dashboards.module.d.ts +23 -0
- package/dist/work-queue-dashboards.module.d.ts.map +1 -0
- package/dist/work-queue-dashboards.module.js +92 -0
- package/dist/work-queue-dashboards.module.js.map +1 -0
- package/package.json +76 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telephony-operations-dashboard.component.js","sourceRoot":"","sources":["../../src/TelephonyOperations/telephony-operations-dashboard.component.ts","../../src/TelephonyOperations/telephony-operations-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport {\n BuildTelephonyOperationsAgentContext,\n CalculateOperationsMetrics,\n FormatCurrency,\n FormatDuration,\n ValidateChannelParam,\n ValidateTimeRangeParam,\n type ChannelFilter,\n type InteractionEventRecordLike,\n type InteractionRecordLike,\n type OperationsMetrics,\n type PhoneNumberRecordLike,\n type TimeRangeFilter,\n} from './telephony-operations-agent-context';\n\n/**\n * TELEPHONY & INTERACTION OPERATIONS DASHBOARD\n *\n * An Explorer L3 dashboard providing operational analytics across phone calls, web realtime\n * sessions, and multi-party meetings.\n *\n * Metrics computed from `MJ: Interactions`, `MJ: Interaction Events`, and `MJ: Phone Numbers`:\n * - Volume by channel (Phone, Web, Meeting) and direction (Inbound, Outbound, Internal)\n * - Answer rate and abandonment rate\n * - Average handle time (AHT) and speed to answer (ASA)\n * - Transfer and escalation volumes\n * - Cost estimates by day and by phone number\n * - Active live calls / sessions in real time\n *\n * Data is loaded in a single batched `RunViews` call and aggregated in memory.\n */\n@RegisterClass(BaseResourceComponent, 'TelephonyOperationsDashboard')\n@RegisterClass(BaseResourceComponent, 'InteractionOperationsDashboard')\n@Component({\n standalone: false,\n selector: 'mj-telephony-operations-dashboard',\n templateUrl: './telephony-operations-dashboard.component.html',\n styleUrls: ['./telephony-operations-dashboard.component.css'],\n})\nexport class TelephonyOperationsDashboardComponent\n extends BaseResourceComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n public IsLoading = true;\n public ErrorMessage: string | null = null;\n\n public SelectedTimeRange: TimeRangeFilter = '7d';\n public SelectedChannelFilter: ChannelFilter = 'all';\n public SearchQuery = '';\n\n public RawInteractions: InteractionRecordLike[] = [];\n public RawEvents: InteractionEventRecordLike[] = [];\n public RawPhoneNumbers: PhoneNumberRecordLike[] = [];\n\n public Metrics: OperationsMetrics = CalculateOperationsMetrics([], [], []);\n\n private refreshTimer: ReturnType<typeof setInterval> | null = null;\n private readonly cdr = inject(ChangeDetectorRef);\n\n override async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Telephony & Interaction Operations';\n }\n\n override async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-chart-line';\n }\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.LoadData();\n this.NotifyLoadComplete();\n\n // Auto-refresh live status every 15 seconds\n this.refreshTimer = setInterval(() => {\n this.recalculateMetrics();\n this.cdr.markForCheck();\n }, 15000);\n }\n\n ngAfterViewInit(): void {\n this.publishAgentContext();\n this.registerAgentClientTools();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n this.refreshTimer = null;\n }\n }\n\n public async LoadData(): Promise<void> {\n this.IsLoading = true;\n this.ErrorMessage = null;\n this.cdr.markForCheck();\n\n try {\n const dateFilterInteractions = this.getDateFilter('StartedAt');\n const dateFilterEvents = this.getDateFilter('OccurredAt');\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [interactionsResult, eventsResult, phoneNumbersResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Interactions',\n ResultType: 'simple',\n ExtraFilter: dateFilterInteractions,\n OrderBy: 'StartedAt DESC',\n MaxRows: 1000,\n },\n {\n EntityName: 'MJ: Interaction Events',\n ResultType: 'simple',\n ExtraFilter: dateFilterEvents,\n OrderBy: 'OccurredAt DESC',\n MaxRows: 2500,\n },\n {\n EntityName: 'MJ: Phone Numbers',\n ResultType: 'simple',\n ExtraFilter: \"Status = 'Active'\",\n MaxRows: 200,\n },\n ]);\n\n if (interactionsResult.Success && Array.isArray(interactionsResult.Results)) {\n this.RawInteractions = interactionsResult.Results as unknown as InteractionRecordLike[];\n } else {\n this.RawInteractions = [];\n }\n\n if (eventsResult.Success && Array.isArray(eventsResult.Results)) {\n this.RawEvents = eventsResult.Results as unknown as InteractionEventRecordLike[];\n } else {\n this.RawEvents = [];\n }\n\n if (phoneNumbersResult.Success && Array.isArray(phoneNumbersResult.Results)) {\n this.RawPhoneNumbers = phoneNumbersResult.Results as unknown as PhoneNumberRecordLike[];\n } else {\n this.RawPhoneNumbers = [];\n }\n\n this.recalculateMetrics();\n } catch (err) {\n this.ErrorMessage = err instanceof Error ? err.message : String(err);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n this.publishAgentContext();\n }\n }\n\n public SetTimeRange(range: TimeRangeFilter): void {\n if (this.SelectedTimeRange !== range) {\n this.SelectedTimeRange = range;\n void this.LoadData();\n }\n }\n\n public SetChannelFilter(channel: ChannelFilter): void {\n if (this.SelectedChannelFilter !== channel) {\n this.SelectedChannelFilter = channel;\n this.recalculateMetrics();\n this.cdr.markForCheck();\n this.publishAgentContext();\n }\n }\n\n public OnSearchQueryChange(query: string): void {\n this.SearchQuery = query;\n this.cdr.markForCheck();\n }\n\n public get FilteredLiveInteractions(): OperationsMetrics['LiveInteractions'] {\n if (!this.SearchQuery.trim()) {\n return this.Metrics.LiveInteractions;\n }\n const q = this.SearchQuery.toLowerCase();\n return this.Metrics.LiveInteractions.filter(\n (i) =>\n (i.RemoteAddress && i.RemoteAddress.toLowerCase().includes(q)) ||\n i.Channel.toLowerCase().includes(q) ||\n i.Direction.toLowerCase().includes(q) ||\n i.ID.toLowerCase().includes(q),\n );\n }\n\n public get FilteredRecentInteractions(): InteractionRecordLike[] {\n let rows = this.filteredRawInteractions;\n if (this.SearchQuery.trim()) {\n const q = this.SearchQuery.toLowerCase();\n rows = rows.filter(\n (r) =>\n (r.RemoteAddress && r.RemoteAddress.toLowerCase().includes(q)) ||\n (r.EndReason && r.EndReason.toLowerCase().includes(q)) ||\n r.Channel.toLowerCase().includes(q) ||\n r.Direction.toLowerCase().includes(q) ||\n r.ID.toLowerCase().includes(q),\n );\n }\n return rows.slice(0, 15);\n }\n\n public FormatCost(amount: number | null): string {\n return FormatCurrency(amount ?? 0);\n }\n\n public FormatTime(date: Date | string | null): string {\n if (!date) return '-';\n const d = date instanceof Date ? date : new Date(date);\n return isNaN(d.getTime()) ? '-' : d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n }\n\n public FormatDate(date: Date | string | null): string {\n if (!date) return '-';\n const d = date instanceof Date ? date : new Date(date);\n return isNaN(d.getTime()) ? '-' : d.toLocaleDateString([], { month: 'short', day: 'numeric' });\n }\n\n public ComputeDuration(started: Date | string, ended: Date | string | null): string {\n const s = started instanceof Date ? started : new Date(started);\n if (isNaN(s.getTime())) return '-';\n const e = ended ? (ended instanceof Date ? ended : new Date(ended)) : new Date();\n if (isNaN(e.getTime())) return '-';\n const sec = Math.max(0, Math.floor((e.getTime() - s.getTime()) / 1000));\n return FormatDuration(sec);\n }\n\n private get filteredRawInteractions(): InteractionRecordLike[] {\n if (this.SelectedChannelFilter === 'all') {\n return this.RawInteractions;\n }\n return this.RawInteractions.filter((i) => i.Channel === this.SelectedChannelFilter);\n }\n\n private recalculateMetrics(): void {\n const filtered = this.filteredRawInteractions;\n const activeIds = new Set(filtered.map((i) => i.ID.toLowerCase()));\n const relevantEvents = this.RawEvents.filter((e) => activeIds.has(e.InteractionID.toLowerCase()));\n\n this.Metrics = CalculateOperationsMetrics(filtered, relevantEvents, this.RawPhoneNumbers);\n }\n\n private getDateFilter(field: string): string {\n switch (this.SelectedTimeRange) {\n case '24h':\n return `${field} >= DATEADD(hour, -24, GETUTCDATE())`;\n case '7d':\n return `${field} >= DATEADD(day, -7, GETUTCDATE())`;\n case '30d':\n return `${field} >= DATEADD(day, -30, GETUTCDATE())`;\n case 'all':\n default:\n return '1=1';\n }\n }\n\n private publishAgentContext(): void {\n if (!this.navigationService) return;\n const snapshot = BuildTelephonyOperationsAgentContext(\n this.Metrics,\n this.SelectedTimeRange,\n this.SelectedChannelFilter,\n );\n this.navigationService.SetAgentContext(this, snapshot);\n }\n\n private registerAgentClientTools(): void {\n if (!this.navigationService) return;\n\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'RefreshOperationsData',\n Description: 'Refresh telephony and interaction operations data from the database.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n await this.LoadData();\n return { Success: true };\n },\n },\n {\n Name: 'SetTimeRange',\n Description: 'Set the active time range window (24h, 7d, 30d, all).',\n ParameterSchema: {\n type: 'object',\n properties: {\n timeRange: {\n type: 'string',\n description: 'Time range to display: 24h, 7d, 30d, or all',\n enum: ['24h', '7d', '30d', 'all'],\n },\n },\n required: ['timeRange'],\n },\n Handler: async (params: Record<string, unknown>) => {\n const validated = ValidateTimeRangeParam(params['timeRange']);\n if (!validated.ok) {\n return validated.result;\n }\n this.SetTimeRange(validated.value);\n return { Success: true };\n },\n },\n {\n Name: 'FilterByChannel',\n Description: 'Filter operations metrics by interaction channel (all, Phone, Web, Meeting).',\n ParameterSchema: {\n type: 'object',\n properties: {\n channel: {\n type: 'string',\n description: 'Channel to filter: all, Phone, Web, or Meeting',\n enum: ['all', 'Phone', 'Web', 'Meeting'],\n },\n },\n required: ['channel'],\n },\n Handler: async (params: Record<string, unknown>) => {\n const validated = ValidateChannelParam(params['channel']);\n if (!validated.ok) {\n return validated.result;\n }\n this.SetChannelFilter(validated.value);\n return { Success: true };\n },\n },\n ]);\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Telephony & Interaction Operations\"\n Subtitle=\"Real-time metrics, volume breakdown, answer rates, and cost analysis across channels\"\n Icon=\"fa-solid fa-chart-line\"\n >\n <div meta>\n <mj-stat-badge\n [Count]=\"Metrics.LiveCallsCount\"\n [Total]=\"Metrics.TotalVolume\"\n Label=\"live now\"\n [Variant]=\"Metrics.LiveCallsCount > 0 ? 'success' : 'default'\"\n />\n </div>\n\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"LoadData()\" />\n </div>\n\n <div toolbar>\n <div class=\"toolbar-controls\">\n <mj-page-search [Value]=\"SearchQuery\" (ValueChange)=\"OnSearchQueryChange($event)\" />\n\n <div class=\"time-range-pills\" role=\"radiogroup\" aria-label=\"Time Range\">\n <button\n type=\"button\"\n class=\"range-pill\"\n [class.active]=\"SelectedTimeRange === '24h'\"\n (click)=\"SetTimeRange('24h')\"\n >\n 24h\n </button>\n <button\n type=\"button\"\n class=\"range-pill\"\n [class.active]=\"SelectedTimeRange === '7d'\"\n (click)=\"SetTimeRange('7d')\"\n >\n 7d\n </button>\n <button\n type=\"button\"\n class=\"range-pill\"\n [class.active]=\"SelectedTimeRange === '30d'\"\n (click)=\"SetTimeRange('30d')\"\n >\n 30d\n </button>\n <button\n type=\"button\"\n class=\"range-pill\"\n [class.active]=\"SelectedTimeRange === 'all'\"\n (click)=\"SetTimeRange('all')\"\n >\n All Time\n </button>\n </div>\n\n <div class=\"channel-filter-pills\" role=\"radiogroup\" aria-label=\"Channel Filter\">\n <button\n type=\"button\"\n class=\"channel-pill\"\n [class.active]=\"SelectedChannelFilter === 'all'\"\n (click)=\"SetChannelFilter('all')\"\n >\n All Channels\n </button>\n <button\n type=\"button\"\n class=\"channel-pill\"\n [class.active]=\"SelectedChannelFilter === 'Phone'\"\n (click)=\"SetChannelFilter('Phone')\"\n >\n <i class=\"fa-solid fa-phone\"></i> Phone\n </button>\n <button\n type=\"button\"\n class=\"channel-pill\"\n [class.active]=\"SelectedChannelFilter === 'Web'\"\n (click)=\"SetChannelFilter('Web')\"\n >\n <i class=\"fa-solid fa-globe\"></i> Web\n </button>\n <button\n type=\"button\"\n class=\"channel-pill\"\n [class.active]=\"SelectedChannelFilter === 'Meeting'\"\n (click)=\"SetChannelFilter('Meeting')\"\n >\n <i class=\"fa-solid fa-users\"></i> Meeting\n </button>\n </div>\n </div>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (ErrorMessage) {\n <div class=\"error-banner\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ ErrorMessage }}</span>\n </div>\n }\n\n <!-- KPI Metric Cards Grid -->\n <div class=\"kpi-grid\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap primary\">\n <i class=\"fa-solid fa-headset\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Total Volume</span>\n <span class=\"kpi-value\">{{ Metrics.TotalVolume }}</span>\n <span class=\"kpi-subtext\">in selected window</span>\n </div>\n </div>\n\n <div class=\"kpi-card\" [class.live-active]=\"Metrics.LiveCallsCount > 0\">\n <div class=\"kpi-icon-wrap success\">\n <span class=\"live-dot-ping\"></span>\n <i class=\"fa-solid fa-phone-volume\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Live Now</span>\n <span class=\"kpi-value\">{{ Metrics.LiveCallsCount }}</span>\n <span class=\"kpi-subtext\">active sessions</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap success\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Answer Rate</span>\n <span class=\"kpi-value\">{{ Metrics.AnswerRate | number:'1.0-1' }}%</span>\n <span class=\"kpi-subtext\">{{ Metrics.AnsweredCount }} answered</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap warning\">\n <i class=\"fa-solid fa-phone-slash\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Abandonment Rate</span>\n <span class=\"kpi-value\">{{ Metrics.AbandonmentRate | number:'1.0-1' }}%</span>\n <span class=\"kpi-subtext\">{{ Metrics.AbandonedCount }} caller abandons</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap info\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Avg Handle Time</span>\n <span class=\"kpi-value\">{{ Metrics.AverageHandleTimeFormatted }}</span>\n <span class=\"kpi-subtext\">ASA: {{ Metrics.AverageSpeedToAnswerFormatted }}</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap accent\">\n <i class=\"fa-solid fa-arrows-split-up-and-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Transfers & Esc.</span>\n <span class=\"kpi-value\">{{ Metrics.TransferCount }} / {{ Metrics.EscalationCount }}</span>\n <span class=\"kpi-subtext\">transfers / escalations</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon-wrap cost\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n </div>\n <div class=\"kpi-content\">\n <span class=\"kpi-label\">Total Cost Est.</span>\n <span class=\"kpi-value\">{{ Metrics.TotalCostFormatted }}</span>\n <span class=\"kpi-subtext\">usage & carrier minutes</span>\n </div>\n </div>\n </div>\n\n <!-- Active Live Calls Section -->\n <div class=\"dashboard-section live-section\">\n <div class=\"section-header\">\n <div class=\"section-title\">\n <span class=\"live-pulse-badge\"></span>\n <h2>Active Live Sessions</h2>\n <span class=\"count-pill\">{{ FilteredLiveInteractions.length }}</span>\n </div>\n </div>\n\n @if (FilteredLiveInteractions.length === 0) {\n <div class=\"empty-feed\">\n <i class=\"fa-solid fa-phone-slash empty-icon\"></i>\n <p>No active live interactions at this moment.</p>\n </div>\n } @else {\n <div class=\"live-table-container\">\n <table class=\"ops-table\">\n <thead>\n <tr>\n <th>Remote Address</th>\n <th>Channel</th>\n <th>Direction</th>\n <th>Status</th>\n <th>Started</th>\n <th>Elapsed</th>\n </tr>\n </thead>\n <tbody>\n @for (live of FilteredLiveInteractions; track live.ID) {\n <tr class=\"live-row\">\n <td class=\"address-col\">\n <i class=\"fa-solid fa-user-circle address-icon\"></i>\n <span class=\"address-text\">{{ live.RemoteAddress || 'Unknown' }}</span>\n </td>\n <td>\n <span class=\"badge channel-badge {{ live.Channel.toLowerCase() }}\">\n {{ live.Channel }}\n </span>\n </td>\n <td>\n <span class=\"badge direction-badge {{ live.Direction.toLowerCase() }}\">\n {{ live.Direction }}\n </span>\n </td>\n <td>\n <span class=\"status-indicator active\">\n <span class=\"dot\"></span>\n {{ live.Status }}\n </span>\n </td>\n <td>{{ FormatTime(live.StartedAt) }}</td>\n <td class=\"elapsed-col\">\n <span class=\"elapsed-badge\">{{ live.ElapsedLabel }}</span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <!-- Middle Row: Volume Breakdown Cards -->\n <div class=\"two-col-grid\">\n <!-- Volume by Channel & Direction -->\n <div class=\"dashboard-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-layer-group\"></i> Volume Distribution</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"distribution-group\">\n <h4>By Channel</h4>\n <div class=\"bars-container\">\n @for (item of Metrics.VolumeByChannel; track item.Channel) {\n <div class=\"bar-row\">\n <div class=\"bar-info\">\n <span class=\"bar-label\">{{ item.Channel }}</span>\n <span class=\"bar-stats\">{{ item.Count }} ({{ item.Percentage }}%)</span>\n </div>\n <div class=\"bar-track\">\n <div class=\"bar-fill channel-{{ item.Channel.toLowerCase() }}\" [style.width.%]=\"item.Percentage\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"distribution-group\">\n <h4>By Direction</h4>\n <div class=\"bars-container\">\n @for (item of Metrics.VolumeByDirection; track item.Direction) {\n <div class=\"bar-row\">\n <div class=\"bar-info\">\n <span class=\"bar-label\">{{ item.Direction }}</span>\n <span class=\"bar-stats\">{{ item.Count }} ({{ item.Percentage }}%)</span>\n </div>\n <div class=\"bar-track\">\n <div class=\"bar-fill direction-{{ item.Direction.toLowerCase() }}\" [style.width.%]=\"item.Percentage\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n <!-- Cost by Number -->\n <div class=\"dashboard-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-money-bill-wave\"></i> Cost by Phone Number</h3>\n </div>\n <div class=\"card-body\">\n @if (Metrics.CostByNumber.length === 0) {\n <div class=\"empty-feed\">\n <p>No phone number cost records in this window.</p>\n </div>\n } @else {\n <div class=\"cost-table-container\">\n <table class=\"ops-table compact\">\n <thead>\n <tr>\n <th>Phone Number / Target</th>\n <th>Calls</th>\n <th class=\"text-right\">Est. Cost</th>\n </tr>\n </thead>\n <tbody>\n @for (num of Metrics.CostByNumber; track num.PhoneNumber) {\n <tr>\n <td class=\"font-medium\">{{ num.PhoneNumber }}</td>\n <td>{{ num.Count }}</td>\n <td class=\"text-right font-semibold\">{{ FormatCost(num.Cost) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Bottom Row: Recent Interactions Audit Table -->\n <div class=\"dashboard-section\">\n <div class=\"section-header\">\n <div class=\"section-title\">\n <i class=\"fa-solid fa-list-check\"></i>\n <h2>Recent Interactions</h2>\n <span class=\"count-pill\">{{ FilteredRecentInteractions.length }}</span>\n </div>\n </div>\n\n @if (FilteredRecentInteractions.length === 0) {\n <div class=\"empty-feed\">\n <p>No interactions found matching criteria.</p>\n </div>\n } @else {\n <div class=\"table-container\">\n <table class=\"ops-table\">\n <thead>\n <tr>\n <th>Date / Time</th>\n <th>Remote Party</th>\n <th>Channel</th>\n <th>Direction</th>\n <th>Status</th>\n <th>Duration</th>\n <th>End Reason</th>\n <th class=\"text-right\">Est. Cost</th>\n </tr>\n </thead>\n <tbody>\n @for (row of FilteredRecentInteractions; track row.ID) {\n <tr>\n <td>\n <div class=\"datetime-cell\">\n <span class=\"date\">{{ FormatDate(row.StartedAt) }}</span>\n <span class=\"time\">{{ FormatTime(row.StartedAt) }}</span>\n </div>\n </td>\n <td class=\"address-col\">\n <span>{{ row.RemoteAddress || 'Unknown' }}</span>\n </td>\n <td>\n <span class=\"badge channel-badge {{ row.Channel.toLowerCase() }}\">\n {{ row.Channel }}\n </span>\n </td>\n <td>\n <span class=\"badge direction-badge {{ row.Direction.toLowerCase() }}\">\n {{ row.Direction }}\n </span>\n </td>\n <td>\n <span class=\"status-indicator {{ row.Status.toLowerCase() }}\">\n <span class=\"dot\"></span>\n {{ row.Status }}\n </span>\n </td>\n <td>{{ ComputeDuration(row.StartedAt, row.EndedAt) }}</td>\n <td class=\"end-reason-cell\">{{ row.EndReason || '-' }}</td>\n <td class=\"text-right\">{{ FormatCost(row.CostEstimate) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -46,6 +46,18 @@ export declare class TestingAnalyticsComponent implements OnInit, OnDestroy {
|
|
|
46
46
|
SelectedDays: number;
|
|
47
47
|
VersionRows: VersionRow[];
|
|
48
48
|
IsLoadingVersions: boolean;
|
|
49
|
+
RubricTrend: {
|
|
50
|
+
at: string;
|
|
51
|
+
score: number;
|
|
52
|
+
runId: string;
|
|
53
|
+
}[];
|
|
54
|
+
FailureRates: {
|
|
55
|
+
key: string;
|
|
56
|
+
rate: number;
|
|
57
|
+
count: number;
|
|
58
|
+
}[];
|
|
59
|
+
RubricAnalyticsError: string;
|
|
60
|
+
VersionMetricsError: string;
|
|
49
61
|
private topFailingNames;
|
|
50
62
|
private slowestNames;
|
|
51
63
|
private mostExpensiveNames;
|
|
@@ -59,6 +71,9 @@ export declare class TestingAnalyticsComponent implements OnInit, OnDestroy {
|
|
|
59
71
|
private maxTrendRuns;
|
|
60
72
|
constructor(instrumentationService: TestingInstrumentationService, cdr: ChangeDetectorRef);
|
|
61
73
|
ngOnInit(): void;
|
|
74
|
+
/** Submitted evaluation scores over time, and per-criterion failure rates. Suite-run scores are not rubric scores. */
|
|
75
|
+
LoadRubricAnalytics(): Promise<void>;
|
|
76
|
+
OpenRun(runId: string): void;
|
|
62
77
|
ngOnDestroy(): void;
|
|
63
78
|
OnTimeRangeSelect(days: number): void;
|
|
64
79
|
Refresh(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-analytics.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-analytics.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACtI,OAAO,EAAE,UAAU,EAA4B,MAAM,MAAM,CAAC;AAE5D,OAAO,EACL,6BAA6B,EAC7B,aAAa,EACb,aAAa,EAGd,MAAM,6CAA6C,CAAC;;
|
|
1
|
+
{"version":3,"file":"testing-analytics.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-analytics.component.ts"],"names":[],"mappings":"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"}
|