@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
@@ -7,204 +7,239 @@ import { DEFAULT_EVALUATION_PREFERENCES } from '@memberjunction/ng-testing';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../services/testing-instrumentation.service";
9
9
  import * as i2 from "@memberjunction/ng-testing";
10
- import * as i3 from "@angular/forms";
11
- import * as i4 from "@memberjunction/ng-shared-generic";
12
- import * as i5 from "@angular/common";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/forms";
12
+ import * as i5 from "@memberjunction/ng-ui-components";
13
+ import * as i6 from "@memberjunction/ng-shared-generic";
13
14
  const _forTrack0 = ($index, $item) => $item.value;
14
- function TestingRunsComponent_For_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
15
+ function TestingRunsComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelementContainer(0);
17
+ } }
18
+ function TestingRunsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵtemplate(0, TestingRunsComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 1);
20
+ } if (rf & 2) {
21
+ i0.ɵɵnextContext();
22
+ const content_r1 = i0.ɵɵreference(3);
23
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
24
+ } }
25
+ function TestingRunsComponent_Conditional_1_ng_container_8_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementContainer(0);
27
+ } }
28
+ function TestingRunsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
29
+ const _r2 = i0.ɵɵgetCurrentView();
30
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3)(3, "mj-refresh-button", 4);
31
+ i0.ɵɵlistener("Clicked", function TestingRunsComponent_Conditional_1_Template_mj_refresh_button_Clicked_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Refresh()); });
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelementStart(4, "button", 5);
34
+ i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.StartNewTest()); });
35
+ i0.ɵɵelement(5, "i", 6);
36
+ i0.ɵɵtext(6, " Run Test ");
37
+ i0.ɵɵelementEnd()()();
38
+ i0.ɵɵelementStart(7, "mj-page-body");
39
+ i0.ɵɵtemplate(8, TestingRunsComponent_Conditional_1_ng_container_8_Template, 1, 0, "ng-container", 1);
40
+ i0.ɵɵelementEnd()();
41
+ } if (rf & 2) {
42
+ const ctx_r2 = i0.ɵɵnextContext();
43
+ const content_r1 = i0.ɵɵreference(3);
44
+ i0.ɵɵadvance(3);
45
+ i0.ɵɵproperty("Loading", ctx_r2.IsRefreshing);
46
+ i0.ɵɵadvance(5);
47
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
48
+ } }
49
+ function TestingRunsComponent_ng_template_2_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
15
50
  i0.ɵɵelement(0, "i");
16
51
  } if (rf & 2) {
17
- const chip_r2 = i0.ɵɵnextContext().$implicit;
18
- i0.ɵɵclassMap(chip_r2.icon);
52
+ const chip_r6 = i0.ɵɵnextContext().$implicit;
53
+ i0.ɵɵclassMap(chip_r6.icon);
19
54
  } }
20
- function TestingRunsComponent_For_17_Template(rf, ctx) { if (rf & 1) {
21
- const _r1 = i0.ɵɵgetCurrentView();
22
- i0.ɵɵelementStart(0, "button", 36);
23
- i0.ɵɵlistener("click", function TestingRunsComponent_For_17_Template_button_click_0_listener() { const chip_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetStatusFilter(chip_r2.value)); });
24
- i0.ɵɵconditionalCreate(1, TestingRunsComponent_For_17_Conditional_1_Template, 1, 2, "i", 37);
55
+ function TestingRunsComponent_ng_template_2_For_5_Template(rf, ctx) { if (rf & 1) {
56
+ const _r5 = i0.ɵɵgetCurrentView();
57
+ i0.ɵɵelementStart(0, "button", 35);
58
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_For_5_Template_button_click_0_listener() { const chip_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetStatusFilter(chip_r6.value)); });
59
+ i0.ɵɵconditionalCreate(1, TestingRunsComponent_ng_template_2_For_5_Conditional_1_Template, 1, 2, "i", 36);
25
60
  i0.ɵɵtext(2);
26
61
  i0.ɵɵelementEnd();
27
62
  } if (rf & 2) {
28
- const chip_r2 = ctx.$implicit;
29
- const ctx_r2 = i0.ɵɵnextContext();
30
- i0.ɵɵclassProp("active", ctx_r2.filterState.status === chip_r2.value);
31
- i0.ɵɵattribute("data-status", chip_r2.value);
63
+ const chip_r6 = ctx.$implicit;
64
+ const ctx_r2 = i0.ɵɵnextContext(2);
65
+ i0.ɵɵclassProp("active", ctx_r2.filterState.status === chip_r6.value);
66
+ i0.ɵɵattribute("data-status", chip_r6.value);
32
67
  i0.ɵɵadvance();
33
- i0.ɵɵconditional(chip_r2.icon ? 1 : -1);
68
+ i0.ɵɵconditional(chip_r6.icon ? 1 : -1);
34
69
  i0.ɵɵadvance();
35
- i0.ɵɵtextInterpolate1(" ", chip_r2.label, " ");
70
+ i0.ɵɵtextInterpolate1(" ", chip_r6.label, " ");
36
71
  } }
37
- function TestingRunsComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
38
- const _r4 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "button", 38);
40
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_34_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ClearSearch()); });
41
- i0.ɵɵelement(1, "i", 39);
72
+ function TestingRunsComponent_ng_template_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
73
+ const _r7 = i0.ɵɵgetCurrentView();
74
+ i0.ɵɵelementStart(0, "button", 37);
75
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ClearSearch()); });
76
+ i0.ɵɵelement(1, "i", 38);
42
77
  i0.ɵɵelementEnd();
43
78
  } }
44
- function TestingRunsComponent_Conditional_35_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "div", 24)(1, "div", 40)(2, "div", 41);
46
- i0.ɵɵelement(3, "i", 42);
79
+ function TestingRunsComponent_ng_template_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelementStart(0, "div", 23)(1, "div", 39)(2, "div", 40);
81
+ i0.ɵɵelement(3, "i", 41);
47
82
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(4, "div", 43)(5, "div", 44);
83
+ i0.ɵɵelementStart(4, "div", 42)(5, "div", 43);
49
84
  i0.ɵɵtext(6);
50
85
  i0.ɵɵelementEnd();
51
- i0.ɵɵelementStart(7, "div", 45);
86
+ i0.ɵɵelementStart(7, "div", 44);
52
87
  i0.ɵɵtext(8, "Total Runs");
53
88
  i0.ɵɵelementEnd()()();
54
- i0.ɵɵelementStart(9, "div", 40)(10, "div", 46);
55
- i0.ɵɵelement(11, "i", 47);
89
+ i0.ɵɵelementStart(9, "div", 39)(10, "div", 45);
90
+ i0.ɵɵelement(11, "i", 46);
56
91
  i0.ɵɵelementEnd();
57
- i0.ɵɵelementStart(12, "div", 43)(13, "div", 44);
92
+ i0.ɵɵelementStart(12, "div", 42)(13, "div", 43);
58
93
  i0.ɵɵtext(14);
59
94
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(15, "div", 45);
95
+ i0.ɵɵelementStart(15, "div", 44);
61
96
  i0.ɵɵtext(16, "Pass Rate");
62
97
  i0.ɵɵelementEnd()()();
63
- i0.ɵɵelementStart(17, "div", 40)(18, "div", 48);
64
- i0.ɵɵelement(19, "i", 49);
98
+ i0.ɵɵelementStart(17, "div", 39)(18, "div", 47);
99
+ i0.ɵɵelement(19, "i", 48);
65
100
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(20, "div", 43)(21, "div", 44);
101
+ i0.ɵɵelementStart(20, "div", 42)(21, "div", 43);
67
102
  i0.ɵɵtext(22);
68
103
  i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(23, "div", 45);
104
+ i0.ɵɵelementStart(23, "div", 44);
70
105
  i0.ɵɵtext(24, "Avg Duration");
71
106
  i0.ɵɵelementEnd()()();
72
- i0.ɵɵelementStart(25, "div", 40)(26, "div", 50);
73
- i0.ɵɵelement(27, "i", 51);
107
+ i0.ɵɵelementStart(25, "div", 39)(26, "div", 49);
108
+ i0.ɵɵelement(27, "i", 50);
74
109
  i0.ɵɵelementEnd();
75
- i0.ɵɵelementStart(28, "div", 43)(29, "div", 44);
110
+ i0.ɵɵelementStart(28, "div", 42)(29, "div", 43);
76
111
  i0.ɵɵtext(30);
77
112
  i0.ɵɵelementEnd();
78
- i0.ɵɵelementStart(31, "div", 45);
113
+ i0.ɵɵelementStart(31, "div", 44);
79
114
  i0.ɵɵtext(32, "Total Cost");
80
115
  i0.ɵɵelementEnd()()()();
81
116
  } if (rf & 2) {
82
- const stats_r5 = ctx;
83
- const ctx_r2 = i0.ɵɵnextContext();
117
+ const stats_r8 = ctx;
118
+ const ctx_r2 = i0.ɵɵnextContext(2);
84
119
  i0.ɵɵadvance(6);
85
- i0.ɵɵtextInterpolate(stats_r5.totalRuns);
120
+ i0.ɵɵtextInterpolate(stats_r8.totalRuns);
86
121
  i0.ɵɵadvance(8);
87
- i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(stats_r5.passRate));
122
+ i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(stats_r8.passRate));
88
123
  i0.ɵɵadvance(8);
