@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
@@ -10,463 +10,418 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
10
10
  import { RunView } from '@memberjunction/core';
11
11
  import { IntegrationDataService, } from '../../services/integration-data.service';
12
12
  import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
13
+ import * as i1 from "@memberjunction/ng-ui-components";
14
14
  import * as i2 from "@memberjunction/ng-shared-generic";
15
15
  import * as i3 from "@angular/common";
16
- const _forTrack0 = ($index, $item) => $item.ID;
17
- const _forTrack1 = ($index, $item) => $item.Value;
16
+ const _forTrack0 = ($index, $item) => $item.Value;
17
+ const _forTrack1 = ($index, $item) => $item.ID;
18
18
  const _forTrack2 = ($index, $item) => $item.EntityID;
19
- function ActivityComponent_For_4_Template(rf, ctx) { if (rf & 1) {
20
- const _r1 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "button", 15);
22
- i0.ɵɵlistener("click", function ActivityComponent_For_4_Template_button_click_0_listener() { const status_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetStatusFilter(status_r2)); });
23
- i0.ɵɵtext(1);
19
+ function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "div", 1);
21
+ i0.ɵɵelement(1, "mj-stat-badge", 15)(2, "mj-stat-badge", 16)(3, "mj-stat-badge", 17)(4, "mj-stat-badge", 18);
22
+ i0.ɵɵpipe(5, "number");
24
23
  i0.ɵɵelementEnd();
25
24
  } if (rf & 2) {
26
- const status_r2 = ctx.$implicit;
27
- const ctx_r2 = i0.ɵɵnextContext();
28
- i0.ɵɵclassProp("active", ctx_r2.StatusFilter === status_r2);
25
+ const ctx_r0 = i0.ɵɵnextContext();
26
+ i0.ɵɵadvance();
27
+ i0.ɵɵproperty("Count", ctx_r0.TotalRuns);
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵproperty("Count", ctx_r0.SuccessfulRuns);
29
30
  i0.ɵɵadvance();
30
- i0.ɵɵtextInterpolate1(" ", status_r2, " ");
31
+ i0.ɵɵproperty("Count", ctx_r0.FailedRuns);
32
+ i0.ɵɵadvance();
33
+ i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(5, 4, ctx_r0.TotalRecordsProcessed));
31
34
  } }
32
35
  function ActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "option", 7);
34
- i0.ɵɵtext(1);
36
+ const _r2 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵelementStart(0, "mj-filter-chip", 19);
38
+ i0.ɵɵlistener("Clicked", function ActivityComponent_For_10_Template_mj_filter_chip_Clicked_0_listener() { const status_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetStatusFilter(status_r3)); });
35
39
  i0.ɵɵelementEnd();
36
40
  } if (rf & 2) {
37
- const opt_r4 = ctx.$implicit;
38
- i0.ɵɵproperty("value", opt_r4.ID);
39
- i0.ɵɵadvance();
40
- i0.ɵɵtextInterpolate(opt_r4.Name);
41
+ const status_r3 = ctx.$implicit;
42
+ const ctx_r0 = i0.ɵɵnextContext();
43
+ i0.ɵɵproperty("Label", status_r3)("Active", ctx_r0.StatusFilter === status_r3);
41
44
  } }
42
45
  function ActivityComponent_For_13_Template(rf, ctx) { if (rf & 1) {
43
- const _r5 = i0.ɵɵgetCurrentView();
44
- i0.ɵɵelementStart(0, "button", 15);
45
- i0.ɵɵlistener("click", function ActivityComponent_For_13_Template_button_click_0_listener() { const d_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDateFilter(d_r6.Value)); });
46
- i0.ɵɵtext(1);
46
+ const _r4 = i0.ɵɵgetCurrentView();
47
+ i0.ɵɵelementStart(0, "mj-filter-chip", 19);
48
+ i0.ɵɵlistener("Clicked", function ActivityComponent_For_13_Template_mj_filter_chip_Clicked_0_listener() { const d_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDateFilter(d_r5.Value)); });
47
49
  i0.ɵɵelementEnd();
48
50
  } if (rf & 2) {
49
- const d_r6 = ctx.$implicit;
50
- const ctx_r2 = i0.ɵɵnextContext();
51
- i0.ɵɵclassProp("active", ctx_r2.DateFilter === d_r6.Value);
52
- i0.ɵɵadvance();
53
- i0.ɵɵtextInterpolate1(" ", d_r6.Label, " ");
54
- } }
55
- function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelementStart(0, "div", 11)(1, "div", 16);
57
- i0.ɵɵelement(2, "span", 17);
58
- i0.ɵɵelementStart(3, "span", 18);
59
- i0.ɵɵtext(4);
60
- i0.ɵɵelementEnd();
61
- i0.ɵɵelementStart(5, "span", 19);
62
- i0.ɵɵtext(6, "Total Runs");
63
- i0.ɵɵelementEnd()();
64
- i0.ɵɵelementStart(7, "div", 16);
65
- i0.ɵɵelement(8, "span", 20);
66
- i0.ɵɵelementStart(9, "span", 21);
67
- i0.ɵɵtext(10);
68
- i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(11, "span", 19);
70
- i0.ɵɵtext(12, "Successful");
71
- i0.ɵɵelementEnd()();
72
- i0.ɵɵelementStart(13, "div", 16);
73
- i0.ɵɵelement(14, "span", 22);
74
- i0.ɵɵelementStart(15, "span", 23);
75
- i0.ɵɵtext(16);
76
- i0.ɵɵelementEnd();
77
- i0.ɵɵelementStart(17, "span", 19);
78
- i0.ɵɵtext(18, "Failed");
79
- i0.ɵɵelementEnd()();
80
- i0.ɵɵelementStart(19, "div", 16);
81
- i0.ɵɵelement(20, "span", 17);
82
- i0.ɵɵelementStart(21, "span", 18);
83
- i0.ɵɵtext(22);
84
- i0.ɵɵpipe(23, "number");
85
- i0.ɵɵelementEnd();
86
- i0.ɵɵelementStart(24, "span", 19);
87
- i0.ɵɵtext(25, "Records Processed");
88
- i0.ɵɵelementEnd()()();
89
- } if (rf & 2) {
90
- const ctx_r2 = i0.ɵɵnextContext();
91
- i0.ɵɵadvance(4);
92
- i0.ɵɵtextInterpolate(ctx_r2.TotalRuns);
93
- i0.ɵɵadvance(6);
94
- i0.ɵɵtextInterpolate(ctx_r2.SuccessfulRuns);
95
- i0.ɵɵadvance(6);
96
- i0.ɵɵtextInterpolate(ctx_r2.FailedRuns);
97
- i0.ɵɵadvance(6);
98
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 4, ctx_r2.TotalRecordsProcessed));
51
+ const d_r5 = ctx.$implicit;
52
+ const ctx_r0 = i0.ɵɵnextContext();
53
+ i0.ɵɵproperty("Label", d_r5.Label)("Active", ctx_r0.DateFilter === d_r5.Value);
99
54
  } }
100
- function ActivityComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
55
+ function ActivityComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
101
56
  i0.ɵɵelementStart(0, "div", 12);
102
- i0.ɵɵelement(1, "mj-loading", 24);
57
+ i0.ɵɵelement(1, "mj-loading", 20);
103
58
  i0.ɵɵelementEnd();
104
59
  } }
105
- function ActivityComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
60
+ function ActivityComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
106
61
  i0.ɵɵelementStart(0, "div", 13);
107
- i0.ɵɵelement(1, "i", 25);
62
+ i0.ɵɵelement(1, "i", 21);
108
63
  i0.ɵɵelementStart(2, "p");
109
64
  i0.ɵɵtext(3, "No runs found for the selected filters.");
110
65
  i0.ɵɵelementEnd()();
111
66
  } }
112
- function ActivityComponent_Conditional_21_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
113
- i0.ɵɵelement(0, "i", 39);
67
+ function ActivityComponent_Conditional_18_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelement(0, "i", 35);
114
69
  } }
115
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 45);
117
- i0.ɵɵelement(1, "mj-loading", 49);
70
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 41);
72
+ i0.ɵɵelement(1, "mj-loading", 45);
118
73
  i0.ɵɵelementEnd();
119
74
  } }
120
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "div", 46);
122
- i0.ɵɵelement(1, "i", 50);
75
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelementStart(0, "div", 42);
77
+ i0.ɵɵelement(1, "i", 46);
123
78
  i0.ɵɵtext(2, " No entity details for this run. ");
124
79
  i0.ɵɵelementEnd();
