@memberjunction/ng-dashboards 5.34.0 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -4,174 +4,138 @@
4
4
  * Ranks AI models by configurable metrics (Cost Efficiency, Speed, Reliability, Usage Volume).
5
5
  * Data is loaded from MJ: AI Prompt Runs and augmented with model metadata from AIEngineBase.
6
6
  */
7
- import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
7
+ import { Component, Input, ChangeDetectorRef, inject } from '@angular/core';
8
8
  import { Subject } from 'rxjs';
9
9
  import { RunView } from '@memberjunction/core';
10
10
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
11
11
  import { UUIDsEqual } from '@memberjunction/global';
12
12
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/forms";
15
- import * as i2 from "@memberjunction/ng-shared-generic";
16
- import * as i3 from "@angular/common";
17
- const _forTrack0 = ($index, $item) => $item.value;
18
- const _forTrack1 = ($index, $item) => $item.id;
19
- const _forTrack2 = ($index, $item) => $item.ModelName;
20
- function AnalyticsModelPerformanceComponent_For_7_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "option", 5);
22
- i0.ɵɵtext(1);
23
- i0.ɵɵelementEnd();
24
- } if (rf & 2) {
25
- const opt_r1 = ctx.$implicit;
26
- i0.ɵɵproperty("value", opt_r1.value);
27
- i0.ɵɵadvance();
28
- i0.ɵɵtextInterpolate(opt_r1.label);
29
- } }
30
- function AnalyticsModelPerformanceComponent_For_12_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "option", 5);
32
- i0.ɵɵtext(1);
14
+ import * as i1 from "@memberjunction/ng-shared-generic";
15
+ import * as i2 from "@angular/common";
16
+ const _forTrack0 = ($index, $item) => $item.ModelName;
17
+ function AnalyticsModelPerformanceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "div", 0);
19
+ i0.ɵɵelement(1, "mj-loading", 2);
33
20
  i0.ɵɵelementEnd();
34
- } if (rf & 2) {
35
- const v_r2 = ctx.$implicit;
36
- i0.ɵɵproperty("value", v_r2.id);
37
- i0.ɵɵadvance();
38
- i0.ɵɵtextInterpolate(v_r2.name);
39
21
  } }
40
- function AnalyticsModelPerformanceComponent_For_15_Template(rf, ctx) { if (rf & 1) {
41
- const _r3 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "button", 11);
43
- i0.ɵɵlistener("click", function AnalyticsModelPerformanceComponent_For_15_Template_button_click_0_listener() { const opt_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.OnTimeRangeSelect(opt_r4)); });
44
- i0.ɵɵtext(1);
45
- i0.ɵɵelementEnd();
46
- } if (rf & 2) {
47
- const opt_r4 = ctx.$implicit;
48
- const ctx_r4 = i0.ɵɵnextContext();
49
- i0.ɵɵclassProp("active", ctx_r4.TimeRange === opt_r4);
50
- i0.ɵɵadvance();
51
- i0.ɵɵtextInterpolate1(" ", opt_r4, " ");
52
- } }
53
- function AnalyticsModelPerformanceComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "div", 9);
55
- i0.ɵɵelement(1, "mj-loading", 12);
56
- i0.ɵɵelementEnd();
57
- } }
58
- function AnalyticsModelPerformanceComponent_Conditional_17_Conditional_24_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "tr")(1, "td", 19);
22
+ function AnalyticsModelPerformanceComponent_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "tr")(1, "td", 9);
60
24
  i0.ɵɵtext(2, "No model data for selected period");
61
25
  i0.ɵɵelementEnd()();
62
26
  } }
63
- function AnalyticsModelPerformanceComponent_Conditional_17_For_26_Conditional_7_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "div", 23);
27
+ function AnalyticsModelPerformanceComponent_Conditional_1_For_26_Conditional_7_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 13);
65
29
  i0.ɵɵtext(1);
66
30
  i0.ɵɵelementEnd();
67
31
  } if (rf & 2) {
68
- const row_r6 = i0.ɵɵnextContext().$implicit;
32
+ const row_r1 = i0.ɵɵnextContext().$implicit;
69
33
  i0.ɵɵadvance();
70
- i0.ɵɵtextInterpolate(row_r6.ApiId);
34
+ i0.ɵɵtextInterpolate(row_r1.ApiId);
71
35
  } }
72
- function AnalyticsModelPerformanceComponent_Conditional_17_For_26_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 20);
36
+ function AnalyticsModelPerformanceComponent_Conditional_1_For_26_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 10);
74
38
  i0.ɵɵtext(3);
