@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
@@ -9,73 +9,111 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
9
9
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@memberjunction/ng-ui-components";
12
- function AnalyticsFilterBarComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
13
- const _r1 = i0.ɵɵgetCurrentView();
14
- i0.ɵɵelementStart(0, "mj-dropdown", 12);
15
- i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_5_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnModelChange($event)); });
12
+ function AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
13
+ const _r3 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
15
+ i0.ɵɵtext(2, "Model");
16
16
  i0.ɵɵelementEnd();
17
+ i0.ɵɵelementStart(3, "mj-dropdown", 10);
18
+ i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnModelChange($event)); });
19
+ i0.ɵɵelementEnd()();
17
20
  } if (rf & 2) {
18
- const ctx_r1 = i0.ɵɵnextContext();
21
+ const ctx_r1 = i0.ɵɵnextContext(2);
22
+ i0.ɵɵadvance(3);
19
23
  i0.ɵɵproperty("Data", ctx_r1.ModelOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.modelDefaultItem)("Filterable", ctx_r1.ModelOptions.length > 10);
20
24
  } }
21
- function AnalyticsFilterBarComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
22
- const _r3 = i0.ɵɵgetCurrentView();
23
- i0.ɵɵelementStart(0, "mj-dropdown", 13);
24
- i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_6_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnAgentChange($event)); });
25
+ function AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
26
+ const _r4 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
28
+ i0.ɵɵtext(2, "Agent");
25
29
  i0.ɵɵelementEnd();
30
+ i0.ɵɵelementStart(3, "mj-dropdown", 11);
31
+ i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnAgentChange($event)); });
32
+ i0.ɵɵelementEnd()();
26
33
  } if (rf & 2) {
27
- const ctx_r1 = i0.ɵɵnextContext();
34
+ const ctx_r1 = i0.ɵɵnextContext(2);
35
+ i0.ɵɵadvance(3);
28
36
  i0.ɵɵproperty("Data", ctx_r1.AgentOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.agentDefaultItem)("Filterable", ctx_r1.AgentOptions.length > 10);
29
37
  } }
30
- function AnalyticsFilterBarComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
31
- const _r4 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "mj-dropdown", 14);
33
- i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_7_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnPromptChange($event)); });
38
+ function AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
39
+ const _r5 = i0.ɵɵgetCurrentView();
40
+ i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
41
+ i0.ɵɵtext(2, "Prompt");
34
42
  i0.ɵɵelementEnd();
43
+ i0.ɵɵelementStart(3, "mj-dropdown", 12);
44
+ i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPromptChange($event)); });
45
+ i0.ɵɵelementEnd()();
35
46
  } if (rf & 2) {
36
- const ctx_r1 = i0.ɵɵnextContext();
47
+ const ctx_r1 = i0.ɵɵnextContext(2);
48
+ i0.ɵɵadvance(3);
37
49
  i0.ɵɵproperty("Data", ctx_r1.PromptOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.promptDefaultItem)("Filterable", ctx_r1.PromptOptions.length > 10);
38
50
  } }
39
- function AnalyticsFilterBarComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
40
- const _r5 = i0.ɵɵgetCurrentView();
41
- i0.ɵɵelementStart(0, "mj-dropdown", 15);
42
- i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_8_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnStatusChange($event)); });
51
+ function AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
52
+ const _r6 = i0.ɵɵgetCurrentView();
53
+ i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
54
+ i0.ɵɵtext(2, "Status");
43
55
  i0.ɵɵelementEnd();
56
+ i0.ɵɵelementStart(3, "mj-dropdown", 13);
57
+ i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnStatusChange($event)); });
58
+ i0.ɵɵelementEnd()();
44
59
  } if (rf & 2) {
45
- const ctx_r1 = i0.ɵɵnextContext();
60
+ const ctx_r1 = i0.ɵɵnextContext(2);
61
+ i0.ɵɵadvance(3);
46
62
  i0.ɵɵproperty("Data", ctx_r1.StatusOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.statusDefaultItem);
47
63
  } }
48
- function AnalyticsFilterBarComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
49
- const _r6 = i0.ɵɵgetCurrentView();
50
- i0.ɵɵelementStart(0, "button", 16);
51
- i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleCompare()); });
52
- i0.ɵɵelement(1, "i", 17);
64
+ function AnalyticsFilterBarComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
65
+ const _r1 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "mj-filter-popover", 6);
67
+ i0.ɵɵlistener("ClearAllRequested", function AnalyticsFilterBarComponent_Conditional_1_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearAllFilters()); });
68
+ i0.ɵɵelementStart(1, "div", 7);
69
+ i0.ɵɵconditionalCreate(2, AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template, 4, 4, "label", 8);
70
+ i0.ɵɵconditionalCreate(3, AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template, 4, 4, "label", 8);
71
+ i0.ɵɵconditionalCreate(4, AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template, 4, 4, "label", 8);
72
+ i0.ɵɵconditionalCreate(5, AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template, 4, 3, "label", 8);
73
+ i0.ɵɵelementEnd()();
74
+ } if (rf & 2) {
75
+ const ctx_r1 = i0.ɵɵnextContext();
76
+ i0.ɵɵproperty("ActiveCount", ctx_r1.ActiveFilterCount)("ShowClearAll", ctx_r1.ActiveFilterCount > 0);
77
+ i0.ɵɵadvance(2);
78
+ i0.ɵɵconditional(ctx_r1.ShowModelFilter ? 2 : -1);
79
+ i0.ɵɵadvance();
80
+ i0.ɵɵconditional(ctx_r1.ShowAgentFilter ? 3 : -1);
81
+ i0.ɵɵadvance();
82
+ i0.ɵɵconditional(ctx_r1.ShowPromptFilter ? 4 : -1);
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵconditional(ctx_r1.ShowStatusFilter ? 5 : -1);
85
+ } }
86
+ function AnalyticsFilterBarComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
87
+ const _r7 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "button", 14);
89
+ i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleCompare()); });
90
+ i0.ɵɵelement(1, "i", 15);
53
91
  i0.ɵɵtext(2, " Compare ");