89
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(stats_r5.avgDuration));
124
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(stats_r8.avgDuration));
90
125
  i0.ɵɵadvance(8);
91
- i0.ɵɵtextInterpolate(ctx_r2.FormatCostTotal(stats_r5.totalCost));
126
+ i0.ɵɵtextInterpolate(ctx_r2.FormatCostTotal(stats_r8.totalCost));
92
127
  } }
93
- function TestingRunsComponent_Conditional_53_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "div", 34);
95
- i0.ɵɵelement(1, "mj-loading", 52);
128
+ function TestingRunsComponent_ng_template_2_Conditional_41_Template(rf, ctx) { if (rf & 1) {
129
+ i0.ɵɵelementStart(0, "div", 33);
130
+ i0.ɵɵelement(1, "mj-loading", 51);
96
131
  i0.ɵɵelementEnd();
97
132
  } }
98
- function TestingRunsComponent_Conditional_56_Template(rf, ctx) { if (rf & 1) {
99
- i0.ɵɵelementStart(0, "div", 35);
100
- i0.ɵɵelement(1, "i", 53);
133
+ function TestingRunsComponent_ng_template_2_Conditional_44_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "div", 34);
135
+ i0.ɵɵelement(1, "i", 52);
101
136
  i0.ɵɵelementStart(2, "p");
102
137
  i0.ɵɵtext(3, "No test runs found");
103
138
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(4, "span", 54);
139
+ i0.ɵɵelementStart(4, "span", 53);
105
140
  i0.ɵɵtext(5, "Try adjusting your filters or run a new test.");
106
141
  i0.ɵɵelementEnd()();
107
142
  } }
108
- function TestingRunsComponent_Conditional_57_For_1_Template(rf, ctx) { if (rf & 1) {
109
- const _r6 = i0.ɵɵgetCurrentView();
110
- i0.ɵɵelementStart(0, "div", 56);
111
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_57_For_1_Template_div_click_0_listener() { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectRun(run_r7)); });
112
- i0.ɵɵelementStart(1, "div", 27)(2, "span", 57);
113
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_57_For_1_Template_span_click_2_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.NavigateToTest(run_r7, $event)); });
143
+ function TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template(rf, ctx) { if (rf & 1) {
144
+ const _r9 = i0.ɵɵgetCurrentView();
145
+ i0.ɵɵelementStart(0, "div", 55);
146
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template_div_click_0_listener() { const run_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SelectRun(run_r10)); });
147
+ i0.ɵɵelementStart(1, "div", 26)(2, "span", 56);
148
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template_span_click_2_listener($event) { const run_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.NavigateToTest(run_r10, $event)); });
114
149
  i0.ɵɵtext(3);
115
150
  i0.ɵɵelementEnd()();
116
- i0.ɵɵelementStart(4, "div", 28);
117
- i0.ɵɵelement(5, "app-evaluation-badge", 58);
151
+ i0.ɵɵelementStart(4, "div", 27);
152
+ i0.ɵɵelement(5, "app-evaluation-badge", 57);
118
153
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(6, "div", 29);
120
- i0.ɵɵelement(7, "app-score-indicator", 59);
154
+ i0.ɵɵelementStart(6, "div", 28);
155
+ i0.ɵɵelement(7, "app-score-indicator", 58);
121
156
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(8, "div", 30);
157
+ i0.ɵɵelementStart(8, "div", 29);
123
158
  i0.ɵɵtext(9);
124
159
  i0.ɵɵelementEnd();
125
- i0.ɵɵelementStart(10, "div", 31);
126
- i0.ɵɵelement(11, "app-cost-display", 60);
160
+ i0.ɵɵelementStart(10, "div", 30);
161
+ i0.ɵɵelement(11, "app-cost-display", 59);
127
162
  i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(12, "div", 32);
163
+ i0.ɵɵelementStart(12, "div", 31);
129
164
  i0.ɵɵtext(13);
130
165
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(14, "div", 33)(15, "button", 61);
132
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_57_For_1_Template_button_click_15_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.SelectRun(run_r7); return i0.ɵɵresetView($event.stopPropagation()); });
133
- i0.ɵɵelement(16, "i", 62);
166
+ i0.ɵɵelementStart(14, "div", 32)(15, "button", 60);
167
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template_button_click_15_listener($event) { const run_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); ctx_r2.SelectRun(run_r10); return i0.ɵɵresetView($event.stopPropagation()); });
168
+ i0.ɵɵelement(16, "i", 61);
134
169
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(17, "button", 63);
136
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_57_For_1_Template_button_click_17_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.RerunTest(run_r7); return i0.ɵɵresetView($event.stopPropagation()); });
137
- i0.ɵɵelement(18, "i", 64);
170
+ i0.ɵɵelementStart(17, "button", 62);
171
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template_button_click_17_listener($event) { const run_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); ctx_r2.RerunTest(run_r10); return i0.ɵɵresetView($event.stopPropagation()); });
172
+ i0.ɵɵelement(18, "i", 63);
138
173
  i0.ɵɵelementEnd()()();
139
174
  } if (rf & 2) {
140
- const run_r7 = ctx.$implicit;
141
- const ctx_r2 = i0.ɵɵnextContext(2);
142
- i0.ɵɵclassProp("is-running", run_r7.status === "Running")("is-selected", (ctx_r2.SelectedRun == null ? null : ctx_r2.SelectedRun.id) === run_r7.id);
175
+ const run_r10 = ctx.$implicit;
176
+ const ctx_r2 = i0.ɵɵnextContext(3);
177
+ i0.ɵɵclassProp("is-running", run_r10.status === "Running")("is-selected", (ctx_r2.SelectedRun == null ? null : ctx_r2.SelectedRun.id) === run_r10.id);
143
178
  i0.ɵɵadvance(3);
144
- i0.ɵɵtextInterpolate1(" ", run_r7.testName, " ");
179
+ i0.ɵɵtextInterpolate1(" ", run_r10.testName, " ");
145
180
  i0.ɵɵadvance(2);
146
- i0.ɵɵproperty("executionStatus", run_r7.status)("originalStatus", run_r7.status)("autoScore", run_r7.score)("passedChecks", run_r7.passedChecks)("failedChecks", run_r7.failedChecks)("totalChecks", run_r7.totalChecks)("humanRating", run_r7.humanRating)("humanIsCorrect", run_r7.humanIsCorrect)("hasHumanFeedback", run_r7.hasHumanFeedback)("preferences", ctx_r2.EvalPreferences);
181
+ i0.ɵɵproperty("executionStatus", run_r10.status)("originalStatus", run_r10.status)("autoScore", run_r10.score)("passedChecks", run_r10.passedChecks)("failedChecks", run_r10.failedChecks)("totalChecks", run_r10.totalChecks)("humanRating", run_r10.humanRating)("humanIsCorrect", run_r10.humanIsCorrect)("hasHumanFeedback", run_r10.hasHumanFeedback)("preferences", ctx_r2.EvalPreferences);
147
182
  i0.ɵɵadvance(2);
148
- i0.ɵɵproperty("score", run_r7.score)("showBar", true);
183
+ i0.ɵɵproperty("score", run_r10.score)("showBar", true);
149
184
  i0.ɵɵadvance(2);
150
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(run_r7.duration));
185
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(run_r10.duration));
151
186
  i0.ɵɵadvance(2);
152
- i0.ɵɵproperty("cost", run_r7.cost);
187
+ i0.ɵɵproperty("cost", run_r10.cost);
153
188
  i0.ɵɵadvance(2);
154
- i0.ɵɵtextInterpolate(ctx_r2.FormatRelativeTime(run_r7.runDateTime));
189
+ i0.ɵɵtextInterpolate(ctx_r2.FormatRelativeTime(run_r10.runDateTime));
155
190
  } }
156
- function TestingRunsComponent_Conditional_57_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵrepeaterCreate(0, TestingRunsComponent_Conditional_57_For_1_Template, 19, 20, "div", 55, i0.ɵɵcomponentInstance().TrackByRunId, true);
191
+ function TestingRunsComponent_ng_template_2_Conditional_45_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵrepeaterCreate(0, TestingRunsComponent_ng_template_2_Conditional_45_For_1_Template, 19, 20, "div", 54, i0.ɵɵcomponentInstance().TrackByRunId, true);
158
193
  i0.ɵɵpipe(2, "async");
159
194
  } if (rf & 2) {
160
- const ctx_r2 = i0.ɵɵnextContext();
195
+ const ctx_r2 = i0.ɵɵnextContext(2);
161
196
  i0.ɵɵrepeater(i0.ɵɵpipeBind1(2, 0, ctx_r2.FilteredRuns$));
162
197
  } }