125
80
  } }
126
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
81
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
127
82
  i0.ɵɵelementStart(0, "tr")(1, "td");
128
83
  i0.ɵɵtext(2);
129
84
  i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(3, "td", 51);
85
+ i0.ɵɵelementStart(3, "td", 47);
131
86
  i0.ɵɵtext(4);
132
87
  i0.ɵɵpipe(5, "number");
133
88
  i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(6, "td", 53);
89
+ i0.ɵɵelementStart(6, "td", 49);
135
90
  i0.ɵɵtext(7);
136
91
  i0.ɵɵpipe(8, "number");
137
92
  i0.ɵɵelementEnd();
138
- i0.ɵɵelementStart(9, "td", 54);
93
+ i0.ɵɵelementStart(9, "td", 50);
139
94
  i0.ɵɵtext(10);
140
95
  i0.ɵɵpipe(11, "number");
141
96
  i0.ɵɵelementEnd();
142
- i0.ɵɵelementStart(12, "td", 51);
97
+ i0.ɵɵelementStart(12, "td", 47);
143
98
  i0.ɵɵtext(13);
144
99
  i0.ɵɵpipe(14, "number");
145
100
  i0.ɵɵelementEnd();
146
- i0.ɵɵelementStart(15, "td", 55);
101
+ i0.ɵɵelementStart(15, "td", 51);
147
102
  i0.ɵɵtext(16);
148
103
  i0.ɵɵpipe(17, "number");
149
104
  i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(18, "td", 51);
105
+ i0.ɵɵelementStart(18, "td", 47);
151
106
  i0.ɵɵtext(19);
152
107
  i0.ɵɵpipe(20, "number");
153
108
  i0.ɵɵelementEnd()();
154
109
  } if (rf & 2) {
155
- const detail_r10 = ctx.$implicit;
156
- i0.ɵɵclassProp("error-row", detail_r10.RecordsErrored > 0);
110
+ const detail_r9 = ctx.$implicit;
111
+ i0.ɵɵclassProp("error-row", detail_r9.RecordsErrored > 0);
157
112
  i0.ɵɵadvance(2);
158
- i0.ɵɵtextInterpolate(detail_r10.Entity);
113
+ i0.ɵɵtextInterpolate(detail_r9.Entity);
159
114
  i0.ɵɵadvance(2);
160
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r10.RecordsProcessed));
115
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r9.RecordsProcessed));
161
116
  i0.ɵɵadvance(3);
162
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r10.RecordsCreated));
117
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r9.RecordsCreated));
163
118
  i0.ɵɵadvance(3);
164
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r10.RecordsUpdated));
119
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r9.RecordsUpdated));
165
120
  i0.ɵɵadvance(3);
166
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r10.RecordsDeleted));
121
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r9.RecordsDeleted));
167
122
  i0.ɵɵadvance(3);
168
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r10.RecordsErrored));
123
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r9.RecordsErrored));
169
124
  i0.ɵɵadvance(3);
170
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r10.RecordsSkipped));
125
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r9.RecordsSkipped));
171
126
  } }
172
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
173
- i0.ɵɵelementStart(0, "table", 47)(1, "thead")(2, "tr")(3, "th");
127
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵelementStart(0, "table", 43)(1, "thead")(2, "tr")(3, "th");
174
129
  i0.ɵɵtext(4, "Entity");
175
130
  i0.ɵɵelementEnd();
176
- i0.ɵɵelementStart(5, "th", 51);
131
+ i0.ɵɵelementStart(5, "th", 47);
177
132
  i0.ɵɵtext(6, "Processed");
178
133
  i0.ɵɵelementEnd();
179
- i0.ɵɵelementStart(7, "th", 51);
134
+ i0.ɵɵelementStart(7, "th", 47);
180
135
  i0.ɵɵtext(8, "Created");
181
136
  i0.ɵɵelementEnd();
182
- i0.ɵɵelementStart(9, "th", 51);
137
+ i0.ɵɵelementStart(9, "th", 47);
183
138
  i0.ɵɵtext(10, "Updated");
184
139
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(11, "th", 51);
140
+ i0.ɵɵelementStart(11, "th", 47);
186
141
  i0.ɵɵtext(12, "Deleted");
187
142
  i0.ɵɵelementEnd();
188
- i0.ɵɵelementStart(13, "th", 51);
143
+ i0.ɵɵelementStart(13, "th", 47);
189
144
  i0.ɵɵtext(14, "Errored");
190
145
  i0.ɵɵelementEnd();
191
- i0.ɵɵelementStart(15, "th", 51);
146
+ i0.ɵɵelementStart(15, "th", 47);
192
147
  i0.ɵɵtext(16, "Skipped");
193
148
  i0.ɵɵelementEnd()()();
194
149
  i0.ɵɵelementStart(17, "tbody");
195
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 52, _forTrack2);
150
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 48, _forTrack2);
196
151
  i0.ɵɵelementEnd()();
197
152
  } if (rf & 2) {
198
- const ctx_r2 = i0.ɵɵnextContext(4);
153
+ const ctx_r0 = i0.ɵɵnextContext(4);
199
154
  i0.ɵɵadvance(18);
200
- i0.ɵɵrepeater(ctx_r2.GetExpandedDetails());
155
+ i0.ɵɵrepeater(ctx_r0.GetExpandedDetails());
201
156
  } }
202
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
203
- i0.ɵɵelementStart(0, "div", 48)(1, "div", 56);
204
- i0.ɵɵelement(2, "i", 39);
157
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
158
+ i0.ɵɵelementStart(0, "div", 44)(1, "div", 52);
159
+ i0.ɵɵelement(2, "i", 35);
205
160
  i0.ɵɵtext(3, " Error Log ");
206
161
  i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(4, "pre", 57);
162
+ i0.ɵɵelementStart(4, "pre", 53);
208
163
  i0.ɵɵtext(5);
209
164
  i0.ɵɵelementEnd()();
210
165
  } if (rf & 2) {
211
- const run_r8 = i0.ɵɵnextContext(2).$implicit;
166
+ const run_r7 = i0.ɵɵnextContext(2).$implicit;
212
167
  i0.ɵɵadvance(5);
213
- i0.ɵɵtextInterpolate(run_r8.ErrorLog);
168
+ i0.ɵɵtextInterpolate(run_r7.ErrorLog);
214
169
  } }
215
- function ActivityComponent_Conditional_21_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
216
- const _r9 = i0.ɵɵgetCurrentView();
217
- i0.ɵɵelementStart(0, "div", 44);
218
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); });
219
- i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 45)(2, ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 46)(3, ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 47);
220
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_21_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 48);
170
+ function ActivityComponent_Conditional_18_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
171
+ const _r8 = i0.ɵɵgetCurrentView();
172
+ i0.ɵɵelementStart(0, "div", 40);
173
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
174
+ i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 41)(2, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 42)(3, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 43);
175
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 44);
221
176
  i0.ɵɵelementEnd();
222
177
  } if (rf & 2) {
223
- const run_r8 = i0.ɵɵnextContext().$implicit;
224
- const ctx_r2 = i0.ɵɵnextContext(2);
178
+ const run_r7 = i0.ɵɵnextContext().$implicit;
179
+ const ctx_r0 = i0.ɵɵnextContext(2);
225
180
  i0.ɵɵadvance();
226
- i0.ɵɵconditional(ctx_r2.IsLoadingExpandedDetails() ? 1 : ctx_r2.GetExpandedDetails().length === 0 ? 2 : 3);
181
+ i0.ɵɵconditional(ctx_r0.IsLoadingExpandedDetails() ? 1 : ctx_r0.GetExpandedDetails().length === 0 ? 2 : 3);
227
182
  i0.ɵɵadvance(3);
228
- i0.ɵɵconditional(run_r8.ErrorLog ? 4 : -1);
183
+ i0.ɵɵconditional(run_r7.ErrorLog ? 4 : -1);
229
184
  } }
230
- function ActivityComponent_Conditional_21_For_3_Template(rf, ctx) { if (rf & 1) {
231
- const _r7 = i0.ɵɵgetCurrentView();
232
- i0.ɵɵelementStart(0, "div", 29);
233
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_For_3_Template_div_click_0_listener() { const run_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectRun(run_r8.ID)); });
234
- i0.ɵɵelementStart(1, "div", 30);
235
- i0.ɵɵelement(2, "span")(3, "i", 31);
236
- i0.ɵɵelementStart(4, "div", 32)(5, "span", 33);
185
+ function ActivityComponent_Conditional_18_For_3_Template(rf, ctx) { if (rf & 1) {
186
+ const _r6 = i0.ɵɵgetCurrentView();
187
+ i0.ɵɵelementStart(0, "div", 25);
188
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_div_click_0_listener() { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(run_r7.ID)); });
189
+ i0.ɵɵelementStart(1, "div", 26);
190
+ i0.ɵɵelement(2, "span")(3, "i", 27);
191
+ i0.ɵɵelementStart(4, "div", 28)(5, "span", 29);
237
192
  i0.ɵɵtext(6);
