@memberjunction/ng-dashboards 5.35.0 → 5.37.0

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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -25,23 +25,23 @@ function TestingDashboardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1)
25
25
  const ctx_r0 = i0.ɵɵnextContext();
26
26
  i0.ɵɵproperty("Count", ctx_r0.ActiveRuns.length);
27
27
  } }
28
- function TestingDashboardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelementStart(0, "div", 6);
30
- i0.ɵɵelement(1, "mj-loading", 8);
28
+ function TestingDashboardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵelementStart(0, "div", 7);
30
+ i0.ɵɵelement(1, "mj-loading", 9);
31
31
  i0.ɵɵelementEnd();
32
32
  } }
33
- function TestingDashboardComponent_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
33
+ function TestingDashboardComponent_Conditional_10_Conditional_0_Template(rf, ctx) { if (rf & 1) {
34
34
  const _r2 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "div", 9);
36
- i0.ɵɵelement(1, "i", 12);
37
- i0.ɵɵelementStart(2, "span", 13);
35
+ i0.ɵɵelementStart(0, "div", 10);
36
+ i0.ɵɵelement(1, "i", 13);
37
+ i0.ɵɵelementStart(2, "span", 14);
38
38
  i0.ɵɵtext(3);
39
39
  i0.ɵɵelementEnd();
40
- i0.ɵɵelementStart(4, "span", 14);
40
+ i0.ɵɵelementStart(4, "span", 15);
41
41
  i0.ɵɵtext(5);
42
42
  i0.ɵɵelementEnd();
43
- i0.ɵɵelementStart(6, "button", 15);
44
- i0.ɵɵlistener("click", function TestingDashboardComponent_Conditional_9_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnViewActiveRun(ctx_r0.ActiveRuns[0])); });
43
+ i0.ɵɵelementStart(6, "button", 16);
44
+ i0.ɵɵlistener("click", function TestingDashboardComponent_Conditional_10_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnViewActiveRun(ctx_r0.ActiveRuns[0])); });
45
45
  i0.ɵɵtext(7, "View");
46
46
  i0.ɵɵelementEnd()();
47
47
  } if (rf & 2) {
@@ -51,49 +51,49 @@ function TestingDashboardComponent_Conditional_9_Conditional_0_Template(rf, ctx)
51
51
  i0.ɵɵadvance(2);
52
52
  i0.ɵɵtextInterpolate2("", ctx_r0.ActiveRuns[0].TestName, " \u2014 ", ctx_r0.ActiveRuns[0].Progress, "%");
53
53
  } }
54
- function TestingDashboardComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
54
+ function TestingDashboardComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
55
55
  const _r3 = i0.ɵɵgetCurrentView();
56
- i0.ɵɵelementStart(0, "app-testing-dashboard-tab", 16);
57
- i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_9_Conditional_2_Template_app_testing_dashboard_tab_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onDashboardStateChange($event)); });
56
+ i0.ɵɵelementStart(0, "app-testing-dashboard-tab", 17);
57
+ i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_10_Conditional_2_Template_app_testing_dashboard_tab_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onDashboardStateChange($event)); });
58
58
  i0.ɵɵelementEnd();
59
59
  } if (rf & 2) {
60
60
  const ctx_r0 = i0.ɵɵnextContext(2);
61
61
  i0.ɵɵproperty("initialState", ctx_r0.dashboardState)("HideToolbar", true);
62
62
  } }
63
- function TestingDashboardComponent_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
63
+ function TestingDashboardComponent_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
64
64
  const _r4 = i0.ɵɵgetCurrentView();
65
- i0.ɵɵelementStart(0, "app-testing-runs", 16);
66
- i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_9_Conditional_3_Template_app_testing_runs_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onRunsStateChange($event)); });
65
+ i0.ɵɵelementStart(0, "app-testing-runs", 17);
66
+ i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_10_Conditional_3_Template_app_testing_runs_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onRunsStateChange($event)); });
67
67
  i0.ɵɵelementEnd();
68
68
  } if (rf & 2) {
69
69
  const ctx_r0 = i0.ɵɵnextContext(2);
70
70
  i0.ɵɵproperty("initialState", ctx_r0.runsState)("HideToolbar", true);
71
71
  } }
72
- function TestingDashboardComponent_Conditional_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
72
+ function TestingDashboardComponent_Conditional_10_Conditional_4_Template(rf, ctx) { if (rf & 1) {
73
73
  const _r5 = i0.ɵɵgetCurrentView();
74
- i0.ɵɵelementStart(0, "app-testing-analytics", 16);
75
- i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_9_Conditional_4_Template_app_testing_analytics_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAnalyticsStateChange($event)); });
74
+ i0.ɵɵelementStart(0, "app-testing-analytics", 17);
75
+ i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_10_Conditional_4_Template_app_testing_analytics_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAnalyticsStateChange($event)); });
76
76
  i0.ɵɵelementEnd();
77
77
  } if (rf & 2) {
78
78
  const ctx_r0 = i0.ɵɵnextContext(2);
79
79
  i0.ɵɵproperty("initialState", ctx_r0.analyticsState)("HideToolbar", true);
80
80
  } }
81
- function TestingDashboardComponent_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
81
+ function TestingDashboardComponent_Conditional_10_Conditional_5_Template(rf, ctx) { if (rf & 1) {
82
82
  const _r6 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "app-testing-review", 16);
84
- i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_9_Conditional_5_Template_app_testing_review_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onReviewStateChange($event)); });
83
+ i0.ɵɵelementStart(0, "app-testing-review", 17);
84
+ i0.ɵɵlistener("stateChange", function TestingDashboardComponent_Conditional_10_Conditional_5_Template_app_testing_review_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onReviewStateChange($event)); });
85
85
  i0.ɵɵelementEnd();
86
86
  } if (rf & 2) {
87
87
  const ctx_r0 = i0.ɵɵnextContext(2);
88
88
  i0.ɵɵproperty("initialState", ctx_r0.reviewState)("HideToolbar", true);
89
89
  } }
90
- function TestingDashboardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵconditionalCreate(0, TestingDashboardComponent_Conditional_9_Conditional_0_Template, 8, 4, "div", 9);
92
- i0.ɵɵelementStart(1, "div", 10);
93
- i0.ɵɵconditionalCreate(2, TestingDashboardComponent_Conditional_9_Conditional_2_Template, 1, 2, "app-testing-dashboard-tab", 11);
94
- i0.ɵɵconditionalCreate(3, TestingDashboardComponent_Conditional_9_Conditional_3_Template, 1, 2, "app-testing-runs", 11);
95
- i0.ɵɵconditionalCreate(4, TestingDashboardComponent_Conditional_9_Conditional_4_Template, 1, 2, "app-testing-analytics", 11);
96
- i0.ɵɵconditionalCreate(5, TestingDashboardComponent_Conditional_9_Conditional_5_Template, 1, 2, "app-testing-review", 11);
90
+ function TestingDashboardComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵconditionalCreate(0, TestingDashboardComponent_Conditional_10_Conditional_0_Template, 8, 4, "div", 10);
92
+ i0.ɵɵelementStart(1, "div", 11);
93
+ i0.ɵɵconditionalCreate(2, TestingDashboardComponent_Conditional_10_Conditional_2_Template, 1, 2, "app-testing-dashboard-tab", 12);
94
+ i0.ɵɵconditionalCreate(3, TestingDashboardComponent_Conditional_10_Conditional_3_Template, 1, 2, "app-testing-runs", 12);
95
+ i0.ɵɵconditionalCreate(4, TestingDashboardComponent_Conditional_10_Conditional_4_Template, 1, 2, "app-testing-analytics", 12);
96
+ i0.ɵɵconditionalCreate(5, TestingDashboardComponent_Conditional_10_Conditional_5_Template, 1, 2, "app-testing-review", 12);
97
97
  i0.ɵɵelementEnd();
98
98
  } if (rf & 2) {
99
99
  const ctx_r0 = i0.ɵɵnextContext();
@@ -107,12 +107,12 @@ function TestingDashboardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1)
107
107
  i0.ɵɵadvance();
108
108
  i0.ɵɵconditional(ctx_r0.activeTab === "review" && ctx_r0.hasVisited("review") ? 5 : -1);
109
109
  } }
110
- function TestingDashboardComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
110
+ function TestingDashboardComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
111
111
  const _r7 = i0.ɵɵgetCurrentView();
112
- i0.ɵɵelementStart(0, "mj-slide-panel", 17);
113
- i0.ɵɵlistener("Closed", function TestingDashboardComponent_Conditional_10_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClosed()); });
114
- i0.ɵɵelementStart(1, "app-test-run-dialog", 18);
115
- i0.ɵɵlistener("PanelClose", function TestingDashboardComponent_Conditional_10_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClosed()); });
112
+ i0.ɵɵelementStart(0, "mj-slide-panel", 18);
113
+ i0.ɵɵlistener("Closed", function TestingDashboardComponent_Conditional_11_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClosed()); });
114
+ i0.ɵɵelementStart(1, "app-test-run-dialog", 19);
115
+ i0.ɵɵlistener("PanelClose", function TestingDashboardComponent_Conditional_11_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClosed()); });
116
116
  i0.ɵɵelementEnd()();
117
117
  } if (rf & 2) {
118
118
  const ctx_r0 = i0.ɵɵnextContext();
@@ -299,34 +299,35 @@ let TestingDashboardComponent = class TestingDashboardComponent extends BaseDash
299
299
  });
300
300
  }
301
301
  static ɵfac = function TestingDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestingDashboardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.TestingDialogService), i0.ɵɵdirectiveInject(i1.TestingExecutionService), i0.ɵɵdirectiveInject(i2.TestingInstrumentationService)); };