54
92
  i0.ɵɵelementEnd();
55
93
  } if (rf & 2) {
56
94
  const ctx_r1 = i0.ɵɵnextContext();
57
95
  i0.ɵɵclassProp("active", ctx_r1.compareActive);
58
96
  } }
59
- function AnalyticsFilterBarComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
60
- const _r7 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "button", 18);
62
- i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ExportClicked.emit()); });
63
- i0.ɵɵelement(1, "i", 19);
97
+ function AnalyticsFilterBarComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
98
+ const _r8 = i0.ɵɵgetCurrentView();
99
+ i0.ɵɵelementStart(0, "button", 16);
100
+ i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ExportClicked.emit()); });
101
+ i0.ɵɵelement(1, "i", 17);
64
102
  i0.ɵɵtext(2, " Export ");
65
103
  i0.ɵɵelementEnd();
66
104
  } }
67
- function AnalyticsFilterBarComponent_For_13_Template(rf, ctx) { if (rf & 1) {
68
- const _r8 = i0.ɵɵgetCurrentView();
69
- i0.ɵɵelementStart(0, "button", 20);
70
- i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_For_13_Template_button_click_0_listener() { const option_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTimeRangeSelect(option_r9)); });
105
+ function AnalyticsFilterBarComponent_For_6_Template(rf, ctx) { if (rf & 1) {
106
+ const _r9 = i0.ɵɵgetCurrentView();
107
+ i0.ɵɵelementStart(0, "button", 18);
108
+ i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_For_6_Template_button_click_0_listener() { const option_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTimeRangeSelect(option_r10)); });
71
109
  i0.ɵɵtext(1);
72
110
  i0.ɵɵelementEnd();
73
111
  } if (rf & 2) {
74
- const option_r9 = ctx.$implicit;
112
+ const option_r10 = ctx.$implicit;
75
113
  const ctx_r1 = i0.ɵɵnextContext();
76
- i0.ɵɵclassProp("active", ctx_r1.TimeRange === option_r9);
114
+ i0.ɵɵclassProp("active", ctx_r1.TimeRange === option_r10);
77
115
  i0.ɵɵadvance();
78
- i0.ɵɵtextInterpolate1(" ", option_r9, " ");
116
+ i0.ɵɵtextInterpolate1(" ", option_r10, " ");
79
117
  } }
80
118
  export class AnalyticsFilterBarComponent {
81
119
  TimeRange = '24h';
@@ -107,6 +145,19 @@ export class AnalyticsFilterBarComponent {
107
145
  promptDefaultItem = { text: 'All Prompts', value: '' };
108
146
  statusDefaultItem = { text: 'All Statuses', value: '' };
109
147
  compareActive = false;
148
+ /** True when at least one of the filter dropdowns is enabled — drives whether to render the popover trigger. */
149
+ get HasFilterDropdowns() {
150
+ return this.ShowModelFilter || this.ShowAgentFilter || this.ShowPromptFilter || this.ShowStatusFilter;
151
+ }
152
+ /** Number of active filter selections — drives the popover badge. */
153
+ get ActiveFilterCount() {
154
+ const f = this.Filters ?? { Models: [], Agents: [], Prompts: [], Statuses: [] };
155
+ return (f.Models?.length ?? 0) + (f.Agents?.length ?? 0) + (f.Prompts?.length ?? 0) + (f.Statuses?.length ?? 0);
156
+ }
157
+ ClearAllFilters() {
158
+ this.Filters = { Models: [], Agents: [], Prompts: [], Statuses: [] };
159
+ this.FiltersChange.emit(this.Filters);
160
+ }
110
161
  ngOnInit() {
111
162
  this.BuildOptions();
112
163
  }
@@ -152,116 +203,114 @@ export class AnalyticsFilterBarComponent {
152
203
  .sort((a, b) => a.text.localeCompare(b.text));
153
204
  }
154
205
  static ɵfac = function AnalyticsFilterBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AnalyticsFilterBarComponent)(); };
