@memberjunction/ng-dashboards 5.34.0 → 5.35.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 (348) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -4,540 +4,673 @@ import { map, shareReplay } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../services/testing-instrumentation.service";
6
6
  import * as i2 from "@angular/common";
7
+ import * as i3 from "@memberjunction/ng-ui-components";
7
8
  const _forTrack0 = ($index, $item) => $item.days;
8
9
  const _forTrack1 = ($index, $item) => $item.testName;
9
10
  const _forTrack2 = ($index, $item) => $item.label;
10
11
  const _forTrack3 = ($index, $item) => $item.version;
11
- function TestingAnalyticsComponent_For_9_Template(rf, ctx) { if (rf & 1) {
12
- const _r1 = i0.ɵɵgetCurrentView();
13
- i0.ɵɵelementStart(0, "button", 30);
14
- i0.ɵɵlistener("click", function TestingAnalyticsComponent_For_9_Template_button_click_0_listener() { const range_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeSelect(range_r2.days)); });
15
- i0.ɵɵtext(1);
12
+ function TestingAnalyticsComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementContainer(0);
14
+ } }
15
+ function TestingAnalyticsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵtemplate(0, TestingAnalyticsComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 1);
17
+ } if (rf & 2) {
18
+ i0.ɵɵnextContext();
19
+ const content_r1 = i0.ɵɵreference(3);
20
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
21
+ } }
22
+ function TestingAnalyticsComponent_Conditional_1_For_4_Template(rf, ctx) { if (rf & 1) {
23
+ const _r3 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "mj-filter-chip", 6);
25
+ i0.ɵɵlistener("Clicked", function TestingAnalyticsComponent_Conditional_1_For_4_Template_mj_filter_chip_Clicked_0_listener() { const range_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.OnTimeRangeSelect(range_r4.days)); });
16
26
  i0.ɵɵelementEnd();
17
27
  } if (rf & 2) {
18
- const range_r2 = ctx.$implicit;
19
- const ctx_r2 = i0.ɵɵnextContext();
20
- i0.ɵɵclassProp("active", ctx_r2.SelectedDays === range_r2.days);
21
- i0.ɵɵadvance();
22
- i0.ɵɵtextInterpolate1(" ", range_r2.label, " ");
28
+ const range_r4 = ctx.$implicit;
29
+ const ctx_r4 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵproperty("Label", range_r4.label)("Active", ctx_r4.SelectedDays === range_r4.days);
23
31
  } }
24
- function TestingAnalyticsComponent_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
25
- i0.ɵɵelementStart(0, "div", 28);
26
- i0.ɵɵelement(1, "i", 31);
32
+ function TestingAnalyticsComponent_Conditional_1_ng_container_7_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementContainer(0);
34
+ } }
35
+ function TestingAnalyticsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
36
+ const _r2 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3);
38
+ i0.ɵɵrepeaterCreate(3, TestingAnalyticsComponent_Conditional_1_For_4_Template, 1, 2, "mj-filter-chip", 4, _forTrack0);
39
+ i0.ɵɵelementStart(5, "mj-refresh-button", 5);
40
+ i0.ɵɵlistener("Clicked", function TestingAnalyticsComponent_Conditional_1_Template_mj_refresh_button_Clicked_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.Refresh()); });
41
+ i0.ɵɵelementEnd()()();
42
+ i0.ɵɵelementStart(6, "mj-page-body");
43
+ i0.ɵɵtemplate(7, TestingAnalyticsComponent_Conditional_1_ng_container_7_Template, 1, 0, "ng-container", 1);
44
+ i0.ɵɵelementEnd()();
45
+ } if (rf & 2) {
46
+ const ctx_r4 = i0.ɵɵnextContext();
47
+ const content_r1 = i0.ɵɵreference(3);
48
+ i0.ɵɵadvance(3);
49
+ i0.ɵɵrepeater(ctx_r4.TimeRanges);
50
+ i0.ɵɵadvance(4);
51
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
52
+ } }
53
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "div", 27);
55
+ i0.ɵɵelement(1, "i", 29);
27
56
  i0.ɵɵelementStart(2, "span");
28
57
  i0.ɵɵtext(3, "No trend data");
29
58
  i0.ɵɵelementEnd()();
30
59
  } }
31
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "div", 33)(1, "span", 35);
60
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "div", 31)(1, "span", 33);
33
62
  i0.ɵɵtext(2);
34
63
  i0.ɵɵelementEnd();
35
- i0.ɵɵelementStart(3, "div", 36);
36
- i0.ɵɵelement(4, "div", 37);
64
+ i0.ɵɵelementStart(3, "div", 34);
65
+ i0.ɵɵelement(4, "div", 35);
37
66
  i0.ɵɵelementEnd();
38
- i0.ɵɵelementStart(5, "span", 38);
67
+ i0.ɵɵelementStart(5, "span", 36);
39
68
  i0.ɵɵtext(6);
40
69
  i0.ɵɵpipe(7, "number");
41
70
  i0.ɵɵelementEnd()();
42
71
  } if (rf & 2) {
43
- const t_r4 = ctx.$implicit;
44
- const ctx_r2 = i0.ɵɵnextContext(3);
72
+ const t_r6 = ctx.$implicit;
73
+ const ctx_r4 = i0.ɵɵnextContext(4);
45
74
  i0.ɵɵadvance(2);
46
- i0.ɵɵtextInterpolate(ctx_r2.FormatBucketDate(t_r4.timestamp));
75
+ i0.ɵɵtextInterpolate(ctx_r4.FormatBucketDate(t_r6.timestamp));
47
76
  i0.ɵɵadvance(2);
48
- i0.ɵɵstyleProp("width", ctx_r2.PassRate(t_r4), "%");
77
+ i0.ɵɵstyleProp("width", ctx_r4.PassRate(t_r6), "%");
49
78
  i0.ɵɵadvance();
50
- i0.ɵɵclassMap(ctx_r2.PassRateClass(t_r4));
79
+ i0.ɵɵclassMap(ctx_r4.PassRateClass(t_r6));
51
80
  i0.ɵɵadvance();
52
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 6, ctx_r2.PassRate(t_r4), "1.0-0"), "%");
81
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 6, ctx_r4.PassRate(t_r6), "1.0-0"), "%");
53
82
  } }
54
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelement(0, "i", 39);
56
- i0.ɵɵelementStart(1, "span", 40);
83
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelement(0, "i", 37);
85
+ i0.ɵɵelementStart(1, "span", 38);
57
86
  i0.ɵɵtext(2, "Improving");
58
87
  i0.ɵɵelementEnd();
59
88
  } }
60
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelement(0, "i", 41);
62
- i0.ɵɵelementStart(1, "span", 42);
89
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelement(0, "i", 39);
91
+ i0.ɵɵelementStart(1, "span", 40);
63
92
  i0.ɵɵtext(2, "Declining");
64
93
  i0.ɵɵelementEnd();
65
94
  } }
66
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelement(0, "i", 43);
68
- i0.ɵɵelementStart(1, "span", 44);
95
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelement(0, "i", 41);
97
+ i0.ɵɵelementStart(1, "span", 42);
69
98
  i0.ɵɵtext(2, "Stable");
70
99
  i0.ɵɵelementEnd();
71
100
  } }
72
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_0_Template, 3, 0)(1, TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_1_Template, 3, 0)(2, TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Conditional_2_Template, 3, 0);
101
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_0_Template, 3, 0)(1, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_1_Template, 3, 0)(2, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Conditional_2_Template, 3, 0);
74
103
  } if (rf & 2) {
75
- const dir_r5 = ctx;
76
- i0.ɵɵconditional(dir_r5 === "up" ? 0 : dir_r5 === "down" ? 1 : 2);
104
+ const dir_r7 = ctx;
105
+ i0.ɵɵconditional(dir_r7 === "up" ? 0 : dir_r7 === "down" ? 1 : 2);
77
106
  } }
78
- function TestingAnalyticsComponent_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelementStart(0, "div", 32);
80
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_21_Conditional_1_For_2_Template, 8, 9, "div", 33, i0.ɵɵcomponentInstance().trackTrend, true);
107
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelementStart(0, "div", 30);
109
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_For_2_Template, 8, 9, "div", 31, i0.ɵɵcomponentInstance().trackTrend, true);
81
110
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(3, "div", 34);
83
- i0.ɵɵconditionalCreate(4, TestingAnalyticsComponent_Conditional_21_Conditional_1_Conditional_4_Template, 3, 1);
111
+ i0.ɵɵelementStart(3, "div", 32);
112
+ i0.ɵɵconditionalCreate(4, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Conditional_4_Template, 3, 1);
84
113
  i0.ɵɵpipe(5, "async");
85
114
  i0.ɵɵelementEnd();
86
115
  } if (rf & 2) {
87
- let tmp_4_0;
88
- const trends_r6 = i0.ɵɵnextContext();
89
- const ctx_r2 = i0.ɵɵnextContext();
116
+ let tmp_6_0;
117
+ const trends_r8 = i0.ɵɵnextContext();
118
+ const ctx_r4 = i0.ɵɵnextContext(2);
90
119
  i0.ɵɵadvance();
91
- i0.ɵɵrepeater(trends_r6);
120
+ i0.ɵɵrepeater(trends_r8);
92
121
  i0.ɵɵadvance(3);
93
- i0.ɵɵconditional((tmp_4_0 = i0.ɵɵpipeBind1(5, 1, ctx_r2.PassRateTrendDirection$)) ? 4 : -1, tmp_4_0);
122
+ i0.ɵɵconditional((tmp_6_0 = i0.ɵɵpipeBind1(5, 1, ctx_r4.PassRateTrendDirection$)) ? 4 : -1, tmp_6_0);
94
123
  } }
95
- function TestingAnalyticsComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_21_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_21_Conditional_1_Template, 6, 3);
124
+ function TestingAnalyticsComponent_ng_template_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_9_Conditional_1_Template, 6, 3);
97
126
  } if (rf & 2) {
98
127
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
99
128
  } }
100
- function TestingAnalyticsComponent_Conditional_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
101
- i0.ɵɵelementStart(0, "div", 28);
102
- i0.ɵɵelement(1, "i", 3);
129
+ function TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
130
+ i0.ɵɵelementStart(0, "div", 27);
131
+ i0.ɵɵelement(1, "i", 43);
103
132
  i0.ɵɵelementStart(2, "span");
104
133
  i0.ɵɵtext(3, "No volume data");
105
134
  i0.ɵɵelementEnd()();
106
135
  } }
107
- function TestingAnalyticsComponent_Conditional_27_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵelementStart(0, "div", 33)(1, "span", 35);
136
+ function TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
137
+ i0.ɵɵelementStart(0, "div", 31)(1, "span", 33);
109
138
  i0.ɵɵtext(2);
110
139
  i0.ɵɵelementEnd();
111
- i0.ɵɵelementStart(3, "div", 49);
112
- i0.ɵɵelement(4, "div", 50)(5, "div", 51)(6, "div", 52);
140
+ i0.ɵɵelementStart(3, "div", 48);
141
+ i0.ɵɵelement(4, "div", 49)(5, "div", 50)(6, "div", 51);
113
142
  i0.ɵɵelementEnd();
114
- i0.ɵɵelementStart(7, "span", 38);
143
+ i0.ɵɵelementStart(7, "span", 36);
115
144
  i0.ɵɵtext(8);
116
145
  i0.ɵɵelementEnd()();