302
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingDashboardComponent, selectors: [["mj-testing-dashboard"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 7, consts: [["Title", "Testing", "Icon", "fa-solid fa-vial-circle-check", "Subtitle", "Evaluate AI agents, workflows, and system components"], ["meta", ""], ["Icon", "fa-solid fa-spinner fa-spin", "Label", "running", "Variant", "running", 3, "Count"], ["actions", ""], [3, "TabChange", "Tabs", "ActiveKey"], [3, "Flex"], [1, "loading-container"], ["Mode", "slide", 3, "Title", "Resizable"], ["text", "Loading Testing Dashboard...", "size", "large"], [1, "active-runs-banner"], [1, "dashboard-content"], [3, "initialState", "HideToolbar"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "active-runs-count"], [1, "active-runs-detail"], [1, "active-runs-view-btn", 3, "click"], [3, "stateChange", "initialState", "HideToolbar"], ["Mode", "slide", 3, "Closed", "Title", "Resizable"], [3, "PanelClose", "PanelMode", "selectedTestId", "selectedSuiteId", "runMode"]], template: function TestingDashboardComponent_Template(rf, ctx) { if (rf & 1) {
302
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingDashboardComponent, selectors: [["mj-testing-dashboard"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 7, consts: [["Title", "Testing", "Icon", "fa-solid fa-vial-circle-check", "Subtitle", "Evaluate AI agents, workflows, and system components"], ["meta", ""], ["Icon", "fa-solid fa-spinner fa-spin", "Label", "running", "Variant", "running", 3, "Count"], ["actions", ""], ["toolbar", ""], [3, "TabChange", "Tabs", "ActiveKey"], [3, "Flex"], [1, "loading-container"], ["Mode", "slide", 3, "Title", "Resizable"], ["text", "Loading Testing Dashboard...", "size", "large"], [1, "active-runs-banner"], [1, "dashboard-content"], [3, "initialState", "HideToolbar"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "active-runs-count"], [1, "active-runs-detail"], [1, "active-runs-view-btn", 3, "click"], [3, "stateChange", "initialState", "HideToolbar"], ["Mode", "slide", 3, "Closed", "Title", "Resizable"], [3, "PanelClose", "PanelMode", "selectedTestId", "selectedSuiteId", "runMode"]], template: function TestingDashboardComponent_Template(rf, ctx) { if (rf & 1) {
303
303
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
304
304
  i0.ɵɵconditionalCreate(3, TestingDashboardComponent_Conditional_3_Template, 1, 1, "mj-stat-badge", 2);
305
305
  i0.ɵɵelementEnd();
306
- i0.ɵɵelementStart(4, "div", 3)(5, "mj-tab-nav", 4);
307
- i0.ɵɵlistener("TabChange", function TestingDashboardComponent_Template_mj_tab_nav_TabChange_5_listener($event) { return ctx.onTabChange($event); });
306
+ i0.ɵɵelementStart(4, "div", 3);
307
+ i0.ɵɵelement(5, "app-evaluation-mode-toggle");
308
308
  i0.ɵɵelementEnd();
309
- i0.ɵɵelement(6, "app-evaluation-mode-toggle");
310
- i0.ɵɵelementEnd()();
311
- i0.ɵɵelementStart(7, "mj-page-body", 5);
312
- i0.ɵɵconditionalCreate(8, TestingDashboardComponent_Conditional_8_Template, 2, 0, "div", 6);
313
- i0.ɵɵconditionalCreate(9, TestingDashboardComponent_Conditional_9_Template, 6, 5);
309
+ i0.ɵɵelementStart(6, "div", 4)(7, "mj-tab-nav", 5);
310
+ i0.ɵɵlistener("TabChange", function TestingDashboardComponent_Template_mj_tab_nav_TabChange_7_listener($event) { return ctx.onTabChange($event); });
311
+ i0.ɵɵelementEnd()()();
312
+ i0.ɵɵelementStart(8, "mj-page-body", 6);
313
+ i0.ɵɵconditionalCreate(9, TestingDashboardComponent_Conditional_9_Template, 2, 0, "div", 7);
314
+ i0.ɵɵconditionalCreate(10, TestingDashboardComponent_Conditional_10_Template, 6, 5);
314
315
  i0.ɵɵelementEnd();
315
- i0.ɵɵconditionalCreate(10, TestingDashboardComponent_Conditional_10_Template, 2, 6, "mj-slide-panel", 7);
316
+ i0.ɵɵconditionalCreate(11, TestingDashboardComponent_Conditional_11_Template, 2, 6, "mj-slide-panel", 8);
316
317
  i0.ɵɵelementEnd();
317
318
  } if (rf & 2) {
318
319
  i0.ɵɵadvance(3);
319
320
  i0.ɵɵconditional(ctx.ActiveRuns.length > 0 ? 3 : -1);
320
- i0.ɵɵadvance(2);
321
+ i0.ɵɵadvance(4);
321
322
  i0.ɵɵproperty("Tabs", ctx.Tabs)("ActiveKey", ctx.activeTab);
322
- i0.ɵɵadvance(2);
323
+ i0.ɵɵadvance();
323
324
  i0.ɵɵproperty("Flex", true);
324
325
  i0.ɵɵadvance();
325
- i0.ɵɵconditional(ctx.isLoading ? 8 : -1);
326
+ i0.ɵɵconditional(ctx.isLoading ? 9 : -1);
326
327
  i0.ɵɵadvance();
327
- i0.ɵɵconditional(!ctx.isLoading ? 9 : -1);
328
+ i0.ɵɵconditional(!ctx.isLoading ? 10 : -1);
328
329
  i0.ɵɵadvance();
329
- i0.ɵɵconditional(ctx.testingDialogService.IsPanelOpen ? 10 : -1);
330
+ i0.ɵɵconditional(ctx.testingDialogService.IsPanelOpen ? 11 : -1);
330
331
  } }, dependencies: [i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJTabNavComponent, i3.MJStatBadgeComponent, i1.TestRunDialogComponent, i1.EvaluationModeToggleComponent, i4.MjSlidePanelComponent, i5.LoadingComponent, i6.TestingDashboardTabComponent, i7.TestingRunsComponent, i8.TestingAnalyticsComponent, i9.TestingReviewComponent], styles: ["\n\n\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n background: var(--mj-bg-surface);\n backdrop-filter: blur(8px);\n}\n\n.loading-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.spinner-ring[_ngcontent-%COMP%] {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 64px;\n height: 64px;\n margin: 8px;\n border: 8px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spinner-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: var(--mj-brand-primary) transparent transparent transparent;\n}\n\n.spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n@keyframes _ngcontent-%COMP%_spinner-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading-text[_ngcontent-%COMP%] {\n margin-top: 20px;\n font-size: 16px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.dashboard-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n.active-runs-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 20px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.active-runs-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.active-runs-count[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.active-runs-detail[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.active-runs-view-btn[_ngcontent-%COMP%] {\n padding: 4px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.2s;\n}\n\n.active-runs-view-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n\n\n@media (max-width: 768px) {\n .testing-dashboard-nav[_ngcontent-%COMP%] {\n padding: 0 8px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .active-runs-banner[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n padding: 8px 12px;\n gap: 6px;\n }\n\n .active-runs-detail[_ngcontent-%COMP%] {\n width: 100%;\n order: 3;\n }\n}\n\n@media (max-width: 480px) {\n .nav-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n padding: 12px 14px;\n }\n}"], changeDetection: 0 });
331
332
  };
332
333
  TestingDashboardComponent = __decorate([
@@ -335,7 +336,7 @@ TestingDashboardComponent = __decorate([
335
336
  export { TestingDashboardComponent };
336
337
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingDashboardComponent, [{
337
338
  type: Component,
338
- args: [{ standalone: false, selector: 'mj-testing-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Testing\"\n Icon=\"fa-solid fa-vial-circle-check\"\n Subtitle=\"Evaluate AI agents, workflows, and system components\">\n <div meta>\n @if (ActiveRuns.length > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-spinner fa-spin\"\n [Count]=\"ActiveRuns.length\"\n Label=\"running\"\n Variant=\"running\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"activeTab\"\n (TabChange)=\"onTabChange($any($event))\">\n </mj-tab-nav>\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading Testing Dashboard...\" size=\"large\"></mj-loading>\n </div>\n }\n\n @if (!isLoading) {\n <!-- Active Runs Banner (in-body so it doesn't crowd the page-header) -->\n @if (ActiveRuns.length > 0) {\n <div class=\"active-runs-banner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span class=\"active-runs-count\">{{ ActiveRuns.length }} test{{ ActiveRuns.length === 1 ? '' : 's' }} running</span>\n <span class=\"active-runs-detail\">{{ ActiveRuns[0].TestName }} &mdash; {{ ActiveRuns[0].Progress }}%</span>\n <button class=\"active-runs-view-btn\" (click)=\"OnViewActiveRun(ActiveRuns[0])\">View</button>\n </div>\n }\n\n <div class=\"dashboard-content\">\n @if (activeTab === 'dashboard' && hasVisited('dashboard')) {\n <app-testing-dashboard-tab\n [initialState]=\"dashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onDashboardStateChange($event)\"\n ></app-testing-dashboard-tab>\n }\n\n @if (activeTab === 'runs' && hasVisited('runs')) {\n <app-testing-runs\n [initialState]=\"runsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onRunsStateChange($event)\"\n ></app-testing-runs>\n }\n\n @if (activeTab === 'analytics' && hasVisited('analytics')) {\n <app-testing-analytics\n [initialState]=\"analyticsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onAnalyticsStateChange($event)\"\n ></app-testing-analytics>\n }\n\n @if (activeTab === 'review' && hasVisited('review')) {\n <app-testing-review\n [initialState]=\"reviewState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onReviewStateChange($event)\"\n ></app-testing-review>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Slide Panel for Test Execution -->\n @if (testingDialogService.IsPanelOpen) {\n <mj-slide-panel\n Mode=\"slide\"\n [Title]=\"testingDialogService.PanelOptions?.testId ? 'Test Execution' : 'Run Test'\"\n [Resizable]=\"true\"\n (Closed)=\"OnPanelClosed()\">\n <app-test-run-dialog\n [PanelMode]=\"true\"\n [selectedTestId]=\"testingDialogService.PanelOptions?.testId ?? null\"\n [selectedSuiteId]=\"testingDialogService.PanelOptions?.suiteId ?? null\"\n [runMode]=\"testingDialogService.PanelOptions?.mode ?? 'test'\"\n (PanelClose)=\"OnPanelClosed()\">\n </app-test-run-dialog>\n </mj-slide-panel>\n }\n</mj-page-layout>\n", styles: ["/* ============================================\n Testing Dashboard - Premium Design System\n Based on AI Dashboard patterns\n ============================================ */\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n background: var(--mj-bg-surface);\n backdrop-filter: blur(8px);\n}\n\n.loading-content {\n text-align: center;\n}\n\n.loading-spinner {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.spinner-ring {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 64px;\n height: 64px;\n margin: 8px;\n border: 8px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: spinner-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: var(--mj-brand-primary) transparent transparent transparent;\n}\n\n.spinner-ring:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner-ring:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner-ring:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n@keyframes spinner-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading-text {\n margin-top: 20px;\n font-size: 16px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.dashboard-content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* Active Runs Banner */\n.active-runs-banner {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 20px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.active-runs-banner i {\n color: var(--mj-brand-primary);\n}\n\n.active-runs-count {\n font-weight: 600;\n}\n\n.active-runs-detail {\n color: var(--mj-text-secondary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.active-runs-view-btn {\n padding: 4px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.2s;\n}\n\n.active-runs-view-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .testing-dashboard-nav {\n padding: 0 8px;\n overflow-x: auto;\n }\n\n .nav-item {\n padding: 12px 16px;\n gap: 8px;\n }\n\n .nav-item span {\n font-size: 11px;\n }\n\n .nav-item i {\n font-size: 18px;\n }\n\n .active-runs-banner {\n flex-wrap: wrap;\n padding: 8px 12px;\n gap: 6px;\n }\n\n .active-runs-detail {\n width: 100%;\n order: 3;\n }\n}\n\n@media (max-width: 480px) {\n .nav-item span {\n display: none;\n }\n\n .nav-item {\n padding: 12px 14px;\n }\n}\n"] }]
339
+ args: [{ standalone: false, selector: 'mj-testing-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Testing\"\n Icon=\"fa-solid fa-vial-circle-check\"\n Subtitle=\"Evaluate AI agents, workflows, and system components\">\n <div meta>\n @if (ActiveRuns.length > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-spinner fa-spin\"\n [Count]=\"ActiveRuns.length\"\n Label=\"running\"\n Variant=\"running\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n </div>\n <div toolbar>\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"activeTab\"\n (TabChange)=\"onTabChange($any($event))\">\n </mj-tab-nav>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading Testing Dashboard...\" size=\"large\"></mj-loading>\n </div>\n }\n\n @if (!isLoading) {\n <!-- Active Runs Banner (in-body so it doesn't crowd the page-header) -->\n @if (ActiveRuns.length > 0) {\n <div class=\"active-runs-banner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span class=\"active-runs-count\">{{ ActiveRuns.length }} test{{ ActiveRuns.length === 1 ? '' : 's' }} running</span>\n <span class=\"active-runs-detail\">{{ ActiveRuns[0].TestName }} &mdash; {{ ActiveRuns[0].Progress }}%</span>\n <button class=\"active-runs-view-btn\" (click)=\"OnViewActiveRun(ActiveRuns[0])\">View</button>\n </div>\n }\n\n <div class=\"dashboard-content\">\n @if (activeTab === 'dashboard' && hasVisited('dashboard')) {\n <app-testing-dashboard-tab\n [initialState]=\"dashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onDashboardStateChange($event)\"\n ></app-testing-dashboard-tab>\n }\n\n @if (activeTab === 'runs' && hasVisited('runs')) {\n <app-testing-runs\n [initialState]=\"runsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onRunsStateChange($event)\"\n ></app-testing-runs>\n }\n\n @if (activeTab === 'analytics' && hasVisited('analytics')) {\n <app-testing-analytics\n [initialState]=\"analyticsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onAnalyticsStateChange($event)\"\n ></app-testing-analytics>\n }\n\n @if (activeTab === 'review' && hasVisited('review')) {\n <app-testing-review\n [initialState]=\"reviewState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onReviewStateChange($event)\"\n ></app-testing-review>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Slide Panel for Test Execution -->\n @if (testingDialogService.IsPanelOpen) {\n <mj-slide-panel\n Mode=\"slide\"\n [Title]=\"testingDialogService.PanelOptions?.testId ? 'Test Execution' : 'Run Test'\"\n [Resizable]=\"true\"\n (Closed)=\"OnPanelClosed()\">\n <app-test-run-dialog\n [PanelMode]=\"true\"\n [selectedTestId]=\"testingDialogService.PanelOptions?.testId ?? null\"\n [selectedSuiteId]=\"testingDialogService.PanelOptions?.suiteId ?? null\"\n [runMode]=\"testingDialogService.PanelOptions?.mode ?? 'test'\"\n (PanelClose)=\"OnPanelClosed()\">\n </app-test-run-dialog>\n </mj-slide-panel>\n }\n</mj-page-layout>\n", styles: ["/* ============================================\n Testing Dashboard - Premium Design System\n Based on AI Dashboard patterns\n ============================================ */\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n background: var(--mj-bg-surface);\n backdrop-filter: blur(8px);\n}\n\n.loading-content {\n text-align: center;\n}\n\n.loading-spinner {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.spinner-ring {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 64px;\n height: 64px;\n margin: 8px;\n border: 8px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: spinner-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: var(--mj-brand-primary) transparent transparent transparent;\n}\n\n.spinner-ring:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner-ring:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner-ring:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n@keyframes spinner-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading-text {\n margin-top: 20px;\n font-size: 16px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.dashboard-content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* Active Runs Banner */\n.active-runs-banner {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 20px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.active-runs-banner i {\n color: var(--mj-brand-primary);\n}\n\n.active-runs-count {\n font-weight: 600;\n}\n\n.active-runs-detail {\n color: var(--mj-text-secondary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.active-runs-view-btn {\n padding: 4px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.2s;\n}\n\n.active-runs-view-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .testing-dashboard-nav {\n padding: 0 8px;\n overflow-x: auto;\n }\n\n .nav-item {\n padding: 12px 16px;\n gap: 8px;\n }\n\n .nav-item span {\n font-size: 11px;\n }\n\n .nav-item i {\n font-size: 18px;\n }\n\n .active-runs-banner {\n flex-wrap: wrap;\n padding: 8px 12px;\n gap: 6px;\n }\n\n .active-runs-detail {\n width: 100%;\n order: 3;\n }\n}\n\n@media (max-width: 480px) {\n .nav-item span {\n display: none;\n }\n\n .nav-item {\n padding: 12px 14px;\n }\n}\n"] }]
339
340
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.TestingDialogService }, { type: i1.TestingExecutionService }, { type: i2.TestingInstrumentationService }], null); })();
340
341
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingDashboardComponent, { className: "TestingDashboardComponent", filePath: "src/Testing/testing-dashboard.component.ts", lineNumber: 27 }); })();
341
342
  //# sourceMappingURL=testing-dashboard.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing-dashboard.component.js","sourceRoot":"","sources":["../../src/Testing/testing-dashboard.component.ts","../../src/Testing/testing-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, AfterViewInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { TestingDialogService, TestingExecutionService, ActiveRun } from '@memberjunction/ng-testing';\nimport { TabConfig } from '@memberjunction/ng-ui-components';\nimport { TestingInstrumentationService } from './services/testing-instrumentation.service';\n\ninterface TestingDashboardState {\n activeTab: string;\n dashboardState: Record<string, unknown>;\n runsState: Record<string, unknown>;\n analyticsState: Record<string, unknown>;\n reviewState: Record<string, unknown>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-testing-dashboard',\n templateUrl: './testing-dashboard.component.html',\n styleUrls: ['./testing-dashboard.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@RegisterClass(BaseDashboard, 'TestingDashboard')\nexport class TestingDashboardComponent extends BaseDashboard implements AfterViewInit, OnDestroy {\n\n public isLoading = false;\n public activeTab = 'dashboard';\n public selectedIndex = 0;\n\n // Active test runs from execution service\n public ActiveRuns: ActiveRun[] = [];\n\n // Component states\n public dashboardState: Record<string, unknown> | null = null;\n public runsState: Record<string, unknown> | null = null;\n public analyticsState: Record<string, unknown> | null = null;\n public reviewState: Record<string, unknown> | null = null;\n\n // Track visited tabs for lazy loading\n private visitedTabs = new Set<string>();\n\n // Navigation items\n public navigationItems: string[] = ['dashboard', 'runs', 'analytics', 'review'];\n\n public navigationConfig = [\n { text: 'Dashboard', icon: 'fa-solid fa-gauge-high', selected: false },\n { text: 'Runs', icon: 'fa-solid fa-play-circle', selected: false },\n { text: 'Analytics', icon: 'fa-solid fa-chart-bar', selected: false },\n { text: 'Review', icon: 'fa-solid fa-clipboard-check', selected: false }\n ];\n\n public get Tabs(): TabConfig[] {\n return [\n { key: 'dashboard', label: 'Dashboard', icon: 'fa-solid fa-gauge-high' },\n {\n key: 'runs',\n label: 'Runs',\n icon: 'fa-solid fa-play-circle',\n badge: this.ActiveRuns.length > 0 ? this.ActiveRuns.length : null,\n badgeVariant: this.ActiveRuns.length > 0 ? 'warning' : 'default'\n },\n { key: 'analytics', label: 'Analytics', icon: 'fa-solid fa-chart-bar' },\n { key: 'review', label: 'Review', icon: 'fa-solid fa-clipboard-check' }\n ];\n }\n\n private stateChangeSubject = new Subject<TestingDashboardState>();\n protected override destroy$ = new Subject<void>();\n\n constructor(\n private cdr: ChangeDetectorRef,\n public testingDialogService: TestingDialogService,\n private executionService: TestingExecutionService,\n private instrumentationService: TestingInstrumentationService\n ) {\n super();\n this.setupStateManagement();\n this.updateNavigationSelection();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Testing';\n }\n\n ngAfterViewInit(): void {\n this.visitedTabs.add(this.activeTab);\n this.updateNavigationSelection();\n this.emitStateChange();\n\n this.executionService.ActiveRuns$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(runs => {\n this.ActiveRuns = runs;\n this.cdr.markForCheck();\n });\n\n this.testingDialogService.PanelStateChanged$.pipe(\n takeUntil(this.destroy$)\n ).subscribe((isOpen) => {\n console.log('[TestingDashboard] PanelStateChanged$:', isOpen, 'IsPanelOpen:', this.testingDialogService.IsPanelOpen);\n this.cdr.detectChanges();\n });\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n this.stateChangeSubject.complete();\n }\n\n public onTabChange(tabId: string): void {\n this.activeTab = tabId;\n const index = this.navigationItems.indexOf(tabId);\n this.selectedIndex = index >= 0 ? index : 0;\n this.updateNavigationSelection();\n this.visitedTabs.add(tabId);\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n public hasVisited(tabId: string): boolean {\n return this.visitedTabs.has(tabId);\n }\n\n private setupStateManagement(): void {\n this.stateChangeSubject.pipe(\n debounceTime(50)\n ).subscribe(state => {\n this.UserStateChanged.emit(state);\n });\n }\n\n private emitStateChange(): void {\n const state: TestingDashboardState = {\n activeTab: this.activeTab,\n dashboardState: (this.dashboardState || {}) as Record<string, unknown>,\n runsState: (this.runsState || {}) as Record<string, unknown>,\n analyticsState: (this.analyticsState || {}) as Record<string, unknown>,\n reviewState: (this.reviewState || {}) as Record<string, unknown>\n };\n\n this.stateChangeSubject.next(state);\n }\n\n public onDashboardStateChange(state: Record<string, unknown>): void {\n this.dashboardState = state;\n this.emitStateChange();\n }\n\n public onRunsStateChange(state: Record<string, unknown>): void {\n this.runsState = state;\n this.emitStateChange();\n }\n\n public onAnalyticsStateChange(state: Record<string, unknown>): void {\n this.analyticsState = state;\n this.emitStateChange();\n }\n\n public onReviewStateChange(state: Record<string, unknown>): void {\n this.reviewState = state;\n this.emitStateChange();\n }\n\n public loadUserState(state: Partial<TestingDashboardState>): void {\n if (state.activeTab) {\n this.activeTab = state.activeTab;\n const index = this.navigationItems.indexOf(state.activeTab);\n this.selectedIndex = index >= 0 ? index : 0;\n this.visitedTabs.add(state.activeTab);\n this.updateNavigationSelection();\n }\n\n if (state.dashboardState) this.dashboardState = state.dashboardState;\n if (state.runsState) this.runsState = state.runsState;\n if (state.analyticsState) this.analyticsState = state.analyticsState;\n if (state.reviewState) this.reviewState = state.reviewState;\n\n this.cdr.markForCheck();\n }\n\n initDashboard(): void {\n try {\n this.isLoading = true;\n this.instrumentationService.Provider = this.ProviderToUse;\n } catch (error) {\n console.error('Error initializing Testing dashboard:', error);\n this.Error.emit(new Error('Failed to initialize Testing dashboard. Please try again.'));\n } finally {\n this.isLoading = false;\n }\n }\n\n loadData(): void {\n if (this.Config?.userState) {\n setTimeout(() => {\n if (this.Config?.userState) {\n this.loadUserState(this.Config.userState);\n }\n }, 0);\n }\n\n this.NotifyLoadComplete();\n }\n\n public getCurrentTabLabel(): string {\n const tabIndex = this.navigationItems.indexOf(this.activeTab);\n return tabIndex >= 0 ? this.navigationConfig[tabIndex].text : 'Testing Dashboard';\n }\n\n public OnPanelClosed(): void {\n this.testingDialogService.ClosePanel();\n this.cdr.markForCheck();\n }\n\n public OnViewActiveRun(run: ActiveRun): void {\n this.testingDialogService.OpenTestPanel(run.TestId);\n this.cdr.markForCheck();\n }\n\n public OnViewRunningTestFromTab(testId: string): void {\n this.testingDialogService.OpenTestPanel(testId);\n this.cdr.detectChanges();\n }\n\n private updateNavigationSelection(): void {\n this.navigationConfig.forEach((item, index) => {\n item.selected = this.navigationItems[index] === this.activeTab;\n });\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Testing\"\n Icon=\"fa-solid fa-vial-circle-check\"\n Subtitle=\"Evaluate AI agents, workflows, and system components\">\n <div meta>\n @if (ActiveRuns.length > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-spinner fa-spin\"\n [Count]=\"ActiveRuns.length\"\n Label=\"running\"\n Variant=\"running\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"activeTab\"\n (TabChange)=\"onTabChange($any($event))\">\n </mj-tab-nav>\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading Testing Dashboard...\" size=\"large\"></mj-loading>\n </div>\n }\n\n @if (!isLoading) {\n <!-- Active Runs Banner (in-body so it doesn't crowd the page-header) -->\n @if (ActiveRuns.length > 0) {\n <div class=\"active-runs-banner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span class=\"active-runs-count\">{{ ActiveRuns.length }} test{{ ActiveRuns.length === 1 ? '' : 's' }} running</span>\n <span class=\"active-runs-detail\">{{ ActiveRuns[0].TestName }} &mdash; {{ ActiveRuns[0].Progress }}%</span>\n <button class=\"active-runs-view-btn\" (click)=\"OnViewActiveRun(ActiveRuns[0])\">View</button>\n </div>\n }\n\n <div class=\"dashboard-content\">\n @if (activeTab === 'dashboard' && hasVisited('dashboard')) {\n <app-testing-dashboard-tab\n [initialState]=\"dashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onDashboardStateChange($event)\"\n ></app-testing-dashboard-tab>\n }\n\n @if (activeTab === 'runs' && hasVisited('runs')) {\n <app-testing-runs\n [initialState]=\"runsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onRunsStateChange($event)\"\n ></app-testing-runs>\n }\n\n @if (activeTab === 'analytics' && hasVisited('analytics')) {\n <app-testing-analytics\n [initialState]=\"analyticsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onAnalyticsStateChange($event)\"\n ></app-testing-analytics>\n }\n\n @if (activeTab === 'review' && hasVisited('review')) {\n <app-testing-review\n [initialState]=\"reviewState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onReviewStateChange($event)\"\n ></app-testing-review>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Slide Panel for Test Execution -->\n @if (testingDialogService.IsPanelOpen) {\n <mj-slide-panel\n Mode=\"slide\"\n [Title]=\"testingDialogService.PanelOptions?.testId ? 'Test Execution' : 'Run Test'\"\n [Resizable]=\"true\"\n (Closed)=\"OnPanelClosed()\">\n <app-test-run-dialog\n [PanelMode]=\"true\"\n [selectedTestId]=\"testingDialogService.PanelOptions?.testId ?? null\"\n [selectedSuiteId]=\"testingDialogService.PanelOptions?.suiteId ?? null\"\n [runMode]=\"testingDialogService.PanelOptions?.mode ?? 'test'\"\n (PanelClose)=\"OnPanelClosed()\">\n </app-test-run-dialog>\n </mj-slide-panel>\n }\n</mj-page-layout>\n"]}
1
+ {"version":3,"file":"testing-dashboard.component.js","sourceRoot":"","sources":["../../src/Testing/testing-dashboard.component.ts","../../src/Testing/testing-dashboard.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAA+C,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;;;;;ICGjD,mCAKgB;;;IAHd,gDAA2B;;;IAoBjC,8BAA+B;IAC7B,gCAA0E;IAC5E,iBAAM;;;;IAMJ,+BAAgC;IAC9B,wBAA2C;IAC3C,gCAAgC;IAAA,YAA4E;IAAA,iBAAO;IACnH,gCAAiC;IAAA,YAAkE;IAAA,iBAAO;IAC1G,kCAA8E;IAAzC,6MAAS,yCAA2B,CAAC,EAAE,KAAC;IAAC,oBAAI;IACpF,AADoF,iBAAS,EACvF;;;IAH4B,eAA4E;IAA5E,mHAA4E;IAC3E,eAAkE;IAAlE,wGAAkE;;;;IAOnG,qDAIC;IADC,kPAAe,qCAA8B,KAAC;IAC/C,iBAA4B;;;IAF3B,AADA,oDAA+B,qBACX;;;;IAMtB,4CAIC;IADC,yOAAe,gCAAyB,KAAC;IAC1C,iBAAmB;;;IAFlB,AADA,+CAA0B,qBACN;;;;IAMtB,iDAIC;IADC,8OAAe,qCAA8B,KAAC;IAC/C,iBAAwB;;;IAFvB,AADA,oDAA+B,qBACX;;;;IAMtB,8CAIC;IADC,2OAAe,kCAA2B,KAAC;IAC5C,iBAAqB;;;IAFpB,AADA,iDAA4B,qBACR;;;IArC1B,2GAA6B;IAS7B,+BAA+B;IAC7B,iIAA4D;IAQ5D,wHAAkD;IAQlD,6HAA4D;IAQ5D,0HAAsD;IAOxD,iBAAM;;;IAzCN,uDAOC;IAGC,eAMC;IAND,6FAMC;IAED,cAMC;IAND,mFAMC;IAED,cAMC;IAND,6FAMC;IAED,cAMC;IAND,uFAMC;;;;IAOH,0CAI6B;IAA3B,wMAAU,sBAAe,KAAC;IAC1B,+CAKiC;IAA/B,qNAAc,sBAAe,KAAC;IAElC,AADE,iBAAsB,EACP;;;IATf,AADA,mKAAmF,mBACjE;IAGhB,cAAkB;IAGlB,AADA,AADA,AADA,gCAAkB,uIACkD,yIACE,gIACT;;ADlE9D,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,aAAa;IA+ChD;IACD;IACC;IACA;IAhDH,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,WAAW,CAAC;IACxB,aAAa,GAAG,CAAC,CAAC;IAEzB,0CAA0C;IACnC,UAAU,GAAgB,EAAE,CAAC;IAEpC,mBAAmB;IACZ,cAAc,GAAmC,IAAI,CAAC;IACtD,SAAS,GAAmC,IAAI,CAAC;IACjD,cAAc,GAAmC,IAAI,CAAC;IACtD,WAAW,GAAmC,IAAI,CAAC;IAE1D,sCAAsC;IAC9B,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,mBAAmB;IACZ,eAAe,GAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEzE,gBAAgB,GAAG;QACxB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;QAClE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE;QACrE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,KAAK,EAAE;KACzE,CAAC;IAEF,IAAW,IAAI;QACb,OAAO;YACL,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE;YACxE;gBACE,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,yBAAyB;gBAC/B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;gBACjE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;aACjE;YACD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE;YACvE,EAAE,GAAG,EAAE,QAAQ,EAAK,KAAK,EAAE,QAAQ,EAAK,IAAI,EAAE,6BAA6B,EAAE;SAC9E,CAAC;IACJ,CAAC;IAEO,kBAAkB,GAAG,IAAI,OAAO,EAAyB,CAAC;IAC/C,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAElD,YACU,GAAsB,EACvB,oBAA0C,EACzC,gBAAyC,EACzC,sBAAqD;QAE7D,KAAK,EAAE,CAAC;QALA,QAAG,GAAH,GAAG,CAAmB;QACvB,yBAAoB,GAApB,oBAAoB,CAAsB;QACzC,qBAAgB,GAAhB,gBAAgB,CAAyB;QACzC,2BAAsB,GAAtB,sBAAsB,CAA+B;QAG7D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CACpC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACrH,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,KAAa;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAEM,UAAU,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC1B,YAAY,CAAC,EAAE,CAAC,CACjB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAA0B;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAA4B;YACtE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAA4B;YAC5D,cAAc,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAA4B;YACtE,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAA4B;SACjE,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,sBAAsB,CAAC,KAA8B;QAC1D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,sBAAsB,CAAC,KAA8B;QAC1D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,mBAAmB,CAAC,KAA8B;QACvD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,aAAa,CAAC,KAAqC;QACxD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QACrE,IAAI,KAAK,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACtD,IAAI,KAAK,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QACrE,IAAI,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAE5D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa;QACX,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,CAAC;QAC1F,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEM,kBAAkB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACpF,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAEM,eAAe,CAAC,GAAc;QACnC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAEM,wBAAwB,CAAC,MAAc;QAC5C,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;mHAjNU,yBAAyB;6DAAzB,yBAAyB;YCrBlC,AAJF,AADF,sCAAgB,wBAIoD,aACtD;YACR,qGAA6B;YAQ/B,iBAAM;YACN,8BAAa;YACX,6CAAyD;YAC3D,iBAAM;YAEJ,AADF,8BAAa,oBAI+B;YAAxC,wHAAa,uBAAyB,IAAC;YAG7C,AADE,AADE,iBAAa,EACT,EACS;YAEjB,uCAA4B;YAC5B,2FAAiB;YAMjB,mFAAkB;YA6ClB,iBAAe;YAGf,wGAAwC;YAe1C,iBAAiB;;YA3FX,eAOC;YAPD,oDAOC;YAOC,eAAa;YACb,AADA,+BAAa,4BACU;YAMf,cAAa;YAAb,2BAAa;YAC3B,cAIC;YAJD,wCAIC;YAED,cA4CC;YA5CD,0CA4CC;YAID,cAcC;YAdD,gEAcC;;;ADtEU,yBAAyB;IADrC,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC;GACpC,yBAAyB,CAkNrC;;iFAlNY,yBAAyB;cARrC,SAAS;6BACI,KAAK,YACP,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM;;kFAGpC,yBAAyB","sourcesContent":["import { Component, AfterViewInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { TestingDialogService, TestingExecutionService, ActiveRun } from '@memberjunction/ng-testing';\nimport { TabConfig } from '@memberjunction/ng-ui-components';\nimport { TestingInstrumentationService } from './services/testing-instrumentation.service';\n\ninterface TestingDashboardState {\n activeTab: string;\n dashboardState: Record<string, unknown>;\n runsState: Record<string, unknown>;\n analyticsState: Record<string, unknown>;\n reviewState: Record<string, unknown>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-testing-dashboard',\n templateUrl: './testing-dashboard.component.html',\n styleUrls: ['./testing-dashboard.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@RegisterClass(BaseDashboard, 'TestingDashboard')\nexport class TestingDashboardComponent extends BaseDashboard implements AfterViewInit, OnDestroy {\n\n public isLoading = false;\n public activeTab = 'dashboard';\n public selectedIndex = 0;\n\n // Active test runs from execution service\n public ActiveRuns: ActiveRun[] = [];\n\n // Component states\n public dashboardState: Record<string, unknown> | null = null;\n public runsState: Record<string, unknown> | null = null;\n public analyticsState: Record<string, unknown> | null = null;\n public reviewState: Record<string, unknown> | null = null;\n\n // Track visited tabs for lazy loading\n private visitedTabs = new Set<string>();\n\n // Navigation items\n public navigationItems: string[] = ['dashboard', 'runs', 'analytics', 'review'];\n\n public navigationConfig = [\n { text: 'Dashboard', icon: 'fa-solid fa-gauge-high', selected: false },\n { text: 'Runs', icon: 'fa-solid fa-play-circle', selected: false },\n { text: 'Analytics', icon: 'fa-solid fa-chart-bar', selected: false },\n { text: 'Review', icon: 'fa-solid fa-clipboard-check', selected: false }\n ];\n\n public get Tabs(): TabConfig[] {\n return [\n { key: 'dashboard', label: 'Dashboard', icon: 'fa-solid fa-gauge-high' },\n {\n key: 'runs',\n label: 'Runs',\n icon: 'fa-solid fa-play-circle',\n badge: this.ActiveRuns.length > 0 ? this.ActiveRuns.length : null,\n badgeVariant: this.ActiveRuns.length > 0 ? 'warning' : 'default'\n },\n { key: 'analytics', label: 'Analytics', icon: 'fa-solid fa-chart-bar' },\n { key: 'review', label: 'Review', icon: 'fa-solid fa-clipboard-check' }\n ];\n }\n\n private stateChangeSubject = new Subject<TestingDashboardState>();\n protected override destroy$ = new Subject<void>();\n\n constructor(\n private cdr: ChangeDetectorRef,\n public testingDialogService: TestingDialogService,\n private executionService: TestingExecutionService,\n private instrumentationService: TestingInstrumentationService\n ) {\n super();\n this.setupStateManagement();\n this.updateNavigationSelection();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Testing';\n }\n\n ngAfterViewInit(): void {\n this.visitedTabs.add(this.activeTab);\n this.updateNavigationSelection();\n this.emitStateChange();\n\n this.executionService.ActiveRuns$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(runs => {\n this.ActiveRuns = runs;\n this.cdr.markForCheck();\n });\n\n this.testingDialogService.PanelStateChanged$.pipe(\n takeUntil(this.destroy$)\n ).subscribe((isOpen) => {\n console.log('[TestingDashboard] PanelStateChanged$:', isOpen, 'IsPanelOpen:', this.testingDialogService.IsPanelOpen);\n this.cdr.detectChanges();\n });\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n this.stateChangeSubject.complete();\n }\n\n public onTabChange(tabId: string): void {\n this.activeTab = tabId;\n const index = this.navigationItems.indexOf(tabId);\n this.selectedIndex = index >= 0 ? index : 0;\n this.updateNavigationSelection();\n this.visitedTabs.add(tabId);\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n public hasVisited(tabId: string): boolean {\n return this.visitedTabs.has(tabId);\n }\n\n private setupStateManagement(): void {\n this.stateChangeSubject.pipe(\n debounceTime(50)\n ).subscribe(state => {\n this.UserStateChanged.emit(state);\n });\n }\n\n private emitStateChange(): void {\n const state: TestingDashboardState = {\n activeTab: this.activeTab,\n dashboardState: (this.dashboardState || {}) as Record<string, unknown>,\n runsState: (this.runsState || {}) as Record<string, unknown>,\n analyticsState: (this.analyticsState || {}) as Record<string, unknown>,\n reviewState: (this.reviewState || {}) as Record<string, unknown>\n };\n\n this.stateChangeSubject.next(state);\n }\n\n public onDashboardStateChange(state: Record<string, unknown>): void {\n this.dashboardState = state;\n this.emitStateChange();\n }\n\n public onRunsStateChange(state: Record<string, unknown>): void {\n this.runsState = state;\n this.emitStateChange();\n }\n\n public onAnalyticsStateChange(state: Record<string, unknown>): void {\n this.analyticsState = state;\n this.emitStateChange();\n }\n\n public onReviewStateChange(state: Record<string, unknown>): void {\n this.reviewState = state;\n this.emitStateChange();\n }\n\n public loadUserState(state: Partial<TestingDashboardState>): void {\n if (state.activeTab) {\n this.activeTab = state.activeTab;\n const index = this.navigationItems.indexOf(state.activeTab);\n this.selectedIndex = index >= 0 ? index : 0;\n this.visitedTabs.add(state.activeTab);\n this.updateNavigationSelection();\n }\n\n if (state.dashboardState) this.dashboardState = state.dashboardState;\n if (state.runsState) this.runsState = state.runsState;\n if (state.analyticsState) this.analyticsState = state.analyticsState;\n if (state.reviewState) this.reviewState = state.reviewState;\n\n this.cdr.markForCheck();\n }\n\n initDashboard(): void {\n try {\n this.isLoading = true;\n this.instrumentationService.Provider = this.ProviderToUse;\n } catch (error) {\n console.error('Error initializing Testing dashboard:', error);\n this.Error.emit(new Error('Failed to initialize Testing dashboard. Please try again.'));\n } finally {\n this.isLoading = false;\n }\n }\n\n loadData(): void {\n if (this.Config?.userState) {\n setTimeout(() => {\n if (this.Config?.userState) {\n this.loadUserState(this.Config.userState);\n }\n }, 0);\n }\n\n this.NotifyLoadComplete();\n }\n\n public getCurrentTabLabel(): string {\n const tabIndex = this.navigationItems.indexOf(this.activeTab);\n return tabIndex >= 0 ? this.navigationConfig[tabIndex].text : 'Testing Dashboard';\n }\n\n public OnPanelClosed(): void {\n this.testingDialogService.ClosePanel();\n this.cdr.markForCheck();\n }\n\n public OnViewActiveRun(run: ActiveRun): void {\n this.testingDialogService.OpenTestPanel(run.TestId);\n this.cdr.markForCheck();\n }\n\n public OnViewRunningTestFromTab(testId: string): void {\n this.testingDialogService.OpenTestPanel(testId);\n this.cdr.detectChanges();\n }\n\n private updateNavigationSelection(): void {\n this.navigationConfig.forEach((item, index) => {\n item.selected = this.navigationItems[index] === this.activeTab;\n });\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Testing\"\n Icon=\"fa-solid fa-vial-circle-check\"\n Subtitle=\"Evaluate AI agents, workflows, and system components\">\n <div meta>\n @if (ActiveRuns.length > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-spinner fa-spin\"\n [Count]=\"ActiveRuns.length\"\n Label=\"running\"\n Variant=\"running\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n </div>\n <div toolbar>\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"activeTab\"\n (TabChange)=\"onTabChange($any($event))\">\n </mj-tab-nav>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading Testing Dashboard...\" size=\"large\"></mj-loading>\n </div>\n }\n\n @if (!isLoading) {\n <!-- Active Runs Banner (in-body so it doesn't crowd the page-header) -->\n @if (ActiveRuns.length > 0) {\n <div class=\"active-runs-banner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span class=\"active-runs-count\">{{ ActiveRuns.length }} test{{ ActiveRuns.length === 1 ? '' : 's' }} running</span>\n <span class=\"active-runs-detail\">{{ ActiveRuns[0].TestName }} &mdash; {{ ActiveRuns[0].Progress }}%</span>\n <button class=\"active-runs-view-btn\" (click)=\"OnViewActiveRun(ActiveRuns[0])\">View</button>\n </div>\n }\n\n <div class=\"dashboard-content\">\n @if (activeTab === 'dashboard' && hasVisited('dashboard')) {\n <app-testing-dashboard-tab\n [initialState]=\"dashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onDashboardStateChange($event)\"\n ></app-testing-dashboard-tab>\n }\n\n @if (activeTab === 'runs' && hasVisited('runs')) {\n <app-testing-runs\n [initialState]=\"runsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onRunsStateChange($event)\"\n ></app-testing-runs>\n }\n\n @if (activeTab === 'analytics' && hasVisited('analytics')) {\n <app-testing-analytics\n [initialState]=\"analyticsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onAnalyticsStateChange($event)\"\n ></app-testing-analytics>\n }\n\n @if (activeTab === 'review' && hasVisited('review')) {\n <app-testing-review\n [initialState]=\"reviewState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"onReviewStateChange($event)\"\n ></app-testing-review>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Slide Panel for Test Execution -->\n @if (testingDialogService.IsPanelOpen) {\n <mj-slide-panel\n Mode=\"slide\"\n [Title]=\"testingDialogService.PanelOptions?.testId ? 'Test Execution' : 'Run Test'\"\n [Resizable]=\"true\"\n (Closed)=\"OnPanelClosed()\">\n <app-test-run-dialog\n [PanelMode]=\"true\"\n [selectedTestId]=\"testingDialogService.PanelOptions?.testId ?? null\"\n [selectedSuiteId]=\"testingDialogService.PanelOptions?.suiteId ?? null\"\n [runMode]=\"testingDialogService.PanelOptions?.mode ?? 'test'\"\n (PanelClose)=\"OnPanelClosed()\">\n </app-test-run-dialog>\n </mj-slide-panel>\n }\n</mj-page-layout>\n"]}
@@ -52,7 +52,7 @@ import * as i46 from "@memberjunction/ng-word-cloud";
52
52
  export declare class AIDashboardsModule {
53
53
  constructor();
54
54
  static ɵfac: i0.ɵɵFactoryDeclaration<AIDashboardsModule, never>;
55
- static ɵmod: i0.ɵɵNgModuleDeclaration<AIDashboardsModule, [typeof i1.ModelManagementComponent, typeof i2.PromptManagementComponent, typeof i3.AgentConfigurationComponent, typeof i4.AgentEditorComponent, typeof i5.ExecutionMonitoringComponent, typeof i6.SystemConfigurationComponent, typeof i7.ModelPromptPriorityMatrixComponent, typeof i8.PromptVersionControlComponent, typeof i9.LiveExecutionWidgetComponent, typeof i10.PerformanceHeatmapComponent, typeof i11.AgentRequestsResourceComponent, typeof i12.AutotaggingPipelineResourceComponent, typeof i13.TagsResourceComponent, typeof i14.DuplicateDetectionResourceComponent, typeof i15.VectorManagementResourceComponent, typeof i16.KnowledgeConfigResourceComponent, typeof i17.SearchResultDetailComponent, typeof i18.ClusterVisualizationResourceComponent, typeof i19.SchedulingResourceComponent, typeof i20.AnalyticsResourceComponent, typeof i21.AIAnalyticsResourceComponent, typeof i22.AnalyticsFilterBarComponent, typeof i23.AnalyticsExecutiveSummaryComponent, typeof i24.AnalyticsPromptRunsComponent, typeof i25.AnalyticsAgentRunsComponent, typeof i26.AnalyticsModelPerformanceComponent, typeof i27.AnalyticsCostBudgetComponent, typeof i28.AnalyticsErrorAnalysisComponent, typeof i29.AnalyticsUsagePatternsComponent, typeof i30.AIOverviewHubComponent], [typeof i31.CommonModule, typeof i32.FormsModule, typeof i32.ReactiveFormsModule, typeof i33.AngularSplitModule, typeof i34.ContainerDirectivesModule, typeof i35.CodeEditorModule, typeof i36.SharedGenericModule, typeof i37.AgentsModule, typeof i38.AgentRequestsModule, typeof i39.NgTreesModule, typeof i40.SharedDashboardWidgetsModule, typeof i41.SharedPipesModule, typeof i42.SearchModule, typeof i43.MJButtonDirective, typeof i43.MJComboboxComponent, typeof i43.MJDropdownComponent, typeof i43.MJPageHeaderComponent, typeof i43.MJPageLayoutComponent, typeof i43.MJPageBodyComponent, typeof i43.MJFilterPopoverComponent, typeof i43.MJPageSearchComponent, typeof i43.MJFilterPanelComponent, typeof i43.MJFilterFieldComponent, typeof i43.MJFilterChipComponent, typeof i43.MJViewToggleComponent, typeof i43.MJStatBadgeComponent, typeof i43.MJRefreshButtonComponent, typeof i44.ClusteringModule, typeof i45.SchedulingModule, typeof i46.MJWordCloudComponent], [typeof i1.ModelManagementComponent, typeof i2.PromptManagementComponent, typeof i3.AgentConfigurationComponent, typeof i5.ExecutionMonitoringComponent, typeof i6.SystemConfigurationComponent, typeof i9.LiveExecutionWidgetComponent, typeof i10.PerformanceHeatmapComponent, typeof i11.AgentRequestsResourceComponent, typeof i12.AutotaggingPipelineResourceComponent, typeof i13.TagsResourceComponent, typeof i14.DuplicateDetectionResourceComponent, typeof i15.VectorManagementResourceComponent, typeof i16.KnowledgeConfigResourceComponent, typeof i17.SearchResultDetailComponent, typeof i18.ClusterVisualizationResourceComponent, typeof i19.SchedulingResourceComponent, typeof i20.AnalyticsResourceComponent, typeof i21.AIAnalyticsResourceComponent, typeof i22.AnalyticsFilterBarComponent, typeof i23.AnalyticsExecutiveSummaryComponent, typeof i24.AnalyticsPromptRunsComponent, typeof i25.AnalyticsAgentRunsComponent, typeof i26.AnalyticsModelPerformanceComponent, typeof i27.AnalyticsCostBudgetComponent, typeof i28.AnalyticsErrorAnalysisComponent, typeof i29.AnalyticsUsagePatternsComponent, typeof i30.AIOverviewHubComponent, typeof i40.SharedDashboardWidgetsModule]>;
55
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AIDashboardsModule, [typeof i1.ModelManagementComponent, typeof i2.PromptManagementComponent, typeof i3.AgentConfigurationComponent, typeof i4.AgentEditorComponent, typeof i5.ExecutionMonitoringComponent, typeof i6.SystemConfigurationComponent, typeof i7.ModelPromptPriorityMatrixComponent, typeof i8.PromptVersionControlComponent, typeof i9.LiveExecutionWidgetComponent, typeof i10.PerformanceHeatmapComponent, typeof i11.AgentRequestsResourceComponent, typeof i12.AutotaggingPipelineResourceComponent, typeof i13.TagsResourceComponent, typeof i14.DuplicateDetectionResourceComponent, typeof i15.VectorManagementResourceComponent, typeof i16.KnowledgeConfigResourceComponent, typeof i17.SearchResultDetailComponent, typeof i18.ClusterVisualizationResourceComponent, typeof i19.SchedulingResourceComponent, typeof i20.AnalyticsResourceComponent, typeof i21.AIAnalyticsResourceComponent, typeof i22.AnalyticsFilterBarComponent, typeof i23.AnalyticsExecutiveSummaryComponent, typeof i24.AnalyticsPromptRunsComponent, typeof i25.AnalyticsAgentRunsComponent, typeof i26.AnalyticsModelPerformanceComponent, typeof i27.AnalyticsCostBudgetComponent, typeof i28.AnalyticsErrorAnalysisComponent, typeof i29.AnalyticsUsagePatternsComponent, typeof i30.AIOverviewHubComponent], [typeof i31.CommonModule, typeof i32.FormsModule, typeof i32.ReactiveFormsModule, typeof i33.AngularSplitModule, typeof i34.ContainerDirectivesModule, typeof i35.CodeEditorModule, typeof i36.SharedGenericModule, typeof i37.AgentsModule, typeof i38.AgentRequestsModule, typeof i39.NgTreesModule, typeof i40.SharedDashboardWidgetsModule, typeof i41.SharedPipesModule, typeof i42.SearchModule, typeof i43.MJButtonDirective, typeof i43.MJComboboxComponent, typeof i43.MJDropdownComponent, typeof i43.MJPageHeaderComponent, typeof i43.MJPageLayoutComponent, typeof i43.MJPageBodyComponent, typeof i43.MJPageHeaderInteriorComponent, typeof i43.MJPageBodyInteriorComponent, typeof i43.MJLeftNavComponent, typeof i43.MJLeftNavContentComponent, typeof i43.MJFilterPopoverComponent, typeof i43.MJPageSearchComponent, typeof i43.MJFilterPanelComponent, typeof i43.MJFilterFieldComponent, typeof i43.MJFilterChipComponent, typeof i43.MJTabNavComponent, typeof i43.MJViewToggleComponent, typeof i43.MJStatBadgeComponent, typeof i43.MJRefreshButtonComponent, typeof i44.ClusteringModule, typeof i45.SchedulingModule, typeof i46.MJWordCloudComponent], [typeof i1.ModelManagementComponent, typeof i2.PromptManagementComponent, typeof i3.AgentConfigurationComponent, typeof i5.ExecutionMonitoringComponent, typeof i6.SystemConfigurationComponent, typeof i9.LiveExecutionWidgetComponent, typeof i10.PerformanceHeatmapComponent, typeof i11.AgentRequestsResourceComponent, typeof i12.AutotaggingPipelineResourceComponent, typeof i13.TagsResourceComponent, typeof i14.DuplicateDetectionResourceComponent, typeof i15.VectorManagementResourceComponent, typeof i16.KnowledgeConfigResourceComponent, typeof i17.SearchResultDetailComponent, typeof i18.ClusterVisualizationResourceComponent, typeof i19.SchedulingResourceComponent, typeof i20.AnalyticsResourceComponent, typeof i21.AIAnalyticsResourceComponent, typeof i22.AnalyticsFilterBarComponent, typeof i23.AnalyticsExecutiveSummaryComponent, typeof i24.AnalyticsPromptRunsComponent, typeof i25.AnalyticsAgentRunsComponent, typeof i26.AnalyticsModelPerformanceComponent, typeof i27.AnalyticsCostBudgetComponent, typeof i28.AnalyticsErrorAnalysisComponent, typeof i29.AnalyticsUsagePatternsComponent, typeof i30.AIOverviewHubComponent, typeof i40.SharedDashboardWidgetsModule]>;
56
56
  static ɵinj: i0.ɵɵInjectorDeclaration<AIDashboardsModule>;
57
57
  }
58
58
  //# sourceMappingURL=ai-dashboards.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-dashboards.module.d.ts","sourceRoot":"","sources":["../src/ai-dashboards.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA;;;GAGG;AACH,qBAmGa,kBAAkB;;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAiB9B"}
1
+ {"version":3,"file":"ai-dashboards.module.d.ts","sourceRoot":"","sources":["../src/ai-dashboards.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA;;;GAGG;AACH,qBAwGa,kBAAkB;;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAiB9B"}
@@ -11,7 +11,7 @@ import { NgTreesModule } from '@memberjunction/ng-trees';
11
11
  import { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.module';
12
12
  import { SharedPipesModule } from './shared/shared-pipes.module';
13
13
  import { SearchModule } from '@memberjunction/ng-search';
14
- import { MJButtonDirective, MJComboboxComponent, MJDropdownComponent, MJPageHeaderComponent, MJPageLayoutComponent, MJPageBodyComponent, MJFilterPopoverComponent, MJPageSearchComponent, MJFilterPanelComponent, MJFilterFieldComponent, MJFilterChipComponent, MJViewToggleComponent, MJStatBadgeComponent, MJRefreshButtonComponent } from '@memberjunction/ng-ui-components';
14
+ import { MJButtonDirective, MJComboboxComponent, MJDropdownComponent, MJPageHeaderComponent, MJPageLayoutComponent, MJPageBodyComponent, MJPageHeaderInteriorComponent, MJPageBodyInteriorComponent, MJFilterPopoverComponent, MJPageSearchComponent, MJFilterPanelComponent, MJFilterFieldComponent, MJFilterChipComponent, MJTabNavComponent, MJViewToggleComponent, MJStatBadgeComponent, MJRefreshButtonComponent, MJLeftNavComponent, MJLeftNavContentComponent } from '@memberjunction/ng-ui-components';
15
15
  // AI Components
16
16
  import { ModelManagementComponent } from './AI/components/models/model-management.component';
17
17
  import { PromptManagementComponent } from './AI/components/prompts/prompt-management.component';
@@ -94,11 +94,16 @@ export class AIDashboardsModule {
94
94
  MJPageHeaderComponent,
95
95
  MJPageLayoutComponent,
96
96
  MJPageBodyComponent,
97
+ MJPageHeaderInteriorComponent,
98
+ MJPageBodyInteriorComponent,
99
+ MJLeftNavComponent,
100
+ MJLeftNavContentComponent,
97
101
  MJFilterPopoverComponent,
98
102
  MJPageSearchComponent,
99
103
  MJFilterPanelComponent,
100
104
  MJFilterFieldComponent,
101
105
  MJFilterChipComponent,
106
+ MJTabNavComponent,
102
107
  MJViewToggleComponent,
103
108
  MJStatBadgeComponent,
104
109
  MJRefreshButtonComponent,
@@ -161,11 +166,16 @@ export class AIDashboardsModule {
161
166
  MJPageHeaderComponent,
162
167
  MJPageLayoutComponent,
163
168
  MJPageBodyComponent,
169
+ MJPageHeaderInteriorComponent,
170
+ MJPageBodyInteriorComponent,
171
+ MJLeftNavComponent,
172
+ MJLeftNavContentComponent,
164
173
  MJFilterPopoverComponent,
165
174
  MJPageSearchComponent,
166
175
  MJFilterPanelComponent,
167
176
  MJFilterFieldComponent,
168
177
  MJFilterChipComponent,
178
+ MJTabNavComponent,
169
179
  MJViewToggleComponent,
170
180
  MJStatBadgeComponent,
171
181
  MJRefreshButtonComponent,
@@ -256,11 +266,16 @@ export class AIDashboardsModule {
256
266
  MJPageHeaderComponent,
257
267
  MJPageLayoutComponent,
258
268
  MJPageBodyComponent,
269
+ MJPageHeaderInteriorComponent,
270
+ MJPageBodyInteriorComponent,
271
+ MJLeftNavComponent,
272
+ MJLeftNavContentComponent,
259
273
  MJFilterPopoverComponent,
260
274
  MJPageSearchComponent,
261
275
  MJFilterPanelComponent,
262
276
  MJFilterFieldComponent,
263
277
  MJFilterChipComponent,
278
+ MJTabNavComponent,
264
279
  MJViewToggleComponent,
265
280
  MJStatBadgeComponent,
266
281
  MJRefreshButtonComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"ai-dashboards.module.js","sourceRoot":"","sources":["../src/ai-dashboards.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AngularSplitModule } from 'angular-split';\nimport { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { AgentsModule } from '@memberjunction/ng-agents';\nimport { AgentRequestsModule } from '@memberjunction/ng-agent-requests';\nimport { NgTreesModule } from '@memberjunction/ng-trees';\nimport { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.module';\nimport { SharedPipesModule } from './shared/shared-pipes.module';\nimport { SearchModule } from '@memberjunction/ng-search';\nimport { MJButtonDirective, MJComboboxComponent, MJDropdownComponent, MJPageHeaderComponent, MJPageLayoutComponent, MJPageBodyComponent, MJFilterPopoverComponent, MJPageSearchComponent, MJFilterPanelComponent, MJFilterFieldComponent, MJFilterChipComponent, MJViewToggleComponent, MJStatBadgeComponent, MJRefreshButtonComponent } from '@memberjunction/ng-ui-components';\n\n// AI Components\nimport { ModelManagementComponent } from './AI/components/models/model-management.component';\nimport { PromptManagementComponent } from './AI/components/prompts/prompt-management.component';\nimport { AgentConfigurationComponent } from './AI/components/agents/agent-configuration.component';\nimport { AgentEditorComponent } from './AI/components/agents/agent-editor.component';\nimport { ExecutionMonitoringComponent } from './AI/components/execution-monitoring.component';\nimport { SystemConfigurationComponent } from './AI/components/system/system-configuration.component';\nimport { ModelPromptPriorityMatrixComponent } from './AI/components/prompts/model-prompt-priority-matrix.component';\nimport { PromptVersionControlComponent } from './AI/components/prompts/prompt-version-control.component';\n// AI Instrumentation Widgets (KPICard and TimeSeriesChart are in SharedDashboardWidgetsModule)\nimport { LiveExecutionWidgetComponent } from './AI/components/widgets/live-execution-widget.component';\nimport { PerformanceHeatmapComponent } from './AI/components/charts/performance-heatmap.component';\nimport { AgentRequestsResourceComponent } from './AI/components/requests/agent-requests-resource.component';\nimport { AutotaggingPipelineResourceComponent } from './AI/components/autotagging/autotagging-pipeline-resource.component';\nimport { TagsResourceComponent, LoadTagsResource } from './AI/components/tags/tags-resource.component';\nimport { DuplicateDetectionResourceComponent } from './AI/components/duplicates/duplicate-detection-resource.component';\nimport { VectorManagementResourceComponent } from './AI/components/vectors/vector-management-resource.component';\nimport { AIInstrumentationService } from './AI/services/ai-instrumentation.service';\nimport { AIAnalyticsResourceComponent, LoadAIAnalyticsResource } from './AI/components/analytics/ai-analytics-resource.component';\nimport { AnalyticsFilterBarComponent } from './AI/components/analytics/analytics-filter-bar.component';\nimport { AnalyticsExecutiveSummaryComponent, LoadAnalyticsExecutiveSummary } from './AI/components/analytics/executive-summary/executive-summary.component';\nimport { AnalyticsPromptRunsComponent, LoadAnalyticsPromptRuns } from './AI/components/analytics/prompt-runs/prompt-run-analysis.component';\nimport { AnalyticsAgentRunsComponent, LoadAnalyticsAgentRuns } from './AI/components/analytics/agent-runs/agent-run-analysis.component';\nimport { AnalyticsModelPerformanceComponent, LoadAnalyticsModelPerformance } from './AI/components/analytics/model-performance/model-performance.component';\nimport { AnalyticsCostBudgetComponent, LoadAnalyticsCostBudget } from './AI/components/analytics/cost-budget/cost-budget.component';\nimport { AnalyticsErrorAnalysisComponent, LoadAnalyticsErrorAnalysis } from './AI/components/analytics/error-analysis/error-analysis.component';\nimport { AnalyticsUsagePatternsComponent, LoadAnalyticsUsagePatterns } from './AI/components/analytics/usage-patterns/usage-patterns.component';\n\n// AI Overview Hub\nimport { AIOverviewHubComponent, LoadAIOverviewHub } from './AI/components/overview/ai-overview-hub.component';\n\n// Knowledge Hub components\nimport {\n KnowledgeConfigResourceComponent,\n LoadKnowledgeConfigResource\n} from './KnowledgeHub/components/config/knowledge-config-resource.component';\nimport { SearchResultDetailComponent } from './KnowledgeHub/components/results-detail/search-result-detail.component';\nimport {\n ClusterVisualizationResourceComponent,\n LoadClusterVisualizationResource\n} from './KnowledgeHub/components/clusters/cluster-visualization-resource.component';\nimport {\n SchedulingResourceComponent,\n LoadSchedulingResource\n} from './KnowledgeHub/components/scheduling/scheduling-resource.component';\nimport {\n AnalyticsResourceComponent,\n LoadAnalyticsResource\n} from './KnowledgeHub/components/analytics/analytics-resource.component';\nimport { ClusteringModule } from '@memberjunction/ng-clustering';\nimport { SchedulingModule } from '@memberjunction/ng-scheduling';\nimport { MJWordCloudComponent } from '@memberjunction/ng-word-cloud';\n\n/**\n * AIDashboardsModule — AI feature area: models, prompts, agents,\n * execution monitoring, system configuration, and instrumentation widgets.\n */\n@NgModule({\n declarations: [\n ModelManagementComponent,\n PromptManagementComponent,\n AgentConfigurationComponent,\n AgentEditorComponent,\n ExecutionMonitoringComponent,\n SystemConfigurationComponent,\n ModelPromptPriorityMatrixComponent,\n PromptVersionControlComponent,\n LiveExecutionWidgetComponent,\n PerformanceHeatmapComponent,\n AgentRequestsResourceComponent,\n AutotaggingPipelineResourceComponent,\n TagsResourceComponent,\n DuplicateDetectionResourceComponent,\n VectorManagementResourceComponent,\n KnowledgeConfigResourceComponent,\n SearchResultDetailComponent,\n ClusterVisualizationResourceComponent,\n SchedulingResourceComponent,\n AnalyticsResourceComponent,\n AIAnalyticsResourceComponent,\n AnalyticsFilterBarComponent,\n AnalyticsExecutiveSummaryComponent,\n AnalyticsPromptRunsComponent,\n AnalyticsAgentRunsComponent,\n AnalyticsModelPerformanceComponent,\n AnalyticsCostBudgetComponent,\n AnalyticsErrorAnalysisComponent,\n AnalyticsUsagePatternsComponent,\n AIOverviewHubComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n AngularSplitModule,\n ContainerDirectivesModule,\n CodeEditorModule,\n SharedGenericModule,\n AgentsModule,\n AgentRequestsModule,\n NgTreesModule,\n SharedDashboardWidgetsModule,\n SharedPipesModule,\n SearchModule,\n MJButtonDirective,\n MJComboboxComponent,\n MJDropdownComponent,\n MJPageHeaderComponent,\n MJPageLayoutComponent,\n MJPageBodyComponent,\n MJFilterPopoverComponent,\n MJPageSearchComponent,\n MJFilterPanelComponent,\n MJFilterFieldComponent,\n MJFilterChipComponent,\n MJViewToggleComponent,\n MJStatBadgeComponent,\n MJRefreshButtonComponent,\n ClusteringModule,\n SchedulingModule,\n MJWordCloudComponent\n ],\n providers: [\n AIInstrumentationService\n ],\n exports: [\n ModelManagementComponent,\n PromptManagementComponent,\n AgentConfigurationComponent,\n ExecutionMonitoringComponent,\n SystemConfigurationComponent,\n LiveExecutionWidgetComponent,\n PerformanceHeatmapComponent,\n AgentRequestsResourceComponent,\n AutotaggingPipelineResourceComponent,\n TagsResourceComponent,\n DuplicateDetectionResourceComponent,\n VectorManagementResourceComponent,\n KnowledgeConfigResourceComponent,\n SearchResultDetailComponent,\n ClusterVisualizationResourceComponent,\n SchedulingResourceComponent,\n AnalyticsResourceComponent,\n AIAnalyticsResourceComponent,\n AnalyticsFilterBarComponent,\n AnalyticsExecutiveSummaryComponent,\n AnalyticsPromptRunsComponent,\n AnalyticsAgentRunsComponent,\n AnalyticsModelPerformanceComponent,\n AnalyticsCostBudgetComponent,\n AnalyticsErrorAnalysisComponent,\n AnalyticsUsagePatternsComponent,\n AIOverviewHubComponent,\n SharedDashboardWidgetsModule\n ]\n})\nexport class AIDashboardsModule {\n constructor() {\n // Ensure tree-shaking prevention loaders are called\n LoadTagsResource();\n LoadClusterVisualizationResource();\n LoadSchedulingResource();\n LoadAnalyticsResource();\n LoadAIAnalyticsResource();\n LoadAnalyticsExecutiveSummary();\n LoadAnalyticsPromptRuns();\n LoadAnalyticsAgentRuns();\n LoadAnalyticsModelPerformance();\n LoadAnalyticsCostBudget();\n LoadAnalyticsErrorAnalysis();\n LoadAnalyticsUsagePatterns();\n LoadAIOverviewHub();\n }\n}\n"]}
1
+ {"version":3,"file":"ai-dashboards.module.js","sourceRoot":"","sources":["../src/ai-dashboards.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE/e,gBAAgB;AAChB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uDAAuD,CAAC;AACrG,OAAO,EAAE,kCAAkC,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,EAAE,6BAA6B,EAAE,MAAM,0DAA0D,CAAC;AACzG,+FAA+F;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAC5G,OAAO,EAAE,oCAAoC,EAAE,MAAM,qEAAqE,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,mEAAmE,CAAC;AACxH,OAAO,EAAE,iCAAiC,EAAE,MAAM,8DAA8D,CAAC;AACjH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AAClI,OAAO,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAC;AACvG,OAAO,EAAE,kCAAkC,EAAE,6BAA6B,EAAE,MAAM,yEAAyE,CAAC;AAC5J,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,qEAAqE,CAAC;AAC5I,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mEAAmE,CAAC;AACxI,OAAO,EAAE,kCAAkC,EAAE,6BAA6B,EAAE,MAAM,yEAAyE,CAAC;AAC5J,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AACpI,OAAO,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,mEAAmE,CAAC;AAChJ,OAAO,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,mEAAmE,CAAC;AAEhJ,kBAAkB;AAClB,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAE/G,2BAA2B;AAC3B,OAAO,EACL,gCAAgC,EAEjC,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yEAAyE,CAAC;AACtH,OAAO,EACL,qCAAqC,EACrC,gCAAgC,EACjC,MAAM,6EAA6E,CAAC;AACrF,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE;;;GAGG;AAyGH,MAAM,OAAO,kBAAkB;IAC3B;QACI,oDAAoD;QACpD,gBAAgB,EAAE,CAAC;QACnB,gCAAgC,EAAE,CAAC;QACnC,sBAAsB,EAAE,CAAC;QACzB,qBAAqB,EAAE,CAAC;QACxB,uBAAuB,EAAE,CAAC;QAC1B,6BAA6B,EAAE,CAAC;QAChC,uBAAuB,EAAE,CAAC;QAC1B,sBAAsB,EAAE,CAAC;QACzB,6BAA6B,EAAE,CAAC;QAChC,uBAAuB,EAAE,CAAC;QAC1B,0BAA0B,EAAE,CAAC;QAC7B,0BAA0B,EAAE,CAAC;QAC7B,iBAAiB,EAAE,CAAC;IACxB,CAAC;4GAhBQ,kBAAkB;4DAAlB,kBAAkB;iEAlClB;YACT,wBAAwB;SACzB,YAtCC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,gBAAgB;YAChB,mBAAmB;YACnB,YAAY;YACZ,mBAAmB;YACnB,aAAa;YACb,4BAA4B;YAC5B,iBAAiB;YACjB,YAAY;YAEZ,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B;YAC7B,2BAA2B;YAC3B,kBAAkB;YAClB,yBAAyB;YACzB,wBAAwB;YACxB,qBAAqB;YACrB,sBAAsB;YACtB,sBAAsB;YACtB,qBAAqB;YACrB,iBAAiB;YACjB,qBAAqB;YACrB,oBAAoB;YACpB,wBAAwB;YACxB,gBAAgB;YAChB,gBAAgB;YAChB,oBAAoB,EAiCpB,4BAA4B;;iFAGnB,kBAAkB;cAxG9B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,wBAAwB;oBACxB,yBAAyB;oBACzB,2BAA2B;oBAC3B,oBAAoB;oBACpB,4BAA4B;oBAC5B,4BAA4B;oBAC5B,kCAAkC;oBAClC,6BAA6B;oBAC7B,4BAA4B;oBAC5B,2BAA2B;oBAC3B,8BAA8B;oBAC9B,oCAAoC;oBACpC,qBAAqB;oBACrB,mCAAmC;oBACnC,iCAAiC;oBACjC,gCAAgC;oBAChC,2BAA2B;oBAC3B,qCAAqC;oBACrC,2BAA2B;oBAC3B,0BAA0B;oBAC1B,4BAA4B;oBAC5B,2BAA2B;oBAC3B,kCAAkC;oBAClC,4BAA4B;oBAC5B,2BAA2B;oBAC3B,kCAAkC;oBAClC,4BAA4B;oBAC5B,+BAA+B;oBAC/B,+BAA+B;oBAC/B,sBAAsB;iBACvB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,kBAAkB;oBAClB,yBAAyB;oBACzB,gBAAgB;oBAChB,mBAAmB;oBACnB,YAAY;oBACZ,mBAAmB;oBACnB,aAAa;oBACb,4BAA4B;oBAC5B,iBAAiB;oBACjB,YAAY;oBACZ,iBAAiB;oBACjB,mBAAmB;oBACnB,mBAAmB;oBACnB,qBAAqB;oBACrB,qBAAqB;oBACrB,mBAAmB;oBACnB,6BAA6B;oBAC7B,2BAA2B;oBAC3B,kBAAkB;oBAClB,yBAAyB;oBACzB,wBAAwB;oBACxB,qBAAqB;oBACrB,sBAAsB;oBACtB,sBAAsB;oBACtB,qBAAqB;oBACrB,iBAAiB;oBACjB,qBAAqB;oBACrB,oBAAoB;oBACpB,wBAAwB;oBACxB,gBAAgB;oBAChB,gBAAgB;oBAChB,oBAAoB;iBACrB;gBACD,SAAS,EAAE;oBACT,wBAAwB;iBACzB;gBACD,OAAO,EAAE;oBACP,wBAAwB;oBACxB,yBAAyB;oBACzB,2BAA2B;oBAC3B,4BAA4B;oBAC5B,4BAA4B;oBAC5B,4BAA4B;oBAC5B,2BAA2B;oBAC3B,8BAA8B;oBAC9B,oCAAoC;oBACpC,qBAAqB;oBACrB,mCAAmC;oBACnC,iCAAiC;oBACjC,gCAAgC;oBAChC,2BAA2B;oBAC3B,qCAAqC;oBACrC,2BAA2B;oBAC3B,0BAA0B;oBAC1B,4BAA4B;oBAC5B,2BAA2B;oBAC3B,kCAAkC;oBAClC,4BAA4B;oBAC5B,2BAA2B;oBAC3B,kCAAkC;oBAClC,4BAA4B;oBAC5B,+BAA+B;oBAC/B,+BAA+B;oBAC/B,sBAAsB;oBACtB,4BAA4B;iBAC7B;aACF;;wFACY,kBAAkB,mBAtG3B,wBAAwB;QACxB,yBAAyB;QACzB,2BAA2B;QAC3B,oBAAoB;QACpB,4BAA4B;QAC5B,4BAA4B;QAC5B,kCAAkC;QAClC,6BAA6B;QAC7B,4BAA4B;QAC5B,2BAA2B;QAC3B,8BAA8B;QAC9B,oCAAoC;QACpC,qBAAqB;QACrB,mCAAmC;QACnC,iCAAiC;QACjC,gCAAgC;QAChC,2BAA2B;QAC3B,qCAAqC;QACrC,2BAA2B;QAC3B,0BAA0B;QAC1B,4BAA4B;QAC5B,2BAA2B;QAC3B,kCAAkC;QAClC,4BAA4B;QAC5B,2BAA2B;QAC3B,kCAAkC;QAClC,4BAA4B;QAC5B,+BAA+B;QAC/B,+BAA+B;QAC/B,sBAAsB,aAGtB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,kBAAkB;QAClB,yBAAyB;QACzB,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,4BAA4B;QAC5B,iBAAiB;QACjB,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,qBAAqB;QACrB,qBAAqB;QACrB,mBAAmB;QACnB,6BAA6B;QAC7B,2BAA2B;QAC3B,kBAAkB;QAClB,yBAAyB;QACzB,wBAAwB;QACxB,qBAAqB;QACrB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;QACjB,qBAAqB;QACrB,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,gBAAgB;QAChB,oBAAoB,aAMpB,wBAAwB;QACxB,yBAAyB;QACzB,2BAA2B;QAC3B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,2BAA2B;QAC3B,8BAA8B;QAC9B,oCAAoC;QACpC,qBAAqB;QACrB,mCAAmC;QACnC,iCAAiC;QACjC,gCAAgC;QAChC,2BAA2B;QAC3B,qCAAqC;QACrC,2BAA2B;QAC3B,0BAA0B;QAC1B,4BAA4B;QAC5B,2BAA2B;QAC3B,kCAAkC;QAClC,4BAA4B;QAC5B,2BAA2B;QAC3B,kCAAkC;QAClC,4BAA4B;QAC5B,+BAA+B;QAC/B,+BAA+B;QAC/B,sBAAsB;QACtB,4BAA4B","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AngularSplitModule } from 'angular-split';\nimport { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { AgentsModule } from '@memberjunction/ng-agents';\nimport { AgentRequestsModule } from '@memberjunction/ng-agent-requests';\nimport { NgTreesModule } from '@memberjunction/ng-trees';\nimport { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.module';\nimport { SharedPipesModule } from './shared/shared-pipes.module';\nimport { SearchModule } from '@memberjunction/ng-search';\nimport { MJButtonDirective, MJComboboxComponent, MJDropdownComponent, MJPageHeaderComponent, MJPageLayoutComponent, MJPageBodyComponent, MJPageHeaderInteriorComponent, MJPageBodyInteriorComponent, MJFilterPopoverComponent, MJPageSearchComponent, MJFilterPanelComponent, MJFilterFieldComponent, MJFilterChipComponent, MJTabNavComponent, MJViewToggleComponent, MJStatBadgeComponent, MJRefreshButtonComponent, MJLeftNavComponent, MJLeftNavContentComponent } from '@memberjunction/ng-ui-components';\n\n// AI Components\nimport { ModelManagementComponent } from './AI/components/models/model-management.component';\nimport { PromptManagementComponent } from './AI/components/prompts/prompt-management.component';\nimport { AgentConfigurationComponent } from './AI/components/agents/agent-configuration.component';\nimport { AgentEditorComponent } from './AI/components/agents/agent-editor.component';\nimport { ExecutionMonitoringComponent } from './AI/components/execution-monitoring.component';\nimport { SystemConfigurationComponent } from './AI/components/system/system-configuration.component';\nimport { ModelPromptPriorityMatrixComponent } from './AI/components/prompts/model-prompt-priority-matrix.component';\nimport { PromptVersionControlComponent } from './AI/components/prompts/prompt-version-control.component';\n// AI Instrumentation Widgets (KPICard and TimeSeriesChart are in SharedDashboardWidgetsModule)\nimport { LiveExecutionWidgetComponent } from './AI/components/widgets/live-execution-widget.component';\nimport { PerformanceHeatmapComponent } from './AI/components/charts/performance-heatmap.component';\nimport { AgentRequestsResourceComponent } from './AI/components/requests/agent-requests-resource.component';\nimport { AutotaggingPipelineResourceComponent } from './AI/components/autotagging/autotagging-pipeline-resource.component';\nimport { TagsResourceComponent, LoadTagsResource } from './AI/components/tags/tags-resource.component';\nimport { DuplicateDetectionResourceComponent } from './AI/components/duplicates/duplicate-detection-resource.component';\nimport { VectorManagementResourceComponent } from './AI/components/vectors/vector-management-resource.component';\nimport { AIInstrumentationService } from './AI/services/ai-instrumentation.service';\nimport { AIAnalyticsResourceComponent, LoadAIAnalyticsResource } from './AI/components/analytics/ai-analytics-resource.component';\nimport { AnalyticsFilterBarComponent } from './AI/components/analytics/analytics-filter-bar.component';\nimport { AnalyticsExecutiveSummaryComponent, LoadAnalyticsExecutiveSummary } from './AI/components/analytics/executive-summary/executive-summary.component';\nimport { AnalyticsPromptRunsComponent, LoadAnalyticsPromptRuns } from './AI/components/analytics/prompt-runs/prompt-run-analysis.component';\nimport { AnalyticsAgentRunsComponent, LoadAnalyticsAgentRuns } from './AI/components/analytics/agent-runs/agent-run-analysis.component';\nimport { AnalyticsModelPerformanceComponent, LoadAnalyticsModelPerformance } from './AI/components/analytics/model-performance/model-performance.component';\nimport { AnalyticsCostBudgetComponent, LoadAnalyticsCostBudget } from './AI/components/analytics/cost-budget/cost-budget.component';\nimport { AnalyticsErrorAnalysisComponent, LoadAnalyticsErrorAnalysis } from './AI/components/analytics/error-analysis/error-analysis.component';\nimport { AnalyticsUsagePatternsComponent, LoadAnalyticsUsagePatterns } from './AI/components/analytics/usage-patterns/usage-patterns.component';\n\n// AI Overview Hub\nimport { AIOverviewHubComponent, LoadAIOverviewHub } from './AI/components/overview/ai-overview-hub.component';\n\n// Knowledge Hub components\nimport {\n KnowledgeConfigResourceComponent,\n LoadKnowledgeConfigResource\n} from './KnowledgeHub/components/config/knowledge-config-resource.component';\nimport { SearchResultDetailComponent } from './KnowledgeHub/components/results-detail/search-result-detail.component';\nimport {\n ClusterVisualizationResourceComponent,\n LoadClusterVisualizationResource\n} from './KnowledgeHub/components/clusters/cluster-visualization-resource.component';\nimport {\n SchedulingResourceComponent,\n LoadSchedulingResource\n} from './KnowledgeHub/components/scheduling/scheduling-resource.component';\nimport {\n AnalyticsResourceComponent,\n LoadAnalyticsResource\n} from './KnowledgeHub/components/analytics/analytics-resource.component';\nimport { ClusteringModule } from '@memberjunction/ng-clustering';\nimport { SchedulingModule } from '@memberjunction/ng-scheduling';\nimport { MJWordCloudComponent } from '@memberjunction/ng-word-cloud';\n\n/**\n * AIDashboardsModule — AI feature area: models, prompts, agents,\n * execution monitoring, system configuration, and instrumentation widgets.\n */\n@NgModule({\n declarations: [\n ModelManagementComponent,\n PromptManagementComponent,\n AgentConfigurationComponent,\n AgentEditorComponent,\n ExecutionMonitoringComponent,\n SystemConfigurationComponent,\n ModelPromptPriorityMatrixComponent,\n PromptVersionControlComponent,\n LiveExecutionWidgetComponent,\n PerformanceHeatmapComponent,\n AgentRequestsResourceComponent,\n AutotaggingPipelineResourceComponent,\n TagsResourceComponent,\n DuplicateDetectionResourceComponent,\n VectorManagementResourceComponent,\n KnowledgeConfigResourceComponent,\n SearchResultDetailComponent,\n ClusterVisualizationResourceComponent,\n SchedulingResourceComponent,\n AnalyticsResourceComponent,\n AIAnalyticsResourceComponent,\n AnalyticsFilterBarComponent,\n AnalyticsExecutiveSummaryComponent,\n AnalyticsPromptRunsComponent,\n AnalyticsAgentRunsComponent,\n AnalyticsModelPerformanceComponent,\n AnalyticsCostBudgetComponent,\n AnalyticsErrorAnalysisComponent,\n AnalyticsUsagePatternsComponent,\n AIOverviewHubComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n AngularSplitModule,\n ContainerDirectivesModule,\n CodeEditorModule,\n SharedGenericModule,\n AgentsModule,\n AgentRequestsModule,\n NgTreesModule,\n SharedDashboardWidgetsModule,\n SharedPipesModule,\n SearchModule,\n MJButtonDirective,\n MJComboboxComponent,\n MJDropdownComponent,\n MJPageHeaderComponent,\n MJPageLayoutComponent,\n MJPageBodyComponent,\n MJPageHeaderInteriorComponent,\n MJPageBodyInteriorComponent,\n MJLeftNavComponent,\n MJLeftNavContentComponent,\n MJFilterPopoverComponent,\n MJPageSearchComponent,\n MJFilterPanelComponent,\n MJFilterFieldComponent,\n MJFilterChipComponent,\n MJTabNavComponent,\n MJViewToggleComponent,\n MJStatBadgeComponent,\n MJRefreshButtonComponent,\n ClusteringModule,\n SchedulingModule,\n MJWordCloudComponent\n ],\n providers: [\n AIInstrumentationService\n ],\n exports: [\n ModelManagementComponent,\n PromptManagementComponent,\n AgentConfigurationComponent,\n ExecutionMonitoringComponent,\n SystemConfigurationComponent,\n LiveExecutionWidgetComponent,\n PerformanceHeatmapComponent,\n AgentRequestsResourceComponent,\n AutotaggingPipelineResourceComponent,\n TagsResourceComponent,\n DuplicateDetectionResourceComponent,\n VectorManagementResourceComponent,\n KnowledgeConfigResourceComponent,\n SearchResultDetailComponent,\n ClusterVisualizationResourceComponent,\n SchedulingResourceComponent,\n AnalyticsResourceComponent,\n AIAnalyticsResourceComponent,\n AnalyticsFilterBarComponent,\n AnalyticsExecutiveSummaryComponent,\n AnalyticsPromptRunsComponent,\n AnalyticsAgentRunsComponent,\n AnalyticsModelPerformanceComponent,\n AnalyticsCostBudgetComponent,\n AnalyticsErrorAnalysisComponent,\n AnalyticsUsagePatternsComponent,\n AIOverviewHubComponent,\n SharedDashboardWidgetsModule\n ]\n})\nexport class AIDashboardsModule {\n constructor() {\n // Ensure tree-shaking prevention loaders are called\n LoadTagsResource();\n LoadClusterVisualizationResource();\n LoadSchedulingResource();\n LoadAnalyticsResource();\n LoadAIAnalyticsResource();\n LoadAnalyticsExecutiveSummary();\n LoadAnalyticsPromptRuns();\n LoadAnalyticsAgentRuns();\n LoadAnalyticsModelPerformance();\n LoadAnalyticsCostBudget();\n LoadAnalyticsErrorAnalysis();\n LoadAnalyticsUsagePatterns();\n LoadAIOverviewHub();\n }\n}\n"]}
@@ -5,19 +5,21 @@ import * as i3 from "./Communication/communication-logs-resource.component";
5
5
  import * as i4 from "./Communication/communication-providers-resource.component";
6
6
  import * as i5 from "./Communication/communication-runs-resource.component";
7
7
  import * as i6 from "./Communication/communication-templates-resource.component";
8
- import * as i7 from "@angular/common";
9
- import * as i8 from "@angular/forms";
10
- import * as i9 from "@memberjunction/ng-container-directives";
11
- import * as i10 from "@memberjunction/ng-shared-generic";
12
- import * as i11 from "./shared/shared-dashboard-widgets.module";
13
- import * as i12 from "@memberjunction/ng-ui-components";
8
+ import * as i7 from "./Communication/communication-new-message-resource.component";
9
+ import * as i8 from "@angular/common";
10
+ import * as i9 from "@angular/forms";
11
+ import * as i10 from "@memberjunction/ng-container-directives";
12
+ import * as i11 from "@memberjunction/ng-shared-generic";
13
+ import * as i12 from "./shared/shared-dashboard-widgets.module";
14
+ import * as i13 from "@memberjunction/ng-list-management";
15
+ import * as i14 from "@memberjunction/ng-ui-components";
14
16
  /**
15
17
  * CommunicationDashboardsModule — Communication feature area: dashboard,
16
18
  * monitor, logs, providers, runs, and templates.
17
19
  */
18
20
  export declare class CommunicationDashboardsModule {
19
21
  static ɵfac: i0.ɵɵFactoryDeclaration<CommunicationDashboardsModule, never>;
20
- static ɵmod: i0.ɵɵNgModuleDeclaration<CommunicationDashboardsModule, [typeof i1.CommunicationDashboardComponent, typeof i2.CommunicationMonitorResourceComponent, typeof i3.CommunicationLogsResourceComponent, typeof i4.CommunicationProvidersResourceComponent, typeof i5.CommunicationRunsResourceComponent, typeof i6.CommunicationTemplatesResourceComponent], [typeof i7.CommonModule, typeof i8.FormsModule, typeof i8.ReactiveFormsModule, typeof i9.ContainerDirectivesModule, typeof i10.SharedGenericModule, typeof i11.SharedDashboardWidgetsModule, typeof i12.MJButtonDirective, typeof i12.MJPageHeaderComponent, typeof i12.MJPageLayoutComponent, typeof i12.MJPageBodyComponent, typeof i12.MJPageSearchComponent, typeof i12.MJFilterChipComponent, typeof i12.MJRefreshButtonComponent], [typeof i1.CommunicationDashboardComponent, typeof i2.CommunicationMonitorResourceComponent, typeof i3.CommunicationLogsResourceComponent, typeof i4.CommunicationProvidersResourceComponent, typeof i5.CommunicationRunsResourceComponent, typeof i6.CommunicationTemplatesResourceComponent]>;
22
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CommunicationDashboardsModule, [typeof i1.CommunicationDashboardComponent, typeof i2.CommunicationMonitorResourceComponent, typeof i3.CommunicationLogsResourceComponent, typeof i4.CommunicationProvidersResourceComponent, typeof i5.CommunicationRunsResourceComponent, typeof i6.CommunicationTemplatesResourceComponent, typeof i7.CommunicationsNewMessageResource], [typeof i8.CommonModule, typeof i9.FormsModule, typeof i9.ReactiveFormsModule, typeof i10.ContainerDirectivesModule, typeof i11.SharedGenericModule, typeof i12.SharedDashboardWidgetsModule, typeof i13.ListManagementModule, typeof i14.MJButtonDirective, typeof i14.MJPageHeaderComponent, typeof i14.MJPageLayoutComponent, typeof i14.MJPageBodyComponent, typeof i14.MJPageSearchComponent, typeof i14.MJFilterChipComponent, typeof i14.MJRefreshButtonComponent], [typeof i1.CommunicationDashboardComponent, typeof i2.CommunicationMonitorResourceComponent, typeof i3.CommunicationLogsResourceComponent, typeof i4.CommunicationProvidersResourceComponent, typeof i5.CommunicationRunsResourceComponent, typeof i6.CommunicationTemplatesResourceComponent, typeof i7.CommunicationsNewMessageResource]>;
21
23
  static ɵinj: i0.ɵɵInjectorDeclaration<CommunicationDashboardsModule>;
22
24
  }
23
25
  //# sourceMappingURL=communication-dashboards.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"communication-dashboards.module.d.ts","sourceRoot":"","sources":["../src/communication-dashboards.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA;;;GAGG;AACH,qBAiCa,6BAA6B;yCAA7B,6BAA6B;0CAA7B,6BAA6B;0CAA7B,6BAA6B;CAAI"}
1
+ {"version":3,"file":"communication-dashboards.module.d.ts","sourceRoot":"","sources":["../src/communication-dashboards.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA;;;GAGG;AACH,qBAoCa,6BAA6B;yCAA7B,6BAA6B;0CAA7B,6BAA6B;0CAA7B,6BAA6B;CAAI"}