163
- function TestingRunsComponent_Conditional_58_Conditional_34_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelementStart(0, "div", 76)(1, "h4");
165
- i0.ɵɵelement(2, "i", 83);
198
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_34_Template(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵelementStart(0, "div", 75)(1, "h4");
200
+ i0.ɵɵelement(2, "i", 82);
166
201
  i0.ɵɵtext(3, " Execution Context");
167
202
  i0.ɵɵelementEnd();
168
203
  i0.ɵɵelement(4, "mj-execution-context");
169
204
  i0.ɵɵelementEnd();
170
205
  } }
171
- function TestingRunsComponent_Conditional_58_Conditional_39_Conditional_8_Template(rf, ctx) { if (rf & 1) {
172
- i0.ɵɵelement(0, "i", 87);
206
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_8_Template(rf, ctx) { if (rf & 1) {
207
+ i0.ɵɵelement(0, "i", 86);
173
208
  i0.ɵɵtext(1, " Yes ");
174
209
  } }
175
- function TestingRunsComponent_Conditional_58_Conditional_39_Conditional_9_Template(rf, ctx) { if (rf & 1) {
176
- i0.ɵɵelement(0, "i", 88);
210
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_9_Template(rf, ctx) { if (rf & 1) {
211
+ i0.ɵɵelement(0, "i", 87);
177
212
  i0.ɵɵtext(1, " No ");
178
213
  } }
179
- function TestingRunsComponent_Conditional_58_Conditional_39_Conditional_10_Template(rf, ctx) { if (rf & 1) {
214
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_10_Template(rf, ctx) { if (rf & 1) {
180
215
  i0.ɵɵtext(0, " -- ");
181
216
  } }
182
- function TestingRunsComponent_Conditional_58_Conditional_39_Conditional_11_Template(rf, ctx) { if (rf & 1) {
183
- i0.ɵɵelementStart(0, "div", 86);
217
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_11_Template(rf, ctx) { if (rf & 1) {
218
+ i0.ɵɵelementStart(0, "div", 85);
184
219
  i0.ɵɵtext(1);
185
220
  i0.ɵɵelementEnd();
186
221
  } if (rf & 2) {
187
- const ctx_r2 = i0.ɵɵnextContext(3);
222
+ const ctx_r2 = i0.ɵɵnextContext(4);
188
223
  i0.ɵɵadvance();
189
224
  i0.ɵɵtextInterpolate(ctx_r2.SelectedRun.humanComments);
190
225
  } }
191
- function TestingRunsComponent_Conditional_58_Conditional_39_Template(rf, ctx) { if (rf & 1) {
192
- i0.ɵɵelementStart(0, "div", 81)(1, "span", 84);
226
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Template(rf, ctx) { if (rf & 1) {
227
+ i0.ɵɵelementStart(0, "div", 80)(1, "span", 83);
193
228
  i0.ɵɵtext(2, "Rating:");
194
229
  i0.ɵɵelementEnd();
195
- i0.ɵɵelementStart(3, "span", 85);
230
+ i0.ɵɵelementStart(3, "span", 84);
196
231
  i0.ɵɵtext(4);
197
232
  i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(5, "span", 84);
233
+ i0.ɵɵelementStart(5, "span", 83);
199
234
  i0.ɵɵtext(6, "Correct:");
200
235
  i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(7, "span", 85);
202
- i0.ɵɵconditionalCreate(8, TestingRunsComponent_Conditional_58_Conditional_39_Conditional_8_Template, 2, 0)(9, TestingRunsComponent_Conditional_58_Conditional_39_Conditional_9_Template, 2, 0)(10, TestingRunsComponent_Conditional_58_Conditional_39_Conditional_10_Template, 1, 0);
236
+ i0.ɵɵelementStart(7, "span", 84);
237
+ i0.ɵɵconditionalCreate(8, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_8_Template, 2, 0)(9, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_9_Template, 2, 0)(10, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_10_Template, 1, 0);
203
238
  i0.ɵɵelementEnd();
204
- i0.ɵɵconditionalCreate(11, TestingRunsComponent_Conditional_58_Conditional_39_Conditional_11_Template, 2, 1, "div", 86);
239
+ i0.ɵɵconditionalCreate(11, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Conditional_11_Template, 2, 1, "div", 85);
205
240
  i0.ɵɵelementEnd();
206
241
  } if (rf & 2) {
207
- const ctx_r2 = i0.ɵɵnextContext(2);
242
+ const ctx_r2 = i0.ɵɵnextContext(3);
208
243
  i0.ɵɵadvance(4);
209
244
  i0.ɵɵtextInterpolate1("", ctx_r2.SelectedRun.humanRating, "/10");
210
245
  i0.ɵɵadvance(4);
@@ -212,53 +247,53 @@ function TestingRunsComponent_Conditional_58_Conditional_39_Template(rf, ctx) {
212
247
  i0.ɵɵadvance(3);
213
248
  i0.ɵɵconditional(ctx_r2.SelectedRun.humanComments ? 11 : -1);
214
249
  } }
215
- function TestingRunsComponent_Conditional_58_Conditional_40_For_6_Template(rf, ctx) { if (rf & 1) {
216
- const _r10 = i0.ɵɵgetCurrentView();
217
- i0.ɵɵelementStart(0, "button", 100);
218
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Conditional_40_For_6_Template_button_click_0_listener() { const n_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.feedbackRating = n_r11); });
250
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_For_6_Template(rf, ctx) { if (rf & 1) {
251
+ const _r13 = i0.ɵɵgetCurrentView();
252
+ i0.ɵɵelementStart(0, "button", 99);
253
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_For_6_Template_button_click_0_listener() { const n_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.feedbackRating = n_r14); });
219
254
  i0.ɵɵtext(1);
220
255
  i0.ɵɵelementEnd();
221
256
  } if (rf & 2) {
222
- const n_r11 = ctx.$implicit;
223
- const ctx_r2 = i0.ɵɵnextContext(3);
224
- i0.ɵɵclassProp("selected", ctx_r2.feedbackRating === n_r11);
257
+ const n_r14 = ctx.$implicit;
258
+ const ctx_r2 = i0.ɵɵnextContext(4);
259
+ i0.ɵɵclassProp("selected", ctx_r2.feedbackRating === n_r14);
225
260
  i0.ɵɵadvance();
226
- i0.ɵɵtextInterpolate1(" ", n_r11, " ");
261
+ i0.ɵɵtextInterpolate1(" ", n_r14, " ");
227
262
  } }
228
- function TestingRunsComponent_Conditional_58_Conditional_40_Template(rf, ctx) { if (rf & 1) {
229
- const _r9 = i0.ɵɵgetCurrentView();
230
- i0.ɵɵelementStart(0, "div", 82)(1, "div", 89)(2, "label");
263
+ function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template(rf, ctx) { if (rf & 1) {
264
+ const _r12 = i0.ɵɵgetCurrentView();
265
+ i0.ɵɵelementStart(0, "div", 81)(1, "div", 88)(2, "label");
231
266
  i0.ɵɵtext(3, "Rating");
232
267
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(4, "div", 90);
234
- i0.ɵɵrepeaterCreate(5, TestingRunsComponent_Conditional_58_Conditional_40_For_6_Template, 2, 3, "button", 91, i0.ɵɵrepeaterTrackByIdentity);
268
+ i0.ɵɵelementStart(4, "div", 89);
269
+ i0.ɵɵrepeaterCreate(5, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_For_6_Template, 2, 3, "button", 90, i0.ɵɵrepeaterTrackByIdentity);
235
270
  i0.ɵɵelementEnd()();
236
- i0.ɵɵelementStart(7, "div", 92)(8, "label");
271
+ i0.ɵɵelementStart(7, "div", 91)(8, "label");
237
272
  i0.ɵɵtext(9, "Is the result correct?");
238
273
  i0.ɵɵelementEnd();
239
- i0.ɵɵelementStart(10, "div", 93)(11, "button", 94);
240
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Conditional_40_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.feedbackIsCorrect = true); });
241
- i0.ɵɵelement(12, "i", 95);
274
+ i0.ɵɵelementStart(10, "div", 92)(11, "button", 93);
275
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.feedbackIsCorrect = true); });
276
+ i0.ɵɵelement(12, "i", 94);
242
277
  i0.ɵɵtext(13, " Yes ");
243
278
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(14, "button", 94);
245
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Conditional_40_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.feedbackIsCorrect = false); });
246
- i0.ɵɵelement(15, "i", 39);
279
+ i0.ɵɵelementStart(14, "button", 93);
280
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.feedbackIsCorrect = false); });
281
+ i0.ɵɵelement(15, "i", 38);
247
282
  i0.ɵɵtext(16, " No ");
248
283
  i0.ɵɵelementEnd()()();
249
- i0.ɵɵelementStart(17, "div", 96)(18, "label");
284
+ i0.ɵɵelementStart(17, "div", 95)(18, "label");
250
285
  i0.ɵɵtext(19, "Comments");
251
286
  i0.ɵɵelementEnd();
252
- i0.ɵɵelementStart(20, "textarea", 97);
253
- i0.ɵɵlistener("input", function TestingRunsComponent_Conditional_58_Conditional_40_Template_textarea_input_20_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnFeedbackCommentInput($event)); });
287
+ i0.ɵɵelementStart(20, "textarea", 96);
288
+ i0.ɵɵlistener("input", function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template_textarea_input_20_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnFeedbackCommentInput($event)); });
254
289
  i0.ɵɵelementEnd()();