75
39
  i0.ɵɵelementEnd()();
76
- i0.ɵɵelementStart(4, "td", 21)(5, "div", 22);
40
+ i0.ɵɵelementStart(4, "td", 11)(5, "div", 12);
77
41
  i0.ɵɵtext(6);
78
42
  i0.ɵɵelementEnd();
79
- i0.ɵɵconditionalCreate(7, AnalyticsModelPerformanceComponent_Conditional_17_For_26_Conditional_7_Template, 2, 1, "div", 23);
43
+ i0.ɵɵconditionalCreate(7, AnalyticsModelPerformanceComponent_Conditional_1_For_26_Conditional_7_Template, 2, 1, "div", 13);
80
44
  i0.ɵɵelementEnd();
81
- i0.ɵɵelementStart(8, "td", 24);
45
+ i0.ɵɵelementStart(8, "td", 14);
82
46
  i0.ɵɵtext(9);
83
47
  i0.ɵɵelementEnd();
84
- i0.ɵɵelementStart(10, "td", 25);
48
+ i0.ɵɵelementStart(10, "td", 15);
85
49
  i0.ɵɵtext(11);
86
50
  i0.ɵɵpipe(12, "number");
87
51
  i0.ɵɵelementEnd();
88
- i0.ɵɵelementStart(13, "td", 25)(14, "span");
52
+ i0.ɵɵelementStart(13, "td", 15)(14, "span");
89
53
  i0.ɵɵtext(15);
90
54
  i0.ɵɵelementEnd()();
91
- i0.ɵɵelementStart(16, "td", 25);
55
+ i0.ɵɵelementStart(16, "td", 15);
92
56
  i0.ɵɵtext(17);
93
57
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(18, "td", 25)(19, "div", 26)(20, "span", 27);
58
+ i0.ɵɵelementStart(18, "td", 15)(19, "div", 16)(20, "span", 17);
95
59
  i0.ɵɵtext(21);
96
60
  i0.ɵɵpipe(22, "number");
97
61
  i0.ɵɵelementEnd();
98
- i0.ɵɵelementStart(23, "div", 28);
99
- i0.ɵɵelement(24, "div", 29);
62
+ i0.ɵɵelementStart(23, "div", 18);
63
+ i0.ɵɵelement(24, "div", 19);
100
64
  i0.ɵɵelementEnd()()();
101
- i0.ɵɵelementStart(25, "td", 25);
65
+ i0.ɵɵelementStart(25, "td", 15);
102
66
  i0.ɵɵtext(26);
103
67
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(27, "td", 30);
68
+ i0.ɵɵelementStart(27, "td", 20);
105
69
  i0.ɵɵtext(28);
106
70
  i0.ɵɵelementEnd()();
107
71
  } if (rf & 2) {
108
- const row_r6 = ctx.$implicit;
109
- const ctx_r4 = i0.ɵɵnextContext(2);
72
+ const row_r1 = ctx.$implicit;
73
+ const ctx_r1 = i0.ɵɵnextContext(2);
110
74
  i0.ɵɵadvance(2);
111
- i0.ɵɵclassMap(row_r6.RankClass);
75
+ i0.ɵɵclassMap(row_r1.RankClass);
112
76
  i0.ɵɵadvance();
113
- i0.ɵɵtextInterpolate1(" ", row_r6.Rank, " ");
77
+ i0.ɵɵtextInterpolate1(" ", row_r1.Rank, " ");
114
78
  i0.ɵɵadvance(3);
115
- i0.ɵɵtextInterpolate(row_r6.ModelName);
79
+ i0.ɵɵtextInterpolate(row_r1.ModelName);
116
80
  i0.ɵɵadvance();
117
- i0.ɵɵconditional(row_r6.ApiId && row_r6.ApiId !== row_r6.ModelName ? 7 : -1);
81
+ i0.ɵɵconditional(row_r1.ApiId && row_r1.ApiId !== row_r1.ModelName ? 7 : -1);
118
82
  i0.ɵɵadvance(2);
119
- i0.ɵɵtextInterpolate(row_r6.Vendor);
83
+ i0.ɵɵtextInterpolate(row_r1.Vendor);
120
84
  i0.ɵɵadvance(2);
121
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 16, row_r6.Runs));
85
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 16, row_r1.Runs));
122
86
  i0.ɵɵadvance(3);