238
193
  i0.ɵɵelementEnd();
239
- i0.ɵɵelementStart(7, "span", 34);
194
+ i0.ɵɵelementStart(7, "span", 30);
240
195
  i0.ɵɵtext(8);
241
196
  i0.ɵɵelementEnd()();
242
- i0.ɵɵelementStart(9, "div", 35);
197
+ i0.ɵɵelementStart(9, "div", 31);
243
198
  i0.ɵɵtext(10);
244
199
  i0.ɵɵelementEnd();
245
- i0.ɵɵelementStart(11, "div", 36);
200
+ i0.ɵɵelementStart(11, "div", 32);
246
201
  i0.ɵɵtext(12);
247
202
  i0.ɵɵelementEnd();
248
- i0.ɵɵelementStart(13, "div", 37);
203
+ i0.ɵɵelementStart(13, "div", 33);
249
204
  i0.ɵɵtext(14);
250
205
  i0.ɵɵpipe(15, "number");
251
206
  i0.ɵɵelementEnd();
252
- i0.ɵɵelementStart(16, "div", 38);
253
- i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_21_For_3_Conditional_17_Template, 1, 0, "i", 39);
207
+ i0.ɵɵelementStart(16, "div", 34);
208
+ i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i", 35);
254
209
  i0.ɵɵelementEnd();
255
- i0.ɵɵelementStart(18, "div", 40);
210
+ i0.ɵɵelementStart(18, "div", 36);
256
211
  i0.ɵɵtext(19);
257
212
  i0.ɵɵelementEnd();
258
- i0.ɵɵelementStart(20, "button", 41);
259
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_For_3_Template_button_click_20_listener($event) { const run_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.ToggleExpand(run_r8.ID); return i0.ɵɵresetView($event.stopPropagation()); });
260
- i0.ɵɵelement(21, "i", 42);
213
+ i0.ɵɵelementStart(20, "button", 37);
214
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_button_click_20_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.ToggleExpand(run_r7.ID); return i0.ɵɵresetView($event.stopPropagation()); });
215
+ i0.ɵɵelement(21, "i", 38);
261
216
  i0.ɵɵelementEnd()();
262
- i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_21_For_3_Conditional_22_Template, 5, 2, "div", 43);
217
+ i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_For_3_Conditional_22_Template, 5, 2, "div", 39);
263
218
  i0.ɵɵelementEnd();
264
219
  } if (rf & 2) {
265
- const run_r8 = ctx.$implicit;
266
- const ctx_r2 = i0.ɵɵnextContext(2);
267
- i0.ɵɵclassProp("selected", ctx_r2.IsSelectedRun(run_r8.ID));
220
+ const run_r7 = ctx.$implicit;
221
+ const ctx_r0 = i0.ɵɵnextContext(2);
222
+ i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(run_r7.ID));
268
223
  i0.ɵɵadvance(2);
269
- i0.ɵɵclassMap(ctx_r2.GetStatusDotClass(run_r8.Status));
224
+ i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(run_r7.Status));
270
225
  i0.ɵɵadvance();
271
- i0.ɵɵclassMap(ctx_r2.GetStatusIcon(run_r8.Status));
272
- i0.ɵɵclassProp("icon-green", run_r8.Status === "Success")("icon-red", run_r8.Status === "Failed")("icon-amber", run_r8.Status === "In Progress")("icon-gray", run_r8.Status === "Pending");
226
+ i0.ɵɵclassMap(ctx_r0.GetStatusIcon(run_r7.Status));
227
+ i0.ɵɵclassProp("icon-green", run_r7.Status === "Success")("icon-red", run_r7.Status === "Failed")("icon-amber", run_r7.Status === "In Progress")("icon-gray", run_r7.Status === "Pending");
273
228
  i0.ɵɵadvance(3);
274
- i0.ɵɵtextInterpolate(run_r8.Integration);
229
+ i0.ɵɵtextInterpolate(run_r7.Integration);
275
230
  i0.ɵɵadvance(2);
276
- i0.ɵɵtextInterpolate(run_r8.Company);
231
+ i0.ɵɵtextInterpolate(run_r7.Company);
277
232
  i0.ɵɵadvance();
278
- i0.ɵɵproperty("title", ctx_r2.FormatAbsoluteDate(run_r8.StartedAt));
233
+ i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(run_r7.StartedAt));
279
234
  i0.ɵɵadvance();
280
- i0.ɵɵtextInterpolate1(" ", ctx_r2.GetRelativeTime(run_r8.StartedAt), " ");
235
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(run_r7.StartedAt), " ");
281
236
  i0.ɵɵadvance(2);
282
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatDuration(run_r8.StartedAt, run_r8.EndedAt), " ");
237
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(run_r7.StartedAt, run_r7.EndedAt), " ");
283
238
  i0.ɵɵadvance(2);
284
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r8.TotalRecords), " ");
239
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r7.TotalRecords), " ");
285
240
  i0.ɵɵadvance(2);
286
- i0.ɵɵclassProp("has-errors", run_r8.ErrorLog);
241
+ i0.ɵɵclassProp("has-errors", run_r7.ErrorLog);
287
242
  i0.ɵɵadvance();
288
- i0.ɵɵconditional(run_r8.ErrorLog ? 17 : -1);
243
+ i0.ɵɵconditional(run_r7.ErrorLog ? 17 : -1);
289
244
  i0.ɵɵadvance(2);
290
- i0.ɵɵtextInterpolate1(" ", run_r8.RunByUser || "Scheduled", " ");
245
+ i0.ɵɵtextInterpolate1(" ", run_r7.RunByUser || "Scheduled", " ");
291
246
  i0.ɵɵadvance(2);
292
- i0.ɵɵclassProp("rotated", ctx_r2.IsExpanded(run_r8.ID));
247
+ i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(run_r7.ID));
293
248
  i0.ɵɵadvance();
294
- i0.ɵɵconditional(ctx_r2.IsExpanded(run_r8.ID) ? 22 : -1);
249
+ i0.ɵɵconditional(ctx_r0.IsExpanded(run_r7.ID) ? 22 : -1);
295
250
  } }
296
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementStart(0, "div", 63)(1, "div", 69);
298
- i0.ɵɵelement(2, "div", 70);
251
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
252
+ i0.ɵɵelementStart(0, "div", 59)(1, "div", 65);
253
+ i0.ɵɵelement(2, "div", 66);
299
254
  i0.ɵɵelementEnd();
300
- i0.ɵɵelementStart(3, "div", 71)(4, "span");
255
+ i0.ɵɵelementStart(3, "div", 67)(4, "span");
301
256
  i0.ɵɵtext(5);
302
257
  i0.ɵɵelementEnd();
303
- i0.ɵɵelementStart(6, "span", 72);
258
+ i0.ɵɵelementStart(6, "span", 68);
304
259
  i0.ɵɵtext(7);
305
260
  i0.ɵɵelementEnd();
306
261
  i0.ɵɵelementStart(8, "span");
307
262
  i0.ɵɵtext(9);
308
263
  i0.ɵɵelementEnd()()();
309
264
  } if (rf & 2) {
310
- const ctx_r2 = i0.ɵɵnextContext(3);
265
+ const ctx_r0 = i0.ɵɵnextContext(3);
311
266
  i0.ɵɵadvance(2);
312
- i0.ɵɵstyleProp("width", ctx_r2.GetDurationBarWidth(ctx_r2.GetSelectedRun()), "%");
267
+ i0.ɵɵstyleProp("width", ctx_r0.GetDurationBarWidth(ctx_r0.GetSelectedRun()), "%");
313
268
  i0.ɵɵadvance(3);
314
- i0.ɵɵtextInterpolate(ctx_r2.FormatDate(ctx_r2.GetSelectedRun().StartedAt));
269
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().StartedAt));
315
270
  i0.ɵɵadvance(2);
316
- i0.ɵɵtextInterpolate(ctx_r2.GetDurationBarLabel(ctx_r2.GetSelectedRun()));
271
+ i0.ɵɵtextInterpolate(ctx_r0.GetDurationBarLabel(ctx_r0.GetSelectedRun()));
317
272
  i0.ɵɵadvance(2);