117
146
  } if (rf & 2) {
118
- const t_r7 = ctx.$implicit;
119
- const ctx_r2 = i0.ɵɵnextContext(3);
147
+ const t_r9 = ctx.$implicit;
148
+ const ctx_r4 = i0.ɵɵnextContext(4);
120
149
  i0.ɵɵadvance(2);
121
- i0.ɵɵtextInterpolate(ctx_r2.FormatBucketDate(t_r7.timestamp));
150
+ i0.ɵɵtextInterpolate(ctx_r4.FormatBucketDate(t_r9.timestamp));
122
151
  i0.ɵɵadvance(2);
123
- i0.ɵɵstyleProp("width", ctx_r2.SegmentPct(t_r7, "passed"), "%");
152
+ i0.ɵɵstyleProp("width", ctx_r4.SegmentPct(t_r9, "passed"), "%");
124
153
  i0.ɵɵadvance();
125
- i0.ɵɵstyleProp("width", ctx_r2.SegmentPct(t_r7, "failed"), "%");
154
+ i0.ɵɵstyleProp("width", ctx_r4.SegmentPct(t_r9, "failed"), "%");
126
155
  i0.ɵɵadvance();
127
- i0.ɵɵstyleProp("width", ctx_r2.SegmentPct(t_r7, "skipped"), "%");
156
+ i0.ɵɵstyleProp("width", ctx_r4.SegmentPct(t_r9, "skipped"), "%");
128
157
  i0.ɵɵadvance(2);
129
- i0.ɵɵtextInterpolate(t_r7.totalRuns);
158
+ i0.ɵɵtextInterpolate(t_r9.totalRuns);
130
159
  } }
131
- function TestingAnalyticsComponent_Conditional_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
132
- i0.ɵɵelementStart(0, "div", 32);
133
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_27_Conditional_1_For_2_Template, 9, 8, "div", 33, i0.ɵɵcomponentInstance().trackTrend, true);
160
+ function TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
161
+ i0.ɵɵelementStart(0, "div", 30);
162
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_1_For_2_Template, 9, 8, "div", 31, i0.ɵɵcomponentInstance().trackTrend, true);
134
163
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(3, "div", 45);
136
- i0.ɵɵelement(4, "span", 46);
164
+ i0.ɵɵelementStart(3, "div", 44);
165
+ i0.ɵɵelement(4, "span", 45);
137
166
  i0.ɵɵtext(5, " Passed ");
138
- i0.ɵɵelement(6, "span", 47);
167
+ i0.ɵɵelement(6, "span", 46);
139
168
  i0.ɵɵtext(7, " Failed ");
140
- i0.ɵɵelement(8, "span", 48);
169
+ i0.ɵɵelement(8, "span", 47);
141
170
  i0.ɵɵtext(9, " Skipped ");
142
171
  i0.ɵɵelementEnd();
143
172
  } if (rf & 2) {
144
- const trends_r8 = i0.ɵɵnextContext();
173
+ const trends_r10 = i0.ɵɵnextContext();
145
174
  i0.ɵɵadvance();
146
- i0.ɵɵrepeater(trends_r8);
175
+ i0.ɵɵrepeater(trends_r10);
147
176
  } }
148
- function TestingAnalyticsComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_27_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_27_Conditional_1_Template, 10, 0);
177
+ function TestingAnalyticsComponent_ng_template_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_15_Conditional_1_Template, 10, 0);
150
179
  } if (rf & 2) {
151
180
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
152
181
  } }
153
- function TestingAnalyticsComponent_Conditional_33_Conditional_0_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelementStart(0, "div", 28);
155
- i0.ɵɵelement(1, "i", 53);
182
+ function TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
183
+ i0.ɵɵelementStart(0, "div", 27);
184
+ i0.ɵɵelement(1, "i", 52);
156
185
  i0.ɵɵelementStart(2, "span");
157
186
  i0.ɵɵtext(3, "No score data");
158
187
  i0.ɵɵelementEnd()();
159
188
  } }
160
- function TestingAnalyticsComponent_Conditional_33_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
161
- i0.ɵɵelementStart(0, "div", 33)(1, "span", 35);
189
+ function TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵelementStart(0, "div", 31)(1, "span", 33);
162
191
  i0.ɵɵtext(2);
163
192
  i0.ɵɵelementEnd();
164
- i0.ɵɵelementStart(3, "div", 36);
165
- i0.ɵɵelement(4, "div", 54);
193
+ i0.ɵɵelementStart(3, "div", 34);
194
+ i0.ɵɵelement(4, "div", 53);
166
195
  i0.ɵɵelementEnd();
167
- i0.ɵɵelementStart(5, "span", 38);
196
+ i0.ɵɵelementStart(5, "span", 36);
168
197
  i0.ɵɵtext(6);
169
198
  i0.ɵɵpipe(7, "number");
170
199
  i0.ɵɵelementEnd()();
171
200
  } if (rf & 2) {
172
- const t_r9 = ctx.$implicit;
173
- const ctx_r2 = i0.ɵɵnextContext(3);
201
+ const t_r11 = ctx.$implicit;
202
+ const ctx_r4 = i0.ɵɵnextContext(4);
174
203
  i0.ɵɵadvance(2);
175
- i0.ɵɵtextInterpolate(ctx_r2.FormatBucketDate(t_r9.timestamp));
204
+ i0.ɵɵtextInterpolate(ctx_r4.FormatBucketDate(t_r11.timestamp));
176
205
  i0.ɵɵadvance(2);
177
- i0.ɵɵclassMap(ctx_r2.ScoreBarClass(t_r9.averageScore));
178
- i0.ɵɵstyleProp("width", t_r9.averageScore * 100, "%");
206
+ i0.ɵɵclassMap(ctx_r4.ScoreBarClass(t_r11.averageScore));
207
+ i0.ɵɵstyleProp("width", t_r11.averageScore * 100, "%");
179
208
  i0.ɵɵadvance();
180
- i0.ɵɵclassMap(ctx_r2.ScoreTextClass(t_r9.averageScore));
209
+ i0.ɵɵclassMap(ctx_r4.ScoreTextClass(t_r11.averageScore));
181
210
  i0.ɵɵadvance();
182
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 8, t_r9.averageScore * 100, "1.0-0"), "%");
211
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 8, t_r11.averageScore * 100, "1.0-0"), "%");
183
212
  } }
184
- function TestingAnalyticsComponent_Conditional_33_Conditional_1_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵelementStart(0, "div", 32);
186
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_33_Conditional_1_For_2_Template, 8, 11, "div", 33, i0.ɵɵcomponentInstance().trackTrend, true);
213
+ function TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵelementStart(0, "div", 30);
215
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_1_For_2_Template, 8, 11, "div", 31, i0.ɵɵcomponentInstance().trackTrend, true);
187
216
  i0.ɵɵelementEnd();
188
217
  } if (rf & 2) {
189
- const trends_r10 = i0.ɵɵnextContext();
218
+ const trends_r12 = i0.ɵɵnextContext();
190
219
  i0.ɵɵadvance();
191
- i0.ɵɵrepeater(trends_r10);
220
+ i0.ɵɵrepeater(trends_r12);
192
221
  } }
193
- function TestingAnalyticsComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_33_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_33_Conditional_1_Template, 3, 0, "div", 32);
222
+ function TestingAnalyticsComponent_ng_template_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_21_Conditional_1_Template, 3, 0, "div", 30);
195
224
  } if (rf & 2) {
196
225
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
197
226
  } }
198
- function TestingAnalyticsComponent_Conditional_39_Conditional_0_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵelementStart(0, "div", 28);
200
- i0.ɵɵelement(1, "i", 55);
227
+ function TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
228
+ i0.ɵɵelementStart(0, "div", 27);
229
+ i0.ɵɵelement(1, "i", 54);
201
230
  i0.ɵɵelementStart(2, "span");
202
231
  i0.ɵɵtext(3, "No cost data");
203
232
  i0.ɵɵelementEnd()();
204
233
  } }
205
- function TestingAnalyticsComponent_Conditional_39_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
206
- i0.ɵɵelementStart(0, "div", 33)(1, "span", 35);
234
+ function TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
235
+ i0.ɵɵelementStart(0, "div", 31)(1, "span", 33);
207
236
  i0.ɵɵtext(2);
208
237
  i0.ɵɵelementEnd();
209
- i0.ɵɵelementStart(3, "div", 36);
210
- i0.ɵɵelement(4, "div", 56);
238
+ i0.ɵɵelementStart(3, "div", 34);
239
+ i0.ɵɵelement(4, "div", 55);
211
240
  i0.ɵɵelementEnd();
212
- i0.ɵɵelementStart(5, "span", 38);
241
+ i0.ɵɵelementStart(5, "span", 36);
213
242
  i0.ɵɵtext(6);
214
243
  i0.ɵɵpipe(7, "number");
215
244
  i0.ɵɵelementEnd()();
216
245
  } if (rf & 2) {
217
- const t_r11 = ctx.$implicit;
218
- const trends_r12 = i0.ɵɵnextContext(2);
219
- const ctx_r2 = i0.ɵɵnextContext();
246
+ const t_r13 = ctx.$implicit;
247
+ const trends_r14 = i0.ɵɵnextContext(2);
248
+ const ctx_r4 = i0.ɵɵnextContext(2);
220
249
  i0.ɵɵadvance(2);
221
- i0.ɵɵtextInterpolate(ctx_r2.FormatBucketDate(t_r11.timestamp));
250
+ i0.ɵɵtextInterpolate(ctx_r4.FormatBucketDate(t_r13.timestamp));
222
251
  i0.ɵɵadvance(2);
223
- i0.ɵɵstyleProp("width", ctx_r2.CostBarPct(t_r11, trends_r12), "%");
252
+ i0.ɵɵstyleProp("width", ctx_r4.CostBarPct(t_r13, trends_r14), "%");
224
253
  i0.ɵɵadvance(2);
225
- i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(7, 4, t_r11.totalCost, "1.2-2"));
254
+ i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(7, 4, t_r13.totalCost, "1.2-2"));
226
255
  } }
227
- function TestingAnalyticsComponent_Conditional_39_Conditional_1_Template(rf, ctx) { if (rf & 1) {
228
- i0.ɵɵelementStart(0, "div", 32);
229
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_39_Conditional_1_For_2_Template, 8, 7, "div", 33, i0.ɵɵcomponentInstance().trackTrend, true);
256
+ function TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
257
+ i0.ɵɵelementStart(0, "div", 30);
258
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_1_For_2_Template, 8, 7, "div", 31, i0.ɵɵcomponentInstance().trackTrend, true);
230
259
  i0.ɵɵelementEnd();
231
260
  } if (rf & 2) {
232
- const trends_r12 = i0.ɵɵnextContext();
261
+ const trends_r14 = i0.ɵɵnextContext();
233
262
  i0.ɵɵadvance();
234
- i0.ɵɵrepeater(trends_r12);
263
+ i0.ɵɵrepeater(trends_r14);
235
264
  } }
236
- function TestingAnalyticsComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
237
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_39_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_39_Conditional_1_Template, 3, 0, "div", 32);
265
+ function TestingAnalyticsComponent_ng_template_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
266
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_27_Conditional_1_Template, 3, 0, "div", 30);
238
267
  } if (rf & 2) {
239
268
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
240
269
  } }