155
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsFilterBarComponent, selectors: [["app-analytics-filter-bar"]], inputs: { TimeRange: "TimeRange", TimeRangeOptions: "TimeRangeOptions", ShowModelFilter: "ShowModelFilter", ShowAgentFilter: "ShowAgentFilter", ShowPromptFilter: "ShowPromptFilter", ShowStatusFilter: "ShowStatusFilter", ShowCompareToggle: "ShowCompareToggle", ShowExportButton: "ShowExportButton", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange", CompareToggled: "CompareToggled", ExportClicked: "ExportClicked" }, standalone: false, decls: 14, vars: 6, consts: [[1, "filter-bar"], [1, "filter-controls"], [1, "filter-label"], [1, "fa-solid", "fa-filter"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Models", 3, "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Agents", 3, "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Prompts", 3, "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Statuses", 3, "Data", "ValuePrimitive", "DefaultItem"], [1, "compare-btn", 3, "active"], [1, "export-btn"], [1, "time-chips"], [1, "time-chip", 3, "active"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Models", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Agents", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Prompts", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Statuses", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem"], [1, "compare-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "export-btn", 3, "click"], [1, "fa-solid", "fa-download"], [1, "time-chip", 3, "click"]], template: function AnalyticsFilterBarComponent_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "span", 2);
157
- i0.ɵɵelement(3, "i", 3);
158
- i0.ɵɵtext(4, " Filters: ");
159
- i0.ɵɵelementEnd();
160
- i0.ɵɵconditionalCreate(5, AnalyticsFilterBarComponent_Conditional_5_Template, 1, 4, "mj-dropdown", 4);
161
- i0.ɵɵconditionalCreate(6, AnalyticsFilterBarComponent_Conditional_6_Template, 1, 4, "mj-dropdown", 5);
162
- i0.ɵɵconditionalCreate(7, AnalyticsFilterBarComponent_Conditional_7_Template, 1, 4, "mj-dropdown", 6);
163
- i0.ɵɵconditionalCreate(8, AnalyticsFilterBarComponent_Conditional_8_Template, 1, 3, "mj-dropdown", 7);
164
- i0.ɵɵconditionalCreate(9, AnalyticsFilterBarComponent_Conditional_9_Template, 3, 2, "button", 8);
165
- i0.ɵɵconditionalCreate(10, AnalyticsFilterBarComponent_Conditional_10_Template, 3, 0, "button", 9);
166
- i0.ɵɵelementEnd();
167
- i0.ɵɵelementStart(11, "div", 10);
168
- i0.ɵɵrepeaterCreate(12, AnalyticsFilterBarComponent_For_13_Template, 2, 3, "button", 11, i0.ɵɵrepeaterTrackByIdentity);
206
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsFilterBarComponent, selectors: [["app-analytics-filter-bar"]], inputs: { TimeRange: "TimeRange", TimeRangeOptions: "TimeRangeOptions", ShowModelFilter: "ShowModelFilter", ShowAgentFilter: "ShowAgentFilter", ShowPromptFilter: "ShowPromptFilter", ShowStatusFilter: "ShowStatusFilter", ShowCompareToggle: "ShowCompareToggle", ShowExportButton: "ShowExportButton", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange", CompareToggled: "CompareToggled", ExportClicked: "ExportClicked" }, standalone: false, decls: 7, vars: 3, consts: [[1, "filter-bar"], [3, "ActiveCount", "ShowClearAll"], [1, "compare-btn", 3, "active"], [1, "export-btn"], [1, "time-chips"], [1, "time-chip", 3, "active"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [1, "popover-fields"], [1, "popover-field"], [1, "popover-field-label"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Models", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Agents", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Prompts", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Statuses", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem"], [1, "compare-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "export-btn", 3, "click"], [1, "fa-solid", "fa-download"], [1, "time-chip", 3, "click"]], template: function AnalyticsFilterBarComponent_Template(rf, ctx) { if (rf & 1) {
207
+ i0.ɵɵelementStart(0, "div", 0);
208
+ i0.ɵɵconditionalCreate(1, AnalyticsFilterBarComponent_Conditional_1_Template, 6, 6, "mj-filter-popover", 1);
209
+ i0.ɵɵconditionalCreate(2, AnalyticsFilterBarComponent_Conditional_2_Template, 3, 2, "button", 2);
210
+ i0.ɵɵconditionalCreate(3, AnalyticsFilterBarComponent_Conditional_3_Template, 3, 0, "button", 3);
211
+ i0.ɵɵelementStart(4, "div", 4);
212
+ i0.ɵɵrepeaterCreate(5, AnalyticsFilterBarComponent_For_6_Template, 2, 3, "button", 5, i0.ɵɵrepeaterTrackByIdentity);
169
213
  i0.ɵɵelementEnd()();
170
214
  } if (rf & 2) {
171
- i0.ɵɵadvance(5);
172
- i0.ɵɵconditional(ctx.ShowModelFilter ? 5 : -1);
173
- i0.ɵɵadvance();
174
- i0.ɵɵconditional(ctx.ShowAgentFilter ? 6 : -1);
175
215
  i0.ɵɵadvance();
176
- i0.ɵɵconditional(ctx.ShowPromptFilter ? 7 : -1);
216
+ i0.ɵɵconditional(ctx.HasFilterDropdowns ? 1 : -1);
177
217
  i0.ɵɵadvance();
178
- i0.ɵɵconditional(ctx.ShowStatusFilter ? 8 : -1);
218
+ i0.ɵɵconditional(ctx.ShowCompareToggle ? 2 : -1);
179
219
  i0.ɵɵadvance();
180
- i0.ɵɵconditional(ctx.ShowCompareToggle ? 9 : -1);
181
- i0.ɵɵadvance();
182
- i0.ɵɵconditional(ctx.ShowExportButton ? 10 : -1);
220
+ i0.ɵɵconditional(ctx.ShowExportButton ? 3 : -1);
183
221
  i0.ɵɵadvance(2);
184
222
  i0.ɵɵrepeater(ctx.TimeRangeOptions);
185
- } }, dependencies: [i1.MJDropdownComponent], styles: [".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 }\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: 12px;\n color: var(--mj-text-muted);\n }\n\n [_nghost-%COMP%] mj-dropdown {\n min-width: 160px;\n max-width: 220px;\n }\n\n [_nghost-%COMP%] mj-dropdown .mj-dropdown {\n font-size: 13px;\n border-radius: 6px;\n }\n\n .compare-btn[_ngcontent-%COMP%], \n .export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn[_ngcontent-%COMP%]:hover, \n .export-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\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 @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 }"] });
223
+ } }, dependencies: [i1.MJDropdownComponent, i1.MJFilterPopoverComponent], styles: ["\n\n .filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .popover-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field [_nghost-%COMP%] mj-dropdown, \n [_nghost-%COMP%] .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn[_ngcontent-%COMP%], \n .export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn[_ngcontent-%COMP%]:hover, \n .export-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\n\n .time-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\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 @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 }"] });
186
224
  }