318
- i0.ɵɵtextInterpolate(ctx_r2.FormatDate(ctx_r2.GetSelectedRun().EndedAt));
273
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().EndedAt));
319
274
  } }
320
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
321
- i0.ɵɵelementStart(0, "div", 73);
322
- i0.ɵɵelement(1, "mj-loading", 77);
275
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
276
+ i0.ɵɵelementStart(0, "div", 69);
277
+ i0.ɵɵelement(1, "mj-loading", 73);
323
278
  i0.ɵɵelementEnd();
324
279
  } }
325
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵelementStart(0, "div", 74);
327
- i0.ɵɵelement(1, "i", 50);
280
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
281
+ i0.ɵɵelementStart(0, "div", 70);
282
+ i0.ɵɵelement(1, "i", 46);
328
283
  i0.ɵɵelementStart(2, "p");
329
284
  i0.ɵɵtext(3, "No entity detail records for this run.");
330
285
  i0.ɵɵelementEnd()();
331
286
  } }
332
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
287
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
333
288
  i0.ɵɵelementStart(0, "tr")(1, "td");
334
289
  i0.ɵɵtext(2);
335
290
  i0.ɵɵelementEnd();
336
- i0.ɵɵelementStart(3, "td", 51);
291
+ i0.ɵɵelementStart(3, "td", 47);
337
292
  i0.ɵɵtext(4);
338
293
  i0.ɵɵpipe(5, "number");
339
294
  i0.ɵɵelementEnd();
340
- i0.ɵɵelementStart(6, "td", 53);
295
+ i0.ɵɵelementStart(6, "td", 49);
341
296
  i0.ɵɵtext(7);
342
297
  i0.ɵɵpipe(8, "number");
343
298
  i0.ɵɵelementEnd();
344
- i0.ɵɵelementStart(9, "td", 54);
299
+ i0.ɵɵelementStart(9, "td", 50);
345
300
  i0.ɵɵtext(10);
346
301
  i0.ɵɵpipe(11, "number");
347
302
  i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(12, "td", 51);
303
+ i0.ɵɵelementStart(12, "td", 47);
349
304
  i0.ɵɵtext(13);
350
305
  i0.ɵɵpipe(14, "number");
351
306
  i0.ɵɵelementEnd();
352
- i0.ɵɵelementStart(15, "td", 55);
307
+ i0.ɵɵelementStart(15, "td", 51);
353
308
  i0.ɵɵtext(16);
354
309
  i0.ɵɵpipe(17, "number");
355
310
  i0.ɵɵelementEnd();
356
- i0.ɵɵelementStart(18, "td", 51);
311
+ i0.ɵɵelementStart(18, "td", 47);
357
312
  i0.ɵɵtext(19);
358
313
  i0.ɵɵpipe(20, "number");
359
314
  i0.ɵɵelementEnd()();
360
315
  } if (rf & 2) {
361
- const detail_r12 = ctx.$implicit;
362
- i0.ɵɵclassProp("error-row", detail_r12.RecordsErrored > 0);
316
+ const detail_r11 = ctx.$implicit;
317
+ i0.ɵɵclassProp("error-row", detail_r11.RecordsErrored > 0);
363
318
  i0.ɵɵadvance(2);
364
- i0.ɵɵtextInterpolate(detail_r12.Entity);
319
+ i0.ɵɵtextInterpolate(detail_r11.Entity);
365
320
  i0.ɵɵadvance(2);
366
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r12.RecordsProcessed));
321
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r11.RecordsProcessed));
367
322
  i0.ɵɵadvance(3);
368
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r12.RecordsCreated));
323
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r11.RecordsCreated));
369
324
  i0.ɵɵadvance(3);
370
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r12.RecordsUpdated));
325
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r11.RecordsUpdated));
371
326
  i0.ɵɵadvance(3);
372
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r12.RecordsDeleted));
327
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r11.RecordsDeleted));
373
328
  i0.ɵɵadvance(3);
374
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r12.RecordsErrored));
329
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r11.RecordsErrored));
375
330
  i0.ɵɵadvance(3);
376
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r12.RecordsSkipped));
331
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r11.RecordsSkipped));
377
332
  } }
378
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
379
- i0.ɵɵelementStart(0, "table", 75)(1, "thead")(2, "tr")(3, "th");
333
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
334
+ i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
380
335
  i0.ɵɵtext(4, "Entity");
381
336
  i0.ɵɵelementEnd();
382
- i0.ɵɵelementStart(5, "th", 51);
337
+ i0.ɵɵelementStart(5, "th", 47);
383
338
  i0.ɵɵtext(6, "Processed");
384
339
  i0.ɵɵelementEnd();
385
- i0.ɵɵelementStart(7, "th", 51);
340
+ i0.ɵɵelementStart(7, "th", 47);
386
341
  i0.ɵɵtext(8, "Created");
387
342
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(9, "th", 51);
343
+ i0.ɵɵelementStart(9, "th", 47);
389
344
  i0.ɵɵtext(10, "Updated");
390
345
  i0.ɵɵelementEnd();
391
- i0.ɵɵelementStart(11, "th", 51);
346
+ i0.ɵɵelementStart(11, "th", 47);
392
347
  i0.ɵɵtext(12, "Deleted");
393
348
  i0.ɵɵelementEnd();
394
- i0.ɵɵelementStart(13, "th", 51);
349
+ i0.ɵɵelementStart(13, "th", 47);
395
350
  i0.ɵɵtext(14, "Errors");
396
351
  i0.ɵɵelementEnd();
397
- i0.ɵɵelementStart(15, "th", 51);
352
+ i0.ɵɵelementStart(15, "th", 47);
398
353
  i0.ɵɵtext(16, "Skipped");
399
354
  i0.ɵɵelementEnd()()();
400
355
  i0.ɵɵelementStart(17, "tbody");
401
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 52, _forTrack2);
356
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 48, _forTrack2);
402
357
  i0.ɵɵelementEnd()();
403
358
  } if (rf & 2) {
404
- const ctx_r2 = i0.ɵɵnextContext(4);
359
+ const ctx_r0 = i0.ɵɵnextContext(4);
405
360
  i0.ɵɵadvance(18);
406
- i0.ɵɵrepeater(ctx_r2.SelectedRunDetails);
361
+ i0.ɵɵrepeater(ctx_r0.SelectedRunDetails);
407
362
  } }
408
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
409
- i0.ɵɵelementStart(0, "div", 76)(1, "div", 56);
410
- i0.ɵɵelement(2, "i", 39);
363
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
364
+ i0.ɵɵelementStart(0, "div", 72)(1, "div", 52);
365
+ i0.ɵɵelement(2, "i", 35);
411
366
  i0.ɵɵtext(3, " Error Log ");
412
367
  i0.ɵɵelementEnd();
413
- i0.ɵɵelementStart(4, "pre", 57);
368
+ i0.ɵɵelementStart(4, "pre", 53);
414
369
  i0.ɵɵtext(5);
415
370
  i0.ɵɵelementEnd()();
416
371
  } if (rf & 2) {
417
- const ctx_r2 = i0.ɵɵnextContext(4);
372
+ const ctx_r0 = i0.ɵɵnextContext(4);
418
373
  i0.ɵɵadvance(5);
419
- i0.ɵɵtextInterpolate(ctx_r2.GetSelectedRun().ErrorLog);
374
+ i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().ErrorLog);
420
375
  } }