123
- i0.ɵɵstyleProp("color", row_r6.AvgLatencyColor);
87
+ i0.ɵɵstyleProp("color", row_r1.AvgLatencyColor);
124
88
  i0.ɵɵadvance();
125
- i0.ɵɵtextInterpolate1(" ", ctx_r4.FormatLatency(row_r6.AvgLatencyMs), " ");
89
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLatency(row_r1.AvgLatencyMs), " ");
126
90
  i0.ɵɵadvance(2);
127
- i0.ɵɵtextInterpolate(ctx_r4.FormatLatency(row_r6.P95LatencyMs));
91
+ i0.ɵɵtextInterpolate(ctx_r1.FormatLatency(row_r1.P95LatencyMs));
128
92
  i0.ɵɵadvance(4);
129
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(22, 18, row_r6.SuccessRate, "1.1-1"), "%");
93
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(22, 18, row_r1.SuccessRate, "1.1-1"), "%");
130
94
  i0.ɵɵadvance(3);
131
- i0.ɵɵstyleProp("width", row_r6.SuccessRate, "%");
95
+ i0.ɵɵstyleProp("width", row_r1.SuccessRate, "%");
132
96
  i0.ɵɵadvance(2);
133
- i0.ɵɵtextInterpolate(ctx_r4.FormatCurrency(row_r6.CostPer1KTokens, 4));
97
+ i0.ɵɵtextInterpolate(ctx_r1.FormatCurrency(row_r1.CostPer1KTokens, 4));
134
98
  i0.ɵɵadvance(2);
135
- i0.ɵɵtextInterpolate(ctx_r4.FormatCurrency(row_r6.TotalCost));
99
+ i0.ɵɵtextInterpolate(ctx_r1.FormatCurrency(row_r1.TotalCost));
136
100
  } }
137
- function AnalyticsModelPerformanceComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
138
- i0.ɵɵelementStart(0, "div", 10)(1, "div", 13)(2, "table", 14)(3, "thead")(4, "tr")(5, "th", 15);
101
+ function AnalyticsModelPerformanceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 3)(2, "table", 4)(3, "thead")(4, "tr")(5, "th", 5);
139
103
  i0.ɵɵtext(6, "Rank");
140
104
  i0.ɵɵelementEnd();
141
- i0.ɵɵelementStart(7, "th", 16);
105
+ i0.ɵɵelementStart(7, "th", 6);
142
106
  i0.ɵɵtext(8, "Model");
143
107
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(9, "th", 17);
108
+ i0.ɵɵelementStart(9, "th", 7);
145
109
  i0.ɵɵtext(10, "Vendor");
146
110
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(11, "th", 18);
111
+ i0.ɵɵelementStart(11, "th", 8);
148
112
  i0.ɵɵtext(12, "Runs");
149
113
  i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(13, "th", 18);
114
+ i0.ɵɵelementStart(13, "th", 8);
151
115
  i0.ɵɵtext(14, "Avg Latency");
152
116
  i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(15, "th", 18);
117
+ i0.ɵɵelementStart(15, "th", 8);
154
118
  i0.ɵɵtext(16, "P95 Latency");
155
119
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(17, "th", 18);
120
+ i0.ɵɵelementStart(17, "th", 8);
157
121
  i0.ɵɵtext(18, "Success Rate");
158
122
  i0.ɵɵelementEnd();
159
- i0.ɵɵelementStart(19, "th", 18);
123
+ i0.ɵɵelementStart(19, "th", 8);
160
124
  i0.ɵɵtext(20, "$/1K Tokens");
161
125
  i0.ɵɵelementEnd();
162
- i0.ɵɵelementStart(21, "th", 18);
126
+ i0.ɵɵelementStart(21, "th", 8);
163
127
  i0.ɵɵtext(22, "Total Cost");
164
128
  i0.ɵɵelementEnd()()();
165
129
  i0.ɵɵelementStart(23, "tbody");
166
- i0.ɵɵconditionalCreate(24, AnalyticsModelPerformanceComponent_Conditional_17_Conditional_24_Template, 3, 0, "tr");
167
- i0.ɵɵrepeaterCreate(25, AnalyticsModelPerformanceComponent_Conditional_17_For_26_Template, 29, 21, "tr", null, _forTrack2);
130
+ i0.ɵɵconditionalCreate(24, AnalyticsModelPerformanceComponent_Conditional_1_Conditional_24_Template, 3, 0, "tr");
131
+ i0.ɵɵrepeaterCreate(25, AnalyticsModelPerformanceComponent_Conditional_1_For_26_Template, 29, 21, "tr", null, _forTrack0);
168
132
  i0.ɵɵelementEnd()()()();