241
- function TestingAnalyticsComponent_Conditional_49_Conditional_0_Template(rf, ctx) { if (rf & 1) {
242
- i0.ɵɵelementStart(0, "div", 28);
243
- i0.ɵɵelement(1, "i", 58);
270
+ function TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_0_Template(rf, ctx) { if (rf & 1) {
271
+ i0.ɵɵelementStart(0, "div", 27);
272
+ i0.ɵɵelement(1, "i", 57);
244
273
  i0.ɵɵelementStart(2, "span");
245
274
  i0.ɵɵtext(3, "No failing tests");
246
275
  i0.ɵɵelementEnd()();
247
276
  } }
248
- function TestingAnalyticsComponent_Conditional_49_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
249
- i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
277
+ function TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
278
+ i0.ɵɵelementStart(0, "div", 58)(1, "span", 59);
250
279
  i0.ɵɵtext(2);
251
280
  i0.ɵɵelementEnd();
252
- i0.ɵɵelementStart(3, "span", 61);
281
+ i0.ɵɵelementStart(3, "span", 60);
253
282
  i0.ɵɵtext(4);
254
283
  i0.ɵɵelementEnd();
255
- i0.ɵɵelementStart(5, "span", 62);
284
+ i0.ɵɵelementStart(5, "span", 61);
256
285
  i0.ɵɵtext(6);
257
286
  i0.ɵɵpipe(7, "number");
258
287
  i0.ɵɵelementEnd()();
259
288
  } if (rf & 2) {
260
- const t_r13 = ctx.$implicit;
289
+ const t_r15 = ctx.$implicit;
261
290
  i0.ɵɵadvance();
262
- i0.ɵɵproperty("title", t_r13.testName);
291
+ i0.ɵɵproperty("title", t_r15.testName);
263
292
  i0.ɵɵadvance();
264
- i0.ɵɵtextInterpolate(t_r13.testName);
293
+ i0.ɵɵtextInterpolate(t_r15.testName);
265
294
  i0.ɵɵadvance(2);
266
- i0.ɵɵtextInterpolate(t_r13.failureCount);
295
+ i0.ɵɵtextInterpolate(t_r15.failureCount);
267
296
  i0.ɵɵadvance(2);
268
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 4, t_r13.failureRate, "1.0-1"), "%");
297
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(7, 4, t_r15.failureRate, "1.0-1"), "%");
269
298
  } }
270
- function TestingAnalyticsComponent_Conditional_49_Conditional_1_Template(rf, ctx) { if (rf & 1) {
271
- i0.ɵɵelementStart(0, "div", 57);
272
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_49_Conditional_1_For_2_Template, 8, 7, "div", 59, _forTrack1);
299
+ function TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_1_Template(rf, ctx) { if (rf & 1) {
300
+ i0.ɵɵelementStart(0, "div", 56);
301
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_1_For_2_Template, 8, 7, "div", 58, _forTrack1);
273
302
  i0.ɵɵelementEnd();
274
303
  } if (rf & 2) {
275
- const tests_r14 = i0.ɵɵnextContext();
304
+ const tests_r16 = i0.ɵɵnextContext();
276
305
  i0.ɵɵadvance();
277
- i0.ɵɵrepeater(tests_r14);
306
+ i0.ɵɵrepeater(tests_r16);
278
307
  } }
279
- function TestingAnalyticsComponent_Conditional_49_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_49_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_49_Conditional_1_Template, 3, 0, "div", 57);
308
+ function TestingAnalyticsComponent_ng_template_2_Conditional_37_Template(rf, ctx) { if (rf & 1) {
309
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_37_Conditional_1_Template, 3, 0, "div", 56);
281
310
  } if (rf & 2) {
282
311
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
283
312
  } }
284
- function TestingAnalyticsComponent_Conditional_55_Conditional_0_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵelementStart(0, "div", 28);
286
- i0.ɵɵelement(1, "i", 63);
313
+ function TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_0_Template(rf, ctx) { if (rf & 1) {
314
+ i0.ɵɵelementStart(0, "div", 27);
315
+ i0.ɵɵelement(1, "i", 62);
287
316
  i0.ɵɵelementStart(2, "span");
288
317
  i0.ɵɵtext(3, "No duration data");
289
318
  i0.ɵɵelementEnd()();
290
319
  } }
291
- function TestingAnalyticsComponent_Conditional_55_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
320
+ function TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
321
+ i0.ɵɵelementStart(0, "div", 58)(1, "span", 59);
293
322
  i0.ɵɵtext(2);
294
323
  i0.ɵɵelementEnd();
295
- i0.ɵɵelementStart(3, "span", 64);
324
+ i0.ɵɵelementStart(3, "span", 63);
296
325
  i0.ɵɵtext(4);
297
326
  i0.ɵɵelementEnd();
298
- i0.ɵɵelementStart(5, "span", 62);
327
+ i0.ɵɵelementStart(5, "span", 61);
299
328
  i0.ɵɵtext(6);
300
329
  i0.ɵɵelementEnd()();
301
330
  } if (rf & 2) {
302
- const t_r15 = ctx.$implicit;
303
- const ctx_r2 = i0.ɵɵnextContext(3);
331
+ const t_r17 = ctx.$implicit;
332
+ const ctx_r4 = i0.ɵɵnextContext(4);
304
333
  i0.ɵɵadvance();
305
- i0.ɵɵproperty("title", t_r15.testName);
334
+ i0.ɵɵproperty("title", t_r17.testName);
306
335
  i0.ɵɵadvance();
307
- i0.ɵɵtextInterpolate(t_r15.testName);
336
+ i0.ɵɵtextInterpolate(t_r17.testName);
308
337
  i0.ɵɵadvance(2);
309
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(t_r15.avgDuration));
338
+ i0.ɵɵtextInterpolate(ctx_r4.FormatDuration(t_r17.avgDuration));
310
339
  i0.ɵɵadvance(2);
311
- i0.ɵɵtextInterpolate1("max ", ctx_r2.FormatDuration(t_r15.maxDuration));
340
+ i0.ɵɵtextInterpolate1("max ", ctx_r4.FormatDuration(t_r17.maxDuration));
312
341
  } }
313
- function TestingAnalyticsComponent_Conditional_55_Conditional_1_Template(rf, ctx) { if (rf & 1) {
314
- i0.ɵɵelementStart(0, "div", 57);
315
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_55_Conditional_1_For_2_Template, 7, 4, "div", 59, _forTrack1);
342
+ function TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_1_Template(rf, ctx) { if (rf & 1) {
343
+ i0.ɵɵelementStart(0, "div", 56);
344
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_1_For_2_Template, 7, 4, "div", 58, _forTrack1);
316
345
  i0.ɵɵelementEnd();
317
346
  } if (rf & 2) {
318
- const tests_r16 = i0.ɵɵnextContext();
347
+ const tests_r18 = i0.ɵɵnextContext();
319
348
  i0.ɵɵadvance();
320
- i0.ɵɵrepeater(tests_r16);
349
+ i0.ɵɵrepeater(tests_r18);
321
350
  } }
322
- function TestingAnalyticsComponent_Conditional_55_Template(rf, ctx) { if (rf & 1) {
323
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_55_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_55_Conditional_1_Template, 3, 0, "div", 57);
351
+ function TestingAnalyticsComponent_ng_template_2_Conditional_43_Template(rf, ctx) { if (rf & 1) {
352
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_43_Conditional_1_Template, 3, 0, "div", 56);
324
353
  } if (rf & 2) {
325
354
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
326
355
  } }
327
- function TestingAnalyticsComponent_Conditional_61_Conditional_0_Template(rf, ctx) { if (rf & 1) {
328
- i0.ɵɵelementStart(0, "div", 28);
329
- i0.ɵɵelement(1, "i", 16);
356
+ function TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_0_Template(rf, ctx) { if (rf & 1) {
357
+ i0.ɵɵelementStart(0, "div", 27);
358
+ i0.ɵɵelement(1, "i", 15);
330
359
  i0.ɵɵelementStart(2, "span");
331
360
  i0.ɵɵtext(3, "No cost data");
332
361
  i0.ɵɵelementEnd()();
333
362
  } }
334
- function TestingAnalyticsComponent_Conditional_61_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
335
- i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
363
+ function TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
364
+ i0.ɵɵelementStart(0, "div", 58)(1, "span", 59);
336
365
  i0.ɵɵtext(2);
337
366
  i0.ɵɵelementEnd();
338
- i0.ɵɵelementStart(3, "span", 64);
367
+ i0.ɵɵelementStart(3, "span", 63);
339
368
  i0.ɵɵtext(4);
340
369
  i0.ɵɵpipe(5, "number");
341
370
  i0.ɵɵelementEnd();
342
- i0.ɵɵelementStart(6, "span", 62);
371
+ i0.ɵɵelementStart(6, "span", 61);
343
372
  i0.ɵɵtext(7);
344
373
  i0.ɵɵpipe(8, "number");
345
374
  i0.ɵɵelementEnd()();
346
375
  } if (rf & 2) {
347
- const t_r17 = ctx.$implicit;
376
+ const t_r19 = ctx.$implicit;
348
377
  i0.ɵɵadvance();
349
- i0.ɵɵproperty("title", t_r17.testName);
378
+ i0.ɵɵproperty("title", t_r19.testName);
350
379
  i0.ɵɵadvance();
351
- i0.ɵɵtextInterpolate(t_r17.testName);
380
+ i0.ɵɵtextInterpolate(t_r19.testName);
352
381
  i0.ɵɵadvance(2);
353
- i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(5, 4, t_r17.totalCost, "1.2-2"));
382
+ i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(5, 4, t_r19.totalCost, "1.2-2"));
354
383
  i0.ɵɵadvance(3);
355
- i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(8, 7, t_r17.avgCost, "1.4-4"), "/run");
384
+ i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(8, 7, t_r19.avgCost, "1.4-4"), "/run");
356
385
  } }
357
- function TestingAnalyticsComponent_Conditional_61_Conditional_1_Template(rf, ctx) { if (rf & 1) {
358
- i0.ɵɵelementStart(0, "div", 57);
359
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_61_Conditional_1_For_2_Template, 9, 10, "div", 59, _forTrack1);
386
+ function TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_1_Template(rf, ctx) { if (rf & 1) {
387
+ i0.ɵɵelementStart(0, "div", 56);
388
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_1_For_2_Template, 9, 10, "div", 58, _forTrack1);
360
389
  i0.ɵɵelementEnd();
361
390
  } if (rf & 2) {
362
- const tests_r18 = i0.ɵɵnextContext();
391
+ const tests_r20 = i0.ɵɵnextContext();
363
392
  i0.ɵɵadvance();
364
- i0.ɵɵrepeater(tests_r18);
393
+ i0.ɵɵrepeater(tests_r20);
365
394
  } }
366
- function TestingAnalyticsComponent_Conditional_61_Template(rf, ctx) { if (rf & 1) {
367
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_61_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_61_Conditional_1_Template, 3, 0, "div", 57);
395
+ function TestingAnalyticsComponent_ng_template_2_Conditional_49_Template(rf, ctx) { if (rf & 1) {
396
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_49_Conditional_1_Template, 3, 0, "div", 56);
368
397
  } if (rf & 2) {
369
398
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
370
399
  } }
371
- function TestingAnalyticsComponent_Conditional_67_Conditional_0_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵelementStart(0, "div", 28);
373
- i0.ɵɵelement(1, "i", 66);
400
+ function TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_0_Template(rf, ctx) { if (rf & 1) {
401
+ i0.ɵɵelementStart(0, "div", 27);
402
+ i0.ɵɵelement(1, "i", 65);
374
403
  i0.ɵɵelementStart(2, "span");
375
404
  i0.ɵɵtext(3, "No score data available");
376
405
  i0.ɵɵelementEnd()();
377
406
  } }
378
- function TestingAnalyticsComponent_Conditional_67_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
379
- i0.ɵɵelementStart(0, "div", 67)(1, "span", 68);
407
+ function TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
408
+ i0.ɵɵelementStart(0, "div", 66)(1, "span", 67);
380
409
  i0.ɵɵtext(2);
381
410
  i0.ɵɵelementEnd();