421
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 73)(1, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 74)(2, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 75);
423
- i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 76);
376
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
377
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 71);
378
+ i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 72);
424
379
  } if (rf & 2) {
425
380
  let tmp_4_0;
426
- const ctx_r2 = i0.ɵɵnextContext(3);
427
- i0.ɵɵconditional(ctx_r2.IsLoadingDetail ? 0 : ctx_r2.SelectedRunDetails.length === 0 ? 1 : 2);
381
+ const ctx_r0 = i0.ɵɵnextContext(3);
382
+ i0.ɵɵconditional(ctx_r0.IsLoadingDetail ? 0 : ctx_r0.SelectedRunDetails.length === 0 ? 1 : 2);
428
383
  i0.ɵɵadvance(3);
429
- i0.ɵɵconditional(((tmp_4_0 = ctx_r2.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
384
+ i0.ɵɵconditional(((tmp_4_0 = ctx_r0.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
430
385
  } }
431
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
432
- i0.ɵɵelementStart(0, "div", 73);
433
- i0.ɵɵelement(1, "mj-loading", 78);
386
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
387
+ i0.ɵɵelementStart(0, "div", 69);
388
+ i0.ɵɵelement(1, "mj-loading", 74);
434
389
  i0.ɵɵelementEnd();
435
390
  } }
436
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
437
- i0.ɵɵelementStart(0, "div", 74);
438
- i0.ɵɵelement(1, "i", 79);
391
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
392
+ i0.ɵɵelementStart(0, "div", 70);
393
+ i0.ɵɵelement(1, "i", 75);
439
394
  i0.ɵɵelementStart(2, "p");
440
395
  i0.ɵɵtext(3, "No watermarks recorded for this integration.");
441
396
  i0.ɵɵelementEnd()();
442
397
  } }
443
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
398
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
444
399
  i0.ɵɵelementStart(0, "tr")(1, "td");
445
400
  i0.ɵɵtext(2);
446
401
  i0.ɵɵelementEnd();
447
- i0.ɵɵelementStart(3, "td")(4, "span", 80);
402
+ i0.ɵɵelementStart(3, "td")(4, "span", 76);
448
403
  i0.ɵɵtext(5);
449
404
  i0.ɵɵelementEnd()();
450
- i0.ɵɵelementStart(6, "td", 81);
405
+ i0.ɵɵelementStart(6, "td", 77);
451
406
  i0.ɵɵtext(7);
452
407
  i0.ɵɵelementEnd();
453
408
  i0.ɵɵelementStart(8, "td");
454
409
  i0.ɵɵtext(9);
455
410
  i0.ɵɵelementEnd()();
456
411
  } if (rf & 2) {
457
- const wm_r13 = ctx.$implicit;
458
- const ctx_r2 = i0.ɵɵnextContext(5);
412
+ const wm_r12 = ctx.$implicit;
413
+ const ctx_r0 = i0.ɵɵnextContext(5);
459
414
  i0.ɵɵadvance(2);
460
- i0.ɵɵtextInterpolate(wm_r13.EntityMap);
415
+ i0.ɵɵtextInterpolate(wm_r12.EntityMap);
461
416
  i0.ɵɵadvance(3);
462
- i0.ɵɵtextInterpolate(wm_r13.WatermarkType);
417
+ i0.ɵɵtextInterpolate(wm_r12.WatermarkType);
463
418
  i0.ɵɵadvance(2);
464
- i0.ɵɵtextInterpolate(ctx_r2.FormatWatermark(wm_r13.WatermarkValue));
419
+ i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(wm_r12.WatermarkValue));
465
420
  i0.ɵɵadvance(2);
466
- i0.ɵɵtextInterpolate(ctx_r2.FormatDate(wm_r13.LastSyncAt));
421
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r12.LastSyncAt));
467
422
  } }
468
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
469
- i0.ɵɵelementStart(0, "table", 75)(1, "thead")(2, "tr")(3, "th");
423
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
424
+ i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
470
425
  i0.ɵɵtext(4, "Entity Map");
471
426
  i0.ɵɵelementEnd();
472
427
  i0.ɵɵelementStart(5, "th");
@@ -479,85 +434,85 @@ function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Condition
479
434
  i0.ɵɵtext(10, "Last Applied");
480
435
  i0.ɵɵelementEnd()()();
481
436
  i0.ɵɵelementStart(11, "tbody");
482
- i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack0);
437
+ i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack1);
483
438
  i0.ɵɵelementEnd()();
484
439
  } if (rf & 2) {
485
- const ctx_r2 = i0.ɵɵnextContext(4);
440
+ const ctx_r0 = i0.ɵɵnextContext(4);
486
441
  i0.ɵɵadvance(12);
487
- i0.ɵɵrepeater(ctx_r2.WatermarkData);
442
+ i0.ɵɵrepeater(ctx_r0.WatermarkData);
488
443
  } }
489
- function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
490
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 73)(1, ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 74)(2, ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 75);
444
+ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
445
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 71);
491
446
  } if (rf & 2) {
492
- const ctx_r2 = i0.ɵɵnextContext(3);
493
- i0.ɵɵconditional(ctx_r2.IsLoadingWatermarks ? 0 : ctx_r2.WatermarkData.length === 0 ? 1 : 2);
447
+ const ctx_r0 = i0.ɵɵnextContext(3);
448
+ i0.ɵɵconditional(ctx_r0.IsLoadingWatermarks ? 0 : ctx_r0.WatermarkData.length === 0 ? 1 : 2);
494
449
  } }
495
- function ActivityComponent_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
496
- const _r11 = i0.ɵɵgetCurrentView();
497
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 58)(2, "div", 59)(3, "h3");
450
+ function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
451
+ const _r10 = i0.ɵɵgetCurrentView();
452
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 54)(2, "div", 55)(3, "h3");
498
453
  i0.ɵɵtext(4);
499
454
  i0.ɵɵelementEnd();
500
455
  i0.ɵɵelementStart(5, "span");
501
456
  i0.ɵɵelement(6, "i");
502
457
  i0.ɵɵtext(7);
503
458
  i0.ɵɵelementEnd();
504
- i0.ɵɵelementStart(8, "span", 60);
459
+ i0.ɵɵelementStart(8, "span", 56);
505
460
  i0.ɵɵtext(9);
506
461
  i0.ɵɵelementEnd()();
507
- i0.ɵɵelementStart(10, "button", 61);
508
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectRun(ctx_r2.SelectedRunID)); });
509
- i0.ɵɵelement(11, "i", 62);
462
+ i0.ɵɵelementStart(10, "button", 57);
463
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(ctx_r0.SelectedRunID)); });
464
+ i0.ɵɵelement(11, "i", 58);
510
465
  i0.ɵɵelementEnd()();
511
- i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_21_Conditional_4_Conditional_12_Template, 10, 5, "div", 63);
512
- i0.ɵɵelementStart(13, "div", 64)(14, "button", 65);
513
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetDetailTab("entities")); });
514
- i0.ɵɵelement(15, "i", 66);
466
+ i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template, 10, 5, "div", 59);
467
+ i0.ɵɵelementStart(13, "div", 60)(14, "button", 61);
468
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("entities")); });
469
+ i0.ɵɵelement(15, "i", 62);
515
470
  i0.ɵɵtext(16, " Entity Breakdown ");
516
471
  i0.ɵɵelementEnd();
517
- i0.ɵɵelementStart(17, "button", 65);
518
- i0.ɵɵlistener("click", function ActivityComponent_Conditional_21_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetDetailTab("watermarks")); });
519
- i0.ɵɵelement(18, "i", 67);
472
+ i0.ɵɵelementStart(17, "button", 61);
473
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("watermarks")); });
474
+ i0.ɵɵelement(18, "i", 63);
520
475
  i0.ɵɵtext(19, " Watermarks ");
521
476
  i0.ɵɵelementEnd()();
522
- i0.ɵɵelementStart(20, "div", 68);
523
- i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_21_Conditional_4_Conditional_21_Template, 4, 2);
524
- i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Template, 3, 1);
477
+ i0.ɵɵelementStart(20, "div", 64);
478
+ i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template, 4, 2);
479
+ i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template, 3, 1);
525
480
  i0.ɵɵelementEnd()();
526
481
  } if (rf & 2) {
527
- const ctx_r2 = i0.ɵɵnextContext(2);
482
+ const ctx_r0 = i0.ɵɵnextContext(2);
528
483
  i0.ɵɵadvance(4);
529
- i0.ɵɵtextInterpolate(ctx_r2.GetSelectedRun().Integration);
484
+ i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().Integration);
530
485
  i0.ɵɵadvance();
531
- i0.ɵɵclassMap(ctx_r2.StatusChipClass(ctx_r2.GetSelectedRun().Status));
486
+ i0.ɵɵclassMap(ctx_r0.StatusChipClass(ctx_r0.GetSelectedRun().Status));
532
487
  i0.ɵɵadvance();
533
- i0.ɵɵclassMap(ctx_r2.GetStatusIcon(ctx_r2.GetSelectedRun().Status));
488
+ i0.ɵɵclassMap(ctx_r0.GetStatusIcon(ctx_r0.GetSelectedRun().Status));
534
489
  i0.ɵɵadvance();
535
- i0.ɵɵtextInterpolate1(" ", ctx_r2.GetSelectedRun().Status, " ");
490
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.GetSelectedRun().Status, " ");
536
491
  i0.ɵɵadvance(2);
537
- i0.ɵɵtextInterpolate(ctx_r2.FormatDate(ctx_r2.GetSelectedRun().StartedAt));
492
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().StartedAt));
538
493
  i0.ɵɵadvance(3);