187
225
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsFilterBarComponent, [{
188
226
  type: Component,
189
227
  args: [{ standalone: false, selector: 'app-analytics-filter-bar', template: `
190
228
  <div class="filter-bar">
191
- <div class="filter-controls">
192
- <span class="filter-label">
193
- <i class="fa-solid fa-filter"></i>
194
- Filters:
195
- </span>
229
+ @if (HasFilterDropdowns) {
230
+ <mj-filter-popover
231
+ [ActiveCount]="ActiveFilterCount"
232
+ [ShowClearAll]="ActiveFilterCount > 0"
233
+ (ClearAllRequested)="ClearAllFilters()">
234
+ <div class="popover-fields">
235
+ @if (ShowModelFilter) {
236
+ <label class="popover-field">
237
+ <span class="popover-field-label">Model</span>
238
+ <mj-dropdown
239
+ [Data]="ModelOptions"
240
+ TextField="text"
241
+ ValueField="value"
242
+ [ValuePrimitive]="true"
243
+ [DefaultItem]="modelDefaultItem"
244
+ [Filterable]="ModelOptions.length > 10"
245
+ Placeholder="All Models"
246
+ (ValueChange)="OnModelChange($event)">
247
+ </mj-dropdown>
248
+ </label>
249
+ }
250
+ @if (ShowAgentFilter) {
251
+ <label class="popover-field">
252
+ <span class="popover-field-label">Agent</span>
253
+ <mj-dropdown
254
+ [Data]="AgentOptions"
255
+ TextField="text"
256
+ ValueField="value"
257
+ [ValuePrimitive]="true"
258
+ [DefaultItem]="agentDefaultItem"
259
+ [Filterable]="AgentOptions.length > 10"
260
+ Placeholder="All Agents"
261
+ (ValueChange)="OnAgentChange($event)">
262
+ </mj-dropdown>
263
+ </label>
264
+ }
265
+ @if (ShowPromptFilter) {
266
+ <label class="popover-field">
267
+ <span class="popover-field-label">Prompt</span>
268
+ <mj-dropdown
269
+ [Data]="PromptOptions"
270
+ TextField="text"
271
+ ValueField="value"
272
+ [ValuePrimitive]="true"
273
+ [DefaultItem]="promptDefaultItem"
274
+ [Filterable]="PromptOptions.length > 10"
275
+ Placeholder="All Prompts"
276
+ (ValueChange)="OnPromptChange($event)">
277
+ </mj-dropdown>
278
+ </label>
279
+ }
280
+ @if (ShowStatusFilter) {
281
+ <label class="popover-field">
282
+ <span class="popover-field-label">Status</span>
283
+ <mj-dropdown
284
+ [Data]="StatusOptions"
285
+ TextField="text"
286
+ ValueField="value"
287
+ [ValuePrimitive]="true"
288
+ [DefaultItem]="statusDefaultItem"
289
+ Placeholder="All Statuses"
290
+ (ValueChange)="OnStatusChange($event)">
291
+ </mj-dropdown>
292
+ </label>
293
+ }
294
+ </div>
295
+ </mj-filter-popover>
296
+ }
196
297
 
197
- @if (ShowModelFilter) {
198
- <mj-dropdown
199
- [Data]="ModelOptions"
200
- TextField="text"
201
- ValueField="value"
202
- [ValuePrimitive]="true"
203
- [DefaultItem]="modelDefaultItem"
204
- [Filterable]="ModelOptions.length > 10"
205
- Placeholder="All Models"
206
- (ValueChange)="OnModelChange($event)">
207
- </mj-dropdown>
208
- }
298
+ @if (ShowCompareToggle) {
299
+ <button
300
+ class="compare-btn"
301
+ [class.active]="compareActive"
302
+ (click)="ToggleCompare()">
303
+ <i class="fa-solid fa-code-compare"></i>
304
+ Compare
305
+ </button>
306
+ }
209
307
 
210
- @if (ShowAgentFilter) {
211
- <mj-dropdown
212
- [Data]="AgentOptions"
213
- TextField="text"
214
- ValueField="value"
215
- [ValuePrimitive]="true"
216
- [DefaultItem]="agentDefaultItem"
217
- [Filterable]="AgentOptions.length > 10"
218
- Placeholder="All Agents"
219
- (ValueChange)="OnAgentChange($event)">
220
- </mj-dropdown>
221
- }
222
-
223
- @if (ShowPromptFilter) {
224
- <mj-dropdown
225
- [Data]="PromptOptions"
226
- TextField="text"
227
- ValueField="value"
228
- [ValuePrimitive]="true"
229
- [DefaultItem]="promptDefaultItem"
230
- [Filterable]="PromptOptions.length > 10"
231
- Placeholder="All Prompts"
232
- (ValueChange)="OnPromptChange($event)">
233
- </mj-dropdown>
234
- }
235
-
236
- @if (ShowStatusFilter) {
237
- <mj-dropdown
238
- [Data]="StatusOptions"
239
- TextField="text"
240
- ValueField="value"
241
- [ValuePrimitive]="true"
242
- [DefaultItem]="statusDefaultItem"
243
- Placeholder="All Statuses"
244
- (ValueChange)="OnStatusChange($event)">
245
- </mj-dropdown>
246
- }
247
-
248
- @if (ShowCompareToggle) {
249
- <button
250
- class="compare-btn"
251
- [class.active]="compareActive"
252
- (click)="ToggleCompare()">
253
- <i class="fa-solid fa-code-compare"></i>
254
- Compare
255
- </button>
256
- }
257
-
258
- @if (ShowExportButton) {
259
- <button class="export-btn" (click)="ExportClicked.emit()">
260
- <i class="fa-solid fa-download"></i>
261
- Export
262
- </button>
263
- }
264
- </div>
308
+ @if (ShowExportButton) {
309
+ <button class="export-btn" (click)="ExportClicked.emit()">
310
+ <i class="fa-solid fa-download"></i>
311
+ Export
312
+ </button>
313
+ }
265
314
 
266
315
  <div class="time-chips">
267
316
  @for (option of TimeRangeOptions; track option) {
@@ -274,7 +323,7 @@ export class AnalyticsFilterBarComponent {
274
323
  }
275
324
  </div>
276
325
  </div>
277
- `, styles: ["\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 }\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: 12px;\n color: var(--mj-text-muted);\n }\n\n :host ::ng-deep mj-dropdown {\n min-width: 160px;\n max-width: 220px;\n }\n\n :host ::ng-deep mj-dropdown .mj-dropdown {\n font-size: 13px;\n border-radius: 6px;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\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 @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 "] }]
326
+ `, styles: ["\n /* Filter bar renders inline inside <mj-page-header>'s actions slot \u2014 no wrapper card. */\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Popover panel content \u2014 stacked labeled fields */\n .popover-fields {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field :host ::ng-deep mj-dropdown,\n :host ::ng-deep .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\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 @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 "] }]
278
327
  }], null, { TimeRange: [{
279
328
  type: Input
280
329
  }], TimeRangeOptions: [{
@@ -302,5 +351,5 @@ export class AnalyticsFilterBarComponent {
302
351
  }], ExportClicked: [{
303
352
  type: Output
304
353
  }] }); })();
305
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsFilterBarComponent, { className: "AnalyticsFilterBarComponent", filePath: "src/AI/components/analytics/analytics-filter-bar.component.ts", lineNumber: 229 }); })();
354
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsFilterBarComponent, { className: "AnalyticsFilterBarComponent", filePath: "src/AI/components/analytics/analytics-filter-bar.component.ts", lineNumber: 232 }); })();
306
355
  //# sourceMappingURL=analytics-filter-bar.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-filter-bar.component.js","sourceRoot":"","sources":["../../../../src/AI/components/analytics/analytics-filter-bar.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Reusable filter bar for AI Analytics dashboard sections.\n *\n * Provides time-range chips, model/agent/prompt/status dropdowns\n * (using mj-dropdown), a compare toggle, and an optional export button.\n * Each section shows/hides filters via boolean inputs.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { GlobalFilterState } from '../../interfaces/analytics-preferences.interface';\n\ninterface FilterOption {\n text: string;\n value: string;\n [key: string]: unknown;\n}\n\n@Component({\n standalone: false,\n selector: 'app-analytics-filter-bar',\n template: `\n <div class=\"filter-bar\">\n <div class=\"filter-controls\">\n <span class=\"filter-label\">\n <i class=\"fa-solid fa-filter\"></i>\n Filters:\n </span>\n\n @if (ShowModelFilter) {\n <mj-dropdown\n [Data]=\"ModelOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"modelDefaultItem\"\n [Filterable]=\"ModelOptions.length > 10\"\n Placeholder=\"All Models\"\n (ValueChange)=\"OnModelChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowAgentFilter) {\n <mj-dropdown\n [Data]=\"AgentOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"agentDefaultItem\"\n [Filterable]=\"AgentOptions.length > 10\"\n Placeholder=\"All Agents\"\n (ValueChange)=\"OnAgentChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowPromptFilter) {\n <mj-dropdown\n [Data]=\"PromptOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"promptDefaultItem\"\n [Filterable]=\"PromptOptions.length > 10\"\n Placeholder=\"All Prompts\"\n (ValueChange)=\"OnPromptChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowStatusFilter) {\n <mj-dropdown\n [Data]=\"StatusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"statusDefaultItem\"\n Placeholder=\"All Statuses\"\n (ValueChange)=\"OnStatusChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowCompareToggle) {\n <button\n class=\"compare-btn\"\n [class.active]=\"compareActive\"\n (click)=\"ToggleCompare()\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Compare\n </button>\n }\n\n @if (ShowExportButton) {\n <button class=\"export-btn\" (click)=\"ExportClicked.emit()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n }\n </div>\n\n <div class=\"time-chips\">\n @for (option of TimeRangeOptions; track option) {\n <button\n class=\"time-chip\"\n [class.active]=\"TimeRange === option\"\n (click)=\"OnTimeRangeSelect(option)\">\n {{ option }}\n </button>\n }\n </div>\n </div>\n `,\n styles: [`\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 }\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: 12px;\n color: var(--mj-text-muted);\n }\n\n :host ::ng-deep mj-dropdown {\n min-width: 160px;\n max-width: 220px;\n }\n\n :host ::ng-deep mj-dropdown .mj-dropdown {\n font-size: 13px;\n border-radius: 6px;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\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 @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 `]\n})\nexport class AnalyticsFilterBarComponent implements OnInit {\n @Input() TimeRange = '24h';\n @Input() TimeRangeOptions: string[] = ['1h', '6h', '24h', '7d', '30d'];\n @Input() ShowModelFilter = true;\n @Input() ShowAgentFilter = true;\n @Input() ShowPromptFilter = true;\n @Input() ShowStatusFilter = true;\n @Input() ShowCompareToggle = true;\n @Input() ShowExportButton = false;\n @Input() Filters: GlobalFilterState = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n\n @Output() TimeRangeChange = new EventEmitter<string>();\n @Output() FiltersChange = new EventEmitter<GlobalFilterState>();\n @Output() CompareToggled = new EventEmitter<boolean>();\n @Output() ExportClicked = new EventEmitter<void>();\n\n public ModelOptions: FilterOption[] = [];\n public AgentOptions: FilterOption[] = [];\n public PromptOptions: FilterOption[] = [];\n public StatusOptions: FilterOption[] = [\n { text: 'Success', value: 'Success' },\n { text: 'Error', value: 'Error' },\n { text: 'Running', value: 'Running' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Canceled', value: 'Canceled' }\n ];\n\n /** Default items shown when nothing is selected (the \"All X\" option) */\n public modelDefaultItem: FilterOption = { text: 'All Models', value: '' };\n public agentDefaultItem: FilterOption = { text: 'All Agents', value: '' };\n public promptDefaultItem: FilterOption = { text: 'All Prompts', value: '' };\n public statusDefaultItem: FilterOption = { text: 'All Statuses', value: '' };\n\n public compareActive = false;\n\n ngOnInit(): void {\n this.BuildOptions();\n }\n\n public OnTimeRangeSelect(range: string): void {\n this.TimeRange = range;\n this.TimeRangeChange.emit(range);\n }\n\n public OnModelChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Models: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnAgentChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Agents: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnPromptChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Prompts: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnStatusChange(event: unknown): void {\n const status = (event as string) ?? '';\n this.Filters = { ...this.Filters, Statuses: status ? [status] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public ToggleCompare(): void {\n this.compareActive = !this.compareActive;\n this.CompareToggled.emit(this.compareActive);\n }\n\n private BuildOptions(): void {\n const engine = AIEngineBase.Instance;\n\n this.ModelOptions = engine.Models\n .map(m => ({ text: m.Name ?? '', value: m.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.AgentOptions = engine.Agents\n .filter(a => a.Status === 'Active')\n .map(a => ({ text: a.Name ?? '', value: a.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.PromptOptions = engine.Prompts\n .map(p => ({ text: p.Name ?? '', value: p.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n }\n}\n"]}