382
- i0.ɵɵelementStart(3, "div", 69);
383
- i0.ɵɵelement(4, "div", 70);
411
+ i0.ɵɵelementStart(3, "div", 68);
412
+ i0.ɵɵelement(4, "div", 69);
384
413
  i0.ɵɵelementEnd();
385
- i0.ɵɵelementStart(5, "span", 71);
414
+ i0.ɵɵelementStart(5, "span", 70);
386
415
  i0.ɵɵtext(6);
387
416
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(7, "span", 72);
417
+ i0.ɵɵelementStart(7, "span", 71);
389
418
  i0.ɵɵtext(8);
390
419
  i0.ɵɵpipe(9, "number");
391
420
  i0.ɵɵelementEnd()();
392
421
  } if (rf & 2) {
393
- const b_r19 = ctx.$implicit;
422
+ const b_r21 = ctx.$implicit;
394
423
  i0.ɵɵadvance(2);
395
- i0.ɵɵtextInterpolate(b_r19.label);
424
+ i0.ɵɵtextInterpolate(b_r21.label);
396
425
  i0.ɵɵadvance(2);
397
- i0.ɵɵstyleProp("width", b_r19.percentage, "%")("background", b_r19.color);
426
+ i0.ɵɵstyleProp("width", b_r21.percentage, "%")("background", b_r21.color);
398
427
  i0.ɵɵadvance(2);
399
- i0.ɵɵtextInterpolate(b_r19.count);
428
+ i0.ɵɵtextInterpolate(b_r21.count);
400
429
  i0.ɵɵadvance(2);
401
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(9, 7, b_r19.percentage, "1.0-1"), "%");
430
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(9, 7, b_r21.percentage, "1.0-1"), "%");
402
431
  } }
403
- function TestingAnalyticsComponent_Conditional_67_Conditional_1_Template(rf, ctx) { if (rf & 1) {
404
- i0.ɵɵelementStart(0, "div", 65);
405
- i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_Conditional_67_Conditional_1_For_2_Template, 10, 10, "div", 67, _forTrack2);
432
+ function TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_1_Template(rf, ctx) { if (rf & 1) {
433
+ i0.ɵɵelementStart(0, "div", 64);
434
+ i0.ɵɵrepeaterCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_1_For_2_Template, 10, 10, "div", 66, _forTrack2);
406
435
  i0.ɵɵelementEnd();
407
436
  } if (rf & 2) {
408
- const buckets_r20 = i0.ɵɵnextContext();
437
+ const buckets_r22 = i0.ɵɵnextContext();
409
438
  i0.ɵɵadvance();
410
- i0.ɵɵrepeater(buckets_r20);
439
+ i0.ɵɵrepeater(buckets_r22);
411
440
  } }
412
- function TestingAnalyticsComponent_Conditional_67_Template(rf, ctx) { if (rf & 1) {
413
- i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_67_Conditional_0_Template, 4, 0, "div", 28)(1, TestingAnalyticsComponent_Conditional_67_Conditional_1_Template, 3, 0, "div", 65);
441
+ function TestingAnalyticsComponent_ng_template_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_0_Template, 4, 0, "div", 27)(1, TestingAnalyticsComponent_ng_template_2_Conditional_55_Conditional_1_Template, 3, 0, "div", 64);
414
443
  } if (rf & 2) {
415
444
  i0.ɵɵconditional(ctx.length === 0 ? 0 : 1);
416
445
  } }
417
- function TestingAnalyticsComponent_Conditional_75_Template(rf, ctx) { if (rf & 1) {
418
- i0.ɵɵelementStart(0, "div", 28);
419
- i0.ɵɵelement(1, "i", 73);
446
+ function TestingAnalyticsComponent_ng_template_2_Conditional_63_Template(rf, ctx) { if (rf & 1) {
447
+ i0.ɵɵelementStart(0, "div", 27);
448
+ i0.ɵɵelement(1, "i", 72);
420
449
  i0.ɵɵelementStart(2, "span");
421
450
  i0.ɵɵtext(3, "Loading versions...");
422
451
  i0.ɵɵelementEnd()();
423
452
  } }
424
- function TestingAnalyticsComponent_Conditional_76_Template(rf, ctx) { if (rf & 1) {
425
- i0.ɵɵelementStart(0, "div", 28);
426
- i0.ɵɵelement(1, "i", 74);
453
+ function TestingAnalyticsComponent_ng_template_2_Conditional_64_Template(rf, ctx) { if (rf & 1) {
454
+ i0.ɵɵelementStart(0, "div", 27);
455
+ i0.ɵɵelement(1, "i", 73);
427
456
  i0.ɵɵelementStart(2, "span");
428
457
  i0.ɵɵtext(3, "No version data available");
429
458
  i0.ɵɵelementEnd()();
430
459
  } }
431
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
432
- i0.ɵɵelement(0, "i", 81);
460
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
461
+ i0.ɵɵelement(0, "i", 80);
433
462
  } }
434
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
435
- i0.ɵɵelement(0, "i", 82);
463
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
464
+ i0.ɵɵelement(0, "i", 81);
436
465
  } }
437
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
438
- i0.ɵɵelementStart(0, "span", 80);
439
- i0.ɵɵconditionalCreate(1, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Conditional_1_Template, 1, 0, "i", 81)(2, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Conditional_2_Template, 1, 0, "i", 82);
466
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
467
+ i0.ɵɵelementStart(0, "span", 79);
468
+ i0.ɵɵconditionalCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Conditional_1_Template, 1, 0, "i", 80)(2, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Conditional_2_Template, 1, 0, "i", 81);
440
469
  i0.ɵɵtext(3);
441
470
  i0.ɵɵpipe(4, "number");
442
471
  i0.ɵɵelementEnd();
443
472
  } if (rf & 2) {
444
- const row_r21 = i0.ɵɵnextContext().$implicit;
445
- const ctx_r2 = i0.ɵɵnextContext(2);
446
- i0.ɵɵclassProp("delta-up", row_r21.passRateDelta > 0)("delta-down", row_r21.passRateDelta < 0)("delta-neutral", row_r21.passRateDelta === 0);
473
+ const row_r23 = i0.ɵɵnextContext().$implicit;
474
+ const ctx_r4 = i0.ɵɵnextContext(3);
475
+ i0.ɵɵclassProp("delta-up", row_r23.passRateDelta > 0)("delta-down", row_r23.passRateDelta < 0)("delta-neutral", row_r23.passRateDelta === 0);
447
476
  i0.ɵɵadvance();
448
- i0.ɵɵconditional(row_r21.passRateDelta > 0 ? 1 : row_r21.passRateDelta < 0 ? 2 : -1);
477
+ i0.ɵɵconditional(row_r23.passRateDelta > 0 ? 1 : row_r23.passRateDelta < 0 ? 2 : -1);
449
478
  i0.ɵɵadvance(2);
450
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 8, ctx_r2.AbsNum(row_r21.passRateDelta), "1.1-1"), "% ");
479
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 8, ctx_r4.AbsNum(row_r23.passRateDelta), "1.1-1"), "% ");
451
480
  } }
452
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
453
- i0.ɵɵelement(0, "i", 81);
481
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
482
+ i0.ɵɵelement(0, "i", 80);
454
483
  } }
455
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
456
- i0.ɵɵelement(0, "i", 82);
484
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
485
+ i0.ɵɵelement(0, "i", 81);
457
486
  } }
458
- function TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Template(rf, ctx) { if (rf & 1) {
459
- i0.ɵɵelementStart(0, "span", 80);
460
- i0.ɵɵconditionalCreate(1, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Conditional_1_Template, 1, 0, "i", 81)(2, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Conditional_2_Template, 1, 0, "i", 82);
487
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Template(rf, ctx) { if (rf & 1) {
488
+ i0.ɵɵelementStart(0, "span", 79);
489
+ i0.ɵɵconditionalCreate(1, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Conditional_1_Template, 1, 0, "i", 80)(2, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Conditional_2_Template, 1, 0, "i", 81);
461
490
  i0.ɵɵtext(3);
462
491
  i0.ɵɵpipe(4, "number");
463
492
  i0.ɵɵelementEnd();
464
493
  } if (rf & 2) {
465
- const row_r21 = i0.ɵɵnextContext().$implicit;
466
- const ctx_r2 = i0.ɵɵnextContext(2);
467
- i0.ɵɵclassProp("delta-up", row_r21.costDelta < 0)("delta-down", row_r21.costDelta > 0)("delta-neutral", row_r21.costDelta === 0);
494
+ const row_r23 = i0.ɵɵnextContext().$implicit;
495
+ const ctx_r4 = i0.ɵɵnextContext(3);
496
+ i0.ɵɵclassProp("delta-up", row_r23.costDelta < 0)("delta-down", row_r23.costDelta > 0)("delta-neutral", row_r23.costDelta === 0);
468
497
  i0.ɵɵadvance();
469
- i0.ɵɵconditional(row_r21.costDelta > 0 ? 1 : row_r21.costDelta < 0 ? 2 : -1);
498
+ i0.ɵɵconditional(row_r23.costDelta > 0 ? 1 : row_r23.costDelta < 0 ? 2 : -1);
470
499
  i0.ɵɵadvance(2);
471
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 8, ctx_r2.AbsNum(row_r21.costDelta), "1.1-1"), "% ");
500
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 8, ctx_r4.AbsNum(row_r23.costDelta), "1.1-1"), "% ");
472
501
  } }
473
- function TestingAnalyticsComponent_Conditional_77_For_16_Template(rf, ctx) { if (rf & 1) {
474
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 77);
502
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Template(rf, ctx) { if (rf & 1) {
503
+ i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 76);
475
504
  i0.ɵɵtext(3);
476
505
  i0.ɵɵelementEnd();
477
- i0.ɵɵelementStart(4, "span", 78);
506
+ i0.ɵɵelementStart(4, "span", 77);
478
507
  i0.ɵɵtext(5);
479
508
  i0.ɵɵelementEnd()();
480
509
  i0.ɵɵelementStart(6, "td");
481
510
  i0.ɵɵtext(7);
482
511
  i0.ɵɵpipe(8, "date");
483
512
  i0.ɵɵelementEnd();
484
- i0.ɵɵelementStart(9, "td", 76);
513
+ i0.ɵɵelementStart(9, "td", 75);
485
514
  i0.ɵɵtext(10);
486
515
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(11, "td", 76)(12, "span");
516
+ i0.ɵɵelementStart(11, "td", 75)(12, "span");
488
517
  i0.ɵɵtext(13);
489
518
  i0.ɵɵpipe(14, "number");
490
519
  i0.ɵɵelementEnd();
491
- i0.ɵɵconditionalCreate(15, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_15_Template, 5, 11, "span", 79);
520
+ i0.ɵɵconditionalCreate(15, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_15_Template, 5, 11, "span", 78);
492
521
  i0.ɵɵelementEnd();
493
- i0.ɵɵelementStart(16, "td", 76)(17, "span");
522
+ i0.ɵɵelementStart(16, "td", 75)(17, "span");
494
523
  i0.ɵɵtext(18);
495
524
  i0.ɵɵpipe(19, "number");
496
525
  i0.ɵɵelementEnd();
497
- i0.ɵɵconditionalCreate(20, TestingAnalyticsComponent_Conditional_77_For_16_Conditional_20_Template, 5, 11, "span", 79);
526
+ i0.ɵɵconditionalCreate(20, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Conditional_20_Template, 5, 11, "span", 78);
498
527
  i0.ɵɵelementEnd()();
499
528
  } if (rf & 2) {
500
- const row_r21 = ctx.$implicit;
529
+ const row_r23 = ctx.$implicit;
501
530
  i0.ɵɵadvance(3);
502
- i0.ɵɵtextInterpolate(row_r21.gitCommitShort);
531
+ i0.ɵɵtextInterpolate(row_r23.gitCommitShort);
503
532
  i0.ɵɵadvance(2);
504
- i0.ɵɵtextInterpolate(row_r21.agentVersion);
533
+ i0.ɵɵtextInterpolate(row_r23.agentVersion);
505
534
  i0.ɵɵadvance(2);
506
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 8, row_r21.date, "mediumDate"));
535
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 8, row_r23.date, "mediumDate"));
507
536
  i0.ɵɵadvance(3);