539
- i0.ɵɵconditional(ctx_r2.GetSelectedRun().StartedAt && ctx_r2.GetSelectedRun().EndedAt ? 12 : -1);
494
+ i0.ɵɵconditional(ctx_r0.GetSelectedRun().StartedAt && ctx_r0.GetSelectedRun().EndedAt ? 12 : -1);
540
495
  i0.ɵɵadvance(2);
541
- i0.ɵɵclassProp("active", ctx_r2.ActiveDetailTab === "entities");
496
+ i0.ɵɵclassProp("active", ctx_r0.ActiveDetailTab === "entities");
542
497
  i0.ɵɵadvance(3);
543
- i0.ɵɵclassProp("active", ctx_r2.ActiveDetailTab === "watermarks");
498
+ i0.ɵɵclassProp("active", ctx_r0.ActiveDetailTab === "watermarks");
544
499
  i0.ɵɵadvance(4);
545
- i0.ɵɵconditional(ctx_r2.ActiveDetailTab === "entities" ? 21 : -1);
500
+ i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "entities" ? 21 : -1);
546
501
  i0.ɵɵadvance();
547
- i0.ɵɵconditional(ctx_r2.ActiveDetailTab === "watermarks" ? 22 : -1);
502
+ i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "watermarks" ? 22 : -1);
548
503
  } }
549
- function ActivityComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
550
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 26);
551
- i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_21_For_3_Template, 23, 29, "div", 27, _forTrack0);
504
+ function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
505
+ i0.ɵɵelementStart(0, "div", 14)(1, "div", 22);
506
+ i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div", 23, _forTrack1);
552
507
  i0.ɵɵelementEnd();
553
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_21_Conditional_4_Template, 23, 14, "div", 28);
508
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_Conditional_4_Template, 23, 14, "div", 24);
554
509
  i0.ɵɵelementEnd();
555
510
  } if (rf & 2) {
556
- const ctx_r2 = i0.ɵɵnextContext();
511
+ const ctx_r0 = i0.ɵɵnextContext();
557
512
  i0.ɵɵadvance(2);
558
- i0.ɵɵrepeater(ctx_r2.FilteredRuns);
513
+ i0.ɵɵrepeater(ctx_r0.FilteredRuns);
559
514
  i0.ɵɵadvance(2);
560
- i0.ɵɵconditional(ctx_r2.SelectedRunID && ctx_r2.GetSelectedRun() ? 4 : -1);
515
+ i0.ɵɵconditional(ctx_r0.SelectedRunID && ctx_r0.GetSelectedRun() ? 4 : -1);
561
516
  } }
562
517
  let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
563
518
  // Data
@@ -583,10 +538,10 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
583
538
  IsLoadingWatermarks = false;
584
539
  StatusOptions = ['All', 'Success', 'Failed', 'In Progress', 'Pending'];
585
540
  DateOptions = [
541
+ { Value: 'all', Label: 'All' },
586
542
  { Value: 'today', Label: 'Today' },
587
543
  { Value: '7d', Label: '7 Days' },
588
- { Value: '30d', Label: '30 Days' },
589
- { Value: 'all', Label: 'All' }
544
+ { Value: '30d', Label: '30 Days' }
590
545
  ];
591
546
  dataService = inject(IntegrationDataService);
592
547
  cdr = inject(ChangeDetectorRef);
@@ -743,6 +698,42 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
743
698
  OnSearchChange() {
744
699
  this.ApplyFilters();
745
700
  }
701
+ /** Bridge for <mj-page-search> which emits a plain string. */
702
+ OnSearchValueChange(value) {
703
+ this.SearchQuery = value;
704
+ this.ApplyFilters();
705
+ }
706
+ // ---- Integration filter popover wiring ---------------------------------
707
+ get ActivityFilterFields() {
708
+ return [
709
+ {
710
+ key: 'integration',
711
+ type: 'dropdown',
712
+ label: 'Integration',
713
+ icon: 'fa-solid fa-plug',
714
+ placeholder: 'All Integrations',
715
+ filterable: this.Integrations.length > 10,
716
+ options: [
717
+ { text: 'All Integrations', value: '' },
718
+ ...this.Integrations.map(i => ({ text: i.Name, value: i.ID })),
719
+ ],
720
+ },
721
+ ];
722
+ }
723
+ get ActivityFilterValues() {
724
+ return { integration: this.IntegrationFilter ?? '' };
725
+ }
726
+ get ActiveFilterCount() {
727
+ return this.IntegrationFilter ? 1 : 0;
728
+ }
729
+ OnFilterValuesChange(values) {
730
+ const next = (values ?? {}).integration ?? '';
731
+ this.SetIntegrationFilter(next || null);
732
+ }
733
+ ResetIntegrationFilter() {
734
+ if (this.IntegrationFilter)
735
+ this.SetIntegrationFilter(null);
736
+ }
746
737
  async Refresh() {
747
738
  await this.LoadData();
748
739
  }
@@ -900,53 +891,53 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
900
891
  return 'fa-solid fa-clock-rotate-left';
901
892
  }
902
893
  static ɵfac = /*@__PURE__*/ (() => { let ɵActivityComponent_BaseFactory; return function ActivityComponent_Factory(__ngFactoryType__) { return (ɵActivityComponent_BaseFactory || (ɵActivityComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ActivityComponent)))(__ngFactoryType__ || ActivityComponent); }; })();
903
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 22, vars: 6, consts: [[1, "activity-container"], [1, "filter-bar"], [1, "filter-group", "filter-pills"], [1, "pill-btn", 3, "active"], [1, "filter-group"], [1, "filter-select", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], ["type", "text", "placeholder", "Search integrations...", 1, "search-input", 3, "ngModelChange", "input", "ngModel"], ["title", "Refresh", 1, "refresh-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "summary-strip"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], [1, "pill-btn", 3, "click"], [1, "summary-badge"], [1, "badge-dot", "dot-blue"], [1, "badge-count"], [1, "badge-label"], [1, "badge-dot", "dot-green"], [1, "badge-count", "count-green"], [1, "badge-dot", "dot-red"], [1, "badge-count", "count-red"], ["text", "Loading activity...", "size", "medium"], [1, "fa-solid", "fa-inbox"], [1, "run-list-panel"], [1, "run-row", 3, "selected"], [1, "detail-panel"], [1, "run-row", 3, "click"], [1, "run-row-main"], [1, "status-icon"], [1, "run-info"], [1, "run-integration"], [1, "run-company"], [1, "run-meta", 3, "title"], [1, "run-meta", "run-duration"], [1, "run-meta", "run-records"], [1, "run-meta", "run-errors"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "run-meta", "run-user"], ["title", "Show entity breakdown", 1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "expanded-section"], [1, "expanded-section", 3, "click"], [1, "expanded-loading"], [1, "expanded-empty"], [1, "entity-table"], [1, "error-log-block"], ["text", "Loading breakdown...", "size", "small"], [1, "fa-solid", "fa-circle-info"], [1, "num-col"], [3, "error-row"], [1, "num-col", "created-col"], [1, "num-col", "updated-col"], [1, "num-col", "error-col"], [1, "error-log-label"], [1, "error-log-content"], [1, "detail-header"], [1, "detail-header-info"], [1, "detail-time"], ["title", "Close", 1, "close-detail-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "duration-bar-container"], [1, "detail-tabs"], [1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-droplet"], [1, "detail-content"], [1, "duration-bar-track"], [1, "duration-bar-fill"], [1, "duration-bar-labels"], [1, "duration-bar-value"], [1, "detail-loading"], [1, "detail-empty"], [1, "detail-table"], [1, "error-log-block", "detail-error-log"], ["text", "Loading details...", "size", "small"], ["text", "Loading watermarks...", "size", "small"], [1, "fa-solid", "fa-droplet-slash"], [1, "type-badge"], [1, "mono-cell", "watermark-value"]], template: function ActivityComponent_Template(rf, ctx) { if (rf & 1) {
904
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
905
- i0.ɵɵrepeaterCreate(3, ActivityComponent_For_4_Template, 2, 3, "button", 3, i0.ɵɵrepeaterTrackByIdentity);
906
- i0.ɵɵelementEnd();
907
- i0.ɵɵelementStart(5, "div", 4)(6, "select", 5);
908
- i0.ɵɵlistener("ngModelChange", function ActivityComponent_Template_select_ngModelChange_6_listener($event) { return ctx.SetIntegrationFilter($event || null); });
909
- i0.ɵɵelementStart(7, "option", 6);
910
- i0.ɵɵtext(8, "All Integrations");
911
- i0.ɵɵelementEnd();
912
- i0.ɵɵrepeaterCreate(9, ActivityComponent_For_10_Template, 2, 2, "option", 7, _forTrack0);
894
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "Label", "Active"], ["aria-hidden", "true", 1, "toolbar-divider"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "total", 3, "Count"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], [3, "Clicked", "Label", "Active"], ["text", "Loading activity...", "size", "medium"], [1, "fa-solid", "fa-inbox"], [1, "run-list-panel"], [1, "run-row", 3, "selected"], [1, "detail-panel"], [1, "run-row", 3, "click"], [1, "run-row-main"], [1, "status-icon"], [1, "run-info"], [1, "run-integration"], [1, "run-company"], [1, "run-meta", 3, "title"], [1, "run-meta", "run-duration"], [1, "run-meta", "run-records"], [1, "run-meta", "run-errors"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "run-meta", "run-user"], ["title", "Show entity breakdown", 1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "expanded-section"], [1, "expanded-section", 3, "click"], [1, "expanded-loading"], [1, "expanded-empty"], [1, "entity-table"], [1, "error-log-block"], ["text", "Loading breakdown...", "size", "small"], [1, "fa-solid", "fa-circle-info"], [1, "num-col"], [3, "error-row"], [1, "num-col", "created-col"], [1, "num-col", "updated-col"], [1, "num-col", "error-col"], [1, "error-log-label"], [1, "error-log-content"], [1, "detail-header"], [1, "detail-header-info"], [1, "detail-time"], ["title", "Close", 1, "close-detail-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "duration-bar-container"], [1, "detail-tabs"], [1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-droplet"], [1, "detail-content"], [1, "duration-bar-track"], [1, "duration-bar-fill"], [1, "duration-bar-labels"], [1, "duration-bar-value"], [1, "detail-loading"], [1, "detail-empty"], [1, "detail-table"], [1, "error-log-block", "detail-error-log"], ["text", "Loading details...", "size", "small"], ["text", "Loading watermarks...", "size", "small"], [1, "fa-solid", "fa-droplet-slash"], [1, "type-badge"], [1, "mono-cell", "watermark-value"]], template: function ActivityComponent_Template(rf, ctx) { if (rf & 1) {
895
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
896
+ i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 6, 6, "div", 1);
897
+ i0.ɵɵelementStart(3, "div", 2)(4, "mj-filter-popover", 3);
898
+ i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_4_listener() { return ctx.ResetIntegrationFilter(); });
899
+ i0.ɵɵelementStart(5, "mj-filter-panel", 4);
900
+ i0.ɵɵlistener("ValuesChange", function ActivityComponent_Template_mj_filter_panel_ValuesChange_5_listener($event) { return ctx.OnFilterValuesChange($event); })("Reset", function ActivityComponent_Template_mj_filter_panel_Reset_5_listener() { return ctx.ResetIntegrationFilter(); });
913
901
  i0.ɵɵelementEnd()();
