@memberjunction/ng-dashboards 6.2.0-edge.2 → 6.2.0-edge.4

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.
Files changed (229) hide show
  1. package/dist/AI/components/analytics/realtime/realtime-transcripts-data.d.ts +4 -3
  2. package/dist/AI/components/analytics/realtime/realtime-transcripts-data.d.ts.map +1 -1
  3. package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js +8 -5
  4. package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js.map +1 -1
  5. package/dist/AI/components/duplicates/compare-value.component.d.ts +67 -0
  6. package/dist/AI/components/duplicates/compare-value.component.d.ts.map +1 -0
  7. package/dist/AI/components/duplicates/compare-value.component.js +168 -0
  8. package/dist/AI/components/duplicates/compare-value.component.js.map +1 -0
  9. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +49 -3
  10. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +287 -169
  12. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  13. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +77 -0
  14. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -0
  15. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +116 -0
  16. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -0
  17. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
  18. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  19. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +16 -4
  20. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  21. package/dist/AI/components/tags/tags-resource.component.d.ts +2 -0
  22. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  23. package/dist/AI/components/tags/tags-resource.component.js +12 -6
  24. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  25. package/dist/AI/components/vectors/vector-index-auto.d.ts +29 -0
  26. package/dist/AI/components/vectors/vector-index-auto.d.ts.map +1 -0
  27. package/dist/AI/components/vectors/vector-index-auto.js +59 -0
  28. package/dist/AI/components/vectors/vector-index-auto.js.map +1 -0
  29. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +9 -0
  30. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/vectors/vector-management-resource.component.js +65 -20
  32. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  33. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  34. package/dist/Actions/components/actions-overview.component.js +7 -3
  35. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  36. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  37. package/dist/Actions/components/categories-list-view.component.js +3 -2
  38. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  39. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  40. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  41. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  42. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +0 -3
  43. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  44. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +5 -14
  45. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  46. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  47. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +1 -0
  48. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  49. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  50. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +1 -0
  51. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  52. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +12 -1
  53. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -1
  54. package/dist/ComponentStudio/components/form-override-dialog.component.js +128 -81
  55. package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -1
  56. package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -0
  57. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  58. package/dist/Credentials/components/credentials-list-resource.component.js +12 -10
  59. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  60. package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts +14 -43
  61. package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts.map +1 -1
  62. package/dist/DashboardBrowser/dashboard-browser-agent-context.js +6 -29
  63. package/dist/DashboardBrowser/dashboard-browser-agent-context.js.map +1 -1
  64. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +174 -321
  65. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  66. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +522 -1195
  67. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  68. package/dist/DashboardBrowser/dashboard-library-filter.d.ts +116 -0
  69. package/dist/DashboardBrowser/dashboard-library-filter.d.ts.map +1 -0
  70. package/dist/DashboardBrowser/dashboard-library-filter.js +277 -0
  71. package/dist/DashboardBrowser/dashboard-library-filter.js.map +1 -0
  72. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +1 -1
  73. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  74. package/dist/DashboardBrowser/dashboards-agent-tools.d.ts +26 -0
  75. package/dist/DashboardBrowser/dashboards-agent-tools.d.ts.map +1 -0
  76. package/dist/DashboardBrowser/dashboards-agent-tools.js +32 -0
  77. package/dist/DashboardBrowser/dashboards-agent-tools.js.map +1 -0
  78. package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts +58 -0
  79. package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts.map +1 -0
  80. package/dist/DashboardBrowser/dashboards-categories-resource.component.js +391 -0
  81. package/dist/DashboardBrowser/dashboards-categories-resource.component.js.map +1 -0
  82. package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts +37 -0
  83. package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts.map +1 -0
  84. package/dist/DashboardBrowser/dashboards-categories.helpers.js +68 -0
  85. package/dist/DashboardBrowser/dashboards-categories.helpers.js.map +1 -0
  86. package/dist/DashboardEditor/dashboard-editor.component.d.ts +295 -0
  87. package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -0
  88. package/dist/DashboardEditor/dashboard-editor.component.js +1022 -0
  89. package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -0
  90. package/dist/DashboardEditor/dashboard-editor.types.d.ts +23 -0
  91. package/dist/DashboardEditor/dashboard-editor.types.d.ts.map +1 -0
  92. package/dist/DashboardEditor/dashboard-editor.types.js +3 -0
  93. package/dist/DashboardEditor/dashboard-editor.types.js.map +1 -0
  94. package/dist/DashboardEditor/dashboard-viewer-factory.d.ts +11 -0
  95. package/dist/DashboardEditor/dashboard-viewer-factory.d.ts.map +1 -0
  96. package/dist/DashboardEditor/dashboard-viewer-factory.js +17 -0
  97. package/dist/DashboardEditor/dashboard-viewer-factory.js.map +1 -0
  98. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +30 -0
  99. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  100. package/dist/DataExplorer/data-explorer-dashboard.component.js +349 -232
  101. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  102. package/dist/DataExplorer/services/explorer-state.service.d.ts +1 -1
  103. package/dist/DataExplorer/services/explorer-state.service.js +2 -5
  104. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  105. package/dist/FormBuilder/form-builder-resource.component.d.ts +0 -14
  106. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  107. package/dist/FormBuilder/form-builder-resource.component.js +7 -29
  108. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  109. package/dist/Home/home-agent-context.d.ts +29 -10
  110. package/dist/Home/home-agent-context.d.ts.map +1 -1
  111. package/dist/Home/home-agent-context.js +50 -24
  112. package/dist/Home/home-agent-context.js.map +1 -1
  113. package/dist/Home/home-dashboard-switcher.component.d.ts +95 -0
  114. package/dist/Home/home-dashboard-switcher.component.d.ts.map +1 -0
  115. package/dist/Home/home-dashboard-switcher.component.js +442 -0
  116. package/dist/Home/home-dashboard-switcher.component.js.map +1 -0
  117. package/dist/Home/home-dashboard.component.d.ts +330 -17
  118. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  119. package/dist/Home/home-dashboard.component.js +1702 -1014
  120. package/dist/Home/home-dashboard.component.js.map +1 -1
  121. package/dist/Home/home-menus.d.ts +38 -0
  122. package/dist/Home/home-menus.d.ts.map +1 -0
  123. package/dist/Home/home-menus.js +53 -0
  124. package/dist/Home/home-menus.js.map +1 -0
  125. package/dist/Home/home-pinned-dashboards.d.ts +33 -0
  126. package/dist/Home/home-pinned-dashboards.d.ts.map +1 -0
  127. package/dist/Home/home-pinned-dashboards.js +76 -0
  128. package/dist/Home/home-pinned-dashboards.js.map +1 -0
  129. package/dist/PredictiveStudio/components/ps-production.component.d.ts +5 -1
  130. package/dist/PredictiveStudio/components/ps-production.component.d.ts.map +1 -1
  131. package/dist/PredictiveStudio/components/ps-production.component.js +64 -41
  132. package/dist/PredictiveStudio/components/ps-production.component.js.map +1 -1
  133. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  134. package/dist/QueryBrowser/query-browser-resource.component.js +3 -2
  135. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  136. package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js +2 -2
  137. package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js.map +1 -1
  138. package/dist/TelephonyOperations/telephony-operations-agent-context.d.ts +107 -0
  139. package/dist/TelephonyOperations/telephony-operations-agent-context.d.ts.map +1 -0
  140. package/dist/TelephonyOperations/telephony-operations-agent-context.js +216 -0
  141. package/dist/TelephonyOperations/telephony-operations-agent-context.js.map +1 -0
  142. package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts +58 -0
  143. package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts.map +1 -0
  144. package/dist/TelephonyOperations/telephony-operations-dashboard.component.js +812 -0
  145. package/dist/TelephonyOperations/telephony-operations-dashboard.component.js.map +1 -0
  146. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  147. package/dist/Testing/components/testing-explorer.component.js +7 -7
  148. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  149. package/dist/WorkQueue/components/work-queue-bindings.component.d.ts +37 -0
  150. package/dist/WorkQueue/components/work-queue-bindings.component.d.ts.map +1 -0
  151. package/dist/WorkQueue/components/work-queue-bindings.component.js +210 -0
  152. package/dist/WorkQueue/components/work-queue-bindings.component.js.map +1 -0
  153. package/dist/WorkQueue/components/work-queue-dead-letters.component.d.ts +70 -0
  154. package/dist/WorkQueue/components/work-queue-dead-letters.component.d.ts.map +1 -0
  155. package/dist/WorkQueue/components/work-queue-dead-letters.component.js +496 -0
  156. package/dist/WorkQueue/components/work-queue-dead-letters.component.js.map +1 -0
  157. package/dist/WorkQueue/components/work-queue-discard-dialog.component.d.ts +22 -0
  158. package/dist/WorkQueue/components/work-queue-discard-dialog.component.d.ts.map +1 -0
  159. package/dist/WorkQueue/components/work-queue-discard-dialog.component.js +99 -0
  160. package/dist/WorkQueue/components/work-queue-discard-dialog.component.js.map +1 -0
  161. package/dist/WorkQueue/components/work-queue-overview.component.d.ts +29 -0
  162. package/dist/WorkQueue/components/work-queue-overview.component.d.ts.map +1 -0
  163. package/dist/WorkQueue/components/work-queue-overview.component.js +278 -0
  164. package/dist/WorkQueue/components/work-queue-overview.component.js.map +1 -0
  165. package/dist/WorkQueue/components/work-queue-partitions.component.d.ts +59 -0
  166. package/dist/WorkQueue/components/work-queue-partitions.component.d.ts.map +1 -0
  167. package/dist/WorkQueue/components/work-queue-partitions.component.js +359 -0
  168. package/dist/WorkQueue/components/work-queue-partitions.component.js.map +1 -0
  169. package/dist/WorkQueue/services/work-queue-operator.service.d.ts +22 -0
  170. package/dist/WorkQueue/services/work-queue-operator.service.d.ts.map +1 -0
  171. package/dist/WorkQueue/services/work-queue-operator.service.js +44 -0
  172. package/dist/WorkQueue/services/work-queue-operator.service.js.map +1 -0
  173. package/dist/WorkQueue/work-queue-agent-context.d.ts +67 -0
  174. package/dist/WorkQueue/work-queue-agent-context.d.ts.map +1 -0
  175. package/dist/WorkQueue/work-queue-agent-context.js +119 -0
  176. package/dist/WorkQueue/work-queue-agent-context.js.map +1 -0
  177. package/dist/WorkQueue/work-queue-dashboard.component.d.ts +94 -0
  178. package/dist/WorkQueue/work-queue-dashboard.component.d.ts.map +1 -0
  179. package/dist/WorkQueue/work-queue-dashboard.component.js +545 -0
  180. package/dist/WorkQueue/work-queue-dashboard.component.js.map +1 -0
  181. package/dist/WorkQueue/work-queue-types.d.ts +40 -0
  182. package/dist/WorkQueue/work-queue-types.d.ts.map +1 -0
  183. package/dist/WorkQueue/work-queue-types.js +2 -0
  184. package/dist/WorkQueue/work-queue-types.js.map +1 -0
  185. package/dist/ai-dashboards.module.d.ts +21 -20
  186. package/dist/ai-dashboards.module.d.ts.map +1 -1
  187. package/dist/ai-dashboards.module.js +4 -1
  188. package/dist/ai-dashboards.module.js.map +1 -1
  189. package/dist/core-dashboards.module.d.ts +69 -61
  190. package/dist/core-dashboards.module.d.ts.map +1 -1
  191. package/dist/core-dashboards.module.js +29 -2
  192. package/dist/core-dashboards.module.js.map +1 -1
  193. package/dist/data-explorer-dashboards.module.d.ts +1 -1
  194. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  195. package/dist/data-explorer-dashboards.module.js +3 -1
  196. package/dist/data-explorer-dashboards.module.js.map +1 -1
  197. package/dist/module.d.ts +14 -13
  198. package/dist/module.d.ts.map +1 -1
  199. package/dist/module.js +7 -0
  200. package/dist/module.js.map +1 -1
  201. package/dist/public-api.d.ts +6 -0
  202. package/dist/public-api.d.ts.map +1 -1
  203. package/dist/public-api.js +9 -0
  204. package/dist/public-api.js.map +1 -1
  205. package/dist/shared/dashboard-library-changes.d.ts +23 -0
  206. package/dist/shared/dashboard-library-changes.d.ts.map +1 -0
  207. package/dist/shared/dashboard-library-changes.js +26 -0
  208. package/dist/shared/dashboard-library-changes.js.map +1 -0
  209. package/dist/shared/dashboard-owner-names.d.ts +17 -0
  210. package/dist/shared/dashboard-owner-names.d.ts.map +1 -0
  211. package/dist/shared/dashboard-owner-names.js +65 -0
  212. package/dist/shared/dashboard-owner-names.js.map +1 -0
  213. package/dist/shared/dashboard-recents.d.ts +34 -0
  214. package/dist/shared/dashboard-recents.d.ts.map +1 -0
  215. package/dist/shared/dashboard-recents.js +87 -0
  216. package/dist/shared/dashboard-recents.js.map +1 -0
  217. package/dist/shared/dashboards-app-install.d.ts +59 -0
  218. package/dist/shared/dashboards-app-install.d.ts.map +1 -0
  219. package/dist/shared/dashboards-app-install.js +97 -0
  220. package/dist/shared/dashboards-app-install.js.map +1 -0
  221. package/dist/shared/dashboards-app.helpers.d.ts +42 -0
  222. package/dist/shared/dashboards-app.helpers.d.ts.map +1 -0
  223. package/dist/shared/dashboards-app.helpers.js +143 -0
  224. package/dist/shared/dashboards-app.helpers.js.map +1 -0
  225. package/dist/work-queue-dashboards.module.d.ts +23 -0
  226. package/dist/work-queue-dashboards.module.d.ts.map +1 -0
  227. package/dist/work-queue-dashboards.module.js +92 -0
  228. package/dist/work-queue-dashboards.module.js.map +1 -0
  229. package/package.json +73 -66