508
- i0.ɵɵtextInterpolate(row_r21.totalTests);
537
+ i0.ɵɵtextInterpolate(row_r23.totalTests);
509
538
  i0.ɵɵadvance(3);
510
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(14, 11, row_r21.passRate, "1.1-1"), "%");
539
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(14, 11, row_r23.passRate, "1.1-1"), "%");
511
540
  i0.ɵɵadvance(2);
512
- i0.ɵɵconditional(row_r21.passRateDelta !== null ? 15 : -1);
541
+ i0.ɵɵconditional(row_r23.passRateDelta !== null ? 15 : -1);
513
542
  i0.ɵɵadvance(3);
514
- i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(19, 14, row_r21.totalCost, "1.2-2"));
543
+ i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(19, 14, row_r23.totalCost, "1.2-2"));
515
544
  i0.ɵɵadvance(2);
516
- i0.ɵɵconditional(row_r21.costDelta !== null ? 20 : -1);
545
+ i0.ɵɵconditional(row_r23.costDelta !== null ? 20 : -1);
517
546
  } }
518
- function TestingAnalyticsComponent_Conditional_77_Template(rf, ctx) { if (rf & 1) {
519
- i0.ɵɵelementStart(0, "div", 29)(1, "table", 75)(2, "thead")(3, "tr")(4, "th");
547
+ function TestingAnalyticsComponent_ng_template_2_Conditional_65_Template(rf, ctx) { if (rf & 1) {
548
+ i0.ɵɵelementStart(0, "div", 28)(1, "table", 74)(2, "thead")(3, "tr")(4, "th");
520
549
  i0.ɵɵtext(5, "Version");
521
550
  i0.ɵɵelementEnd();
522
551
  i0.ɵɵelementStart(6, "th");
523
552
  i0.ɵɵtext(7, "Date");
524
553
  i0.ɵɵelementEnd();
525
- i0.ɵɵelementStart(8, "th", 76);
554
+ i0.ɵɵelementStart(8, "th", 75);
526
555
  i0.ɵɵtext(9, "Tests");
527
556
  i0.ɵɵelementEnd();
528
- i0.ɵɵelementStart(10, "th", 76);
557
+ i0.ɵɵelementStart(10, "th", 75);
529
558
  i0.ɵɵtext(11, "Pass Rate");
530
559
  i0.ɵɵelementEnd();
531
- i0.ɵɵelementStart(12, "th", 76);
560
+ i0.ɵɵelementStart(12, "th", 75);
532
561
  i0.ɵɵtext(13, "Cost");
533
562
  i0.ɵɵelementEnd()()();
534
563
  i0.ɵɵelementStart(14, "tbody");
535
- i0.ɵɵrepeaterCreate(15, TestingAnalyticsComponent_Conditional_77_For_16_Template, 21, 17, "tr", null, _forTrack3);
564
+ i0.ɵɵrepeaterCreate(15, TestingAnalyticsComponent_ng_template_2_Conditional_65_For_16_Template, 21, 17, "tr", null, _forTrack3);
536
565
  i0.ɵɵelementEnd()()();
537
566
  } if (rf & 2) {
538
- const ctx_r2 = i0.ɵɵnextContext();
567
+ const ctx_r4 = i0.ɵɵnextContext(2);
539
568
  i0.ɵɵadvance(15);
540
- i0.ɵɵrepeater(ctx_r2.VersionRows);
569
+ i0.ɵɵrepeater(ctx_r4.VersionRows);
570
+ } }
571
+ function TestingAnalyticsComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
572
+ i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
573
+ i0.ɵɵelement(2, "i", 9);
574
+ i0.ɵɵtext(3, " Trend Overview ");
575
+ i0.ɵɵelementEnd();
576
+ i0.ɵɵelementStart(4, "div", 10)(5, "div", 11)(6, "h4");
577
+ i0.ɵɵelement(7, "i", 12);
578
+ i0.ɵɵtext(8, " Pass Rate Trend");
579
+ i0.ɵɵelementEnd();
580
+ i0.ɵɵconditionalCreate(9, TestingAnalyticsComponent_ng_template_2_Conditional_9_Template, 2, 1);
581
+ i0.ɵɵpipe(10, "async");
582
+ i0.ɵɵelementEnd();
583
+ i0.ɵɵelementStart(11, "div", 11)(12, "h4");
584
+ i0.ɵɵelement(13, "i", 13);
585
+ i0.ɵɵtext(14, " Run Volume");
586
+ i0.ɵɵelementEnd();
587
+ i0.ɵɵconditionalCreate(15, TestingAnalyticsComponent_ng_template_2_Conditional_15_Template, 2, 1);
588
+ i0.ɵɵpipe(16, "async");
589
+ i0.ɵɵelementEnd();
590
+ i0.ɵɵelementStart(17, "div", 11)(18, "h4");
591
+ i0.ɵɵelement(19, "i", 14);
592
+ i0.ɵɵtext(20, " Score Trend");
593
+ i0.ɵɵelementEnd();
594
+ i0.ɵɵconditionalCreate(21, TestingAnalyticsComponent_ng_template_2_Conditional_21_Template, 2, 1);
595
+ i0.ɵɵpipe(22, "async");
596
+ i0.ɵɵelementEnd();
597
+ i0.ɵɵelementStart(23, "div", 11)(24, "h4");
598
+ i0.ɵɵelement(25, "i", 15);
599
+ i0.ɵɵtext(26, " Cost Trend");
600
+ i0.ɵɵelementEnd();
601
+ i0.ɵɵconditionalCreate(27, TestingAnalyticsComponent_ng_template_2_Conditional_27_Template, 2, 1);
602
+ i0.ɵɵpipe(28, "async");
603
+ i0.ɵɵelementEnd()();
604
+ i0.ɵɵelementStart(29, "div", 8);
605
+ i0.ɵɵelement(30, "i", 16);
606
+ i0.ɵɵtext(31, " Insights ");
607
+ i0.ɵɵelementEnd();
608
+ i0.ɵɵelementStart(32, "div", 17)(33, "div", 18)(34, "h4");
609
+ i0.ɵɵelement(35, "i", 19);
610
+ i0.ɵɵtext(36, " Top Failing Tests");
611
+ i0.ɵɵelementEnd();
612
+ i0.ɵɵconditionalCreate(37, TestingAnalyticsComponent_ng_template_2_Conditional_37_Template, 2, 1);
613
+ i0.ɵɵpipe(38, "async");
614
+ i0.ɵɵelementEnd();
615
+ i0.ɵɵelementStart(39, "div", 18)(40, "h4");
616
+ i0.ɵɵelement(41, "i", 20);
617
+ i0.ɵɵtext(42, " Slowest Tests");
618
+ i0.ɵɵelementEnd();
619
+ i0.ɵɵconditionalCreate(43, TestingAnalyticsComponent_ng_template_2_Conditional_43_Template, 2, 1);
620
+ i0.ɵɵpipe(44, "async");
621
+ i0.ɵɵelementEnd();
622
+ i0.ɵɵelementStart(45, "div", 18)(46, "h4");
623
+ i0.ɵɵelement(47, "i", 21);
624
+ i0.ɵɵtext(48, " Most Expensive Tests");
625
+ i0.ɵɵelementEnd();
626
+ i0.ɵɵconditionalCreate(49, TestingAnalyticsComponent_ng_template_2_Conditional_49_Template, 2, 1);
627
+ i0.ɵɵpipe(50, "async");
628
+ i0.ɵɵelementEnd()();
629
+ i0.ɵɵelementStart(51, "div", 8);
630
+ i0.ɵɵelement(52, "i", 22);
631
+ i0.ɵɵtext(53, " Score Distribution ");
632
+ i0.ɵɵelementEnd();
633
+ i0.ɵɵelementStart(54, "div", 23);
634
+ i0.ɵɵconditionalCreate(55, TestingAnalyticsComponent_ng_template_2_Conditional_55_Template, 2, 1);
635
+ i0.ɵɵpipe(56, "async");
636
+ i0.ɵɵelementEnd();
637
+ i0.ɵɵelementStart(57, "div", 8);
638
+ i0.ɵɵelement(58, "i", 24);
639
+ i0.ɵɵtext(59, " Version Comparison ");
640
+ i0.ɵɵelementStart(60, "span", 25);
641
+ i0.ɵɵtext(61, "Compare metrics across different builds");
642
+ i0.ɵɵelementEnd()();
643
+ i0.ɵɵelementStart(62, "div", 26);
644
+ i0.ɵɵconditionalCreate(63, TestingAnalyticsComponent_ng_template_2_Conditional_63_Template, 4, 0, "div", 27)(64, TestingAnalyticsComponent_ng_template_2_Conditional_64_Template, 4, 0, "div", 27)(65, TestingAnalyticsComponent_ng_template_2_Conditional_65_Template, 17, 0, "div", 28);
645
+ i0.ɵɵelementEnd()();
646
+ } if (rf & 2) {
647
+ let tmp_2_0;
648
+ let tmp_3_0;
649
+ let tmp_4_0;
650
+ let tmp_5_0;
651
+ let tmp_6_0;
652
+ let tmp_7_0;
653
+ let tmp_8_0;
654
+ let tmp_9_0;
655
+ const ctx_r4 = i0.ɵɵnextContext();
656
+ i0.ɵɵadvance(9);
657
+ i0.ɵɵconditional((tmp_2_0 = i0.ɵɵpipeBind1(10, 9, ctx_r4.DisplayTrends$)) ? 9 : -1, tmp_2_0);
658
+ i0.ɵɵadvance(6);
659
+ i0.ɵɵconditional((tmp_3_0 = i0.ɵɵpipeBind1(16, 11, ctx_r4.DisplayTrends$)) ? 15 : -1, tmp_3_0);
660
+ i0.ɵɵadvance(6);
661
+ i0.ɵɵconditional((tmp_4_0 = i0.ɵɵpipeBind1(22, 13, ctx_r4.DisplayTrends$)) ? 21 : -1, tmp_4_0);
662
+ i0.ɵɵadvance(6);
663
+ i0.ɵɵconditional((tmp_5_0 = i0.ɵɵpipeBind1(28, 15, ctx_r4.DisplayTrends$)) ? 27 : -1, tmp_5_0);
664
+ i0.ɵɵadvance(10);
665
+ i0.ɵɵconditional((tmp_6_0 = i0.ɵɵpipeBind1(38, 17, ctx_r4.TopFailingTests$)) ? 37 : -1, tmp_6_0);
666
+ i0.ɵɵadvance(6);
667
+ i0.ɵɵconditional((tmp_7_0 = i0.ɵɵpipeBind1(44, 19, ctx_r4.SlowestTests$)) ? 43 : -1, tmp_7_0);
668
+ i0.ɵɵadvance(6);
669
+ i0.ɵɵconditional((tmp_8_0 = i0.ɵɵpipeBind1(50, 21, ctx_r4.MostExpensiveTests$)) ? 49 : -1, tmp_8_0);
670
+ i0.ɵɵadvance(6);
671
+ i0.ɵɵconditional((tmp_9_0 = i0.ɵɵpipeBind1(56, 23, ctx_r4.ScoreDistribution$)) ? 55 : -1, tmp_9_0);
672
+ i0.ɵɵadvance(8);
673
+ i0.ɵɵconditional(ctx_r4.IsLoadingVersions ? 63 : ctx_r4.VersionRows.length === 0 ? 64 : 65);
541
674
  } }