914
- i0.ɵɵelementStart(11, "div", 2);
915
- i0.ɵɵrepeaterCreate(12, ActivityComponent_For_13_Template, 2, 3, "button", 3, _forTrack1);
916
- i0.ɵɵelementEnd();
917
- i0.ɵɵelementStart(14, "div", 4)(15, "input", 8);
918
- i0.ɵɵtwoWayListener("ngModelChange", function ActivityComponent_Template_input_ngModelChange_15_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SearchQuery, $event) || (ctx.SearchQuery = $event); return $event; });
919
- i0.ɵɵlistener("input", function ActivityComponent_Template_input_input_15_listener() { return ctx.OnSearchChange(); });
902
+ i0.ɵɵelementStart(6, "mj-refresh-button", 5);
903
+ i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_6_listener() { return ctx.Refresh(); });
920
904
  i0.ɵɵelementEnd()();
921
- i0.ɵɵelementStart(16, "button", 9);
922
- i0.ɵɵlistener("click", function ActivityComponent_Template_button_click_16_listener() { return ctx.Refresh(); });
923
- i0.ɵɵelement(17, "i", 10);
924
- i0.ɵɵelementEnd()();
925
- i0.ɵɵconditionalCreate(18, ActivityComponent_Conditional_18_Template, 26, 6, "div", 11);
926
- i0.ɵɵconditionalCreate(19, ActivityComponent_Conditional_19_Template, 2, 0, "div", 12);
927
- i0.ɵɵconditionalCreate(20, ActivityComponent_Conditional_20_Template, 4, 0, "div", 13);
928
- i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_21_Template, 5, 1, "div", 14);
905
+ i0.ɵɵelementStart(7, "div", 6)(8, "mj-page-search", 7);
906
+ i0.ɵɵlistener("ValueChange", function ActivityComponent_Template_mj_page_search_ValueChange_8_listener($event) { return ctx.OnSearchValueChange($event); });
929
907
  i0.ɵɵelementEnd();
908
+ i0.ɵɵrepeaterCreate(9, ActivityComponent_For_10_Template, 1, 2, "mj-filter-chip", 8, i0.ɵɵrepeaterTrackByIdentity);
909
+ i0.ɵɵelement(11, "span", 9);
910
+ i0.ɵɵrepeaterCreate(12, ActivityComponent_For_13_Template, 1, 2, "mj-filter-chip", 8, _forTrack0);
911
+ i0.ɵɵelementEnd()();
912
+ i0.ɵɵelementStart(14, "mj-page-body", 10)(15, "div", 11);
913
+ i0.ɵɵconditionalCreate(16, ActivityComponent_Conditional_16_Template, 2, 0, "div", 12);
914
+ i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_17_Template, 4, 0, "div", 13);
915
+ i0.ɵɵconditionalCreate(18, ActivityComponent_Conditional_18_Template, 5, 1, "div", 14);
916
+ i0.ɵɵelementEnd()()();
930
917
  } if (rf & 2) {
931
- i0.ɵɵadvance(3);
918
+ i0.ɵɵadvance(2);
919
+ i0.ɵɵconditional(!ctx.IsLoading && ctx.AllRuns.length > 0 ? 2 : -1);
920
+ i0.ɵɵadvance(2);
921
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
922
+ i0.ɵɵadvance();
923
+ i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
924
+ i0.ɵɵadvance();
925
+ i0.ɵɵproperty("Loading", ctx.IsLoading);
926
+ i0.ɵɵadvance(2);
927
+ i0.ɵɵproperty("Value", ctx.SearchQuery);
928
+ i0.ɵɵadvance();
932
929
  i0.ɵɵrepeater(ctx.StatusOptions);
933
930
  i0.ɵɵadvance(3);
934
- i0.ɵɵproperty("ngModel", ctx.IntegrationFilter ?? "");
935
- i0.ɵɵadvance(3);
936
- i0.ɵɵrepeater(ctx.Integrations);
937
- i0.ɵɵadvance(3);
938
931
  i0.ɵɵrepeater(ctx.DateOptions);
939
- i0.ɵɵadvance(3);
940
- i0.ɵɵtwoWayProperty("ngModel", ctx.SearchQuery);
941
- i0.ɵɵadvance(3);
942
- i0.ɵɵconditional(!ctx.IsLoading && ctx.AllRuns.length > 0 ? 18 : -1);
943
- i0.ɵɵadvance();
944
- i0.ɵɵconditional(ctx.IsLoading ? 19 : -1);
932
+ i0.ɵɵadvance(2);
933
+ i0.ɵɵproperty("Flex", true);
934
+ i0.ɵɵadvance(2);
935
+ i0.ɵɵconditional(ctx.IsLoading ? 16 : -1);
945
936
  i0.ɵɵadvance();
946
- i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 20 : -1);
937
+ i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 17 : -1);
947
938
  i0.ɵɵadvance();