@@ -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 destroyed = false;\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 // The tab may have been closed while LoadData was in flight; ngOnDestroy already ran and\n // found no timer, so arming one now would leak an interval on a destroyed component.\n if (this.destroyed) {\n return;\n }\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 this.destroyed = true;\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"testing-explorer.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-explorer.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing-explorer.component.d.ts","sourceRoot":"","sources":["../../../src/Testing/components/testing-explorer.component.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { RunView, CompositeKey } from '@memberjunction/core';
5
5
  import { UserInfoEngine } from '@memberjunction/core-entities';
6
6
  import { SharedService } from '@memberjunction/ng-shared';
7
7
  import { TestEngineBase } from '@memberjunction/testing-engine-base';
8
- import { UUIDsEqual } from '@memberjunction/global';
8
+ import { CountByUUID, IndexByUUID, UUIDsEqual } from '@memberjunction/global';
9
9
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@memberjunction/ng-testing";
@@ -1437,12 +1437,13 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1437
1437
  buildSuiteTree() {
1438
1438
  const filteredSuites = this.AllSuites;
1439
1439
  const nodeMap = new Map();
1440
+ const testCountBySuite = CountByUUID(this.allSuiteTests, st => st.SuiteID);
1440
1441
  for (const suite of filteredSuites) {
1441
1442
  nodeMap.set(suite.ID, {
1442
1443
  ID: suite.ID,
1443
1444
  Name: suite.Name,
1444
1445
  ParentID: suite.ParentID,
1445
- TestCount: this.allSuiteTests.filter(st => UUIDsEqual(st.SuiteID, suite.ID)).length,
1446
+ TestCount: testCountBySuite.Get(suite.ID) ?? 0,
1446
1447
  Children: [],
1447
1448
  Expanded: false
1448
1449
  });
@@ -1532,11 +1533,10 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1532
1533
  const testIdsInSuites = new Set(this.allSuiteTests.map(st => st.TestID));
1533
1534
  return tests.filter(t => !testIdsInSuites.has(t.ID));
1534
1535
  }
1535
- case 'testType':
1536
- return tests.filter(t => {
1537
- const testEntity = this.allTests.find(te => UUIDsEqual(te.ID, t.ID));
1538
- return UUIDsEqual(testEntity?.TypeID, sel.ID);
1539
- });
1536
+ case 'testType': {
1537
+ const testsByID = IndexByUUID(this.allTests);
1538
+ return tests.filter(t => UUIDsEqual(testsByID.Get(t.ID)?.TypeID, sel.ID));
1539
+ }
1540
1540
  default:
1541
1541
  return tests;
1542
1542
  }