542
675
  // ---------------------------------------------------------------------------
543
676
  // Component
@@ -547,6 +680,8 @@ export class TestingAnalyticsComponent {
547
680
  cdr;
548
681
  // ------- Inputs / Outputs -------
549
682
  initialState = null;
683
+ /** When true, the inner bespoke .page-header is hidden — the parent shell owns the chrome. */
684
+ HideToolbar = false;
550
685
  stateChange = new EventEmitter();
551
686
  // ------- Public state -------
552
687
  TimeRanges = [
@@ -767,154 +902,43 @@ export class TestingAnalyticsComponent {
767
902
  });
768
903
  }
769
904
  static ɵfac = function TestingAnalyticsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestingAnalyticsComponent)(i0.ɵɵdirectiveInject(i1.TestingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
770
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingAnalyticsComponent, selectors: [["app-testing-analytics"]], inputs: { initialState: "initialState" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 78, vars: 25, consts: [[1, "testing-analytics"], [1, "page-header"], [1, "header-left"], [1, "fa-solid", "fa-chart-bar"], [1, "header-actions"], [1, "time-range-pills"], [1, "pill", 3, "active"], [1, "refresh-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "section-title"], [1, "fa-solid", "fa-chart-line"], [1, "trend-grid"], [1, "card", "trend-card"], [1, "fa-solid", "fa-check-double"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-star-half-stroke"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "fa-magnifying-glass-chart"], [1, "insights-grid"], [1, "card", "insight-card"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-chart-pie"], [1, "card", "distribution-card"], [1, "fa-solid", "fa-code-compare"], [1, "section-subtitle"], [1, "card", "version-card"], [1, "empty-mini"], [1, "version-table-wrap"], [1, "pill", 3, "click"], [1, "fa-solid", "fa-chart-area"], [1, "bar-chart"], [1, "bar-row"], [1, "trend-direction"], [1, "bar-label"], [1, "bar-track"], [1, "bar-fill", "pass-rate-bar"], [1, "bar-value"], [1, "fa-solid", "fa-arrow-trend-up", "trend-up"], [1, "trend-up"], [1, "fa-solid", "fa-arrow-trend-down", "trend-down"], [1, "trend-down"], [1, "fa-solid", "fa-minus", "trend-neutral"], [1, "trend-neutral"], [1, "legend-row"], [1, "legend-dot", "passed-seg"], [1, "legend-dot", "failed-seg"], [1, "legend-dot", "skipped-seg"], [1, "bar-track", "stacked"], [1, "bar-segment", "passed-seg"], [1, "bar-segment", "failed-seg"], [1, "bar-segment", "skipped-seg"], [1, "fa-solid", "fa-star"], [1, "bar-fill"], [1, "fa-solid", "fa-wallet"], [1, "bar-fill", "cost-bar"], [1, "insight-list"], [1, "fa-solid", "fa-circle-check"], [1, "insight-row"], [1, "insight-name", 3, "title"], [1, "badge-fail"], [1, "insight-secondary"], [1, "fa-solid", "fa-bolt"], [1, "insight-primary"], [1, "distribution-bars"], [1, "fa-solid", "fa-chart-simple"], [1, "dist-row"], [1, "dist-label"], [1, "dist-track"], [1, "dist-fill"], [1, "dist-count"], [1, "dist-pct"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-code-branch"], [1, "version-table"], [1, "num"], [1, "version-label"], [1, "version-agent"], [1, "delta", 3, "delta-up", "delta-down", "delta-neutral"], [1, "delta"], [1, "fa-solid", "fa-arrow-up"], [1, "fa-solid", "fa-arrow-down"]], template: function TestingAnalyticsComponent_Template(rf, ctx) { if (rf & 1) {
771
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2");
772
- i0.ɵɵelement(4, "i", 3);
773
- i0.ɵɵtext(5, " Testing Analytics ");
774
- i0.ɵɵelementEnd()();
775
- i0.ɵɵelementStart(6, "div", 4)(7, "div", 5);
776
- i0.ɵɵrepeaterCreate(8, TestingAnalyticsComponent_For_9_Template, 2, 3, "button", 6, _forTrack0);
777
- i0.ɵɵelementEnd();
778
- i0.ɵɵelementStart(10, "button", 7);
779
- i0.ɵɵlistener("click", function TestingAnalyticsComponent_Template_button_click_10_listener() { return ctx.Refresh(); });
780
- i0.ɵɵelement(11, "i", 8);
781
- i0.ɵɵtext(12, " Refresh ");
782
- i0.ɵɵelementEnd()()();
783
- i0.ɵɵelementStart(13, "div", 9);
784
- i0.ɵɵelement(14, "i", 10);
785
- i0.ɵɵtext(15, " Trend Overview ");
786
- i0.ɵɵelementEnd();
787
- i0.ɵɵelementStart(16, "div", 11)(17, "div", 12)(18, "h4");
788
- i0.ɵɵelement(19, "i", 13);
789
- i0.ɵɵtext(20, " Pass Rate Trend");
790
- i0.ɵɵelementEnd();
791
- i0.ɵɵconditionalCreate(21, TestingAnalyticsComponent_Conditional_21_Template, 2, 1);
792
- i0.ɵɵpipe(22, "async");
793
- i0.ɵɵelementEnd();
794
- i0.ɵɵelementStart(23, "div", 12)(24, "h4");
795
- i0.ɵɵelement(25, "i", 14);
796
- i0.ɵɵtext(26, " Run Volume");
797
- i0.ɵɵelementEnd();
798
- i0.ɵɵconditionalCreate(27, TestingAnalyticsComponent_Conditional_27_Template, 2, 1);
799
- i0.ɵɵpipe(28, "async");
800
- i0.ɵɵelementEnd();
801
- i0.ɵɵelementStart(29, "div", 12)(30, "h4");
802
- i0.ɵɵelement(31, "i", 15);
803
- i0.ɵɵtext(32, " Score Trend");
804
- i0.ɵɵelementEnd();
805
- i0.ɵɵconditionalCreate(33, TestingAnalyticsComponent_Conditional_33_Template, 2, 1);
806
- i0.ɵɵpipe(34, "async");
807
- i0.ɵɵelementEnd();
808
- i0.ɵɵelementStart(35, "div", 12)(36, "h4");
809
- i0.ɵɵelement(37, "i", 16);
810
- i0.ɵɵtext(38, " Cost Trend");
811
- i0.ɵɵelementEnd();
812
- i0.ɵɵconditionalCreate(39, TestingAnalyticsComponent_Conditional_39_Template, 2, 1);
813
- i0.ɵɵpipe(40, "async");
814
- i0.ɵɵelementEnd()();
815
- i0.ɵɵelementStart(41, "div", 9);
816
- i0.ɵɵelement(42, "i", 17);
817
- i0.ɵɵtext(43, " Insights ");
818
- i0.ɵɵelementEnd();
819
- i0.ɵɵelementStart(44, "div", 18)(45, "div", 19)(46, "h4");
820
- i0.ɵɵelement(47, "i", 20);
821
- i0.ɵɵtext(48, " Top Failing Tests");
822
- i0.ɵɵelementEnd();
823
- i0.ɵɵconditionalCreate(49, TestingAnalyticsComponent_Conditional_49_Template, 2, 1);
824
- i0.ɵɵpipe(50, "async");
825
- i0.ɵɵelementEnd();
826
- i0.ɵɵelementStart(51, "div", 19)(52, "h4");
827
- i0.ɵɵelement(53, "i", 21);
828
- i0.ɵɵtext(54, " Slowest Tests");
829
- i0.ɵɵelementEnd();
830
- i0.ɵɵconditionalCreate(55, TestingAnalyticsComponent_Conditional_55_Template, 2, 1);
831
- i0.ɵɵpipe(56, "async");
832
- i0.ɵɵelementEnd();
833
- i0.ɵɵelementStart(57, "div", 19)(58, "h4");
834
- i0.ɵɵelement(59, "i", 22);
835
- i0.ɵɵtext(60, " Most Expensive Tests");
836
- i0.ɵɵelementEnd();
837
- i0.ɵɵconditionalCreate(61, TestingAnalyticsComponent_Conditional_61_Template, 2, 1);
838
- i0.ɵɵpipe(62, "async");
839
- i0.ɵɵelementEnd()();
840
- i0.ɵɵelementStart(63, "div", 9);
841
- i0.ɵɵelement(64, "i", 23);
842
- i0.ɵɵtext(65, " Score Distribution ");
843
- i0.ɵɵelementEnd();
844
- i0.ɵɵelementStart(66, "div", 24);
845
- i0.ɵɵconditionalCreate(67, TestingAnalyticsComponent_Conditional_67_Template, 2, 1);
846
- i0.ɵɵpipe(68, "async");
847
- i0.ɵɵelementEnd();
848
- i0.ɵɵelementStart(69, "div", 9);
849
- i0.ɵɵelement(70, "i", 25);
850
- i0.ɵɵtext(71, " Version Comparison ");
851
- i0.ɵɵelementStart(72, "span", 26);
852
- i0.ɵɵtext(73, "Compare metrics across different builds");
853
- i0.ɵɵelementEnd()();
854
- i0.ɵɵelementStart(74, "div", 27);
855
- i0.ɵɵconditionalCreate(75, TestingAnalyticsComponent_Conditional_75_Template, 4, 0, "div", 28)(76, TestingAnalyticsComponent_Conditional_76_Template, 4, 0, "div", 28)(77, TestingAnalyticsComponent_Conditional_77_Template, 17, 0, "div", 29);
856
- i0.ɵɵelementEnd()();
905
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingAnalyticsComponent, selectors: [["app-testing-analytics"]], inputs: { initialState: "initialState", HideToolbar: "HideToolbar" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Testing Analytics", "Icon", "fa-solid fa-chart-bar", "Subtitle", "Test trends, pass rates, and version metrics"], ["actions", ""], [3, "Label", "Active"], [3, "Clicked"], [3, "Clicked", "Label", "Active"], [1, "testing-analytics"], [1, "section-title"], [1, "fa-solid", "fa-chart-line"], [1, "trend-grid"], [1, "card", "trend-card"], [1, "fa-solid", "fa-check-double"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-star-half-stroke"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "fa-magnifying-glass-chart"], [1, "insights-grid"], [1, "card", "insight-card"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-chart-pie"], [1, "card", "distribution-card"], [1, "fa-solid", "fa-code-compare"], [1, "section-subtitle"], [1, "card", "version-card"], [1, "empty-mini"], [1, "version-table-wrap"], [1, "fa-solid", "fa-chart-area"], [1, "bar-chart"], [1, "bar-row"], [1, "trend-direction"], [1, "bar-label"], [1, "bar-track"], [1, "bar-fill", "pass-rate-bar"], [1, "bar-value"], [1, "fa-solid", "fa-arrow-trend-up", "trend-up"], [1, "trend-up"], [1, "fa-solid", "fa-arrow-trend-down", "trend-down"], [1, "trend-down"], [1, "fa-solid", "fa-minus", "trend-neutral"], [1, "trend-neutral"], [1, "fa-solid", "fa-chart-bar"], [1, "legend-row"], [1, "legend-dot", "passed-seg"], [1, "legend-dot", "failed-seg"], [1, "legend-dot", "skipped-seg"], [1, "bar-track", "stacked"], [1, "bar-segment", "passed-seg"], [1, "bar-segment", "failed-seg"], [1, "bar-segment", "skipped-seg"], [1, "fa-solid", "fa-star"], [1, "bar-fill"], [1, "fa-solid", "fa-wallet"], [1, "bar-fill", "cost-bar"], [1, "insight-list"], [1, "fa-solid", "fa-circle-check"], [1, "insight-row"], [1, "insight-name", 3, "title"], [1, "badge-fail"], [1, "insight-secondary"], [1, "fa-solid", "fa-bolt"], [1, "insight-primary"], [1, "distribution-bars"], [1, "fa-solid", "fa-chart-simple"], [1, "dist-row"], [1, "dist-label"], [1, "dist-track"], [1, "dist-fill"], [1, "dist-count"], [1, "dist-pct"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-code-branch"], [1, "version-table"], [1, "num"], [1, "version-label"], [1, "version-agent"], [1, "delta", 3, "delta-up", "delta-down", "delta-neutral"], [1, "delta"], [1, "fa-solid", "fa-arrow-up"], [1, "fa-solid", "fa-arrow-down"]], template: function TestingAnalyticsComponent_Template(rf, ctx) { if (rf & 1) {
906
+ i0.ɵɵconditionalCreate(0, TestingAnalyticsComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingAnalyticsComponent_Conditional_1_Template, 8, 1, "mj-page-layout");
907
+ i0.ɵɵtemplate(2, TestingAnalyticsComponent_ng_template_2_Template, 66, 25, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
857
908
  } if (rf & 2) {
858
- let tmp_1_0;
859
- let tmp_2_0;
860
- let tmp_3_0;
861
- let tmp_4_0;
862
- let tmp_5_0;
863
- let tmp_6_0;
864
- let tmp_7_0;
865
- let tmp_8_0;
866
- i0.ɵɵadvance(8);
867
- i0.ɵɵrepeater(ctx.TimeRanges);
868
- i0.ɵɵadvance(13);
869
- i0.ɵɵconditional((tmp_1_0 = i0.ɵɵpipeBind1(22, 9, ctx.DisplayTrends$)) ? 21 : -1, tmp_1_0);
870
- i0.ɵɵadvance(6);
871
- i0.ɵɵconditional((tmp_2_0 = i0.ɵɵpipeBind1(28, 11, ctx.DisplayTrends$)) ? 27 : -1, tmp_2_0);
872
- i0.ɵɵadvance(6);
873
- i0.ɵɵconditional((tmp_3_0 = i0.ɵɵpipeBind1(34, 13, ctx.DisplayTrends$)) ? 33 : -1, tmp_3_0);
874
- i0.ɵɵadvance(6);
875
- i0.ɵɵconditional((tmp_4_0 = i0.ɵɵpipeBind1(40, 15, ctx.DisplayTrends$)) ? 39 : -1, tmp_4_0);
876
- i0.ɵɵadvance(10);
877
- i0.ɵɵconditional((tmp_5_0 = i0.ɵɵpipeBind1(50, 17, ctx.TopFailingTests$)) ? 49 : -1, tmp_5_0);
878
- i0.ɵɵadvance(6);
879
- i0.ɵɵconditional((tmp_6_0 = i0.ɵɵpipeBind1(56, 19, ctx.SlowestTests$)) ? 55 : -1, tmp_6_0);
880
- i0.ɵɵadvance(6);
881
- i0.ɵɵconditional((tmp_7_0 = i0.ɵɵpipeBind1(62, 21, ctx.MostExpensiveTests$)) ? 61 : -1, tmp_7_0);
882
- i0.ɵɵadvance(6);
883
- i0.ɵɵconditional((tmp_8_0 = i0.ɵɵpipeBind1(68, 23, ctx.ScoreDistribution$)) ? 67 : -1, tmp_8_0);
884
- i0.ɵɵadvance(8);
885
- i0.ɵɵconditional(ctx.IsLoadingVersions ? 75 : ctx.VersionRows.length === 0 ? 76 : 77);
886
- } }, dependencies: [i2.AsyncPipe, i2.DecimalPipe, i2.DatePipe], styles: ["\n\n \n\n \n\n .testing-analytics[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n \n\n \n\n \n\n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n background: var(--mj-bg-surface);\n padding: 20px 24px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n margin-bottom: 24px;\n }\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n }\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n }\n\n \n\n .time-range-pills[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 3px;\n }\n .pill[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .pill[_ngcontent-%COMP%]:hover { background: var(--mj-border-default); }\n .pill.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .refresh-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); border-color: var(--mj-border-strong); }\n\n \n\n \n\n \n\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .section-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 400;\n color: var(--mj-text-disabled);\n margin-left: 4px;\n }\n\n \n\n \n\n \n\n .card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n padding: 20px;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n .card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n }\n .card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); font-size: 14px; }\n\n \n\n \n\n \n\n .trend-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin-bottom: 28px;\n }\n\n \n\n .bar-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .bar-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 60px 1fr 52px;\n align-items: center;\n gap: 8px;\n }\n .bar-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n text-align: right;\n white-space: nowrap;\n }\n .bar-track[_ngcontent-%COMP%] {\n height: 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 7px;\n overflow: hidden;\n position: relative;\n }\n .bar-track.stacked[_ngcontent-%COMP%] {\n display: flex;\n }\n .bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 7px;\n transition: width 0.4s ease;\n }\n .bar-value[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-align: right;\n }\n\n \n\n .pass-rate-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n }\n .cost-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n }\n .score-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .score-good[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n .score-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .score-poor[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n \n\n .text-excellent[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .text-good[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .text-fair[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .text-poor[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .text-pass-good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .text-pass-warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .text-pass-bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n \n\n .bar-segment[_ngcontent-%COMP%] { height: 100%; transition: width 0.4s ease; }\n .passed-seg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .failed-seg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .skipped-seg[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .legend-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n .legend-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n display: inline-block;\n margin-left: 8px;\n }\n .legend-dot[_ngcontent-%COMP%]:first-child { margin-left: 0; }\n .legend-dot.passed-seg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .legend-dot.failed-seg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .legend-dot.skipped-seg[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .trend-direction[_ngcontent-%COMP%] {\n margin-top: 10px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .trend-up[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .trend-down[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .trend-neutral[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n \n\n \n\n \n\n .insights-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 28px;\n }\n\n .insight-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n .insight-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto auto;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 6px;\n transition: background 0.15s ease;\n }\n .insight-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); }\n .insight-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .badge-fail[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n }\n .insight-primary[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n }\n .insight-secondary[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n }\n\n \n\n \n\n \n\n .distribution-card[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n }\n .distribution-bars[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n .dist-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 110px 1fr 40px 50px;\n align-items: center;\n gap: 10px;\n }\n .dist-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .dist-track[_ngcontent-%COMP%] {\n height: 22px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n overflow: hidden;\n }\n .dist-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 6px;\n transition: width 0.4s ease;\n }\n .dist-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n text-align: right;\n }\n .dist-pct[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-align: right;\n }\n\n \n\n \n\n \n\n .version-card[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n }\n .version-table-wrap[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n .version-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n .version-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n padding: 10px 12px;\n border-bottom: 2px solid var(--mj-border-default);\n }\n .version-table[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], \n .version-table[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%] { text-align: right; }\n .version-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n vertical-align: middle;\n }\n .version-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); }\n .version-label[_ngcontent-%COMP%] {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-weight: 600;\n font-size: 12px;\n color: var(--mj-brand-primary);\n }\n .version-agent[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n }\n\n .delta[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n font-size: 11px;\n font-weight: 600;\n margin-left: 6px;\n padding: 1px 6px;\n border-radius: 4px;\n }\n .delta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n .delta-up[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .delta-down[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n .delta-neutral[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); color: var(--mj-text-disabled); }\n\n \n\n \n\n \n\n .empty-mini[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n color: var(--mj-border-strong);\n gap: 8px;\n }\n .empty-mini[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 28px; opacity: 0.5; }\n .empty-mini[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 12px; }\n\n \n\n \n\n \n\n @media (max-width: 1100px) {\n .trend-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n .insights-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr 1fr; }\n }\n @media (max-width: 720px) {\n .page-header[_ngcontent-%COMP%] { flex-direction: column; align-items: flex-start; }\n .insights-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n .dist-row[_ngcontent-%COMP%] { grid-template-columns: 80px 1fr 32px 42px; }\n }"], changeDetection: 0 });
909
+ i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
910
+ } }, dependencies: [i2.NgTemplateOutlet, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJFilterChipComponent, i3.MJRefreshButtonComponent, i2.AsyncPipe, i2.DecimalPipe, i2.DatePipe], styles: ["\n\n \n\n \n\n .testing-analytics[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n \n\n \n\n \n\n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n background: var(--mj-bg-surface);\n padding: 20px 24px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n margin-bottom: 24px;\n }\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n }\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n }\n\n \n\n .time-range-pills[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 3px;\n }\n .pill[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .pill[_ngcontent-%COMP%]:hover { background: var(--mj-border-default); }\n .pill.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .refresh-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); border-color: var(--mj-border-strong); }\n\n \n\n \n\n \n\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .section-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 400;\n color: var(--mj-text-disabled);\n margin-left: 4px;\n }\n\n \n\n \n\n \n\n .card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n padding: 20px;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n .card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n }\n .card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); font-size: 14px; }\n\n \n\n \n\n \n\n .trend-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin-bottom: 28px;\n }\n\n \n\n .bar-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .bar-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 60px 1fr 52px;\n align-items: center;\n gap: 8px;\n }\n .bar-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n text-align: right;\n white-space: nowrap;\n }\n .bar-track[_ngcontent-%COMP%] {\n height: 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 7px;\n overflow: hidden;\n position: relative;\n }\n .bar-track.stacked[_ngcontent-%COMP%] {\n display: flex;\n }\n .bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 7px;\n transition: width 0.4s ease;\n }\n .bar-value[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-align: right;\n }\n\n \n\n .pass-rate-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n }\n .cost-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n }\n .score-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .score-good[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n .score-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .score-poor[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n \n\n .text-excellent[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .text-good[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .text-fair[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .text-poor[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .text-pass-good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .text-pass-warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .text-pass-bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n \n\n .bar-segment[_ngcontent-%COMP%] { height: 100%; transition: width 0.4s ease; }\n .passed-seg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .failed-seg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .skipped-seg[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .legend-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n .legend-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n display: inline-block;\n margin-left: 8px;\n }\n .legend-dot[_ngcontent-%COMP%]:first-child { margin-left: 0; }\n .legend-dot.passed-seg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .legend-dot.failed-seg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .legend-dot.skipped-seg[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .trend-direction[_ngcontent-%COMP%] {\n margin-top: 10px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .trend-up[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .trend-down[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .trend-neutral[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n \n\n \n\n \n\n .insights-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 28px;\n }\n\n .insight-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n .insight-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto auto;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 6px;\n transition: background 0.15s ease;\n }\n .insight-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); }\n .insight-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .badge-fail[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n }\n .insight-primary[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n }\n .insight-secondary[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n }\n\n \n\n \n\n \n\n .distribution-card[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n }\n .distribution-bars[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n .dist-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 110px 1fr 40px 50px;\n align-items: center;\n gap: 10px;\n }\n .dist-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .dist-track[_ngcontent-%COMP%] {\n height: 22px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n overflow: hidden;\n }\n .dist-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 6px;\n transition: width 0.4s ease;\n }\n .dist-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n text-align: right;\n }\n .dist-pct[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-align: right;\n }\n\n \n\n \n\n \n\n .version-card[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n }\n .version-table-wrap[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n .version-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n .version-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n padding: 10px 12px;\n border-bottom: 2px solid var(--mj-border-default);\n }\n .version-table[_ngcontent-%COMP%] th.num[_ngcontent-%COMP%], \n .version-table[_ngcontent-%COMP%] td.num[_ngcontent-%COMP%] { text-align: right; }\n .version-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n vertical-align: middle;\n }\n .version-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-card); }\n .version-label[_ngcontent-%COMP%] {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-weight: 600;\n font-size: 12px;\n color: var(--mj-brand-primary);\n }\n .version-agent[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n }\n\n .delta[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n font-size: 11px;\n font-weight: 600;\n margin-left: 6px;\n padding: 1px 6px;\n border-radius: 4px;\n }\n .delta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n .delta-up[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .delta-down[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n .delta-neutral[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); color: var(--mj-text-disabled); }\n\n \n\n \n\n \n\n .empty-mini[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n color: var(--mj-border-strong);\n gap: 8px;\n }\n .empty-mini[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 28px; opacity: 0.5; }\n .empty-mini[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 12px; }\n\n \n\n \n\n \n\n @media (max-width: 1100px) {\n .trend-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n .insights-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr 1fr; }\n }\n @media (max-width: 720px) {\n .page-header[_ngcontent-%COMP%] { flex-direction: column; align-items: flex-start; }\n .insights-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n .dist-row[_ngcontent-%COMP%] { grid-template-columns: 80px 1fr 32px 42px; }\n }"], changeDetection: 0 });
887
911
  }