948
- i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 21 : -1);
949
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.DecimalPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.activity-container[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 14px;\n overflow: auto;\n}\n\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.filter-pills[_ngcontent-%COMP%] {\n gap: 0;\n}\n\n.pill-btn[_ngcontent-%COMP%] {\n height: 32px;\n padding: 0 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n}\n\n.pill-btn[_ngcontent-%COMP%]:first-child {\n border-radius: 9999px 0 0 9999px;\n}\n\n.pill-btn[_ngcontent-%COMP%]:last-child {\n border-radius: 0 9999px 9999px 0;\n}\n\n.pill-btn[_ngcontent-%COMP%]:not(:first-child) {\n margin-left: -1px;\n}\n\n.pill-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-info-bg);\n border-color: var(--mj-border-strong);\n z-index: 1;\n}\n\n.pill-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n z-index: 2;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 180px;\n height: 32px;\n}\n\n.filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.search-input[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n min-width: 180px;\n height: 32px;\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.refresh-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n transition: background 0.15s, color 0.15s;\n}\n\n.refresh-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n.summary-strip[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.summary-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.badge-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dot-blue[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.dot-green[_ngcontent-%COMP%] { background: var(--mj-color-success-600); }\n.dot-red[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.dot-amber[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n.dot-gray[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n.badge-count[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.count-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.count-red[_ngcontent-%COMP%] { color: var(--mj-color-error-600); }\n\n.badge-label[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n\n\n\n.loading-area[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n.split-view[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.run-list-panel[_ngcontent-%COMP%] {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.icon-red[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.icon-amber[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n.icon-gray[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n\n\n.run-info[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.run-meta[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors[_ngcontent-%COMP%] {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.run-user[_ngcontent-%COMP%] {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n\n.expanded-section[_ngcontent-%COMP%] {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading[_ngcontent-%COMP%], \n.expanded-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%] {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%] {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n.error-log-block[_ngcontent-%COMP%] {\n margin-top: 10px;\n}\n\n.error-log-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n\n\n.duration-bar-container[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track[_ngcontent-%COMP%] {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n\n\n.detail-tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n\n\n.detail-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading[_ngcontent-%COMP%], \n.detail-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n\n\n.chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n@media (max-width: 900px) {\n .split-view[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
939
+ i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 18 : -1);
940
+ } }, dependencies: [i1.MJPageLayoutComponent, i1.MJPageHeaderComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, i1.MJFilterChipComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJStatBadgeComponent, i1.MJRefreshButtonComponent, i2.LoadingComponent, i3.DecimalPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.activity-container[_ngcontent-%COMP%] {\n \n\n\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n\n\n\n\n\n\n\n.toolbar-divider[_ngcontent-%COMP%] {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n\n\n\n.loading-area[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n.split-view[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.run-list-panel[_ngcontent-%COMP%] {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.icon-red[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.icon-amber[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n.icon-gray[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n\n\n.run-info[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.run-meta[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors[_ngcontent-%COMP%] {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.run-user[_ngcontent-%COMP%] {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n\n.expanded-section[_ngcontent-%COMP%] {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading[_ngcontent-%COMP%], \n.expanded-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%] {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%] {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n.error-log-block[_ngcontent-%COMP%] {\n margin-top: 10px;\n}\n\n.error-log-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n\n\n.duration-bar-container[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track[_ngcontent-%COMP%] {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n\n\n.detail-tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n\n\n.detail-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading[_ngcontent-%COMP%], \n.detail-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n\n\n.chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n@media (max-width: 900px) {\n .split-view[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
950
941
  };
951
942
  ActivityComponent = __decorate([
952
943
  RegisterClass(BaseResourceComponent, 'IntegrationActivity')
@@ -954,9 +945,9 @@ ActivityComponent = __decorate([
954
945
  export { ActivityComponent };
955
946
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityComponent, [{
956
947
  type: Component,
957
- args: [{ standalone: false, selector: 'app-integration-activity', template: "<div class=\"activity-container\">\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"filter-group filter-pills\">\n @for (status of StatusOptions; track status) {\n <button class=\"pill-btn\"\n [class.active]=\"StatusFilter === status\"\n (click)=\"SetStatusFilter(status)\">\n {{ status }}\n </button>\n }\n </div>\n\n <div class=\"filter-group\">\n <select class=\"filter-select\"\n [ngModel]=\"IntegrationFilter ?? ''\"\n (ngModelChange)=\"SetIntegrationFilter($event || null)\">\n <option value=\"\">All Integrations</option>\n @for (opt of Integrations; track opt.ID) {\n <option [value]=\"opt.ID\">{{ opt.Name }}</option>\n }\n </select>\n </div>\n\n <div class=\"filter-group filter-pills\">\n @for (d of DateOptions; track d.Value) {\n <button class=\"pill-btn\"\n [class.active]=\"DateFilter === d.Value\"\n (click)=\"SetDateFilter(d.Value)\">\n {{ d.Label }}\n </button>\n }\n </div>\n\n <div class=\"filter-group\">\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\"\n (input)=\"OnSearchChange()\" />\n </div>\n\n <button class=\"refresh-btn\" (click)=\"Refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n\n <!-- Summary Strip -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div class=\"summary-strip\">\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-blue\"></span>\n <span class=\"badge-count\">{{ TotalRuns }}</span>\n <span class=\"badge-label\">Total Runs</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-green\"></span>\n <span class=\"badge-count count-green\">{{ SuccessfulRuns }}</span>\n <span class=\"badge-label\">Successful</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-red\"></span>\n <span class=\"badge-count count-red\">{{ FailedRuns }}</span>\n <span class=\"badge-label\">Failed</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-blue\"></span>\n <span class=\"badge-count\">{{ TotalRecordsProcessed | number }}</span>\n <span class=\"badge-label\">Records Processed</span>\n </div>\n </div>\n }\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 14px;\n overflow: auto;\n}\n\n/* \u2500\u2500 Filter Bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.filter-group {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.filter-pills {\n gap: 0;\n}\n\n.pill-btn {\n height: 32px;\n padding: 0 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n}\n\n.pill-btn:first-child {\n border-radius: 9999px 0 0 9999px;\n}\n\n.pill-btn:last-child {\n border-radius: 0 9999px 9999px 0;\n}\n\n.pill-btn:not(:first-child) {\n margin-left: -1px;\n}\n\n.pill-btn:hover {\n background: var(--mj-status-info-bg);\n border-color: var(--mj-border-strong);\n z-index: 1;\n}\n\n.pill-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n z-index: 2;\n}\n\n.filter-select {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 180px;\n height: 32px;\n}\n\n.filter-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.search-input {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n min-width: 180px;\n height: 32px;\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.refresh-btn {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n transition: background 0.15s, color 0.15s;\n}\n\n.refresh-btn:hover {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Summary Strip \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.summary-strip {\n display: inline-flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.summary-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.badge-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dot-blue { background: var(--mj-brand-primary); }\n.dot-green { background: var(--mj-color-success-600); }\n.dot-red { background: var(--mj-status-error); }\n.dot-amber { background: var(--mj-status-warning); }\n.dot-gray { background: var(--mj-text-disabled); }\n\n.badge-count {\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.count-green { color: var(--mj-color-success-600); }\n.count-red { color: var(--mj-color-error-600); }\n\n.badge-label {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
948
+ args: [{ standalone: false, selector: 'app-integration-activity', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integration Activity\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Sync run history and outcomes\">\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\n <mj-stat-badge [Count]=\"TotalRuns\" Label=\"total\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"SuccessfulRuns\" Label=\"succeeded\" Variant=\"success\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"FailedRuns\" Label=\"failed\" Variant=\"error\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"TotalRecordsProcessed | number\" Label=\"records\"></mj-stat-badge>\n </div>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ResetIntegrationFilter()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n (Reset)=\"ResetIntegrationFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search integrations...\"\n [Value]=\"SearchQuery\"\n (ValueChange)=\"OnSearchValueChange($event)\">\n </mj-page-search>\n @for (status of StatusOptions; track status) {\n <mj-filter-chip\n [Label]=\"status\"\n [Active]=\"StatusFilter === status\"\n (Clicked)=\"SetStatusFilter(status)\">\n </mj-filter-chip>\n }\n <span class=\"toolbar-divider\" aria-hidden=\"true\"></span>\n @for (d of DateOptions; track d.Value) {\n <mj-filter-chip\n [Label]=\"d.Label\"\n [Active]=\"DateFilter === d.Value\"\n (Clicked)=\"SetDateFilter(d.Value)\">\n </mj-filter-chip>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n<div class=\"activity-container\">\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n /* padding / scroll now owned by <mj-page-body>; flex sizing keeps the\n inner split-view (flex: 1 + min-height: 0) able to fill remaining height. */\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n/* Slot passthrough now lives in <mj-page-header>'s SCSS; per-section\n .integration-header-* rules deleted. Stat badge styling now lives in\n <mj-stat-badge>; per-section .integration-stat-badge* rules deleted. */\n\n/* Vertical separator between distinct chip groups in the toolbar slot. */\n.toolbar-divider {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
958
949
  }], null, null); })();
959
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 38 }); })();
950
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 39 }); })();
960
951
  export function LoadActivityComponent() {
961
952
  // Tree-shaking prevention: importing this module causes
962
953
  // @RegisterClass decorators to fire, registering components.