255
- i0.ɵɵelementStart(21, "button", 98);
256
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Conditional_40_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SubmitFeedback()); });
257
- i0.ɵɵelement(22, "i", 99);
290
+ i0.ɵɵelementStart(21, "button", 97);
291
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SubmitFeedback()); });
292
+ i0.ɵɵelement(22, "i", 98);
258
293
  i0.ɵɵtext(23);
259
294
  i0.ɵɵelementEnd()();
260
295
  } if (rf & 2) {
261
- const ctx_r2 = i0.ɵɵnextContext(2);
296
+ const ctx_r2 = i0.ɵɵnextContext(3);
262
297
  i0.ɵɵadvance(5);
263
298
  i0.ɵɵrepeater(ctx_r2.RatingValues);
264
299
  i0.ɵɵadvance(6);
@@ -272,57 +307,57 @@ function TestingRunsComponent_Conditional_58_Conditional_40_Template(rf, ctx) {
272
307
  i0.ɵɵadvance(2);
273
308
  i0.ɵɵtextInterpolate1(" ", ctx_r2.IsSubmittingFeedback ? "Submitting..." : "Submit Feedback", " ");
274
309
  } }
275
- function TestingRunsComponent_Conditional_58_Template(rf, ctx) { if (rf & 1) {
276
- const _r8 = i0.ɵɵgetCurrentView();
277
- i0.ɵɵelementStart(0, "div", 65);
278
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseDetailPanel()); });
310
+ function TestingRunsComponent_ng_template_2_Conditional_46_Template(rf, ctx) { if (rf & 1) {
311
+ const _r11 = i0.ɵɵgetCurrentView();
312
+ i0.ɵɵelementStart(0, "div", 64);
313
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseDetailPanel()); });
279
314
  i0.ɵɵelementEnd();
280
- i0.ɵɵelementStart(1, "div", 66)(2, "div", 67)(3, "div", 68)(4, "h3");
315
+ i0.ɵɵelementStart(1, "div", 65)(2, "div", 66)(3, "div", 67)(4, "h3");
281
316
  i0.ɵɵtext(5);
282
317
  i0.ɵɵelementEnd();
283
- i0.ɵɵelement(6, "app-test-status-badge", 69);
318
+ i0.ɵɵelement(6, "app-test-status-badge", 68);
284
319
  i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(7, "button", 70);
286
- i0.ɵɵlistener("click", function TestingRunsComponent_Conditional_58_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseDetailPanel()); });
287
- i0.ɵɵelement(8, "i", 39);
320
+ i0.ɵɵelementStart(7, "button", 69);
321
+ i0.ɵɵlistener("click", function TestingRunsComponent_ng_template_2_Conditional_46_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseDetailPanel()); });
322
+ i0.ɵɵelement(8, "i", 38);
288
323
  i0.ɵɵelementEnd()();
289
- i0.ɵɵelementStart(9, "div", 71)(10, "div", 72)(11, "div", 73)(12, "span", 74);
324
+ i0.ɵɵelementStart(9, "div", 70)(10, "div", 71)(11, "div", 72)(12, "span", 73);
290
325
  i0.ɵɵtext(13, "Score");
291
326
  i0.ɵɵelementEnd();
292
- i0.ɵɵelement(14, "app-score-indicator", 59);
327
+ i0.ɵɵelement(14, "app-score-indicator", 58);
293
328
  i0.ɵɵelementEnd();
294
- i0.ɵɵelementStart(15, "div", 73)(16, "span", 74);
329
+ i0.ɵɵelementStart(15, "div", 72)(16, "span", 73);
295
330
  i0.ɵɵtext(17, "Duration");
296
331
  i0.ɵɵelementEnd();
297
- i0.ɵɵelementStart(18, "span", 75);
332
+ i0.ɵɵelementStart(18, "span", 74);
298
333
  i0.ɵɵtext(19);
299
334
  i0.ɵɵelementEnd()();
300
- i0.ɵɵelementStart(20, "div", 73)(21, "span", 74);
335
+ i0.ɵɵelementStart(20, "div", 72)(21, "span", 73);
301
336
  i0.ɵɵtext(22, "Cost");
302
337
  i0.ɵɵelementEnd();
303
- i0.ɵɵelement(23, "app-cost-display", 60);
338
+ i0.ɵɵelement(23, "app-cost-display", 59);
304
339
  i0.ɵɵelementEnd();
305
- i0.ɵɵelementStart(24, "div", 73)(25, "span", 74);
340
+ i0.ɵɵelementStart(24, "div", 72)(25, "span", 73);
306
341
  i0.ɵɵtext(26, "Started");
307
342
  i0.ɵɵelementEnd();
308
- i0.ɵɵelementStart(27, "span", 75);
343
+ i0.ɵɵelementStart(27, "span", 74);
309
344
  i0.ɵɵtext(28);
310
345
  i0.ɵɵelementEnd()()();
311
- i0.ɵɵelementStart(29, "div", 76)(30, "h4");
312
- i0.ɵɵelement(31, "i", 77);
346
+ i0.ɵɵelementStart(29, "div", 75)(30, "h4");
347
+ i0.ɵɵelement(31, "i", 76);
313
348
  i0.ɵɵtext(32, " Evaluation");
314
349
  i0.ɵɵelementEnd();
315
- i0.ɵɵelement(33, "app-evaluation-badge", 78);
350
+ i0.ɵɵelement(33, "app-evaluation-badge", 77);
316
351
  i0.ɵɵelementEnd();
317
- i0.ɵɵconditionalCreate(34, TestingRunsComponent_Conditional_58_Conditional_34_Template, 5, 0, "div", 76);
318
- i0.ɵɵelementStart(35, "div", 79)(36, "h4");
319
- i0.ɵɵelement(37, "i", 80);
352
+ i0.ɵɵconditionalCreate(34, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_34_Template, 5, 0, "div", 75);
353
+ i0.ɵɵelementStart(35, "div", 78)(36, "h4");
354
+ i0.ɵɵelement(37, "i", 79);
320
355
  i0.ɵɵtext(38, " Human Feedback");
321
356
  i0.ɵɵelementEnd();
322
- i0.ɵɵconditionalCreate(39, TestingRunsComponent_Conditional_58_Conditional_39_Template, 12, 3, "div", 81)(40, TestingRunsComponent_Conditional_58_Conditional_40_Template, 24, 7, "div", 82);
357
+ i0.ɵɵconditionalCreate(39, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_39_Template, 12, 3, "div", 80)(40, TestingRunsComponent_ng_template_2_Conditional_46_Conditional_40_Template, 24, 7, "div", 81);
323
358
  i0.ɵɵelementEnd()()();
