@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
@@ -1 +1 @@
1
- {"version":3,"file":"credentials-audit-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-audit-resource.component.ts","../../../src/Credentials/components/credentials-audit-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { ResourceData, MJAuditLogEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\n// The Credential Access AuditLogType ID from metadata\nconst CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = 'E8D4D100-E785-42D3-997F-ECFF3B0BCFC0';\n\ninterface AuditLogWithDetails extends MJAuditLogEntity {\n parsedDetails?: ParsedDetails;\n}\n\ninterface ParsedDetails {\n operation?: string;\n subsystem?: string;\n credentialType?: string;\n credentialId?: string;\n ipAddress?: string;\n userAgent?: string;\n duration?: number;\n errorMessage?: string;\n}\n\ninterface TimelineGroup {\n date: string;\n displayDate: string;\n logs: AuditLogWithDetails[];\n}\n\n@RegisterClass(BaseResourceComponent, 'CredentialsAuditResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-audit-resource',\n templateUrl: './credentials-audit-resource.component.html',\n styleUrls: ['./credentials-audit-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsAuditResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public auditLogs: AuditLogWithDetails[] = [];\n public filteredLogs: AuditLogWithDetails[] = [];\n public timelineGroups: TimelineGroup[] = [];\n\n public selectedStatus = '';\n public selectedOperation = '';\n public dateRange = '7'; // days\n public searchText = '';\n public viewMode: 'table' | 'timeline' = 'timeline';\n public expandedLogId: string | null = null;\n\n // Chart data\n public hourlyData: { hour: string; success: number; failed: number }[] = [];\n public operationCounts: Map<string, number> = new Map();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // Cleanup if needed\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Audit Trail';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-clipboard-list';\n }\n\n private async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Calculate date filter\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - parseInt(this.dateRange, 10));\n const dateFilter = `AuditLogTypeID = '${CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID}' AND __mj_CreatedAt >= '${startDate.toISOString()}'`;\n\n const result = await rv.RunView<AuditLogWithDetails>({\n EntityName: 'MJ: Audit Logs',\n ExtraFilter: dateFilter,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 500,\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.auditLogs = result.Results;\n this.parseAllDetails();\n this.applyFilters();\n this.buildChartData();\n }\n\n } catch (error) {\n console.error('Error loading audit logs:', error);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n private parseAllDetails(): void {\n for (const log of this.auditLogs) {\n log.parsedDetails = this.parseDetails(log);\n }\n }\n\n private parseDetails(log: MJAuditLogEntity): ParsedDetails {\n try {\n if (log.Details) {\n return JSON.parse(log.Details);\n }\n } catch (e) {\n // Ignore parse errors\n }\n return {};\n }\n\n public onStatusFilterChange(status: string): void {\n this.selectedStatus = status;\n this.applyFilters();\n }\n\n public onOperationFilterChange(operation: string): void {\n this.selectedOperation = operation;\n this.applyFilters();\n }\n\n public onDateRangeChange(days: string): void {\n this.dateRange = days;\n this.loadData();\n }\n\n public onSearchChange(value: string): void {\n this.searchText = value;\n this.applyFilters();\n }\n\n public clearSearch(): void {\n this.searchText = '';\n this.applyFilters();\n }\n\n public setViewMode(mode: 'table' | 'timeline'): void {\n this.viewMode = mode;\n this.cdr.markForCheck();\n }\n\n public toggleLogExpand(logId: string): void {\n this.expandedLogId = this.expandedLogId === logId ? null : logId;\n this.cdr.markForCheck();\n }\n\n public applyFilters(): void {\n let filtered = [...this.auditLogs];\n\n if (this.selectedStatus) {\n filtered = filtered.filter(log => log.Status === this.selectedStatus);\n }\n\n if (this.selectedOperation) {\n filtered = filtered.filter(log => {\n const op = log.parsedDetails?.operation || 'Access';\n return op === this.selectedOperation;\n });\n }\n\n if (this.searchText) {\n const searchLower = this.searchText.toLowerCase();\n filtered = filtered.filter(log => {\n const user = (log.User || '').toLowerCase();\n const desc = (log.Description || '').toLowerCase();\n const subsystem = (log.parsedDetails?.subsystem || '').toLowerCase();\n const credType = (log.parsedDetails?.credentialType || '').toLowerCase();\n return user.includes(searchLower) ||\n desc.includes(searchLower) ||\n subsystem.includes(searchLower) ||\n credType.includes(searchLower);\n });\n }\n\n this.filteredLogs = filtered;\n this.buildTimelineGroups();\n this.cdr.markForCheck();\n }\n\n private buildTimelineGroups(): void {\n const groups = new Map<string, AuditLogWithDetails[]>();\n\n for (const log of this.filteredLogs) {\n const date = new Date(log.__mj_CreatedAt);\n const dateKey = date.toISOString().split('T')[0];\n\n if (!groups.has(dateKey)) {\n groups.set(dateKey, []);\n }\n groups.get(dateKey)!.push(log);\n }\n\n this.timelineGroups = Array.from(groups.entries())\n .sort((a, b) => b[0].localeCompare(a[0]))\n .map(([date, logs]) => ({\n date,\n displayDate: this.formatGroupDate(date),\n logs\n }));\n }\n\n private formatGroupDate(dateString: string): string {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return date.toLocaleDateString('en-US', {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: date.getFullYear() !== today.getFullYear() ? 'numeric' : undefined\n });\n }\n }\n\n private buildChartData(): void {\n // Build hourly distribution for today\n const hourCounts: { [key: string]: { success: number; failed: number } } = {};\n const today = new Date().toDateString();\n\n for (let i = 0; i < 24; i++) {\n const hour = i.toString().padStart(2, '0') + ':00';\n hourCounts[hour] = { success: 0, failed: 0 };\n }\n\n for (const log of this.auditLogs) {\n const date = new Date(log.__mj_CreatedAt);\n if (date.toDateString() === today) {\n const hour = date.getHours().toString().padStart(2, '0') + ':00';\n if (log.Status === 'Success') {\n hourCounts[hour].success++;\n } else {\n hourCounts[hour].failed++;\n }\n }\n }\n\n this.hourlyData = Object.entries(hourCounts).map(([hour, counts]) => ({\n hour,\n ...counts\n }));\n\n // Build operation counts\n this.operationCounts.clear();\n for (const log of this.auditLogs) {\n const op = log.parsedDetails?.operation || 'Access';\n this.operationCounts.set(op, (this.operationCounts.get(op) || 0) + 1);\n }\n }\n\n public getMaxHourlyCount(): number {\n return Math.max(...this.hourlyData.map(d => d.success + d.failed), 1);\n }\n\n public getOperationList(): string[] {\n return Array.from(this.operationCounts.keys());\n }\n\n public getStatusClass(status: string): string {\n switch (status) {\n case 'Success': return 'success';\n case 'Failed': return 'failed';\n default: return 'unknown';\n }\n }\n\n public getOperationType(log: AuditLogWithDetails): string {\n return log.parsedDetails?.operation || 'Access';\n }\n\n public getSubsystem(log: AuditLogWithDetails): string {\n return log.parsedDetails?.subsystem || '';\n }\n\n public getOperationIcon(operation: string): string {\n switch (operation.toLowerCase()) {\n case 'access': return 'fa-solid fa-eye';\n case 'create': return 'fa-solid fa-plus';\n case 'update': return 'fa-solid fa-pen';\n case 'delete': return 'fa-solid fa-trash';\n case 'rotate': return 'fa-solid fa-rotate';\n case 'validate': return 'fa-solid fa-check-circle';\n default: return 'fa-solid fa-circle';\n }\n }\n\n public getOperationColor(operation: string): string {\n switch (operation.toLowerCase()) {\n case 'access': return 'var(--mj-brand-primary)';\n case 'create': return 'var(--mj-status-success)';\n case 'update': return 'var(--mj-status-warning)';\n case 'delete': return 'var(--mj-status-error)';\n case 'rotate': return 'var(--mj-brand-primary)';\n case 'validate': return 'var(--mj-brand-primary)';\n default: return 'var(--mj-text-secondary)';\n }\n }\n\n public formatDate(date: Date | string | null): string {\n if (!date) return '';\n const d = new Date(date);\n return d.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n public formatTime(date: Date | string | null): string {\n if (!date) return '';\n const d = new Date(date);\n return d.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n public formatDuration(ms: number | undefined): string {\n if (!ms) return '-';\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(2)}s`;\n }\n\n public refresh(): void {\n this.loadData();\n }\n\n public getSuccessCount(): number {\n return this.auditLogs.filter(log => log.Status === 'Success').length;\n }\n\n public getFailedCount(): number {\n return this.auditLogs.filter(log => log.Status === 'Failed').length;\n }\n\n public getSuccessRate(): number {\n if (this.auditLogs.length === 0) return 0;\n return Math.round((this.getSuccessCount() / this.auditLogs.length) * 100);\n }\n\n public getUniqueUserCount(): number {\n const users = new Set(this.auditLogs.map(log => log.User).filter(Boolean));\n return users.size;\n }\n\n public exportToCSV(): void {\n const headers = ['Timestamp', 'User', 'Operation', 'Status', 'Description', 'Subsystem', 'Credential Type'];\n const rows = this.filteredLogs.map(log => [\n this.formatDate(log.__mj_CreatedAt),\n log.User || '',\n this.getOperationType(log),\n log.Status || '',\n log.Description || '',\n this.getSubsystem(log),\n log.parsedDetails?.credentialType || ''\n ]);\n\n const csvContent = [\n headers.join(','),\n ...rows.map(row => row.map(cell => `\"${cell.replace(/\"/g, '\"\"')}\"`).join(','))\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = `credential-audit-log-${new Date().toISOString().split('T')[0]}.csv`;\n link.click();\n }\n}\n","<div class=\"audit-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading audit logs...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header -->\n <div class=\"audit-header\">\n <div class=\"header-info\">\n <h2 class=\"audit-title\">Audit Trail</h2>\n <p class=\"audit-subtitle\">Credential access and modification history</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-secondary\" (click)=\"exportToCSV()\" title=\"Export to CSV\">\n <i class=\"fa-solid fa-download\"></i>\n <span>Export</span>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Stats Cards -->\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon total\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{auditLogs.length}}</div>\n <div class=\"stat-label\">Total Events</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon success\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value success\">{{getSuccessCount()}}</div>\n <div class=\"stat-label\">Successful</div>\n </div>\n <div class=\"stat-rate\">{{getSuccessRate()}}%</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\">\n <i class=\"fa-solid fa-times-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value failed\">{{getFailedCount()}}</div>\n <div class=\"stat-label\">Failed</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon users\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{getUniqueUserCount()}}</div>\n <div class=\"stat-label\">Unique Users</div>\n </div>\n </div>\n </div>\n <!-- Activity Chart -->\n @if (hourlyData.length > 0) {\n <div class=\"activity-chart\">\n <div class=\"chart-header\">\n <h3>\n <i class=\"fa-solid fa-chart-bar\"></i>\n Today's Activity\n </h3>\n </div>\n <div class=\"chart-container\">\n <div class=\"chart-bars\">\n @for (data of hourlyData; track data) {\n <div\n class=\"chart-bar-wrapper\"\n [title]=\"data.hour + ': ' + (data.success + data.failed) + ' events'\"\n >\n <div class=\"chart-bar\">\n <div\n class=\"bar-segment success\"\n [style.height.%]=\"(data.success / getMaxHourlyCount()) * 100\"\n ></div>\n <div\n class=\"bar-segment failed\"\n [style.height.%]=\"(data.failed / getMaxHourlyCount()) * 100\"\n ></div>\n </div>\n <span class=\"chart-label\">{{data.hour.split(':')[0]}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\">\n <span class=\"legend-color success\"></span>\n Success\n </span>\n <span class=\"legend-item\">\n <span class=\"legend-color failed\"></span>\n Failed\n </span>\n </div>\n </div>\n }\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search logs...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n @if (searchText) {\n <button class=\"search-clear\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <select\n class=\"filter-select\"\n [value]=\"selectedStatus\"\n (change)=\"onStatusFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Statuses</option>\n <option value=\"Success\">Success</option>\n <option value=\"Failed\">Failed</option>\n </select>\n <select\n class=\"filter-select\"\n [value]=\"selectedOperation\"\n (change)=\"onOperationFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Operations</option>\n @for (op of getOperationList(); track op) {\n <option [value]=\"op\">{{op}}</option>\n }\n </select>\n <select\n class=\"filter-select\"\n [value]=\"dateRange\"\n (change)=\"onDateRangeChange($any($event.target).value)\"\n >\n <option value=\"1\">Last 24 hours</option>\n <option value=\"7\">Last 7 days</option>\n <option value=\"30\">Last 30 days</option>\n <option value=\"90\">Last 90 days</option>\n </select>\n </div>\n <div class=\"toolbar-right\">\n <div class=\"results-info\">\n {{filteredLogs.length}} of {{auditLogs.length}} events\n </div>\n <div class=\"view-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\"\n >\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'table'\"\n (click)=\"setViewMode('table')\"\n title=\"Table View\"\n >\n <i class=\"fa-solid fa-table\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- Timeline View -->\n @if (viewMode === 'timeline' && timelineGroups.length > 0) {\n <div class=\"timeline-container\">\n @for (group of timelineGroups; track group) {\n <div class=\"timeline-group\">\n <div class=\"timeline-date\">\n <span class=\"date-label\">{{group.displayDate}}</span>\n <span class=\"date-count\">{{group.logs.length}} events</span>\n </div>\n <div class=\"timeline-items\">\n @for (log of group.logs; track log) {\n <div\n class=\"timeline-item\"\n [class.expanded]=\"expandedLogId === log.ID\"\n [class.failed]=\"log.Status === 'Failed'\"\n >\n <div class=\"timeline-line\">\n <div\n class=\"timeline-dot\"\n [style.backgroundColor]=\"getOperationColor(getOperationType(log))\"\n ></div>\n </div>\n <div class=\"timeline-content\" (click)=\"toggleLogExpand(log.ID)\">\n <div class=\"timeline-header\">\n <div class=\"timeline-operation\">\n <i [class]=\"getOperationIcon(getOperationType(log))\" [style.color]=\"getOperationColor(getOperationType(log))\"></i>\n <span class=\"operation-name\">{{getOperationType(log)}}</span>\n </div>\n <div class=\"timeline-time\">{{formatTime(log.__mj_CreatedAt)}}</div>\n </div>\n <div class=\"timeline-body\">\n <div class=\"timeline-user\">\n <i class=\"fa-solid fa-user\"></i>\n {{log.User || 'Unknown'}}\n </div>\n @if (log.Description) {\n <div class=\"timeline-description\">\n {{log.Description}}\n </div>\n }\n <div class=\"timeline-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n @if (getSubsystem(log)) {\n <span class=\"subsystem-badge\">\n {{getSubsystem(log)}}\n </span>\n }\n @if (log.parsedDetails?.credentialType) {\n <span class=\"type-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{log.parsedDetails?.credentialType}}\n </span>\n }\n </div>\n </div>\n @if (expandedLogId === log.ID) {\n <div class=\"timeline-details\">\n <div class=\"detail-grid\">\n @if (log.parsedDetails?.ipAddress) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">IP Address</span>\n <span class=\"detail-value\">{{log.parsedDetails?.ipAddress}}</span>\n </div>\n }\n @if (log.parsedDetails?.duration) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{formatDuration(log.parsedDetails?.duration)}}</span>\n </div>\n }\n @if (log.parsedDetails?.credentialId) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Credential ID</span>\n <span class=\"detail-value mono\">{{log.parsedDetails?.credentialId}}</span>\n </div>\n }\n @if (log.parsedDetails?.errorMessage) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">Error Message</span>\n <span class=\"detail-value error\">{{log.parsedDetails?.errorMessage}}</span>\n </div>\n }\n @if (log.parsedDetails?.userAgent) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">User Agent</span>\n <span class=\"detail-value mono small\">{{log.parsedDetails?.userAgent}}</span>\n </div>\n }\n </div>\n </div>\n }\n <button class=\"expand-btn\">\n <i [class]=\"expandedLogId === log.ID ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Table View -->\n @if (viewMode === 'table' && filteredLogs.length > 0) {\n <div class=\"audit-table-container\">\n <table class=\"audit-table\">\n <thead>\n <tr>\n <th>Timestamp</th>\n <th>User</th>\n <th>Operation</th>\n <th>Description</th>\n <th>Subsystem</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n @for (log of filteredLogs; track log) {\n <tr [class.failed-row]=\"log.Status === 'Failed'\">\n <td class=\"timestamp\">{{formatDate(log.__mj_CreatedAt)}}</td>\n <td class=\"user\">{{log.User || 'Unknown'}}</td>\n <td class=\"operation\">\n <span class=\"operation-badge\" [style.backgroundColor]=\"getOperationColor(getOperationType(log)) + '20'\" [style.color]=\"getOperationColor(getOperationType(log))\">\n <i [class]=\"getOperationIcon(getOperationType(log))\"></i>\n {{getOperationType(log)}}\n </span>\n </td>\n <td class=\"description\">{{log.Description || '-'}}</td>\n <td class=\"subsystem\">{{getSubsystem(log) || '-'}}</td>\n <td class=\"status\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredLogs.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <h3>No Audit Logs</h3>\n @if (searchText || selectedStatus || selectedOperation) {\n <p>\n No events match your current filters.\n <button class=\"btn-link\" (click)=\"searchText = ''; selectedStatus = ''; selectedOperation = ''; applyFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedStatus && !selectedOperation) {\n <p>\n No credential access events in the selected time range.\n </p>\n }\n </div>\n }\n }\n</div>\n"]}
1
+ {"version":3,"file":"credentials-audit-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-audit-resource.component.ts","../../../src/Credentials/components/credentials-audit-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { ResourceData, MJAuditLogEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { FilterFieldConfig, ViewToggleOption } from '@memberjunction/ng-ui-components';\n// The Credential Access AuditLogType ID from metadata\nconst CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = 'E8D4D100-E785-42D3-997F-ECFF3B0BCFC0';\n\ninterface AuditLogWithDetails extends MJAuditLogEntity {\n parsedDetails?: ParsedDetails;\n}\n\ninterface ParsedDetails {\n operation?: string;\n subsystem?: string;\n credentialType?: string;\n credentialId?: string;\n ipAddress?: string;\n userAgent?: string;\n duration?: number;\n errorMessage?: string;\n}\n\ninterface TimelineGroup {\n date: string;\n displayDate: string;\n logs: AuditLogWithDetails[];\n}\n\n@RegisterClass(BaseResourceComponent, 'CredentialsAuditResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-audit-resource',\n templateUrl: './credentials-audit-resource.component.html',\n styleUrls: ['./credentials-audit-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsAuditResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public auditLogs: AuditLogWithDetails[] = [];\n public filteredLogs: AuditLogWithDetails[] = [];\n public timelineGroups: TimelineGroup[] = [];\n\n public selectedStatus = '';\n public selectedOperation = '';\n public dateRange = '7'; // days\n public searchText = '';\n public viewMode: 'table' | 'timeline' = 'timeline';\n public expandedLogId: string | null = null;\n\n // Chart data\n public hourlyData: { hour: string; success: number; failed: number }[] = [];\n public operationCounts: Map<string, number> = new Map();\n\n public readonly viewOptions: ViewToggleOption[] = [\n { key: 'timeline', icon: 'fa-solid fa-timeline', title: 'Timeline view' },\n { key: 'table', icon: 'fa-solid fa-table', title: 'Table view' }\n ];\n\n public get FilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'status',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-circle-info',\n placeholder: 'All Statuses',\n options: [\n { text: 'All Statuses', value: '' },\n { text: 'Success', value: 'Success' },\n { text: 'Failed', value: 'Failed' }\n ]\n },\n {\n key: 'operation',\n type: 'dropdown',\n label: 'Operation',\n icon: 'fa-solid fa-bolt',\n placeholder: 'All Operations',\n filterable: true,\n options: [\n { text: 'All Operations', value: '' },\n ...this.getOperationList().map(op => ({ text: op, value: op }))\n ]\n },\n {\n key: 'dateRange',\n type: 'dropdown',\n label: 'Time range',\n icon: 'fa-solid fa-clock',\n options: [\n { text: 'Last 24 hours', value: '1' },\n { text: 'Last 7 days', value: '7' },\n { text: 'Last 30 days', value: '30' },\n { text: 'Last 90 days', value: '90' }\n ]\n }\n ];\n }\n public get FilterValues(): Record<string, unknown> {\n return {\n status: this.selectedStatus,\n operation: this.selectedOperation,\n dateRange: this.dateRange\n };\n }\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.selectedStatus) n++;\n if (this.selectedOperation) n++;\n if (this.dateRange && this.dateRange !== '7') n++; // 7-day is the default; don't count it\n return n;\n }\n public onFilterValuesChange(v: Record<string, unknown>): void {\n const next = (v ?? {}) as { status?: string; operation?: string; dateRange?: string };\n if ((next.status ?? '') !== this.selectedStatus) {\n this.onStatusFilterChange(next.status ?? '');\n }\n if ((next.operation ?? '') !== this.selectedOperation) {\n this.onOperationFilterChange(next.operation ?? '');\n }\n if ((next.dateRange ?? '7') !== this.dateRange) {\n this.onDateRangeChange(next.dateRange ?? '7');\n }\n }\n public resetFilters(): void {\n if (this.selectedStatus) this.onStatusFilterChange('');\n if (this.selectedOperation) this.onOperationFilterChange('');\n if (this.dateRange !== '7') this.onDateRangeChange('7');\n }\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // Cleanup if needed\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Audit Trail';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-clipboard-list';\n }\n\n private async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Calculate date filter\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - parseInt(this.dateRange, 10));\n const dateFilter = `AuditLogTypeID = '${CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID}' AND __mj_CreatedAt >= '${startDate.toISOString()}'`;\n\n const result = await rv.RunView<AuditLogWithDetails>({\n EntityName: 'MJ: Audit Logs',\n ExtraFilter: dateFilter,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 500,\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.auditLogs = result.Results;\n this.parseAllDetails();\n this.applyFilters();\n this.buildChartData();\n }\n\n } catch (error) {\n console.error('Error loading audit logs:', error);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n private parseAllDetails(): void {\n for (const log of this.auditLogs) {\n log.parsedDetails = this.parseDetails(log);\n }\n }\n\n private parseDetails(log: MJAuditLogEntity): ParsedDetails {\n try {\n if (log.Details) {\n return JSON.parse(log.Details);\n }\n } catch (e) {\n // Ignore parse errors\n }\n return {};\n }\n\n public onStatusFilterChange(status: string): void {\n this.selectedStatus = status;\n this.applyFilters();\n }\n\n public onOperationFilterChange(operation: string): void {\n this.selectedOperation = operation;\n this.applyFilters();\n }\n\n public onDateRangeChange(days: string): void {\n this.dateRange = days;\n this.loadData();\n }\n\n public onSearchChange(value: string): void {\n this.searchText = value;\n this.applyFilters();\n }\n\n public clearSearch(): void {\n this.searchText = '';\n this.applyFilters();\n }\n\n public setViewMode(mode: 'table' | 'timeline'): void {\n this.viewMode = mode;\n this.cdr.markForCheck();\n }\n\n public toggleLogExpand(logId: string): void {\n this.expandedLogId = this.expandedLogId === logId ? null : logId;\n this.cdr.markForCheck();\n }\n\n public applyFilters(): void {\n let filtered = [...this.auditLogs];\n\n if (this.selectedStatus) {\n filtered = filtered.filter(log => log.Status === this.selectedStatus);\n }\n\n if (this.selectedOperation) {\n filtered = filtered.filter(log => {\n const op = log.parsedDetails?.operation || 'Access';\n return op === this.selectedOperation;\n });\n }\n\n if (this.searchText) {\n const searchLower = this.searchText.toLowerCase();\n filtered = filtered.filter(log => {\n const user = (log.User || '').toLowerCase();\n const desc = (log.Description || '').toLowerCase();\n const subsystem = (log.parsedDetails?.subsystem || '').toLowerCase();\n const credType = (log.parsedDetails?.credentialType || '').toLowerCase();\n return user.includes(searchLower) ||\n desc.includes(searchLower) ||\n subsystem.includes(searchLower) ||\n credType.includes(searchLower);\n });\n }\n\n this.filteredLogs = filtered;\n this.buildTimelineGroups();\n this.cdr.markForCheck();\n }\n\n private buildTimelineGroups(): void {\n const groups = new Map<string, AuditLogWithDetails[]>();\n\n for (const log of this.filteredLogs) {\n const date = new Date(log.__mj_CreatedAt);\n const dateKey = date.toISOString().split('T')[0];\n\n if (!groups.has(dateKey)) {\n groups.set(dateKey, []);\n }\n groups.get(dateKey)!.push(log);\n }\n\n this.timelineGroups = Array.from(groups.entries())\n .sort((a, b) => b[0].localeCompare(a[0]))\n .map(([date, logs]) => ({\n date,\n displayDate: this.formatGroupDate(date),\n logs\n }));\n }\n\n private formatGroupDate(dateString: string): string {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return date.toLocaleDateString('en-US', {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: date.getFullYear() !== today.getFullYear() ? 'numeric' : undefined\n });\n }\n }\n\n private buildChartData(): void {\n // Build hourly distribution for today\n const hourCounts: { [key: string]: { success: number; failed: number } } = {};\n const today = new Date().toDateString();\n\n for (let i = 0; i < 24; i++) {\n const hour = i.toString().padStart(2, '0') + ':00';\n hourCounts[hour] = { success: 0, failed: 0 };\n }\n\n for (const log of this.auditLogs) {\n const date = new Date(log.__mj_CreatedAt);\n if (date.toDateString() === today) {\n const hour = date.getHours().toString().padStart(2, '0') + ':00';\n if (log.Status === 'Success') {\n hourCounts[hour].success++;\n } else {\n hourCounts[hour].failed++;\n }\n }\n }\n\n this.hourlyData = Object.entries(hourCounts).map(([hour, counts]) => ({\n hour,\n ...counts\n }));\n\n // Build operation counts\n this.operationCounts.clear();\n for (const log of this.auditLogs) {\n const op = log.parsedDetails?.operation || 'Access';\n this.operationCounts.set(op, (this.operationCounts.get(op) || 0) + 1);\n }\n }\n\n public getMaxHourlyCount(): number {\n return Math.max(...this.hourlyData.map(d => d.success + d.failed), 1);\n }\n\n public getOperationList(): string[] {\n return Array.from(this.operationCounts.keys());\n }\n\n public getStatusClass(status: string): string {\n switch (status) {\n case 'Success': return 'success';\n case 'Failed': return 'failed';\n default: return 'unknown';\n }\n }\n\n public getOperationType(log: AuditLogWithDetails): string {\n return log.parsedDetails?.operation || 'Access';\n }\n\n public getSubsystem(log: AuditLogWithDetails): string {\n return log.parsedDetails?.subsystem || '';\n }\n\n public getOperationIcon(operation: string): string {\n switch (operation.toLowerCase()) {\n case 'access': return 'fa-solid fa-eye';\n case 'create': return 'fa-solid fa-plus';\n case 'update': return 'fa-solid fa-pen';\n case 'delete': return 'fa-solid fa-trash';\n case 'rotate': return 'fa-solid fa-rotate';\n case 'validate': return 'fa-solid fa-check-circle';\n default: return 'fa-solid fa-circle';\n }\n }\n\n public getOperationColor(operation: string): string {\n switch (operation.toLowerCase()) {\n case 'access': return 'var(--mj-brand-primary)';\n case 'create': return 'var(--mj-status-success)';\n case 'update': return 'var(--mj-status-warning)';\n case 'delete': return 'var(--mj-status-error)';\n case 'rotate': return 'var(--mj-brand-primary)';\n case 'validate': return 'var(--mj-brand-primary)';\n default: return 'var(--mj-text-secondary)';\n }\n }\n\n public formatDate(date: Date | string | null): string {\n if (!date) return '';\n const d = new Date(date);\n return d.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n public formatTime(date: Date | string | null): string {\n if (!date) return '';\n const d = new Date(date);\n return d.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n public formatDuration(ms: number | undefined): string {\n if (!ms) return '-';\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(2)}s`;\n }\n\n public refresh(): void {\n this.loadData();\n }\n\n public getSuccessCount(): number {\n return this.auditLogs.filter(log => log.Status === 'Success').length;\n }\n\n public getFailedCount(): number {\n return this.auditLogs.filter(log => log.Status === 'Failed').length;\n }\n\n public getSuccessRate(): number {\n if (this.auditLogs.length === 0) return 0;\n return Math.round((this.getSuccessCount() / this.auditLogs.length) * 100);\n }\n\n public getUniqueUserCount(): number {\n const users = new Set(this.auditLogs.map(log => log.User).filter(Boolean));\n return users.size;\n }\n\n public exportToCSV(): void {\n const headers = ['Timestamp', 'User', 'Operation', 'Status', 'Description', 'Subsystem', 'Credential Type'];\n const rows = this.filteredLogs.map(log => [\n this.formatDate(log.__mj_CreatedAt),\n log.User || '',\n this.getOperationType(log),\n log.Status || '',\n log.Description || '',\n this.getSubsystem(log),\n log.parsedDetails?.credentialType || ''\n ]);\n\n const csvContent = [\n headers.join(','),\n ...rows.map(row => row.map(cell => `\"${cell.replace(/\"/g, '\"\"')}\"`).join(','))\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = `credential-audit-log-${new Date().toISOString().split('T')[0]}.csv`;\n link.click();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Audit Trail\"\n Icon=\"fa-solid fa-clipboard-list\"\n Subtitle=\"Credential access and modification history\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredLogs.length\"\n [Total]=\"auditLogs.length\"\n Label=\"events\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"exportToCSV()\" title=\"Export to CSV\">\n <i class=\"fa-solid fa-download\"></i> Export\n </button>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search logs...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading audit logs...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Stats Cards -->\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon total\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{auditLogs.length}}</div>\n <div class=\"stat-label\">Total Events</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon success\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value success\">{{getSuccessCount()}}</div>\n <div class=\"stat-label\">Successful</div>\n </div>\n <div class=\"stat-rate\">{{getSuccessRate()}}%</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\">\n <i class=\"fa-solid fa-times-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value failed\">{{getFailedCount()}}</div>\n <div class=\"stat-label\">Failed</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon users\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{getUniqueUserCount()}}</div>\n <div class=\"stat-label\">Unique Users</div>\n </div>\n </div>\n </div>\n <!-- Activity Chart -->\n @if (hourlyData.length > 0) {\n <div class=\"activity-chart\">\n <div class=\"chart-header\">\n <h3>\n <i class=\"fa-solid fa-chart-bar\"></i>\n Today's Activity\n </h3>\n </div>\n <div class=\"chart-container\">\n <div class=\"chart-bars\">\n @for (data of hourlyData; track data) {\n <div\n class=\"chart-bar-wrapper\"\n [title]=\"data.hour + ': ' + (data.success + data.failed) + ' events'\"\n >\n <div class=\"chart-bar\">\n <div\n class=\"bar-segment success\"\n [style.height.%]=\"(data.success / getMaxHourlyCount()) * 100\"\n ></div>\n <div\n class=\"bar-segment failed\"\n [style.height.%]=\"(data.failed / getMaxHourlyCount()) * 100\"\n ></div>\n </div>\n <span class=\"chart-label\">{{data.hour.split(':')[0]}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\">\n <span class=\"legend-color success\"></span>\n Success\n </span>\n <span class=\"legend-item\">\n <span class=\"legend-color failed\"></span>\n Failed\n </span>\n </div>\n </div>\n }\n <!-- Timeline View -->\n @if (viewMode === 'timeline' && timelineGroups.length > 0) {\n <div class=\"timeline-container\">\n @for (group of timelineGroups; track group) {\n <div class=\"timeline-group\">\n <div class=\"timeline-date\">\n <span class=\"date-label\">{{group.displayDate}}</span>\n <span class=\"date-count\">{{group.logs.length}} events</span>\n </div>\n <div class=\"timeline-items\">\n @for (log of group.logs; track log) {\n <div\n class=\"timeline-item\"\n [class.expanded]=\"expandedLogId === log.ID\"\n [class.failed]=\"log.Status === 'Failed'\"\n >\n <div class=\"timeline-line\">\n <div\n class=\"timeline-dot\"\n [style.backgroundColor]=\"getOperationColor(getOperationType(log))\"\n ></div>\n </div>\n <div class=\"timeline-content\" (click)=\"toggleLogExpand(log.ID)\">\n <div class=\"timeline-header\">\n <div class=\"timeline-operation\">\n <i [class]=\"getOperationIcon(getOperationType(log))\" [style.color]=\"getOperationColor(getOperationType(log))\"></i>\n <span class=\"operation-name\">{{getOperationType(log)}}</span>\n </div>\n <div class=\"timeline-time\">{{formatTime(log.__mj_CreatedAt)}}</div>\n </div>\n <div class=\"timeline-body\">\n <div class=\"timeline-user\">\n <i class=\"fa-solid fa-user\"></i>\n {{log.User || 'Unknown'}}\n </div>\n @if (log.Description) {\n <div class=\"timeline-description\">\n {{log.Description}}\n </div>\n }\n <div class=\"timeline-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n @if (getSubsystem(log)) {\n <span class=\"subsystem-badge\">\n {{getSubsystem(log)}}\n </span>\n }\n @if (log.parsedDetails?.credentialType) {\n <span class=\"type-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{log.parsedDetails?.credentialType}}\n </span>\n }\n </div>\n </div>\n @if (expandedLogId === log.ID) {\n <div class=\"timeline-details\">\n <div class=\"detail-grid\">\n @if (log.parsedDetails?.ipAddress) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">IP Address</span>\n <span class=\"detail-value\">{{log.parsedDetails?.ipAddress}}</span>\n </div>\n }\n @if (log.parsedDetails?.duration) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{formatDuration(log.parsedDetails?.duration)}}</span>\n </div>\n }\n @if (log.parsedDetails?.credentialId) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Credential ID</span>\n <span class=\"detail-value mono\">{{log.parsedDetails?.credentialId}}</span>\n </div>\n }\n @if (log.parsedDetails?.errorMessage) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">Error Message</span>\n <span class=\"detail-value error\">{{log.parsedDetails?.errorMessage}}</span>\n </div>\n }\n @if (log.parsedDetails?.userAgent) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">User Agent</span>\n <span class=\"detail-value mono small\">{{log.parsedDetails?.userAgent}}</span>\n </div>\n }\n </div>\n </div>\n }\n <button class=\"expand-btn\">\n <i [class]=\"expandedLogId === log.ID ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Table View -->\n @if (viewMode === 'table' && filteredLogs.length > 0) {\n <div class=\"audit-table-container\">\n <table class=\"audit-table\">\n <thead>\n <tr>\n <th>Timestamp</th>\n <th>User</th>\n <th>Operation</th>\n <th>Description</th>\n <th>Subsystem</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n @for (log of filteredLogs; track log) {\n <tr [class.failed-row]=\"log.Status === 'Failed'\">\n <td class=\"timestamp\">{{formatDate(log.__mj_CreatedAt)}}</td>\n <td class=\"user\">{{log.User || 'Unknown'}}</td>\n <td class=\"operation\">\n <span class=\"operation-badge\" [style.backgroundColor]=\"getOperationColor(getOperationType(log)) + '20'\" [style.color]=\"getOperationColor(getOperationType(log))\">\n <i [class]=\"getOperationIcon(getOperationType(log))\"></i>\n {{getOperationType(log)}}\n </span>\n </td>\n <td class=\"description\">{{log.Description || '-'}}</td>\n <td class=\"subsystem\">{{getSubsystem(log) || '-'}}</td>\n <td class=\"status\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredLogs.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <h3>No Audit Logs</h3>\n @if (searchText || selectedStatus || selectedOperation) {\n <p>\n No events match your current filters.\n <button class=\"btn-link\" (click)=\"searchText = ''; selectedStatus = ''; selectedOperation = ''; applyFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedStatus && !selectedOperation) {\n <p>\n No credential access events in the selected time range.\n </p>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n"]}