1
+ {"version":3,"file":"analytics-filter-bar.component.js","sourceRoot":"","sources":["../../../../src/AI/components/analytics/analytics-filter-bar.component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAU,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;;;;;IAsB9B,AADJ,gCAA6B,cACS;IAAA,qBAAK;IAAA,iBAAO;IAC9C,uCAQ0C;IAAtC,qOAAe,4BAAqB,KAAC;IAE7C,AADI,iBAAc,EACV;;;IATA,eAAqB;IAKrB,AADA,AADA,AAHA,0CAAqB,wBAGE,wCACS,+CACO;;;;IAQ3C,AADJ,gCAA6B,cACS;IAAA,qBAAK;IAAA,iBAAO;IAC9C,uCAQ0C;IAAtC,qOAAe,4BAAqB,KAAC;IAE7C,AADI,iBAAc,EACV;;;IATA,eAAqB;IAKrB,AADA,AADA,AAHA,0CAAqB,wBAGE,wCACS,+CACO;;;;IAQ3C,AADJ,gCAA6B,cACS;IAAA,sBAAM;IAAA,iBAAO;IAC/C,uCAQ2C;IAAvC,qOAAe,6BAAsB,KAAC;IAE9C,AADI,iBAAc,EACV;;;IATA,eAAsB;IAKtB,AADA,AADA,AAHA,2CAAsB,wBAGC,yCACU,gDACO;;;;IAQ5C,AADJ,gCAA6B,cACS;IAAA,sBAAM;IAAA,iBAAO;IAC/C,uCAO2C;IAAvC,qOAAe,6BAAsB,KAAC;IAE9C,AADI,iBAAc,EACV;;;IARA,eAAsB;IAItB,AADA,AAHA,2CAAsB,wBAGC,yCACU;;;;IA1DrD,4CAG4C;IAAxC,kOAAqB,wBAAiB,KAAC;IACvC,8BAA4B;IACxB,6GAAuB;IAevB,6GAAuB;IAevB,6GAAwB;IAexB,6GAAwB;IAehC,AADI,iBAAM,EACU;;;IA/DhB,AADA,sDAAiC,8CACK;IAGlC,eAcC;IAdD,iDAcC;IACD,cAcC;IAdD,iDAcC;IACD,cAcC;IAdD,kDAcC;IACD,cAaC;IAbD,kDAaC;;;;IAMT,kCAG8B;IAA1B,+LAAS,sBAAe,KAAC;IACzB,wBAAwC;IACxC,yBACJ;IAAA,iBAAS;;;IAJL,8CAA8B;;;;IAQlC,kCAA0D;IAA/B,+LAAS,2BAAoB,KAAC;IACrD,wBAAoC;IACpC,wBACJ;IAAA,iBAAS;;;;IAKL,kCAGwC;IAApC,oNAAS,oCAAyB,KAAC;IACnC,YACJ;IAAA,iBAAS;;;;IAHL,yDAAqC;IAErC,cACJ;IADI,2CACJ;;AAmHpB,MAAM,OAAO,2BAA2B;IAC3B,SAAS,GAAG,KAAK,CAAC;IAClB,gBAAgB,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,eAAe,GAAG,IAAI,CAAC;IACvB,eAAe,GAAG,IAAI,CAAC;IACvB,gBAAgB,GAAG,IAAI,CAAC;IACxB,gBAAgB,GAAG,IAAI,CAAC;IACxB,iBAAiB,GAAG,IAAI,CAAC;IACzB,gBAAgB,GAAG,KAAK,CAAC;IACzB,OAAO,GAAsB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAElF,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;IACtD,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;IAC7C,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE5C,YAAY,GAAmB,EAAE,CAAC;IAClC,YAAY,GAAmB,EAAE,CAAC;IAClC,aAAa,GAAmB,EAAE,CAAC;IACnC,aAAa,GAAmB;QACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QACjC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;KAC1C,CAAC;IAEF,wEAAwE;IACjE,gBAAgB,GAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,gBAAgB,GAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,iBAAiB,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACrE,iBAAiB,GAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEtE,aAAa,GAAG,KAAK,CAAC;IAE7B,gHAAgH;IAChH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAC1G,CAAC;IAED,qEAAqE;IACrE,IAAW,iBAAiB;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAChF,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IACpH,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,iBAAiB,CAAC,KAAa;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,aAAa,CAAC,KAAc;QAC/B,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa,CAAC,KAAc;QAC/B,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,cAAc,CAAC,KAAc;QAChC,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,cAAc,CAAC,KAAc;QAChC,MAAM,MAAM,GAAI,KAAgB,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAEO,YAAY;QAChB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;QAErC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;qHAxGQ,2BAA2B;6DAA3B,2BAA2B;YAjNhC,8BAAwB;YACpB,2GAA0B;YAqE1B,gGAAyB;YAUzB,gGAAwB;YAOxB,8BAAwB;YACpB,mHAOC;YAET,AADI,iBAAM,EACJ;;YAhGF,cAmEC;YAnED,iDAmEC;YAED,cAQC;YARD,gDAQC;YAED,cAKC;YALD,+CAKC;YAGG,eAOC;YAPD,mCAOC;;;iFAkHJ,2BAA2B;cArNvC,SAAS;6BACM,KAAK,YACP,0BAA0B,YAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmGT;;kBAgHA,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kFAdE,2BAA2B","sourcesContent":["/**\n * @fileoverview Reusable filter bar for AI Analytics dashboard sections.\n *\n * Provides time-range chips, model/agent/prompt/status dropdowns\n * (using mj-dropdown), a compare toggle, and an optional export button.\n * Each section shows/hides filters via boolean inputs.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { GlobalFilterState } from '../../interfaces/analytics-preferences.interface';\n\ninterface FilterOption {\n text: string;\n value: string;\n [key: string]: unknown;\n}\n\n@Component({\n standalone: false,\n selector: 'app-analytics-filter-bar',\n template: `\n <div class=\"filter-bar\">\n @if (HasFilterDropdowns) {\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ClearAllFilters()\">\n <div class=\"popover-fields\">\n @if (ShowModelFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Model</span>\n <mj-dropdown\n [Data]=\"ModelOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"modelDefaultItem\"\n [Filterable]=\"ModelOptions.length > 10\"\n Placeholder=\"All Models\"\n (ValueChange)=\"OnModelChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowAgentFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Agent</span>\n <mj-dropdown\n [Data]=\"AgentOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"agentDefaultItem\"\n [Filterable]=\"AgentOptions.length > 10\"\n Placeholder=\"All Agents\"\n (ValueChange)=\"OnAgentChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowPromptFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Prompt</span>\n <mj-dropdown\n [Data]=\"PromptOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"promptDefaultItem\"\n [Filterable]=\"PromptOptions.length > 10\"\n Placeholder=\"All Prompts\"\n (ValueChange)=\"OnPromptChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowStatusFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Status</span>\n <mj-dropdown\n [Data]=\"StatusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"statusDefaultItem\"\n Placeholder=\"All Statuses\"\n (ValueChange)=\"OnStatusChange($event)\">\n </mj-dropdown>\n </label>\n }\n </div>\n </mj-filter-popover>\n }\n\n @if (ShowCompareToggle) {\n <button\n class=\"compare-btn\"\n [class.active]=\"compareActive\"\n (click)=\"ToggleCompare()\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Compare\n </button>\n }\n\n @if (ShowExportButton) {\n <button class=\"export-btn\" (click)=\"ExportClicked.emit()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n }\n\n <div class=\"time-chips\">\n @for (option of TimeRangeOptions; track option) {\n <button\n class=\"time-chip\"\n [class.active]=\"TimeRange === option\"\n (click)=\"OnTimeRangeSelect(option)\">\n {{ option }}\n </button>\n }\n </div>\n </div>\n `,\n styles: [`\n /* Filter bar renders inline inside <mj-page-header>'s actions slot — no wrapper card. */\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Popover panel content — stacked labeled fields */\n .popover-fields {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field :host ::ng-deep mj-dropdown,\n :host ::ng-deep .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.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 }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\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 @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 `]\n})\nexport class AnalyticsFilterBarComponent implements OnInit {\n @Input() TimeRange = '24h';\n @Input() TimeRangeOptions: string[] = ['1h', '6h', '24h', '7d', '30d'];\n @Input() ShowModelFilter = true;\n @Input() ShowAgentFilter = true;\n @Input() ShowPromptFilter = true;\n @Input() ShowStatusFilter = true;\n @Input() ShowCompareToggle = true;\n @Input() ShowExportButton = false;\n @Input() Filters: GlobalFilterState = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n\n @Output() TimeRangeChange = new EventEmitter<string>();\n @Output() FiltersChange = new EventEmitter<GlobalFilterState>();\n @Output() CompareToggled = new EventEmitter<boolean>();\n @Output() ExportClicked = new EventEmitter<void>();\n\n public ModelOptions: FilterOption[] = [];\n public AgentOptions: FilterOption[] = [];\n public PromptOptions: FilterOption[] = [];\n public StatusOptions: FilterOption[] = [\n { text: 'Success', value: 'Success' },\n { text: 'Error', value: 'Error' },\n { text: 'Running', value: 'Running' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Canceled', value: 'Canceled' }\n ];\n\n /** Default items shown when nothing is selected (the \"All X\" option) */\n public modelDefaultItem: FilterOption = { text: 'All Models', value: '' };\n public agentDefaultItem: FilterOption = { text: 'All Agents', value: '' };\n public promptDefaultItem: FilterOption = { text: 'All Prompts', value: '' };\n public statusDefaultItem: FilterOption = { text: 'All Statuses', value: '' };\n\n public compareActive = false;\n\n /** True when at least one of the filter dropdowns is enabled — drives whether to render the popover trigger. */\n public get HasFilterDropdowns(): boolean {\n return this.ShowModelFilter || this.ShowAgentFilter || this.ShowPromptFilter || this.ShowStatusFilter;\n }\n\n /** Number of active filter selections — drives the popover badge. */\n public get ActiveFilterCount(): number {\n const f = this.Filters ?? { Models: [], Agents: [], Prompts: [], Statuses: [] };\n return (f.Models?.length ?? 0) + (f.Agents?.length ?? 0) + (f.Prompts?.length ?? 0) + (f.Statuses?.length ?? 0);\n }\n\n public ClearAllFilters(): void {\n this.Filters = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n ngOnInit(): void {\n this.BuildOptions();\n }\n\n public OnTimeRangeSelect(range: string): void {\n this.TimeRange = range;\n this.TimeRangeChange.emit(range);\n }\n\n public OnModelChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Models: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnAgentChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Agents: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnPromptChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Prompts: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnStatusChange(event: unknown): void {\n const status = (event as string) ?? '';\n this.Filters = { ...this.Filters, Statuses: status ? [status] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public ToggleCompare(): void {\n this.compareActive = !this.compareActive;\n this.CompareToggled.emit(this.compareActive);\n }\n\n private BuildOptions(): void {\n const engine = AIEngineBase.Instance;\n\n this.ModelOptions = engine.Models\n .map(m => ({ text: m.Name ?? '', value: m.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.AgentOptions = engine.Agents\n .filter(a => a.Status === 'Active')\n .map(a => ({ text: a.Name ?? '', value: a.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.PromptOptions = engine.Prompts\n .map(p => ({ text: p.Name ?? '', value: p.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n }\n}\n"]}
@@ -42,10 +42,16 @@ interface CostByModelRow {
42
42
  PercentOfTotal: number;
43
43
  }
44
44
  export declare class AnalyticsCostBudgetComponent extends BaseAngularComponent implements OnInit, OnDestroy {
45
- TimeRange: string;
46
- Filters: GlobalFilterState;
45
+ private _timeRange;
46
+ set TimeRange(value: string);
47
+ get TimeRange(): string;
48
+ private _filters;
49
+ set Filters(value: GlobalFilterState);
50
+ get Filters(): GlobalFilterState;
51
+ private shallowFiltersEqual;
47
52
  TimeRangeChange: EventEmitter<string>;
48
53
  FiltersChange: EventEmitter<GlobalFilterState>;
54
+ private initialized;
49
55
  private cdr;
50
56
  private destroy$;
51
57
  IsLoading: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cost-budget.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/cost-budget/cost-budget.component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACuB,YAAY,EACtC,MAAM,EAAE,SAAS,EACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;;AAmBxF,UAAU,OAAO;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,cAAc;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAkBD,qBAogBa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IACtF,SAAS,SAAQ;IACjB,OAAO,EAAE,iBAAiB,CAAyD;IAElF,eAAe,uBAA8B;IAC7C,aAAa,kCAAyC;IAEhE,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,QAAQ,CAAuB;IAEhC,SAAS,UAAS;IAClB,oBAAoB,WAAsB;IAE1C,QAAQ,EAAE,OAAO,EAAE,CAAM;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,cAAc,SAAK;IACnB,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,eAAe,EAAE,cAAc,EAAE,CAAM;IAE9C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;IAOZ,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMjD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM;IAMnD,SAAS,IAAI,IAAI;YAWV,QAAQ;IA8CtB,OAAO,CAAC,WAAW;IAuDnB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;yCAxSV,4BAA4B;2CAA5B,4BAA4B;CAiTxC;AAED,wBAAgB,uBAAuB,SAAoC"}
1
+ {"version":3,"file":"cost-budget.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/cost-budget/cost-budget.component.ts"],"names":[],"mappings":"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"}