324
359
  } if (rf & 2) {
325
- const ctx_r2 = i0.ɵɵnextContext();
360
+ const ctx_r2 = i0.ɵɵnextContext(2);
326
361
  i0.ɵɵadvance(5);
327
362
  i0.ɵɵtextInterpolate(ctx_r2.SelectedRun.testName);
328
363
  i0.ɵɵadvance();
@@ -342,12 +377,98 @@ function TestingRunsComponent_Conditional_58_Template(rf, ctx) { if (rf & 1) {
342
377
  i0.ɵɵadvance(5);
343
378
  i0.ɵɵconditional(ctx_r2.SelectedRun.hasHumanFeedback ? 39 : 40);
344
379
  } }
380
+ function TestingRunsComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
381
+ const _r4 = i0.ɵɵgetCurrentView();
382
+ i0.ɵɵelementStart(0, "div", 7);
383
+ i0.ɵɵlistener("keydown.escape", function TestingRunsComponent_ng_template_2_Template_div_keydown_escape_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseDetailPanel()); });
384
+ i0.ɵɵelementStart(1, "div", 8)(2, "div", 9)(3, "div", 10);
385
+ i0.ɵɵrepeaterCreate(4, TestingRunsComponent_ng_template_2_For_5_Template, 3, 5, "button", 11, _forTrack0);
386
+ i0.ɵɵelementEnd();
387
+ i0.ɵɵelementStart(6, "span", 12);
388
+ i0.ɵɵtext(7);
389
+ i0.ɵɵpipe(8, "async");
390
+ i0.ɵɵelementEnd()();
391
+ i0.ɵɵelementStart(9, "div", 13)(10, "select", 14);
392
+ i0.ɵɵlistener("change", function TestingRunsComponent_ng_template_2_Template_select_change_10_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); });
393
+ i0.ɵɵelementStart(11, "option", 15);
394
+ i0.ɵɵtext(12, "Today");
395
+ i0.ɵɵelementEnd();
396
+ i0.ɵɵelementStart(13, "option", 16);
397
+ i0.ɵɵtext(14, "This Week");
398
+ i0.ɵɵelementEnd();
399
+ i0.ɵɵelementStart(15, "option", 17);
400
+ i0.ɵɵtext(16, "This Month");
401
+ i0.ɵɵelementEnd();
402
+ i0.ɵɵelementStart(17, "option", 18);
403
+ i0.ɵɵtext(18, "Last 90 Days");
404
+ i0.ɵɵelementEnd()();
405
+ i0.ɵɵelementStart(19, "div", 19);
406
+ i0.ɵɵelement(20, "i", 20);
407
+ i0.ɵɵelementStart(21, "input", 21);
408
+ i0.ɵɵlistener("input", function TestingRunsComponent_ng_template_2_Template_input_input_21_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchInput($event)); });
409
+ i0.ɵɵelementEnd();
410
+ i0.ɵɵconditionalCreate(22, TestingRunsComponent_ng_template_2_Conditional_22_Template, 2, 0, "button", 22);
411
+ i0.ɵɵelementEnd()()();
412
+ i0.ɵɵconditionalCreate(23, TestingRunsComponent_ng_template_2_Conditional_23_Template, 33, 4, "div", 23);
413
+ i0.ɵɵpipe(24, "async");
414
+ i0.ɵɵelementStart(25, "div", 24)(26, "div", 25)(27, "div", 26);
415
+ i0.ɵɵtext(28, "Test Name");
416
+ i0.ɵɵelementEnd();
417
+ i0.ɵɵelementStart(29, "div", 27);
418
+ i0.ɵɵtext(30, "Evaluation");
419
+ i0.ɵɵelementEnd();
420
+ i0.ɵɵelementStart(31, "div", 28);
421
+ i0.ɵɵtext(32, "Score");
422
+ i0.ɵɵelementEnd();
423
+ i0.ɵɵelementStart(33, "div", 29);
424
+ i0.ɵɵtext(34, "Duration");
425
+ i0.ɵɵelementEnd();
426
+ i0.ɵɵelementStart(35, "div", 30);
427
+ i0.ɵɵtext(36, "Cost");
428
+ i0.ɵɵelementEnd();
429
+ i0.ɵɵelementStart(37, "div", 31);
430
+ i0.ɵɵtext(38, "Started");
431
+ i0.ɵɵelementEnd();
432
+ i0.ɵɵelementStart(39, "div", 32);
433
+ i0.ɵɵtext(40, "Actions");
434
+ i0.ɵɵelementEnd()();
435
+ i0.ɵɵconditionalCreate(41, TestingRunsComponent_ng_template_2_Conditional_41_Template, 2, 0, "div", 33);
436
+ i0.ɵɵpipe(42, "async");
437
+ i0.ɵɵpipe(43, "async");
438
+ i0.ɵɵconditionalBranchCreate(44, TestingRunsComponent_ng_template_2_Conditional_44_Template, 6, 0, "div", 34)(45, TestingRunsComponent_ng_template_2_Conditional_45_Template, 3, 2);
439
+ i0.ɵɵelementEnd();
440
+ i0.ɵɵconditionalCreate(46, TestingRunsComponent_ng_template_2_Conditional_46_Template, 41, 19);
441
+ i0.ɵɵelementEnd();
442
+ } if (rf & 2) {
443
+ let tmp_3_0;
444
+ let tmp_7_0;
445
+ let tmp_8_0;
446
+ const ctx_r2 = i0.ɵɵnextContext();
447
+ i0.ɵɵadvance(4);
448
+ i0.ɵɵrepeater(ctx_r2.StatusChips);
449
+ i0.ɵɵadvance(3);
450
+ i0.ɵɵtextInterpolate1("", ((tmp_3_0 = i0.ɵɵpipeBind1(8, 7, ctx_r2.FilteredRuns$)) == null ? null : tmp_3_0.length) ?? 0, " results");
451
+ i0.ɵɵadvance(3);
452
+ i0.ɵɵproperty("value", ctx_r2.filterState.timeRange);
453
+ i0.ɵɵadvance(11);
454
+ i0.ɵɵproperty("value", ctx_r2.filterState.searchText);
455
+ i0.ɵɵadvance();
456
+ i0.ɵɵconditional(ctx_r2.filterState.searchText ? 22 : -1);
457
+ i0.ɵɵadvance();
458
+ i0.ɵɵconditional((tmp_7_0 = i0.ɵɵpipeBind1(24, 9, ctx_r2.FilteredStats$)) ? 23 : -1, tmp_7_0);
459
+ i0.ɵɵadvance(18);
460
+ i0.ɵɵconditional(i0.ɵɵpipeBind1(42, 11, ctx_r2.instrumentationService.isLoading$) ? 41 : ((tmp_8_0 = i0.ɵɵpipeBind1(43, 13, ctx_r2.FilteredRuns$)) == null ? null : tmp_8_0.length) === 0 ? 44 : 45);
461
+ i0.ɵɵadvance(5);
462
+ i0.ɵɵconditional(ctx_r2.SelectedRun ? 46 : -1);
463
+ } }
345
464
  export class TestingRunsComponent {
346
465
  instrumentationService;
347
466
  testingDialogService;
348
467
  cdr;
349
468
  viewContainerRef;
350
469
  initialState = null;
470
+ /** When true, the inner bespoke .page-header is hidden — the parent shell owns the chrome. */
471
+ HideToolbar = false;
351
472
  stateChange = new EventEmitter();
352
473
  destroy$ = new Subject();
353
474
  filterTrigger$ = new BehaviorSubject(undefined);
@@ -638,129 +759,39 @@ export class TestingRunsComponent {
638
759
  static ɵfac = function TestingRunsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestingRunsComponent)(i0.ɵɵdirectiveInject(i1.TestingInstrumentationService), i0.ɵɵdirectiveInject(i2.TestingDialogService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); };
639
760
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingRunsComponent, selectors: [["app-testing-runs"]], hostBindings: function TestingRunsComponent_HostBindings(rf, ctx) { if (rf & 1) {
640
761
  i0.ɵɵlistener("keydown.escape", function TestingRunsComponent_keydown_escape_HostBindingHandler() { return ctx.OnEscapeKey(); }, i0.ɵɵresolveDocument);
641
- } }, inputs: { initialState: "initialState" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 59, vars: 18, consts: [[1, "runs-container", 3, "keydown.escape"], [1, "page-header"], [1, "header-title"], [1, "fa-solid", "fa-list-check"], [1, "header-actions"], [1, "btn", "btn-secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-sync-alt"], [1, "btn", "btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [1, "filter-bar"], [1, "filter-left"], [1, "filter-chips"], [1, "chip", 3, "active"], [1, "result-count"], [1, "filter-right"], [1, "time-select", 3, "change", "value"], ["value", "today"], ["value", "week"], ["value", "month"], ["value", "90days"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by test name...", 3, "input", "value"], [1, "clear-search"], [1, "stats-row"], [1, "runs-table-wrapper"], [1, "table-header"], [1, "col", "col-name"], [1, "col", "col-eval"], [1, "col", "col-score"], [1, "col", "col-duration"], [1, "col", "col-cost"], [1, "col", "col-time"], [1, "col", "col-actions"], [1, "table-loading"], [1, "table-empty"], [1, "chip", 3, "click"], [3, "class"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "stat-card"], [1, "stat-icon", "total"], [1, "fa-solid", "fa-hashtag"], [1, "stat-body"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "pass"], [1, "fa-solid", "fa-check-circle"], [1, "stat-icon", "duration"], [1, "fa-solid", "fa-clock"], [1, "stat-icon", "cost"], [1, "fa-solid", "fa-dollar-sign"], ["text", "Loading test runs..."], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "table-row", 3, "is-running", "is-selected"], [1, "table-row", 3, "click"], [1, "test-name-link", 3, "click"], ["mode", "compact", 3, "executionStatus", "originalStatus", "autoScore", "passedChecks", "failedChecks", "totalChecks", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences"], [3, "score", "showBar"], [3, "cost"], ["title", "View details", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["title", "Re-run test", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "detail-overlay", 3, "click"], [1, "detail-panel"], [1, "detail-panel-header"], [1, "detail-title-section"], [3, "status"], [1, "close-btn", 3, "click"], [1, "detail-panel-body"], [1, "detail-metrics"], [1, "detail-metric"], [1, "dm-label"], [1, "dm-value"], [1, "detail-section"], [1, "fa-solid", "fa-clipboard-check"], ["mode", "expanded", 3, "executionStatus", "originalStatus", "autoScore", "passedChecks", "failedChecks", "totalChecks", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences"], [1, "detail-section", "feedback-section"], [1, "fa-solid", "fa-comment-dots"], [1, "existing-feedback"], [1, "feedback-form"], [1, "fa-solid", "fa-server"], [1, "feedback-label"], [1, "feedback-value"], [1, "feedback-comments"], [1, "fa-solid", "fa-check", 2, "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-times", 2, "color", "var(--mj-status-error)"], [1, "rating-row"], [1, "rating-buttons"], [1, "rating-btn", 3, "selected"], [1, "correctness-row"], [1, "toggle-group"], [1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "comments-row"], ["rows", "3", "placeholder", "Optional feedback comments...", 3, "input", "value"], [1, "btn", "btn-primary", "submit-feedback-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "rating-btn", 3, "click"]], template: function TestingRunsComponent_Template(rf, ctx) { if (rf & 1) {
642
- i0.ɵɵelementStart(0, "div", 0);
643
- i0.ɵɵlistener("keydown.escape", function TestingRunsComponent_Template_div_keydown_escape_0_listener() { return ctx.CloseDetailPanel(); });
644
- i0.ɵɵelementStart(1, "div", 1)(2, "div", 2);
645
- i0.ɵɵelement(3, "i", 3);
646
- i0.ɵɵelementStart(4, "h2");
647
- i0.ɵɵtext(5, "Test Runs");
648
- i0.ɵɵelementEnd()();
649
- i0.ɵɵelementStart(6, "div", 4)(7, "button", 5);
650
- i0.ɵɵlistener("click", function TestingRunsComponent_Template_button_click_7_listener() { return ctx.Refresh(); });
651
- i0.ɵɵelement(8, "i", 6);
652
- i0.ɵɵtext(9, " Refresh ");
653
- i0.ɵɵelementEnd();
654
- i0.ɵɵelementStart(10, "button", 7);
655
- i0.ɵɵlistener("click", function TestingRunsComponent_Template_button_click_10_listener() { return ctx.StartNewTest(); });
656
- i0.ɵɵelement(11, "i", 8);
657
- i0.ɵɵtext(12, " Run Test ");
658
- i0.ɵɵelementEnd()()();
659
- i0.ɵɵelementStart(13, "div", 9)(14, "div", 10)(15, "div", 11);
660
- i0.ɵɵrepeaterCreate(16, TestingRunsComponent_For_17_Template, 3, 5, "button", 12, _forTrack0);
661
- i0.ɵɵelementEnd();
662
- i0.ɵɵelementStart(18, "span", 13);
663
- i0.ɵɵtext(19);
664
- i0.ɵɵpipe(20, "async");
665
- i0.ɵɵelementEnd()();
666
- i0.ɵɵelementStart(21, "div", 14)(22, "select", 15);
667
- i0.ɵɵlistener("change", function TestingRunsComponent_Template_select_change_22_listener($event) { return ctx.OnTimeRangeChange($event); });
668
- i0.ɵɵelementStart(23, "option", 16);
669
- i0.ɵɵtext(24, "Today");
670
- i0.ɵɵelementEnd();
671
- i0.ɵɵelementStart(25, "option", 17);
672
- i0.ɵɵtext(26, "This Week");
673
- i0.ɵɵelementEnd();
674
- i0.ɵɵelementStart(27, "option", 18);
675
- i0.ɵɵtext(28, "This Month");
676
- i0.ɵɵelementEnd();
677
- i0.ɵɵelementStart(29, "option", 19);
678
- i0.ɵɵtext(30, "Last 90 Days");
679
- i0.ɵɵelementEnd()();
680
- i0.ɵɵelementStart(31, "div", 20);
681
- i0.ɵɵelement(32, "i", 21);
682
- i0.ɵɵelementStart(33, "input", 22);
683
- i0.ɵɵlistener("input", function TestingRunsComponent_Template_input_input_33_listener($event) { return ctx.OnSearchInput($event); });
684
- i0.ɵɵelementEnd();
685
- i0.ɵɵconditionalCreate(34, TestingRunsComponent_Conditional_34_Template, 2, 0, "button", 23);
686
- i0.ɵɵelementEnd()()();
687
- i0.ɵɵconditionalCreate(35, TestingRunsComponent_Conditional_35_Template, 33, 4, "div", 24);
688
- i0.ɵɵpipe(36, "async");
689
- i0.ɵɵelementStart(37, "div", 25)(38, "div", 26)(39, "div", 27);
690
- i0.ɵɵtext(40, "Test Name");
691
- i0.ɵɵelementEnd();
692
- i0.ɵɵelementStart(41, "div", 28);
693
- i0.ɵɵtext(42, "Evaluation");
694
- i0.ɵɵelementEnd();
695
- i0.ɵɵelementStart(43, "div", 29);
696
- i0.ɵɵtext(44, "Score");
697
- i0.ɵɵelementEnd();
698
- i0.ɵɵelementStart(45, "div", 30);
699
- i0.ɵɵtext(46, "Duration");
700
- i0.ɵɵelementEnd();
701
- i0.ɵɵelementStart(47, "div", 31);
702
- i0.ɵɵtext(48, "Cost");
703
- i0.ɵɵelementEnd();
704
- i0.ɵɵelementStart(49, "div", 32);
705
- i0.ɵɵtext(50, "Started");
706
- i0.ɵɵelementEnd();
707
- i0.ɵɵelementStart(51, "div", 33);
708
- i0.ɵɵtext(52, "Actions");
709
- i0.ɵɵelementEnd()();
710
- i0.ɵɵconditionalCreate(53, TestingRunsComponent_Conditional_53_Template, 2, 0, "div", 34);
711
- i0.ɵɵpipe(54, "async");
712
- i0.ɵɵpipe(55, "async");
713
- i0.ɵɵconditionalBranchCreate(56, TestingRunsComponent_Conditional_56_Template, 6, 0, "div", 35)(57, TestingRunsComponent_Conditional_57_Template, 3, 2);
714
- i0.ɵɵelementEnd();
715
- i0.ɵɵconditionalCreate(58, TestingRunsComponent_Conditional_58_Template, 41, 19);
716
- i0.ɵɵelementEnd();
762
+ } }, inputs: { initialState: "initialState", HideToolbar: "HideToolbar" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Test Runs", "Icon", "fa-solid fa-list-check", "Subtitle", "Test execution history and monitoring"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-play"], [1, "runs-container", 3, "keydown.escape"], [1, "filter-bar"], [1, "filter-left"], [1, "filter-chips"], [1, "chip", 3, "active"], [1, "result-count"], [1, "filter-right"], [1, "time-select", 3, "change", "value"], ["value", "today"], ["value", "week"], ["value", "month"], ["value", "90days"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by test name...", 3, "input", "value"], [1, "clear-search"], [1, "stats-row"], [1, "runs-table-wrapper"], [1, "table-header"], [1, "col", "col-name"], [1, "col", "col-eval"], [1, "col", "col-score"], [1, "col", "col-duration"], [1, "col", "col-cost"], [1, "col", "col-time"], [1, "col", "col-actions"], [1, "table-loading"], [1, "table-empty"], [1, "chip", 3, "click"], [3, "class"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "stat-card"], [1, "stat-icon", "total"], [1, "fa-solid", "fa-hashtag"], [1, "stat-body"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "pass"], [1, "fa-solid", "fa-check-circle"], [1, "stat-icon", "duration"], [1, "fa-solid", "fa-clock"], [1, "stat-icon", "cost"], [1, "fa-solid", "fa-dollar-sign"], ["text", "Loading test runs..."], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "table-row", 3, "is-running", "is-selected"], [1, "table-row", 3, "click"], [1, "test-name-link", 3, "click"], ["mode", "compact", 3, "executionStatus", "originalStatus", "autoScore", "passedChecks", "failedChecks", "totalChecks", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences"], [3, "score", "showBar"], [3, "cost"], ["title", "View details", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["title", "Re-run test", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "detail-overlay", 3, "click"], [1, "detail-panel"], [1, "detail-panel-header"], [1, "detail-title-section"], [3, "status"], [1, "close-btn", 3, "click"], [1, "detail-panel-body"], [1, "detail-metrics"], [1, "detail-metric"], [1, "dm-label"], [1, "dm-value"], [1, "detail-section"], [1, "fa-solid", "fa-clipboard-check"], ["mode", "expanded", 3, "executionStatus", "originalStatus", "autoScore", "passedChecks", "failedChecks", "totalChecks", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences"], [1, "detail-section", "feedback-section"], [1, "fa-solid", "fa-comment-dots"], [1, "existing-feedback"], [1, "feedback-form"], [1, "fa-solid", "fa-server"], [1, "feedback-label"], [1, "feedback-value"], [1, "feedback-comments"], [1, "fa-solid", "fa-check", 2, "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-times", 2, "color", "var(--mj-status-error)"], [1, "rating-row"], [1, "rating-buttons"], [1, "rating-btn", 3, "selected"], [1, "correctness-row"], [1, "toggle-group"], [1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "comments-row"], ["rows", "3", "placeholder", "Optional feedback comments...", 3, "input", "value"], [1, "btn", "btn-primary", "submit-feedback-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "rating-btn", 3, "click"]], template: function TestingRunsComponent_Template(rf, ctx) { if (rf & 1) {
763
+ i0.ɵɵconditionalCreate(0, TestingRunsComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingRunsComponent_Conditional_1_Template, 9, 2, "mj-page-layout");
764
+ i0.ɵɵtemplate(2, TestingRunsComponent_ng_template_2_Template, 47, 15, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
717
765
  } if (rf & 2) {
718
- let tmp_3_0;
719
- let tmp_7_0;
720
- let tmp_8_0;
721
- i0.ɵɵadvance(7);
722
- i0.ɵɵproperty("disabled", ctx.IsRefreshing);
723
- i0.ɵɵadvance();
724
- i0.ɵɵclassProp("spinning", ctx.IsRefreshing);
725
- i0.ɵɵadvance(8);
726
- i0.ɵɵrepeater(ctx.StatusChips);
727
- i0.ɵɵadvance(3);
728
- i0.ɵɵtextInterpolate1("", ((tmp_3_0 = i0.ɵɵpipeBind1(20, 10, ctx.FilteredRuns$)) == null ? null : tmp_3_0.length) ?? 0, " results");
729
- i0.ɵɵadvance(3);
730
- i0.ɵɵproperty("value", ctx.filterState.timeRange);
731
- i0.ɵɵadvance(11);
732
- i0.ɵɵproperty("value", ctx.filterState.searchText);
733
- i0.ɵɵadvance();
734
- i0.ɵɵconditional(ctx.filterState.searchText ? 34 : -1);
735
- i0.ɵɵadvance();
736
- i0.ɵɵconditional((tmp_7_0 = i0.ɵɵpipeBind1(36, 12, ctx.FilteredStats$)) ? 35 : -1, tmp_7_0);
737
- i0.ɵɵadvance(18);
738
- i0.ɵɵconditional(i0.ɵɵpipeBind1(54, 14, ctx.instrumentationService.isLoading$) ? 53 : ((tmp_8_0 = i0.ɵɵpipeBind1(55, 16, ctx.FilteredRuns$)) == null ? null : tmp_8_0.length) === 0 ? 56 : 57);
739
- i0.ɵɵadvance(5);
740
- i0.ɵɵconditional(ctx.SelectedRun ? 58 : -1);
741
- } }, dependencies: [i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i2.TestStatusBadgeComponent, i2.ScoreIndicatorComponent, i2.CostDisplayComponent, i2.EvaluationBadgeComponent, i2.ExecutionContextComponent, i4.LoadingComponent, i5.AsyncPipe], styles: ["\n\n\n\n\n .runs-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n position: relative;\n }\n\n \n\n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n }\n\n .header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 22px;\n color: var(--mj-brand-primary);\n }\n\n .header-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n }\n\n \n\n .btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: none;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n }\n\n @keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n \n\n .filter-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n margin-bottom: 20px;\n padding: 14px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .filter-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .filter-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n\n .chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n }\n\n .chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"running\"][_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"passed\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n }\n\n .chip.active[data-status=\"failed\"][_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n .chip.active[data-status=\"error\"][_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n white-space: nowrap;\n }\n\n .filter-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .time-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n }\n\n .time-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n min-width: 220px;\n transition: border-color 0.2s ease;\n }\n\n .search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n }\n\n .search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .clear-search[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n }\n\n \n\n .stats-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 14px;\n margin-bottom: 20px;\n }\n\n .stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .stat-icon[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n }\n\n .stat-icon.total[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.pass[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .stat-icon.duration[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.cost[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n .stat-body[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n }\n\n \n\n .runs-table-wrapper[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n }\n\n .table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.15s ease;\n align-items: center;\n }\n\n .table-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .table-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-row.is-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .table-row.is-running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface));\n }\n\n .table-row.is-running[_ngcontent-%COMP%] .test-name-link[_ngcontent-%COMP%]::after {\n content: '';\n display: inline-block;\n width: 8px;\n height: 8px;\n background: var(--mj-brand-primary);\n border-radius: 50%;\n margin-left: 8px;\n animation: _ngcontent-%COMP%_pulse-dot 1.5s infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse-dot {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.3; }\n }\n\n .col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n }\n\n .test-name-link[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .test-name-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n }\n\n .col-actions[_ngcontent-%COMP%] {\n gap: 6px;\n justify-content: flex-end;\n }\n\n .icon-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 8px;\n font-size: 13px;\n transition: all 0.2s ease;\n }\n\n .icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n \n\n .table-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 40px;\n }\n\n .table-empty[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n }\n\n .table-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-strong);\n margin-bottom: 16px;\n }\n\n .table-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n \n\n .detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n }\n\n \n\n .detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 520px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease-out;\n }\n\n @keyframes _ngcontent-%COMP%_slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n }\n\n .detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n .detail-title-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .detail-title-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n flex-shrink: 0;\n margin-left: 12px;\n transition: all 0.15s ease;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .detail-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .detail-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 24px;\n }\n\n .detail-metric[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .dm-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .dm-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n \n\n .existing-feedback[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n padding: 14px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-radius: 8px;\n font-size: 13px;\n }\n\n .feedback-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-muted);\n }\n\n .feedback-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .feedback-comments[_ngcontent-%COMP%] {\n width: 100%;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, var(--mj-bg-surface));\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-style: italic;\n }\n\n .feedback-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .feedback-form[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .rating-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n }\n\n .rating-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .rating-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n }\n\n .rating-btn.selected[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .toggle-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .toggle-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-family: inherit;\n color: var(--mj-text-secondary);\n resize: vertical;\n box-sizing: border-box;\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .submit-feedback-btn[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n\n \n\n @media (max-width: 1400px) {\n .stats-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 1200px) {\n .filter-bar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-left[_ngcontent-%COMP%], .filter-right[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .table-header[_ngcontent-%COMP%], .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 120px 100px 100px 80px;\n }\n\n .col-eval[_ngcontent-%COMP%], .col-time[_ngcontent-%COMP%] {\n display: none;\n }\n }\n\n @media (max-width: 768px) {\n .stats-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n width: 100vw;\n max-width: 100vw;\n }\n }\n\n @media (max-width: 480px) {\n .table-header[_ngcontent-%COMP%], .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 80px 60px;\n }\n\n .col-score[_ngcontent-%COMP%], .col-duration[_ngcontent-%COMP%] {\n display: none;\n }\n\n .chip[_ngcontent-%COMP%] {\n min-height: 44px;\n padding: 8px 14px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n min-height: 44px;\n }\n }"], changeDetection: 0 });
766
+ i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
767
+ } }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i5.MJButtonDirective, i5.MJPageHeaderComponent, i5.MJPageLayoutComponent, i5.MJPageBodyComponent, i5.MJRefreshButtonComponent, i2.TestStatusBadgeComponent, i2.ScoreIndicatorComponent, i2.CostDisplayComponent, i2.EvaluationBadgeComponent, i2.ExecutionContextComponent, i6.LoadingComponent, i3.AsyncPipe], styles: ["\n\n\n\n\n .runs-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n position: relative;\n }\n\n \n\n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n }\n\n .header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 22px;\n color: var(--mj-brand-primary);\n }\n\n .header-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n }\n\n \n\n .btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: none;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n }\n\n @keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n \n\n .filter-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n margin-bottom: 20px;\n padding: 14px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .filter-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .filter-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n\n .chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n }\n\n .chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"running\"][_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"passed\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n }\n\n .chip.active[data-status=\"failed\"][_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n .chip.active[data-status=\"error\"][_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n white-space: nowrap;\n }\n\n .filter-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .time-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n }\n\n .time-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n min-width: 220px;\n transition: border-color 0.2s ease;\n }\n\n .search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n }\n\n .search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .clear-search[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n }\n\n \n\n .stats-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 14px;\n margin-bottom: 20px;\n }\n\n .stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .stat-icon[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n }\n\n .stat-icon.total[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.pass[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .stat-icon.duration[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.cost[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n .stat-body[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n }\n\n \n\n .runs-table-wrapper[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n }\n\n .table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.15s ease;\n align-items: center;\n }\n\n .table-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .table-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-row.is-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .table-row.is-running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface));\n }\n\n .table-row.is-running[_ngcontent-%COMP%] .test-name-link[_ngcontent-%COMP%]::after {\n content: '';\n display: inline-block;\n width: 8px;\n height: 8px;\n background: var(--mj-brand-primary);\n border-radius: 50%;\n margin-left: 8px;\n animation: _ngcontent-%COMP%_pulse-dot 1.5s infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse-dot {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.3; }\n }\n\n .col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n }\n\n .test-name-link[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .test-name-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n }\n\n .col-actions[_ngcontent-%COMP%] {\n gap: 6px;\n justify-content: flex-end;\n }\n\n .icon-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 8px;\n font-size: 13px;\n transition: all 0.2s ease;\n }\n\n .icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n \n\n .table-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 40px;\n }\n\n .table-empty[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n }\n\n .table-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-strong);\n margin-bottom: 16px;\n }\n\n .table-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n \n\n .detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n }\n\n \n\n .detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 520px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease-out;\n }\n\n @keyframes _ngcontent-%COMP%_slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n }\n\n .detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n .detail-title-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .detail-title-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n flex-shrink: 0;\n margin-left: 12px;\n transition: all 0.15s ease;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .detail-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .detail-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 24px;\n }\n\n .detail-metric[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .dm-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .dm-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n \n\n .existing-feedback[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n padding: 14px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-radius: 8px;\n font-size: 13px;\n }\n\n .feedback-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-muted);\n }\n\n .feedback-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .feedback-comments[_ngcontent-%COMP%] {\n width: 100%;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, var(--mj-bg-surface));\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-style: italic;\n }\n\n .feedback-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .feedback-form[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .rating-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n }\n\n .rating-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .rating-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n }\n\n .rating-btn.selected[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .toggle-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .toggle-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-family: inherit;\n color: var(--mj-text-secondary);\n resize: vertical;\n box-sizing: border-box;\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .comments-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .submit-feedback-btn[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n\n \n\n @media (max-width: 1400px) {\n .stats-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 1200px) {\n .filter-bar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-left[_ngcontent-%COMP%], .filter-right[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .table-header[_ngcontent-%COMP%], .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 120px 100px 100px 80px;\n }\n\n .col-eval[_ngcontent-%COMP%], .col-time[_ngcontent-%COMP%] {\n display: none;\n }\n }\n\n @media (max-width: 768px) {\n .stats-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n width: 100vw;\n max-width: 100vw;\n }\n }\n\n @media (max-width: 480px) {\n .table-header[_ngcontent-%COMP%], .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 80px 60px;\n }\n\n .col-score[_ngcontent-%COMP%], .col-duration[_ngcontent-%COMP%] {\n display: none;\n }\n\n .chip[_ngcontent-%COMP%] {\n min-height: 44px;\n padding: 8px 14px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n min-height: 44px;\n }\n }"], changeDetection: 0 });
742
768
  }