169
133
  } if (rf & 2) {
170
- const ctx_r4 = i0.ɵɵnextContext();
134
+ const ctx_r1 = i0.ɵɵnextContext();
171
135
  i0.ɵɵadvance(24);
172
- i0.ɵɵconditional(ctx_r4.Rows.length === 0 ? 24 : -1);
136
+ i0.ɵɵconditional(ctx_r1.Rows.length === 0 ? 24 : -1);
173
137
  i0.ɵɵadvance();
174
- i0.ɵɵrepeater(ctx_r4.Rows);
138
+ i0.ɵɵrepeater(ctx_r1.Rows);
175
139
  } }
176
140
  const FIELDS = [
177
141
  'ID', 'RunAt', 'CompletedAt', 'ExecutionTimeMS', 'Success',
@@ -179,50 +143,51 @@ const FIELDS = [
179
143
  'ModelID', 'Model', 'VendorID', 'Vendor'
180
144
  ];
181
145
  export class AnalyticsModelPerformanceComponent extends BaseAngularComponent {
182
- TimeRange = '7d';
183
- TimeRangeChange = new EventEmitter();
146
+ _timeRange = '7d';
147
+ set TimeRange(value) {
148
+ const prev = this._timeRange;
149
+ this._timeRange = value;
150
+ if (prev !== value && this.initialized)
151
+ this.LoadData();
152
+ }
153
+ get TimeRange() { return this._timeRange; }
154
+ _sortBy = 'cost-efficiency';
155
+ set SortBy(value) {
156
+ const prev = this._sortBy;
157
+ this._sortBy = (value || 'cost-efficiency');
158
+ if (prev !== this._sortBy && this.initialized) {
159
+ this.buildRows();
160
+ this.cdr.markForCheck();
161
+ }
162
+ }
163
+ get SortBy() { return this._sortBy; }
164
+ _selectedVendor = '';
165
+ set SelectedVendor(value) {
166
+ const prev = this._selectedVendor;
167
+ this._selectedVendor = value ?? '';
168
+ if (prev !== this._selectedVendor && this.initialized) {
169
+ this.buildRows();
170
+ this.cdr.markForCheck();
171
+ }
172
+ }
173
+ get SelectedVendor() { return this._selectedVendor; }
184
174
  cdr = inject(ChangeDetectorRef);
185
175
  destroy$ = new Subject();
176
+ initialized = false;
186
177
  IsLoading = false;
187
- SortBy = 'cost-efficiency';
188
- SelectedVendor = '';
189
178
  Rows = [];
190
- TimeRangeOptions = ['24h', '7d', '30d'];
191
- SortByOptions = [
192
- { value: 'cost-efficiency', label: 'Cost Efficiency' },
193
- { value: 'speed', label: 'Speed' },
194
- { value: 'reliability', label: 'Reliability' },
195
- { value: 'usage-volume', label: 'Usage Volume' }
196
- ];
197
- VendorOptions = [];
198
179
  allRuns = [];
199
180
  async ngOnInit() {
200
181
  // AIEngineBase is deferred at startup — make sure it's loaded before
201
182
  // we read .Vendors / .Models from it.
202
183
  await AIEngineBase.Instance.EnsureLoaded();
203
- this.loadVendorOptions();
184
+ this.initialized = true;
204
185
  this.LoadData();
205
186
  }
206
187
  ngOnDestroy() {
207
188
  this.destroy$.next();
208
189
  this.destroy$.complete();
209
190
  }
210
- // ── Public Handlers ──
211
- OnTimeRangeSelect(range) {
212
- this.TimeRange = range;
213
- this.TimeRangeChange.emit(range);
214
- this.LoadData();
215
- }
216
- OnSortByChange(event) {
217
- this.SortBy = event.target.value;
218
- this.buildRows();
219
- this.cdr.detectChanges();
220
- }
221
- OnVendorChange(event) {
222
- this.SelectedVendor = event.target.value;
223
- this.buildRows();
224
- this.cdr.detectChanges();
225
- }
226
191
  FormatLatency(ms) {
227
192
  if (ms < 1000)
228
193
  return Math.round(ms) + 'ms';
@@ -236,17 +201,6 @@ export class AnalyticsModelPerformanceComponent extends BaseAngularComponent {
236
201
  return '$' + value.toFixed(decimals);
237
202
  }
238
203
  // ── Data Loading ──
239
- loadVendorOptions() {
240
- try {
241
- this.VendorOptions = AIEngineBase.Instance.Vendors.map(v => ({
242
- id: v.ID,
243
- name: v.Name
244
- }));
245
- }
246
- catch {
247
- this.VendorOptions = [];
248
- }
249
- }
250
204
  async LoadData() {
251
205
  this.IsLoading = true;
252
206
  this.cdr.detectChanges();
@@ -394,78 +348,15 @@ export class AnalyticsModelPerformanceComponent extends BaseAngularComponent {
394
348
  return `RunAt >= '${start.toISOString()}'`;
395
349
  }
396
350
  static ɵfac = /*@__PURE__*/ (() => { let ɵAnalyticsModelPerformanceComponent_BaseFactory; return function AnalyticsModelPerformanceComponent_Factory(__ngFactoryType__) { return (ɵAnalyticsModelPerformanceComponent_BaseFactory || (ɵAnalyticsModelPerformanceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AnalyticsModelPerformanceComponent)))(__ngFactoryType__ || AnalyticsModelPerformanceComponent); }; })();
397
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsModelPerformanceComponent, selectors: [["app-analytics-model-performance"]], inputs: { TimeRange: "TimeRange" }, outputs: { TimeRangeChange: "TimeRangeChange" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 3, consts: [[1, "filter-bar"], [1, "filter-controls"], [1, "filter-label"], [1, "fa-solid", "fa-trophy"], [1, "filter-select", 3, "change", "value"], [3, "value"], ["value", ""], [1, "time-chips"], [1, "time-chip", 3, "active"], [1, "loading-container"], [1, "leaderboard-panel"], [1, "time-chip", 3, "click"], ["text", "Loading model performance..."], [1, "table-wrapper"], [1, "leaderboard-table"], [1, "col-rank"], [1, "col-model"], [1, "col-vendor"], [1, "col-numeric"], ["colspan", "9", 1, "empty-row"], [1, "rank-badge"], [1, "cell-model"], [1, "model-name"], [1, "model-api-id"], [1, "cell-vendor"], [1, "cell-numeric"], [1, "success-rate-cell"], [1, "success-rate-value"], [1, "success-bar-bg"], [1, "success-bar-fill"], [1, "cell-numeric", "cell-cost"]], template: function AnalyticsModelPerformanceComponent_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "span", 2);
399
- i0.ɵɵelement(3, "i", 3);
400
- i0.ɵɵtext(4, " Leaderboard ");
401
- i0.ɵɵelementEnd();
402
- i0.ɵɵelementStart(5, "select", 4);
403
- i0.ɵɵlistener("change", function AnalyticsModelPerformanceComponent_Template_select_change_5_listener($event) { return ctx.OnSortByChange($event); });
404
- i0.ɵɵrepeaterCreate(6, AnalyticsModelPerformanceComponent_For_7_Template, 2, 2, "option", 5, _forTrack0);
405
- i0.ɵɵelementEnd();
406
- i0.ɵɵelementStart(8, "select", 4);
407
- i0.ɵɵlistener("change", function AnalyticsModelPerformanceComponent_Template_select_change_8_listener($event) { return ctx.OnVendorChange($event); });
408
- i0.ɵɵelementStart(9, "option", 6);
409
- i0.ɵɵtext(10, "All Vendors");
410
- i0.ɵɵelementEnd();
411
- i0.ɵɵrepeaterCreate(11, AnalyticsModelPerformanceComponent_For_12_Template, 2, 2, "option", 5, _forTrack1);
412
- i0.ɵɵelementEnd()();
413
- i0.ɵɵelementStart(13, "div", 7);
414
- i0.ɵɵrepeaterCreate(14, AnalyticsModelPerformanceComponent_For_15_Template, 2, 3, "button", 8, i0.ɵɵrepeaterTrackByIdentity);
415
- i0.ɵɵelementEnd()();
416
- i0.ɵɵconditionalCreate(16, AnalyticsModelPerformanceComponent_Conditional_16_Template, 2, 0, "div", 9)(17, AnalyticsModelPerformanceComponent_Conditional_17_Template, 27, 1, "div", 10);
351
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsModelPerformanceComponent, selectors: [["app-analytics-model-performance"]], inputs: { TimeRange: "TimeRange", SortBy: "SortBy", SelectedVendor: "SelectedVendor" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "loading-container"], [1, "leaderboard-panel"], ["text", "Loading model performance..."], [1, "table-wrapper"], [1, "leaderboard-table"], [1, "col-rank"], [1, "col-model"], [1, "col-vendor"], [1, "col-numeric"], ["colspan", "9", 1, "empty-row"], [1, "rank-badge"], [1, "cell-model"], [1, "model-name"], [1, "model-api-id"], [1, "cell-vendor"], [1, "cell-numeric"], [1, "success-rate-cell"], [1, "success-rate-value"], [1, "success-bar-bg"], [1, "success-bar-fill"], [1, "cell-numeric", "cell-cost"]], template: function AnalyticsModelPerformanceComponent_Template(rf, ctx) { if (rf & 1) {
352
+ i0.ɵɵconditionalCreate(0, AnalyticsModelPerformanceComponent_Conditional_0_Template, 2, 0, "div", 0)(1, AnalyticsModelPerformanceComponent_Conditional_1_Template, 27, 1, "div", 1);
417
353
  } if (rf & 2) {
418
- i0.ɵɵadvance(5);
419
- i0.ɵɵproperty("value", ctx.SortBy);
420
- i0.ɵɵadvance();
421
- i0.ɵɵrepeater(ctx.SortByOptions);
422
- i0.ɵɵadvance(2);
423
- i0.ɵɵproperty("value", ctx.SelectedVendor);
424
- i0.ɵɵadvance(3);
425
- i0.ɵɵrepeater(ctx.VendorOptions);
426
- i0.ɵɵadvance(3);
427
- i0.ɵɵrepeater(ctx.TimeRangeOptions);
428
- i0.ɵɵadvance(2);
429
- i0.ɵɵconditional(ctx.IsLoading ? 16 : 17);
430
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.LoadingComponent, i3.DecimalPipe], styles: ["[_nghost-%COMP%] { display: block; }\n\n .loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n }\n\n \n\n .filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 12px 16px;\n flex-wrap: wrap;\n margin-bottom: 16px;\n }\n\n .filter-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n }\n\n .filter-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .filter-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-status-warning);\n }\n\n .filter-select[_ngcontent-%COMP%] {\n padding: 5px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n min-width: 130px;\n outline: none;\n }\n\n .filter-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n\n .time-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n }\n\n .time-chip[_ngcontent-%COMP%] {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n \n\n .leaderboard-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n }\n\n .table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .leaderboard-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 14px;\n text-align: left;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--mj-bg-surface-card);\n position: sticky;\n top: 0;\n white-space: nowrap;\n }\n\n .col-rank[_ngcontent-%COMP%] { width: 60px; text-align: center; }\n .col-model[_ngcontent-%COMP%] { min-width: 180px; }\n .col-vendor[_ngcontent-%COMP%] { min-width: 100px; }\n .col-numeric[_ngcontent-%COMP%] { text-align: right; white-space: nowrap; }\n\n .leaderboard-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n transition: background 0.15s;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .empty-row[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-disabled);\n padding: 32px;\n }\n\n \n\n .rank-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 700;\n }\n\n .rank-gold[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-bg-surface)), color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n }\n\n .rank-silver[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n }\n\n .rank-bronze[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n }\n\n .rank-neutral[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n \n\n .cell-model[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .model-name[_ngcontent-%COMP%] {\n font-weight: 600;\n }\n\n .model-api-id[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-family: monospace;\n }\n\n .cell-vendor[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n }\n\n .cell-numeric[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n }\n\n .cell-cost[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n \n\n .success-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 3px;\n }\n\n .success-rate-value[_ngcontent-%COMP%] {\n font-weight: 600;\n }\n\n .success-bar-bg[_ngcontent-%COMP%] {\n width: 60px;\n height: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .success-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-status-success);\n border-radius: 2px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n \n\n @media (max-width: 1200px) {\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .leaderboard-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 10px;\n }\n }\n\n @media (max-width: 768px) {\n .filter-bar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips[_ngcontent-%COMP%] {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }"] });
354
+ i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
355
+ } }, dependencies: [i1.LoadingComponent, i2.DecimalPipe], styles: ["[_nghost-%COMP%] { display: block; }\n\n .loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n }\n\n \n\n .leaderboard-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n }\n\n .table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .leaderboard-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 14px;\n text-align: left;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--mj-bg-surface-card);\n position: sticky;\n top: 0;\n white-space: nowrap;\n }\n\n .col-rank[_ngcontent-%COMP%] { width: 60px; text-align: center; }\n .col-model[_ngcontent-%COMP%] { min-width: 180px; }\n .col-vendor[_ngcontent-%COMP%] { min-width: 100px; }\n .col-numeric[_ngcontent-%COMP%] { text-align: right; white-space: nowrap; }\n\n .leaderboard-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n transition: background 0.15s;\n }\n\n .leaderboard-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .empty-row[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-disabled);\n padding: 32px;\n }\n\n \n\n .rank-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 700;\n }\n\n .rank-gold[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-bg-surface)), color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n }\n\n .rank-silver[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n }\n\n .rank-bronze[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n }\n\n .rank-neutral[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n \n\n .cell-model[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .model-name[_ngcontent-%COMP%] {\n font-weight: 600;\n }\n\n .model-api-id[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-family: monospace;\n }\n\n .cell-vendor[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n }\n\n .cell-numeric[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n }\n\n .cell-cost[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n \n\n .success-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 3px;\n }\n\n .success-rate-value[_ngcontent-%COMP%] {\n font-weight: 600;\n }\n\n .success-bar-bg[_ngcontent-%COMP%] {\n width: 60px;\n height: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .success-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-status-success);\n border-radius: 2px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n \n\n @media (max-width: 1200px) {\n .leaderboard-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .leaderboard-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 10px;\n }\n }"] });
431
356
  }