888
912
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingAnalyticsComponent, [{
889
913
  type: Component,
890
914
  args: [{ standalone: false, selector: 'app-testing-analytics', changeDetection: ChangeDetectionStrategy.OnPush, template: `
891
- <div class="testing-analytics">
892
-
893
- <!-- ===== 1. Page Header ===== -->
894
- <div class="page-header">
895
- <div class="header-left">
896
- <h2>
897
- <i class="fa-solid fa-chart-bar"></i>
898
- Testing Analytics
899
- </h2>
900
- </div>
901
- <div class="header-actions">
902
- <div class="time-range-pills">
915
+ @if (HideToolbar) {
916
+ <ng-container *ngTemplateOutlet="content"></ng-container>
917
+ } @else {
918
+ <mj-page-layout>
919
+ <mj-page-header
920
+ Title="Testing Analytics"
921
+ Icon="fa-solid fa-chart-bar"
922
+ Subtitle="Test trends, pass rates, and version metrics">
923
+ <div actions>
903
924
  @for (range of TimeRanges; track range.days) {
904
- <button
905
- class="pill"
906
- [class.active]="SelectedDays === range.days"
907
- (click)="OnTimeRangeSelect(range.days)">
908
- {{ range.label }}
909
- </button>
925
+ <mj-filter-chip
926
+ [Label]="range.label"
927
+ [Active]="SelectedDays === range.days"
928
+ (Clicked)="OnTimeRangeSelect(range.days)">
929
+ </mj-filter-chip>
910
930
  }
931
+ <mj-refresh-button (Clicked)="Refresh()"></mj-refresh-button>
911
932
  </div>
912
- <button class="refresh-btn" (click)="Refresh()">
913
- <i class="fa-solid fa-arrows-rotate"></i>
914
- Refresh
915
- </button>
916
- </div>
917
- </div>
933
+ </mj-page-header>
934
+ <mj-page-body>
935
+ <ng-container *ngTemplateOutlet="content"></ng-container>
936
+ </mj-page-body>
937
+ </mj-page-layout>
938
+ }
939
+
940
+ <ng-template #content>
941
+ <div class="testing-analytics">
918
942
 
919
943
  <!-- ===== 2. Trend Overview (2-column CSS charts) ===== -->
920
944
  <div class="section-title">
@@ -1190,11 +1214,14 @@ export class TestingAnalyticsComponent {
1190
1214
  }
1191
1215
  </div>
1192
1216
  </div>
1217
+ </ng-template>
1193
1218
  `, styles: ["\n /* ------------------------------------------------------------------ */\n /* Layout & page */\n /* ------------------------------------------------------------------ */\n .testing-analytics {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n /* ------------------------------------------------------------------ */\n /* Page header */\n /* ------------------------------------------------------------------ */\n .page-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n background: var(--mj-bg-surface);\n padding: 20px 24px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n margin-bottom: 24px;\n }\n .header-left h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n }\n .header-left h2 i { color: var(--mj-brand-primary); }\n .header-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n }\n\n /* time-range pills */\n .time-range-pills {\n display: flex;\n gap: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 3px;\n }\n .pill {\n padding: 6px 14px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .pill:hover { background: var(--mj-border-default); }\n .pill.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .refresh-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n .refresh-btn:hover { background: var(--mj-bg-surface-card); border-color: var(--mj-border-strong); }\n\n /* ------------------------------------------------------------------ */\n /* Section titles */\n /* ------------------------------------------------------------------ */\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n }\n .section-title i { color: var(--mj-brand-primary); }\n .section-subtitle {\n font-size: 12px;\n font-weight: 400;\n color: var(--mj-text-disabled);\n margin-left: 4px;\n }\n\n /* ------------------------------------------------------------------ */\n /* Cards */\n /* ------------------------------------------------------------------ */\n .card {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n padding: 20px;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n .card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n }\n .card h4 {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .card h4 i { color: var(--mj-brand-primary); font-size: 14px; }\n\n /* ------------------------------------------------------------------ */\n /* Trend grid (2 columns) */\n /* ------------------------------------------------------------------ */\n .trend-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin-bottom: 28px;\n }\n\n /* CSS bar charts */\n .bar-chart {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .bar-row {\n display: grid;\n grid-template-columns: 60px 1fr 52px;\n align-items: center;\n gap: 8px;\n }\n .bar-label {\n font-size: 10px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n text-align: right;\n white-space: nowrap;\n }\n .bar-track {\n height: 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 7px;\n overflow: hidden;\n position: relative;\n }\n .bar-track.stacked {\n display: flex;\n }\n .bar-fill {\n height: 100%;\n border-radius: 7px;\n transition: width 0.4s ease;\n }\n .bar-value {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-align: right;\n }\n\n /* colour classes for bars */\n .pass-rate-bar {\n background: var(--mj-status-success);\n }\n .cost-bar {\n background: var(--mj-status-warning);\n }\n .score-excellent { background: var(--mj-status-success); }\n .score-good { background: var(--mj-brand-primary); }\n .score-fair { background: var(--mj-status-warning); }\n .score-poor { background: var(--mj-status-error); }\n\n /* text colour classes */\n .text-excellent { color: var(--mj-status-success); }\n .text-good { color: var(--mj-brand-primary); }\n .text-fair { color: var(--mj-status-warning); }\n .text-poor { color: var(--mj-status-error); }\n .text-pass-good { color: var(--mj-status-success); }\n .text-pass-warn { color: var(--mj-status-warning); }\n .text-pass-bad { color: var(--mj-status-error); }\n\n /* stacked segments */\n .bar-segment { height: 100%; transition: width 0.4s ease; }\n .passed-seg { background: var(--mj-status-success); }\n .failed-seg { background: var(--mj-status-error); }\n .skipped-seg { background: var(--mj-text-disabled); }\n\n .legend-row {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n .legend-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n display: inline-block;\n margin-left: 8px;\n }\n .legend-dot:first-child { margin-left: 0; }\n .legend-dot.passed-seg { background: var(--mj-status-success); }\n .legend-dot.failed-seg { background: var(--mj-status-error); }\n .legend-dot.skipped-seg { background: var(--mj-text-disabled); }\n\n .trend-direction {\n margin-top: 10px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .trend-up { color: var(--mj-status-success); }\n .trend-down { color: var(--mj-status-error); }\n .trend-neutral { color: var(--mj-text-disabled); }\n\n /* ------------------------------------------------------------------ */\n /* Insights grid (3 columns) */\n /* ------------------------------------------------------------------ */\n .insights-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 28px;\n }\n\n .insight-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n .insight-row {\n display: grid;\n grid-template-columns: 1fr auto auto;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 6px;\n transition: background 0.15s ease;\n }\n .insight-row:hover { background: var(--mj-bg-surface-card); }\n .insight-name {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .badge-fail {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n }\n .insight-primary {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n }\n .insight-secondary {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n }\n\n /* ------------------------------------------------------------------ */\n /* Score Distribution */\n /* ------------------------------------------------------------------ */\n .distribution-card {\n margin-bottom: 28px;\n }\n .distribution-bars {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n .dist-row {\n display: grid;\n grid-template-columns: 110px 1fr 40px 50px;\n align-items: center;\n gap: 10px;\n }\n .dist-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .dist-track {\n height: 22px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n overflow: hidden;\n }\n .dist-fill {\n height: 100%;\n border-radius: 6px;\n transition: width 0.4s ease;\n }\n .dist-count {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n text-align: right;\n }\n .dist-pct {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-align: right;\n }\n\n /* ------------------------------------------------------------------ */\n /* Version Comparison */\n /* ------------------------------------------------------------------ */\n .version-card {\n margin-bottom: 28px;\n }\n .version-table-wrap {\n overflow-x: auto;\n }\n .version-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n .version-table th {\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n padding: 10px 12px;\n border-bottom: 2px solid var(--mj-border-default);\n }\n .version-table th.num,\n .version-table td.num { text-align: right; }\n .version-table td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n vertical-align: middle;\n }\n .version-table tbody tr:hover { background: var(--mj-bg-surface-card); }\n .version-label {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-weight: 600;\n font-size: 12px;\n color: var(--mj-brand-primary);\n }\n .version-agent {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n }\n\n .delta {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n font-size: 11px;\n font-weight: 600;\n margin-left: 6px;\n padding: 1px 6px;\n border-radius: 4px;\n }\n .delta i { font-size: 9px; }\n .delta-up { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .delta-down { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n .delta-neutral { background: var(--mj-bg-surface-card); color: var(--mj-text-disabled); }\n\n /* ------------------------------------------------------------------ */\n /* Empty / mini empty states */\n /* ------------------------------------------------------------------ */\n .empty-mini {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n color: var(--mj-border-strong);\n gap: 8px;\n }\n .empty-mini i { font-size: 28px; opacity: 0.5; }\n .empty-mini span { font-size: 12px; }\n\n /* ------------------------------------------------------------------ */\n /* Responsive */\n /* ------------------------------------------------------------------ */\n @media (max-width: 1100px) {\n .trend-grid { grid-template-columns: 1fr; }\n .insights-grid { grid-template-columns: 1fr 1fr; }\n }\n @media (max-width: 720px) {\n .page-header { flex-direction: column; align-items: flex-start; }\n .insights-grid { grid-template-columns: 1fr; }\n .dist-row { grid-template-columns: 80px 1fr 32px 42px; }\n }\n "] }]
1194
1219
  }], () => [{ type: i1.TestingInstrumentationService }, { type: i0.ChangeDetectorRef }], { initialState: [{
1195
1220
  type: Input
1221
+ }], HideToolbar: [{
1222
+ type: Input
1196
1223
  }], stateChange: [{
1197
1224
  type: Output
1198
1225
  }] }); })();
1199
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingAnalyticsComponent, { className: "TestingAnalyticsComponent", filePath: "src/Testing/components/testing-analytics.component.ts", lineNumber: 779 }); })();
1226
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingAnalyticsComponent, { className: "TestingAnalyticsComponent", filePath: "src/Testing/components/testing-analytics.component.ts", lineNumber: 780 }); })();
1200
1227
  //# sourceMappingURL=testing-analytics.component.js.map