743
769
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingRunsComponent, [{
744
770
  type: Component,
745
771
  args: [{ standalone: false, selector: 'app-testing-runs', changeDetection: ChangeDetectionStrategy.OnPush, template: `
746
- <!-- Page Header -->
772
+ @if (HideToolbar) {
773
+ <ng-container *ngTemplateOutlet="content"></ng-container>
774
+ } @else {
775
+ <mj-page-layout>
776
+ <mj-page-header
777
+ Title="Test Runs"
778
+ Icon="fa-solid fa-list-check"
779
+ Subtitle="Test execution history and monitoring">
780
+ <div actions>
781
+ <mj-refresh-button [Loading]="IsRefreshing" (Clicked)="Refresh()"></mj-refresh-button>
782
+ <button mjButton variant="primary" size="sm" (click)="StartNewTest()">
783
+ <i class="fa-solid fa-play"></i> Run Test
784
+ </button>
785
+ </div>
786
+ </mj-page-header>
787
+ <mj-page-body>
788
+ <ng-container *ngTemplateOutlet="content"></ng-container>
789
+ </mj-page-body>
790
+ </mj-page-layout>
791
+ }
792
+
793
+ <ng-template #content>
747
794
  <div class="runs-container" (keydown.escape)="CloseDetailPanel()">
748
- <div class="page-header">
749
- <div class="header-title">
750
- <i class="fa-solid fa-list-check"></i>
751
- <h2>Test Runs</h2>
752
- </div>
753
- <div class="header-actions">
754
- <button class="btn btn-secondary" (click)="Refresh()" [disabled]="IsRefreshing">
755
- <i class="fa-solid fa-sync-alt" [class.spinning]="IsRefreshing"></i>
756
- Refresh
757
- </button>
758
- <button class="btn btn-primary" (click)="StartNewTest()">
759
- <i class="fa-solid fa-play"></i>
760
- Run Test
761
- </button>
762
- </div>
763
- </div>
764
795
 
765
796
  <!-- Filter Bar -->
766
797
  <div class="filter-bar">
@@ -1056,14 +1087,17 @@ export class TestingRunsComponent {
1056
1087
  </div>
1057
1088
  }
1058
1089
  </div>
1090
+ </ng-template>
1059
1091
  `, styles: ["\n /* ==========================================\n Testing Runs Component\n ========================================== */\n\n .runs-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n position: relative;\n }\n\n /* Page Header */\n .page-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 22px;\n color: var(--mj-brand-primary);\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .header-actions {\n display: flex;\n gap: 10px;\n }\n\n /* Buttons */\n .btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: none;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary {\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n /* Filter Bar */\n .filter-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n margin-bottom: 20px;\n padding: 14px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .filter-left {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .filter-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n\n .chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .chip:hover {\n background: var(--mj-border-default);\n }\n\n .chip.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"running\"] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .chip.active[data-status=\"passed\"] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n }\n\n .chip.active[data-status=\"failed\"] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n .chip.active[data-status=\"error\"] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n }\n\n .result-count {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n white-space: nowrap;\n }\n\n .filter-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .time-select {\n padding: 8px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n }\n\n .time-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .search-box {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n min-width: 220px;\n transition: border-color 0.2s ease;\n }\n\n .search-box:focus-within {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n }\n\n .search-box i {\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .search-box input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n .search-box input::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .clear-search {\n border: none;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search:hover {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n }\n\n /* Stats Row */\n .stats-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 14px;\n margin-bottom: 20px;\n }\n\n .stat-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .stat-icon {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n }\n\n .stat-icon.total { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.pass { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n .stat-icon.duration { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n .stat-icon.cost { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n .stat-body {\n flex: 1;\n }\n\n .stat-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n }\n\n .stat-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n }\n\n /* Runs Table */\n .runs-table-wrapper {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.15s ease;\n align-items: center;\n }\n\n .table-row:last-child {\n border-bottom: none;\n }\n\n .table-row:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-row.is-selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .table-row.is-running {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface));\n }\n\n .table-row.is-running .test-name-link::after {\n content: '';\n display: inline-block;\n width: 8px;\n height: 8px;\n background: var(--mj-brand-primary);\n border-radius: 50%;\n margin-left: 8px;\n animation: pulse-dot 1.5s infinite;\n }\n\n @keyframes pulse-dot {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.3; }\n }\n\n .col {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n }\n\n .test-name-link {\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .test-name-link:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n }\n\n .col-actions {\n gap: 6px;\n justify-content: flex-end;\n }\n\n .icon-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 8px;\n font-size: 13px;\n transition: all 0.2s ease;\n }\n\n .icon-btn:hover {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n /* Table states */\n .table-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 40px;\n }\n\n .table-empty {\n padding: 80px 40px;\n text-align: center;\n }\n\n .table-empty i {\n font-size: 48px;\n color: var(--mj-border-strong);\n margin-bottom: 16px;\n }\n\n .table-empty p {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n /* Detail Panel Overlay */\n .detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n }\n\n /* Detail Panel */\n .detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 520px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease-out;\n }\n\n @keyframes slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n }\n\n .detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n .detail-title-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .detail-title-section h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n flex-shrink: 0;\n margin-left: 12px;\n transition: all 0.15s ease;\n }\n\n .close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .detail-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .detail-metrics {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 24px;\n }\n\n .detail-metric {\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .dm-label {\n display: block;\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .dm-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .detail-section {\n margin-bottom: 24px;\n }\n\n .detail-section h4 {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .detail-section h4 i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n /* Feedback Section */\n .existing-feedback {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n padding: 14px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-radius: 8px;\n font-size: 13px;\n }\n\n .feedback-label {\n font-weight: 600;\n color: var(--mj-text-muted);\n }\n\n .feedback-value {\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .feedback-comments {\n width: 100%;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, var(--mj-bg-surface));\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-style: italic;\n }\n\n .feedback-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .feedback-form label {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .rating-buttons {\n display: flex;\n gap: 4px;\n }\n\n .rating-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .rating-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n }\n\n .rating-btn.selected {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .toggle-group {\n display: flex;\n gap: 8px;\n }\n\n .toggle-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .comments-row textarea {\n width: 100%;\n padding: 10px 12px;\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n font-family: inherit;\n color: var(--mj-text-secondary);\n resize: vertical;\n box-sizing: border-box;\n }\n\n .comments-row textarea:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n }\n\n .comments-row textarea::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .submit-feedback-btn {\n align-self: flex-start;\n }\n\n /* Responsive */\n @media (max-width: 1400px) {\n .stats-row {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 1200px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-left, .filter-right {\n justify-content: center;\n }\n\n .table-header, .table-row {\n grid-template-columns: 2fr 120px 100px 100px 80px;\n }\n\n .col-eval, .col-time {\n display: none;\n }\n }\n\n @media (max-width: 768px) {\n .stats-row {\n grid-template-columns: 1fr;\n }\n\n .detail-panel {\n width: 100vw;\n max-width: 100vw;\n }\n }\n\n @media (max-width: 480px) {\n .table-header, .table-row {\n grid-template-columns: 1fr 80px 60px;\n }\n\n .col-score, .col-duration {\n display: none;\n }\n\n .chip {\n min-height: 44px;\n padding: 8px 14px;\n }\n\n .table-row {\n min-height: 44px;\n }\n }\n "] }]
1060
1092
  }], () => [{ type: i1.TestingInstrumentationService }, { type: i2.TestingDialogService }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }], { initialState: [{
1061
1093
  type: Input
1094
+ }], HideToolbar: [{
1095
+ type: Input
1062
1096
  }], stateChange: [{
1063
1097
  type: Output
1064
1098
  }], OnEscapeKey: [{
1065
1099
  type: HostListener,
1066
1100
  args: ['document:keydown.escape']
1067
1101
  }] }); })();
1068
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingRunsComponent, { className: "TestingRunsComponent", filePath: "src/Testing/components/testing-runs.component.ts", lineNumber: 1123 }); })();
1102
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingRunsComponent, { className: "TestingRunsComponent", filePath: "src/Testing/components/testing-runs.component.ts", lineNumber: 1129 }); })();
1069
1103
  //# sourceMappingURL=testing-runs.component.js.map