432
357
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsModelPerformanceComponent, [{
433
358
  type: Component,
434
359
  args: [{ standalone: false, selector: 'app-analytics-model-performance', template: `
435
- <!-- Filter Bar -->
436
- <div class="filter-bar">
437
- <div class="filter-controls">
438
- <span class="filter-label">
439
- <i class="fa-solid fa-trophy"></i>
440
- Leaderboard
441
- </span>
442
-
443
- <select class="filter-select" [value]="SortBy" (change)="OnSortByChange($event)">
444
- @for (opt of SortByOptions; track opt.value) {
445
- <option [value]="opt.value">{{ opt.label }}</option>
446
- }
447
- </select>
448
-
449
- <select class="filter-select" [value]="SelectedVendor" (change)="OnVendorChange($event)">
450
- <option value="">All Vendors</option>
451
- @for (v of VendorOptions; track v.id) {
452
- <option [value]="v.id">{{ v.name }}</option>
453
- }
454
- </select>
455
- </div>
456
-
457
- <div class="time-chips">
458
- @for (opt of TimeRangeOptions; track opt) {
459
- <button
460
- class="time-chip"
461
- [class.active]="TimeRange === opt"
462
- (click)="OnTimeRangeSelect(opt)">
463
- {{ opt }}
464
- </button>
465
- }
466
- </div>
467
- </div>
468
-
469
360
  @if (IsLoading) {
470
361
  <div class="loading-container">
471
362
  <mj-loading text="Loading model performance..."></mj-loading>
@@ -530,12 +421,14 @@ export class AnalyticsModelPerformanceComponent extends BaseAngularComponent {
530
421
  </div>
531
422
  </div>
532
423
  }
533
- `, styles: ["\n :host { display: block; }\n\n .loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n }\n\n /* \u2500\u2500 Filter Bar \u2500\u2500 */\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 12px 16px;\n flex-wrap: wrap;\n margin-bottom: 16px;\n }\n\n .filter-controls {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n }\n\n .filter-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .filter-label i {\n font-size: 13px;\n color: var(--mj-status-warning);\n }\n\n .filter-select {\n padding: 5px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n min-width: 130px;\n outline: none;\n }\n\n .filter-select:focus {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n }\n\n .time-chip {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n /* \u2500\u2500 Leaderboard \u2500\u2500 */\n .leaderboard-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n }\n\n .table-wrapper {\n overflow-x: auto;\n }\n\n .leaderboard-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n\n .leaderboard-table th,\n .leaderboard-table td {\n padding: 12px 14px;\n text-align: left;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .leaderboard-table th {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--mj-bg-surface-card);\n position: sticky;\n top: 0;\n white-space: nowrap;\n }\n\n .col-rank { width: 60px; text-align: center; }\n .col-model { min-width: 180px; }\n .col-vendor { min-width: 100px; }\n .col-numeric { text-align: right; white-space: nowrap; }\n\n .leaderboard-table tbody tr {\n transition: background 0.15s;\n }\n\n .leaderboard-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .empty-row {\n text-align: center;\n color: var(--mj-text-disabled);\n padding: 32px;\n }\n\n /* \u2500\u2500 Rank Badge \u2500\u2500 */\n .rank-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 700;\n }\n\n .rank-gold {\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-bg-surface)), color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n }\n\n .rank-silver {\n background: color-mix(in srgb, var(--mj-text-muted) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n }\n\n .rank-bronze {\n background: color-mix(in srgb, var(--mj-status-warning) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n }\n\n .rank-neutral {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n /* \u2500\u2500 Model Cell \u2500\u2500 */\n .cell-model {\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .model-name {\n font-weight: 600;\n }\n\n .model-api-id {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-family: monospace;\n }\n\n .cell-vendor {\n color: var(--mj-text-secondary);\n }\n\n .cell-numeric {\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n }\n\n .cell-cost {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n /* \u2500\u2500 Success Rate Mini Bar \u2500\u2500 */\n .success-rate-cell {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 3px;\n }\n\n .success-rate-value {\n font-weight: 600;\n }\n\n .success-bar-bg {\n width: 60px;\n height: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .success-bar-fill {\n height: 100%;\n background: var(--mj-status-success);\n border-radius: 2px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n /* \u2500\u2500 Responsive \u2500\u2500 */\n @media (max-width: 1200px) {\n .leaderboard-table th,\n .leaderboard-table td {\n padding: 10px 10px;\n }\n }\n\n @media (max-width: 768px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }\n "] }]
424
+ `, styles: ["\n :host { display: block; }\n\n .loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n }\n\n /* \u2500\u2500 Leaderboard \u2500\u2500 */\n .leaderboard-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n }\n\n .table-wrapper {\n overflow-x: auto;\n }\n\n .leaderboard-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n\n .leaderboard-table th,\n .leaderboard-table td {\n padding: 12px 14px;\n text-align: left;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .leaderboard-table th {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--mj-bg-surface-card);\n position: sticky;\n top: 0;\n white-space: nowrap;\n }\n\n .col-rank { width: 60px; text-align: center; }\n .col-model { min-width: 180px; }\n .col-vendor { min-width: 100px; }\n .col-numeric { text-align: right; white-space: nowrap; }\n\n .leaderboard-table tbody tr {\n transition: background 0.15s;\n }\n\n .leaderboard-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .empty-row {\n text-align: center;\n color: var(--mj-text-disabled);\n padding: 32px;\n }\n\n /* \u2500\u2500 Rank Badge \u2500\u2500 */\n .rank-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 700;\n }\n\n .rank-gold {\n background: linear-gradient(135deg, color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-bg-surface)), color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n }\n\n .rank-silver {\n background: color-mix(in srgb, var(--mj-text-muted) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n }\n\n .rank-bronze {\n background: color-mix(in srgb, var(--mj-status-warning) 18%, var(--mj-bg-surface));\n color: var(--mj-text-secondary);\n }\n\n .rank-neutral {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n /* \u2500\u2500 Model Cell \u2500\u2500 */\n .cell-model {\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .model-name {\n font-weight: 600;\n }\n\n .model-api-id {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-family: monospace;\n }\n\n .cell-vendor {\n color: var(--mj-text-secondary);\n }\n\n .cell-numeric {\n text-align: right;\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n }\n\n .cell-cost {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n /* \u2500\u2500 Success Rate Mini Bar \u2500\u2500 */\n .success-rate-cell {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 3px;\n }\n\n .success-rate-value {\n font-weight: 600;\n }\n\n .success-bar-bg {\n width: 60px;\n height: 4px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .success-bar-fill {\n height: 100%;\n background: var(--mj-status-success);\n border-radius: 2px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n /* \u2500\u2500 Responsive \u2500\u2500 */\n @media (max-width: 1200px) {\n .leaderboard-table th,\n .leaderboard-table td {\n padding: 10px 10px;\n }\n }\n\n "] }]
534
425
  }], null, { TimeRange: [{
535
426
  type: Input
536
- }], TimeRangeChange: [{
537
- type: Output
427
+ }], SortBy: [{
428
+ type: Input
429
+ }], SelectedVendor: [{
430
+ type: Input
538
431
  }] }); })();
539
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsModelPerformanceComponent, { className: "AnalyticsModelPerformanceComponent", filePath: "src/AI/components/analytics/model-performance/model-performance.component.ts", lineNumber: 429 }); })();
432
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsModelPerformanceComponent, { className: "AnalyticsModelPerformanceComponent", filePath: "src/AI/components/analytics/model-performance/model-performance.component.ts", lineNumber: 300 }); })();
540
433
  export function LoadAnalyticsModelPerformance() { }
541
434
  //# sourceMappingURL=model-performance.component.js.map