@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -13,12 +13,11 @@ import * as i0 from "@angular/core";
13
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.Value;
17
- const _forTrack1 = ($index, $item) => $item.ID;
18
- const _forTrack2 = ($index, $item) => $item.EntityID;
16
+ const _forTrack0 = ($index, $item) => $item.ID;
17
+ const _forTrack1 = ($index, $item) => $item.EntityID;
19
18
  function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20
19
  i0.ɵɵelementStart(0, "div", 1);
21
- i0.ɵɵelement(1, "mj-stat-badge", 15)(2, "mj-stat-badge", 16)(3, "mj-stat-badge", 17);
20
+ i0.ɵɵelement(1, "mj-stat-badge", 13)(2, "mj-stat-badge", 14)(3, "mj-stat-badge", 15);
22
21
  i0.ɵɵpipe(4, "number");
23
22
  i0.ɵɵelementEnd();
24
23
  } if (rf & 2) {
@@ -30,230 +29,210 @@ function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
30
29
  i0.ɵɵadvance();
31
30
  i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(4, 3, ctx_r0.TotalRecordsProcessed));
32
31
  } }
33
- function ActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
34
- const _r2 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "mj-filter-chip", 18);
36
- 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)); });
32
+ function ActivityComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 10);
34
+ i0.ɵɵelement(1, "mj-loading", 16);
37
35
  i0.ɵɵelementEnd();
38
- } if (rf & 2) {
39
- const status_r3 = ctx.$implicit;
40
- const ctx_r0 = i0.ɵɵnextContext();
41
- i0.ɵɵproperty("Label", status_r3)("Active", ctx_r0.StatusFilter === status_r3);
42
36
  } }
43
- function ActivityComponent_For_13_Template(rf, ctx) { if (rf & 1) {
44
- const _r4 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "mj-filter-chip", 18);
46
- 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
- i0.ɵɵelementEnd();
48
- } if (rf & 2) {
49
- const d_r5 = ctx.$implicit;
50
- const ctx_r0 = i0.ɵɵnextContext();
51
- i0.ɵɵproperty("Label", d_r5.Label)("Active", ctx_r0.DateFilter === d_r5.Value);
52
- } }
53
- function ActivityComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "div", 12);
55
- i0.ɵɵelement(1, "mj-loading", 19);
56
- i0.ɵɵelementEnd();
57
- } }
58
- function ActivityComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "div", 13);
60
- i0.ɵɵelement(1, "i", 20);
37
+ function ActivityComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "div", 11);
39
+ i0.ɵɵelement(1, "i", 17);
61
40
  i0.ɵɵelementStart(2, "p");
62
41
  i0.ɵɵtext(3, "No runs found for the selected filters.");
63
42
  i0.ɵɵelementEnd()();
64
43
  } }
65
- function ActivityComponent_Conditional_18_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelement(0, "i", 34);
44
+ function ActivityComponent_Conditional_13_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelement(0, "i", 31);
67
46
  } }
68
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 40);
70
- i0.ɵɵelement(1, "mj-loading", 44);
47
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "div", 37);
49
+ i0.ɵɵelement(1, "mj-loading", 41);
71
50
  i0.ɵɵelementEnd();
72
51
  } }
73
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
74
- i0.ɵɵelementStart(0, "div", 41);
75
- i0.ɵɵelement(1, "i", 45);
52
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "div", 38);
54
+ i0.ɵɵelement(1, "i", 42);
76
55
  i0.ɵɵtext(2, " No entity details for this run. ");
77
56
  i0.ɵɵelementEnd();
78
57
  } }
79
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
58
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
80
59
  i0.ɵɵelementStart(0, "tr")(1, "td");
81
60
  i0.ɵɵtext(2);
82
61
  i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(3, "td", 46);
62
+ i0.ɵɵelementStart(3, "td", 43);
84
63
  i0.ɵɵtext(4);
85
64
  i0.ɵɵpipe(5, "number");
86
65
  i0.ɵɵelementEnd();
87
- i0.ɵɵelementStart(6, "td", 48);
66
+ i0.ɵɵelementStart(6, "td", 45);
88
67
  i0.ɵɵtext(7);
89
68
  i0.ɵɵpipe(8, "number");
90
69
  i0.ɵɵelementEnd();
91
- i0.ɵɵelementStart(9, "td", 49);
70
+ i0.ɵɵelementStart(9, "td", 46);
92
71
  i0.ɵɵtext(10);
93
72
  i0.ɵɵpipe(11, "number");
94
73
  i0.ɵɵelementEnd();
95
- i0.ɵɵelementStart(12, "td", 46);
74
+ i0.ɵɵelementStart(12, "td", 43);
96
75
  i0.ɵɵtext(13);
97
76
  i0.ɵɵpipe(14, "number");
98
77
  i0.ɵɵelementEnd();
99
- i0.ɵɵelementStart(15, "td", 50);
78
+ i0.ɵɵelementStart(15, "td", 47);
100
79
  i0.ɵɵtext(16);
101
80
  i0.ɵɵpipe(17, "number");
102
81
  i0.ɵɵelementEnd();
103
- i0.ɵɵelementStart(18, "td", 46);
82
+ i0.ɵɵelementStart(18, "td", 43);
104
83
  i0.ɵɵtext(19);
105
84
  i0.ɵɵpipe(20, "number");
106
85
  i0.ɵɵelementEnd()();
107
86
  } if (rf & 2) {
108
- const detail_r9 = ctx.$implicit;
109
- i0.ɵɵclassProp("error-row", detail_r9.RecordsErrored > 0);
87
+ const detail_r5 = ctx.$implicit;
88
+ i0.ɵɵclassProp("error-row", detail_r5.RecordsErrored > 0);
110
89
  i0.ɵɵadvance(2);
111
- i0.ɵɵtextInterpolate(detail_r9.Entity);
90
+ i0.ɵɵtextInterpolate(detail_r5.Entity);
112
91
  i0.ɵɵadvance(2);
113
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r9.RecordsProcessed));
92
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r5.RecordsProcessed));
114
93
  i0.ɵɵadvance(3);
115
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r9.RecordsCreated));
94
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r5.RecordsCreated));
116
95
  i0.ɵɵadvance(3);
117
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r9.RecordsUpdated));
96
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r5.RecordsUpdated));
118
97
  i0.ɵɵadvance(3);
119
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r9.RecordsDeleted));
98
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r5.RecordsDeleted));
120
99
  i0.ɵɵadvance(3);
121
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r9.RecordsErrored));
100
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r5.RecordsErrored));
122
101
  i0.ɵɵadvance(3);
123
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r9.RecordsSkipped));
102
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r5.RecordsSkipped));
124
103
  } }
125
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
126
- i0.ɵɵelementStart(0, "table", 42)(1, "thead")(2, "tr")(3, "th");
104
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "table", 39)(1, "thead")(2, "tr")(3, "th");
127
106
  i0.ɵɵtext(4, "Entity");
128
107
  i0.ɵɵelementEnd();
129
- i0.ɵɵelementStart(5, "th", 46);
108
+ i0.ɵɵelementStart(5, "th", 43);
130
109
  i0.ɵɵtext(6, "Processed");
131
110
  i0.ɵɵelementEnd();
132
- i0.ɵɵelementStart(7, "th", 46);
111
+ i0.ɵɵelementStart(7, "th", 43);
133
112
  i0.ɵɵtext(8, "Created");
134
113
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(9, "th", 46);
114
+ i0.ɵɵelementStart(9, "th", 43);
136
115
  i0.ɵɵtext(10, "Updated");
137
116
  i0.ɵɵelementEnd();
138
- i0.ɵɵelementStart(11, "th", 46);
117
+ i0.ɵɵelementStart(11, "th", 43);
139
118
  i0.ɵɵtext(12, "Deleted");
140
119
  i0.ɵɵelementEnd();
141
- i0.ɵɵelementStart(13, "th", 46);
120
+ i0.ɵɵelementStart(13, "th", 43);
142
121
  i0.ɵɵtext(14, "Errored");
143
122
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(15, "th", 46);
123
+ i0.ɵɵelementStart(15, "th", 43);
145
124
  i0.ɵɵtext(16, "Skipped");
146
125
  i0.ɵɵelementEnd()()();
147
126
  i0.ɵɵelementStart(17, "tbody");
148
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 47, _forTrack2);
127
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 44, _forTrack1);
149
128
  i0.ɵɵelementEnd()();
150
129
  } if (rf & 2) {
151
130
  const ctx_r0 = i0.ɵɵnextContext(4);
152
131
  i0.ɵɵadvance(18);
153
132
  i0.ɵɵrepeater(ctx_r0.GetExpandedDetails());
154
133
  } }
155
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementStart(0, "div", 43)(1, "div", 51);
157
- i0.ɵɵelement(2, "i", 34);
134
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
135
+ i0.ɵɵelementStart(0, "div", 40)(1, "div", 48);
136
+ i0.ɵɵelement(2, "i", 31);
158
137
  i0.ɵɵtext(3, " Error Log ");
159
138
  i0.ɵɵelementEnd();
160
- i0.ɵɵelementStart(4, "pre", 52);
139
+ i0.ɵɵelementStart(4, "pre", 49);
161
140
  i0.ɵɵtext(5);
162
141
  i0.ɵɵelementEnd()();
163
142
  } if (rf & 2) {
164
- const run_r7 = i0.ɵɵnextContext(2).$implicit;
143
+ const run_r3 = i0.ɵɵnextContext(2).$implicit;
165
144
  i0.ɵɵadvance(5);
166
- i0.ɵɵtextInterpolate(run_r7.ErrorLog);
145
+ i0.ɵɵtextInterpolate(run_r3.ErrorLog);
167
146
  } }
168
- function ActivityComponent_Conditional_18_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
169
- const _r8 = i0.ɵɵgetCurrentView();
170
- i0.ɵɵelementStart(0, "div", 39);
171
- 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()); });
172
- i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 40)(2, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 41)(3, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 42);
173
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 43);
147
+ function ActivityComponent_Conditional_13_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
148
+ const _r4 = i0.ɵɵgetCurrentView();
149
+ i0.ɵɵelementStart(0, "div", 36);
150
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
151
+ i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 37)(2, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 38)(3, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 39);
152
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 40);
174
153
  i0.ɵɵelementEnd();
175
154
  } if (rf & 2) {
176
- const run_r7 = i0.ɵɵnextContext().$implicit;
155
+ const run_r3 = i0.ɵɵnextContext().$implicit;
177
156
  const ctx_r0 = i0.ɵɵnextContext(2);
178
157
  i0.ɵɵadvance();
179
158
  i0.ɵɵconditional(ctx_r0.IsLoadingExpandedDetails() ? 1 : ctx_r0.GetExpandedDetails().length === 0 ? 2 : 3);
180
159
  i0.ɵɵadvance(3);
181
- i0.ɵɵconditional(run_r7.ErrorLog ? 4 : -1);
160
+ i0.ɵɵconditional(run_r3.ErrorLog ? 4 : -1);
182
161
  } }
183
- function ActivityComponent_Conditional_18_For_3_Template(rf, ctx) { if (rf & 1) {
184
- const _r6 = i0.ɵɵgetCurrentView();
185
- i0.ɵɵelementStart(0, "div", 24);
186
- 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)); });
187
- i0.ɵɵelementStart(1, "div", 25);
188
- i0.ɵɵelement(2, "span")(3, "i", 26);
189
- i0.ɵɵelementStart(4, "div", 27)(5, "span", 28);
162
+ function ActivityComponent_Conditional_13_For_3_Template(rf, ctx) { if (rf & 1) {
163
+ const _r2 = i0.ɵɵgetCurrentView();
164
+ i0.ɵɵelementStart(0, "div", 21);
165
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Template_div_click_0_listener() { const run_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(run_r3.ID)); });
166
+ i0.ɵɵelementStart(1, "div", 22);
167
+ i0.ɵɵelement(2, "span")(3, "i", 23);
168
+ i0.ɵɵelementStart(4, "div", 24)(5, "span", 25);
190
169
  i0.ɵɵtext(6);
191
170
  i0.ɵɵelementEnd();
192
- i0.ɵɵelementStart(7, "span", 29);
171
+ i0.ɵɵelementStart(7, "span", 26);
193
172
  i0.ɵɵtext(8);
194
173
  i0.ɵɵelementEnd()();
195
- i0.ɵɵelementStart(9, "div", 30);
174
+ i0.ɵɵelementStart(9, "div", 27);
196
175
  i0.ɵɵtext(10);
197
176
  i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(11, "div", 31);
177
+ i0.ɵɵelementStart(11, "div", 28);
199
178
  i0.ɵɵtext(12);
200
179
  i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(13, "div", 32);
180
+ i0.ɵɵelementStart(13, "div", 29);
202
181
  i0.ɵɵtext(14);
203
182
  i0.ɵɵpipe(15, "number");
204
183
  i0.ɵɵelementEnd();
205
- i0.ɵɵelementStart(16, "div", 33);
206
- i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i", 34);
184
+ i0.ɵɵelementStart(16, "div", 30);
185
+ i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_13_For_3_Conditional_17_Template, 1, 0, "i", 31);
207
186
  i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(18, "div", 35);
187
+ i0.ɵɵelementStart(18, "div", 32);
209
188
  i0.ɵɵtext(19);
210
189
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(20, "button", 36);
212
- 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()); });
213
- i0.ɵɵelement(21, "i", 37);
190
+ i0.ɵɵelementStart(20, "button", 33);
191
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Template_button_click_20_listener($event) { const run_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.ToggleExpand(run_r3.ID); return i0.ɵɵresetView($event.stopPropagation()); });
192
+ i0.ɵɵelement(21, "i", 34);
214
193
  i0.ɵɵelementEnd()();
215
- i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_For_3_Conditional_22_Template, 5, 2, "div", 38);
194
+ i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_13_For_3_Conditional_22_Template, 5, 2, "div", 35);
216
195
  i0.ɵɵelementEnd();
217
196
  } if (rf & 2) {
218
- const run_r7 = ctx.$implicit;
197
+ const run_r3 = ctx.$implicit;
219
198
  const ctx_r0 = i0.ɵɵnextContext(2);
220
- i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(run_r7.ID));
199
+ i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(run_r3.ID));
221
200
  i0.ɵɵadvance(2);
222
- i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(run_r7.Status));
201
+ i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(run_r3.Status));
223
202
  i0.ɵɵadvance();
224
- i0.ɵɵclassMap(ctx_r0.GetStatusIcon(run_r7.Status));
225
- 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");
203
+ i0.ɵɵclassMap(ctx_r0.GetStatusIcon(run_r3.Status));
204
+ i0.ɵɵclassProp("icon-green", run_r3.Status === "Success")("icon-red", run_r3.Status === "Failed")("icon-amber", run_r3.Status === "In Progress")("icon-gray", run_r3.Status === "Pending");
226
205
  i0.ɵɵadvance(3);
227
- i0.ɵɵtextInterpolate(run_r7.Integration);
206
+ i0.ɵɵtextInterpolate(run_r3.Integration);
228
207
  i0.ɵɵadvance(2);
229
- i0.ɵɵtextInterpolate(run_r7.Company);
208
+ i0.ɵɵtextInterpolate(run_r3.Company);
230
209
  i0.ɵɵadvance();
231
- i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(run_r7.StartedAt));
210
+ i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(run_r3.StartedAt));
232
211
  i0.ɵɵadvance();
233
- i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(run_r7.StartedAt), " ");
212
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(run_r3.StartedAt), " ");
234
213
  i0.ɵɵadvance(2);
235
- i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(run_r7.StartedAt, run_r7.EndedAt), " ");
214
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(run_r3.StartedAt, run_r3.EndedAt), " ");
236
215
  i0.ɵɵadvance(2);
237
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r7.TotalRecords), " ");
216
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r3.TotalRecords), " ");
238
217
  i0.ɵɵadvance(2);
239
- i0.ɵɵclassProp("has-errors", run_r7.ErrorLog);
218
+ i0.ɵɵclassProp("has-errors", run_r3.ErrorLog);
240
219
  i0.ɵɵadvance();
241
- i0.ɵɵconditional(run_r7.ErrorLog ? 17 : -1);
220
+ i0.ɵɵconditional(run_r3.ErrorLog ? 17 : -1);
242
221
  i0.ɵɵadvance(2);
243
- i0.ɵɵtextInterpolate1(" ", run_r7.RunByUser || "Scheduled", " ");
222
+ i0.ɵɵtextInterpolate1(" ", run_r3.RunByUser || "Scheduled", " ");
244
223
  i0.ɵɵadvance(2);
245
- i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(run_r7.ID));
224
+ i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(run_r3.ID));
246
225
  i0.ɵɵadvance();
247
- i0.ɵɵconditional(ctx_r0.IsExpanded(run_r7.ID) ? 22 : -1);
226
+ i0.ɵɵconditional(ctx_r0.IsExpanded(run_r3.ID) ? 22 : -1);
248
227
  } }
249
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 64);
251
- i0.ɵɵelement(2, "div", 65);
228
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
229
+ i0.ɵɵelementStart(0, "div", 55)(1, "div", 61);
230
+ i0.ɵɵelement(2, "div", 62);
252
231
  i0.ɵɵelementEnd();
253
- i0.ɵɵelementStart(3, "div", 66)(4, "span");
232
+ i0.ɵɵelementStart(3, "div", 63)(4, "span");
254
233
  i0.ɵɵtext(5);
255
234
  i0.ɵɵelementEnd();
256
- i0.ɵɵelementStart(6, "span", 67);
235
+ i0.ɵɵelementStart(6, "span", 64);
257
236
  i0.ɵɵtext(7);
258
237
  i0.ɵɵelementEnd();
259
238
  i0.ɵɵelementStart(8, "span");
@@ -270,100 +249,100 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(
270
249
  i0.ɵɵadvance(2);
271
250
  i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().EndedAt));
272
251
  } }
273
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
274
- i0.ɵɵelementStart(0, "div", 68);
275
- i0.ɵɵelement(1, "mj-loading", 72);
252
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "div", 65);
254
+ i0.ɵɵelement(1, "mj-loading", 69);
276
255
  i0.ɵɵelementEnd();
277
256
  } }
278
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
279
- i0.ɵɵelementStart(0, "div", 69);
280
- i0.ɵɵelement(1, "i", 45);
257
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
258
+ i0.ɵɵelementStart(0, "div", 66);
259
+ i0.ɵɵelement(1, "i", 42);
281
260
  i0.ɵɵelementStart(2, "p");
282
261
  i0.ɵɵtext(3, "No entity detail records for this run.");
283
262
  i0.ɵɵelementEnd()();
284
263
  } }
285
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
264
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
286
265
  i0.ɵɵelementStart(0, "tr")(1, "td");
287
266
  i0.ɵɵtext(2);
288
267
  i0.ɵɵelementEnd();
289
- i0.ɵɵelementStart(3, "td", 46);
268
+ i0.ɵɵelementStart(3, "td", 43);
290
269
  i0.ɵɵtext(4);
291
270
  i0.ɵɵpipe(5, "number");
292
271
  i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(6, "td", 48);
272
+ i0.ɵɵelementStart(6, "td", 45);
294
273
  i0.ɵɵtext(7);
295
274
  i0.ɵɵpipe(8, "number");
296
275
  i0.ɵɵelementEnd();
297
- i0.ɵɵelementStart(9, "td", 49);
276
+ i0.ɵɵelementStart(9, "td", 46);
298
277
  i0.ɵɵtext(10);
299
278
  i0.ɵɵpipe(11, "number");
300
279
  i0.ɵɵelementEnd();
301
- i0.ɵɵelementStart(12, "td", 46);
280
+ i0.ɵɵelementStart(12, "td", 43);
302
281
  i0.ɵɵtext(13);
303
282
  i0.ɵɵpipe(14, "number");
304
283
  i0.ɵɵelementEnd();
305
- i0.ɵɵelementStart(15, "td", 50);
284
+ i0.ɵɵelementStart(15, "td", 47);
306
285
  i0.ɵɵtext(16);
307
286
  i0.ɵɵpipe(17, "number");
308
287
  i0.ɵɵelementEnd();
309
- i0.ɵɵelementStart(18, "td", 46);
288
+ i0.ɵɵelementStart(18, "td", 43);
310
289
  i0.ɵɵtext(19);
311
290
  i0.ɵɵpipe(20, "number");
312
291
  i0.ɵɵelementEnd()();
313
292
  } if (rf & 2) {
314
- const detail_r11 = ctx.$implicit;
315
- i0.ɵɵclassProp("error-row", detail_r11.RecordsErrored > 0);
293
+ const detail_r7 = ctx.$implicit;
294
+ i0.ɵɵclassProp("error-row", detail_r7.RecordsErrored > 0);
316
295
  i0.ɵɵadvance(2);
317
- i0.ɵɵtextInterpolate(detail_r11.Entity);
296
+ i0.ɵɵtextInterpolate(detail_r7.Entity);
318
297
  i0.ɵɵadvance(2);
319
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r11.RecordsProcessed));
298
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r7.RecordsProcessed));
320
299
  i0.ɵɵadvance(3);
321
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r11.RecordsCreated));
300
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r7.RecordsCreated));
322
301
  i0.ɵɵadvance(3);
323
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r11.RecordsUpdated));
302
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r7.RecordsUpdated));
324
303
  i0.ɵɵadvance(3);
325
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r11.RecordsDeleted));
304
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r7.RecordsDeleted));
326
305
  i0.ɵɵadvance(3);
327
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r11.RecordsErrored));
306
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r7.RecordsErrored));
328
307
  i0.ɵɵadvance(3);
329
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r11.RecordsSkipped));
308
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r7.RecordsSkipped));
330
309
  } }
331
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
332
- i0.ɵɵelementStart(0, "table", 70)(1, "thead")(2, "tr")(3, "th");
310
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
311
+ i0.ɵɵelementStart(0, "table", 67)(1, "thead")(2, "tr")(3, "th");
333
312
  i0.ɵɵtext(4, "Entity");
334
313
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(5, "th", 46);
314
+ i0.ɵɵelementStart(5, "th", 43);
336
315
  i0.ɵɵtext(6, "Processed");
337
316
  i0.ɵɵelementEnd();
338
- i0.ɵɵelementStart(7, "th", 46);
317
+ i0.ɵɵelementStart(7, "th", 43);
339
318
  i0.ɵɵtext(8, "Created");
340
319
  i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(9, "th", 46);
320
+ i0.ɵɵelementStart(9, "th", 43);
342
321
  i0.ɵɵtext(10, "Updated");
343
322
  i0.ɵɵelementEnd();
344
- i0.ɵɵelementStart(11, "th", 46);
323
+ i0.ɵɵelementStart(11, "th", 43);
345
324
  i0.ɵɵtext(12, "Deleted");
346
325
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(13, "th", 46);
326
+ i0.ɵɵelementStart(13, "th", 43);
348
327
  i0.ɵɵtext(14, "Errors");
349
328
  i0.ɵɵelementEnd();
350
- i0.ɵɵelementStart(15, "th", 46);
329
+ i0.ɵɵelementStart(15, "th", 43);
351
330
  i0.ɵɵtext(16, "Skipped");
352
331
  i0.ɵɵelementEnd()()();
353
332
  i0.ɵɵelementStart(17, "tbody");
354
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 47, _forTrack2);
333
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 44, _forTrack1);
355
334
  i0.ɵɵelementEnd()();
356
335
  } if (rf & 2) {
357
336
  const ctx_r0 = i0.ɵɵnextContext(4);
358
337
  i0.ɵɵadvance(18);
359
338
  i0.ɵɵrepeater(ctx_r0.SelectedRunDetails);
360
339
  } }
361
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
362
- i0.ɵɵelementStart(0, "div", 71)(1, "div", 51);
363
- i0.ɵɵelement(2, "i", 34);
340
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
341
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 48);
342
+ i0.ɵɵelement(2, "i", 31);
364
343
  i0.ɵɵtext(3, " Error Log ");
365
344
  i0.ɵɵelementEnd();
366
- i0.ɵɵelementStart(4, "pre", 52);
345
+ i0.ɵɵelementStart(4, "pre", 49);
367
346
  i0.ɵɵtext(5);
368
347
  i0.ɵɵelementEnd()();
369
348
  } if (rf & 2) {
@@ -371,9 +350,9 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
371
350
  i0.ɵɵadvance(5);
372
351
  i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().ErrorLog);
373
352
  } }
374
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
375
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 68)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 69)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 70);
376
- i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 71);
353
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
354
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 65)(1, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 66)(2, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 67);
355
+ i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 68);
377
356
  } if (rf & 2) {
378
357
  let tmp_4_0;
379
358
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -381,45 +360,45 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(
381
360
  i0.ɵɵadvance(3);
382
361
  i0.ɵɵconditional(((tmp_4_0 = ctx_r0.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
383
362
  } }
384
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelementStart(0, "div", 68);
386
- i0.ɵɵelement(1, "mj-loading", 73);
363
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
364
+ i0.ɵɵelementStart(0, "div", 65);
365
+ i0.ɵɵelement(1, "mj-loading", 70);
387
366
  i0.ɵɵelementEnd();
388
367
  } }
389
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
390
- i0.ɵɵelementStart(0, "div", 69);
391
- i0.ɵɵelement(1, "i", 74);
368
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
369
+ i0.ɵɵelementStart(0, "div", 66);
370
+ i0.ɵɵelement(1, "i", 71);
392
371
  i0.ɵɵelementStart(2, "p");
393
372
  i0.ɵɵtext(3, "No watermarks recorded for this integration.");
394
373
  i0.ɵɵelementEnd()();
395
374
  } }
396
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
375
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
397
376
  i0.ɵɵelementStart(0, "tr")(1, "td");
398
377
  i0.ɵɵtext(2);
399
378
  i0.ɵɵelementEnd();
400
- i0.ɵɵelementStart(3, "td")(4, "span", 75);
379
+ i0.ɵɵelementStart(3, "td")(4, "span", 72);
401
380
  i0.ɵɵtext(5);
402
381
  i0.ɵɵelementEnd()();
403
- i0.ɵɵelementStart(6, "td", 76);
382
+ i0.ɵɵelementStart(6, "td", 73);
404
383
  i0.ɵɵtext(7);
405
384
  i0.ɵɵelementEnd();
406
385
  i0.ɵɵelementStart(8, "td");
407
386
  i0.ɵɵtext(9);
408
387
  i0.ɵɵelementEnd()();
409
388
  } if (rf & 2) {
410
- const wm_r12 = ctx.$implicit;
389
+ const wm_r8 = ctx.$implicit;
411
390
  const ctx_r0 = i0.ɵɵnextContext(5);
412
391
  i0.ɵɵadvance(2);
413
- i0.ɵɵtextInterpolate(wm_r12.EntityMap);
392
+ i0.ɵɵtextInterpolate(wm_r8.EntityMap);
414
393
  i0.ɵɵadvance(3);
415
- i0.ɵɵtextInterpolate(wm_r12.WatermarkType);
394
+ i0.ɵɵtextInterpolate(wm_r8.WatermarkType);
416
395
  i0.ɵɵadvance(2);
417
- i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(wm_r12.WatermarkValue));
396
+ i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(wm_r8.WatermarkValue));
418
397
  i0.ɵɵadvance(2);
419
- i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r12.LastSyncAt));
398
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r8.LastSyncAt));
420
399
  } }
421
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵelementStart(0, "table", 70)(1, "thead")(2, "tr")(3, "th");
400
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
401
+ i0.ɵɵelementStart(0, "table", 67)(1, "thead")(2, "tr")(3, "th");
423
402
  i0.ɵɵtext(4, "Entity Map");
424
403
  i0.ɵɵelementEnd();
425
404
  i0.ɵɵelementStart(5, "th");
@@ -432,49 +411,49 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Condition
432
411
  i0.ɵɵtext(10, "Last Applied");
433
412
  i0.ɵɵelementEnd()()();
434
413
  i0.ɵɵelementStart(11, "tbody");
435
- i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack1);
414
+ i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack0);
436
415
  i0.ɵɵelementEnd()();
437
416
  } if (rf & 2) {
438
417
  const ctx_r0 = i0.ɵɵnextContext(4);
439
418
  i0.ɵɵadvance(12);
440
419
  i0.ɵɵrepeater(ctx_r0.WatermarkData);
441
420
  } }
442
- function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 68)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 69)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 70);
421
+ function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
422
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 65)(1, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 66)(2, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 67);
444
423
  } if (rf & 2) {
445
424
  const ctx_r0 = i0.ɵɵnextContext(3);
446
425
  i0.ɵɵconditional(ctx_r0.IsLoadingWatermarks ? 0 : ctx_r0.WatermarkData.length === 0 ? 1 : 2);
447
426
  } }
448
- function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
449
- const _r10 = i0.ɵɵgetCurrentView();
450
- i0.ɵɵelementStart(0, "div", 23)(1, "div", 53)(2, "div", 54)(3, "h3");
427
+ function ActivityComponent_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
428
+ const _r6 = i0.ɵɵgetCurrentView();
429
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 50)(2, "div", 51)(3, "h3");
451
430
  i0.ɵɵtext(4);
452
431
  i0.ɵɵelementEnd();
453
432
  i0.ɵɵelementStart(5, "span");
454
433
  i0.ɵɵelement(6, "i");
455
434
  i0.ɵɵtext(7);
456
435
  i0.ɵɵelementEnd();
457
- i0.ɵɵelementStart(8, "span", 55);
436
+ i0.ɵɵelementStart(8, "span", 52);
458
437
  i0.ɵɵtext(9);
459
438
  i0.ɵɵelementEnd()();
460
- i0.ɵɵelementStart(10, "button", 56);
461
- 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)); });
462
- i0.ɵɵelement(11, "i", 57);
439
+ i0.ɵɵelementStart(10, "button", 53);
440
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(ctx_r0.SelectedRunID)); });
441
+ i0.ɵɵelement(11, "i", 54);
463
442
  i0.ɵɵelementEnd()();
464
- i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template, 10, 5, "div", 58);
465
- i0.ɵɵelementStart(13, "div", 59)(14, "button", 60);
466
- 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")); });
467
- i0.ɵɵelement(15, "i", 61);
443
+ i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_13_Conditional_4_Conditional_12_Template, 10, 5, "div", 55);
444
+ i0.ɵɵelementStart(13, "div", 56)(14, "button", 57);
445
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("entities")); });
446
+ i0.ɵɵelement(15, "i", 58);
468
447
  i0.ɵɵtext(16, " Entity Breakdown ");
469
448
  i0.ɵɵelementEnd();
470
- i0.ɵɵelementStart(17, "button", 60);
471
- 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")); });
472
- i0.ɵɵelement(18, "i", 62);
449
+ i0.ɵɵelementStart(17, "button", 57);
450
+ i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("watermarks")); });
451
+ i0.ɵɵelement(18, "i", 59);
473
452
  i0.ɵɵtext(19, " Watermarks ");
474
453
  i0.ɵɵelementEnd()();
475
- i0.ɵɵelementStart(20, "div", 63);
476
- i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template, 4, 2);
477
- i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template, 3, 1);
454
+ i0.ɵɵelementStart(20, "div", 60);
455
+ i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Template, 4, 2);
456
+ i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Template, 3, 1);
478
457
  i0.ɵɵelementEnd()();
479
458
  } if (rf & 2) {
480
459
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -499,11 +478,11 @@ function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (
499
478
  i0.ɵɵadvance();
500
479
  i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "watermarks" ? 22 : -1);
501
480
  } }
502
- function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
503
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 21);
504
- i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div", 22, _forTrack1);
481
+ function ActivityComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
482
+ i0.ɵɵelementStart(0, "div", 12)(1, "div", 18);
483
+ i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_13_For_3_Template, 23, 29, "div", 19, _forTrack0);
505
484
  i0.ɵɵelementEnd();
506
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_Conditional_4_Template, 23, 14, "div", 23);
485
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_13_Conditional_4_Template, 23, 14, "div", 20);
507
486
  i0.ɵɵelementEnd();
508
487
  } if (rf & 2) {
509
488
  const ctx_r0 = i0.ɵɵnextContext();
@@ -704,6 +683,18 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
704
683
  // ---- Integration filter popover wiring ---------------------------------
705
684
  get ActivityFilterFields() {
706
685
  return [
686
+ {
687
+ key: 'dateRange',
688
+ type: 'chips',
689
+ label: 'Date range',
690
+ chipOptions: this.DateOptions.map(d => ({ text: d.Label, value: d.Value })),
691
+ },
692
+ {
693
+ key: 'status',
694
+ type: 'chips',
695
+ label: 'Status',
696
+ chipOptions: this.StatusOptions.map(s => ({ text: s, value: s })),
697
+ },
707
698
  {
708
699
  key: 'integration',
709
700
  type: 'dropdown',
@@ -719,16 +710,40 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
719
710
  ];
720
711
  }
721
712
  get ActivityFilterValues() {
722
- return { integration: this.IntegrationFilter ?? '' };
713
+ return {
714
+ dateRange: this.DateFilter,
715
+ status: this.StatusFilter,
716
+ integration: this.IntegrationFilter ?? ''
717
+ };
723
718
  }
724
719
  get ActiveFilterCount() {
725
- return this.IntegrationFilter ? 1 : 0;
720
+ let count = 0;
721
+ if (this.DateFilter !== '7d')
722
+ count++;
723
+ if (this.StatusFilter !== 'All')
724
+ count++;
725
+ if (this.IntegrationFilter)
726
+ count++;
727
+ return count;
726
728
  }
727
729
  OnFilterValuesChange(values) {
728
- const next = (values ?? {}).integration ?? '';
729
- this.SetIntegrationFilter(next || null);
730
+ const next = (values ?? {});
731
+ if (next.dateRange && next.dateRange !== this.DateFilter) {
732
+ this.SetDateFilter(next.dateRange);
733
+ }
734
+ if (next.status && next.status !== this.StatusFilter) {
735
+ this.SetStatusFilter(next.status);
736
+ }
737
+ const integ = next.integration ?? '';
738
+ if ((integ || null) !== this.IntegrationFilter) {
739
+ this.SetIntegrationFilter(integ || null);
740
+ }
730
741
  }
731
742
  ResetIntegrationFilter() {
743
+ if (this.DateFilter !== '7d')
744
+ this.SetDateFilter('7d');
745
+ if (this.StatusFilter !== 'All')
746
+ this.SetStatusFilter('All');
732
747
  if (this.IntegrationFilter)
733
748
  this.SetIntegrationFilter(null);
734
749
  }
@@ -889,53 +904,45 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
889
904
  return 'fa-solid fa-clock-rotate-left';
890
905
  }
891
906
  static ɵfac = /*@__PURE__*/ (() => { let ɵActivityComponent_BaseFactory; return function ActivityComponent_Factory(__ngFactoryType__) { return (ɵActivityComponent_BaseFactory || (ɵActivityComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ActivityComponent)))(__ngFactoryType__ || ActivityComponent); }; })();
892
- 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", "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) {
907
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 14, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], ["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) {
893
908
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
894
909
  i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 5, 5, "div", 1);
895
- i0.ɵɵelementStart(3, "div", 2)(4, "mj-filter-popover", 3);
896
- i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_4_listener() { return ctx.ResetIntegrationFilter(); });
897
- i0.ɵɵelementStart(5, "mj-filter-panel", 4);
898
- 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(); });
899
- i0.ɵɵelementEnd()();
900
- i0.ɵɵelementStart(6, "mj-refresh-button", 5);
901
- i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_6_listener() { return ctx.Refresh(); });
910
+ i0.ɵɵelementStart(3, "div", 2)(4, "mj-refresh-button", 3);
911
+ i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_4_listener() { return ctx.Refresh(); });
902
912
  i0.ɵɵelementEnd()();
903
- i0.ɵɵelementStart(7, "div", 6)(8, "mj-page-search", 7);
904
- i0.ɵɵlistener("ValueChange", function ActivityComponent_Template_mj_page_search_ValueChange_8_listener($event) { return ctx.OnSearchValueChange($event); });
913
+ i0.ɵɵelementStart(5, "div", 4)(6, "mj-page-search", 5);
914
+ i0.ɵɵlistener("ValueChange", function ActivityComponent_Template_mj_page_search_ValueChange_6_listener($event) { return ctx.OnSearchValueChange($event); });
905
915
  i0.ɵɵelementEnd();
906
- i0.ɵɵrepeaterCreate(9, ActivityComponent_For_10_Template, 1, 2, "mj-filter-chip", 8, i0.ɵɵrepeaterTrackByIdentity);
907
- i0.ɵɵelement(11, "span", 9);
908
- i0.ɵɵrepeaterCreate(12, ActivityComponent_For_13_Template, 1, 2, "mj-filter-chip", 8, _forTrack0);
909
- i0.ɵɵelementEnd()();
910
- i0.ɵɵelementStart(14, "mj-page-body", 10)(15, "div", 11);
911
- i0.ɵɵconditionalCreate(16, ActivityComponent_Conditional_16_Template, 2, 0, "div", 12);
912
- i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_17_Template, 4, 0, "div", 13);
913
- i0.ɵɵconditionalCreate(18, ActivityComponent_Conditional_18_Template, 5, 1, "div", 14);
916
+ i0.ɵɵelementStart(7, "mj-filter-popover", 6);
917
+ i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { return ctx.ResetIntegrationFilter(); });
918
+ i0.ɵɵelementStart(8, "mj-filter-panel", 7);
919
+ i0.ɵɵlistener("ValuesChange", function ActivityComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { return ctx.OnFilterValuesChange($event); })("Reset", function ActivityComponent_Template_mj_filter_panel_Reset_8_listener() { return ctx.ResetIntegrationFilter(); });
920
+ i0.ɵɵelementEnd()()()();
921
+ i0.ɵɵelementStart(9, "mj-page-body", 8)(10, "div", 9);
922
+ i0.ɵɵconditionalCreate(11, ActivityComponent_Conditional_11_Template, 2, 0, "div", 10);
923
+ i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_12_Template, 4, 0, "div", 11);
924
+ i0.ɵɵconditionalCreate(13, ActivityComponent_Conditional_13_Template, 5, 1, "div", 12);
914
925
  i0.ɵɵelementEnd()()();
915
926
  } if (rf & 2) {
916
927
  i0.ɵɵadvance(2);
917
928
  i0.ɵɵconditional(!ctx.IsLoading && ctx.AllRuns.length > 0 ? 2 : -1);
918
929
  i0.ɵɵadvance(2);
919
- i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
920
- i0.ɵɵadvance();
921
- i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
922
- i0.ɵɵadvance();
923
930
  i0.ɵɵproperty("Loading", ctx.IsLoading);
924
931
  i0.ɵɵadvance(2);
925
932
  i0.ɵɵproperty("Value", ctx.SearchQuery);
926
933
  i0.ɵɵadvance();
927
- i0.ɵɵrepeater(ctx.StatusOptions);
928
- i0.ɵɵadvance(3);
929
- i0.ɵɵrepeater(ctx.DateOptions);
930
- i0.ɵɵadvance(2);
934
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
935
+ i0.ɵɵadvance();
936
+ i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
937
+ i0.ɵɵadvance();
931
938
  i0.ɵɵproperty("Flex", true);
932
939
  i0.ɵɵadvance(2);
933
- i0.ɵɵconditional(ctx.IsLoading ? 16 : -1);
940
+ i0.ɵɵconditional(ctx.IsLoading ? 11 : -1);
934
941
  i0.ɵɵadvance();
935
- i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 17 : -1);
942
+ i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 12 : -1);
936
943
  i0.ɵɵadvance();
937
- i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 18 : -1);
938
- } }, 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}"] });
944
+ i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 13 : -1);
945
+ } }, dependencies: [i1.MJPageLayoutComponent, i1.MJPageHeaderComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, 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}"] });
939
946
  };
940
947
  ActivityComponent = __decorate([
941
948
  RegisterClass(BaseResourceComponent, 'IntegrationActivity')
@@ -943,7 +950,7 @@ ActivityComponent = __decorate([
943
950
  export { ActivityComponent };
944
951
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityComponent, [{
945
952
  type: Component,
946
- 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 <!-- [meta] retains the succeeded/failed status pills (genuine variant\n signal \u2014 error rate at a glance) and the records aggregate\n (non-trivially derived: count of records across all runs).\n \"Total runs\" dropped per chrome slot discipline audit Task B \u2014\n that count equals the visible list's row count. -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\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"] }]
953
+ 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 <!-- [meta] retains the succeeded/failed status pills (genuine variant\n signal \u2014 error rate at a glance) and the records aggregate\n (non-trivially derived: count of records across all runs).\n \"Total runs\" dropped per chrome slot discipline audit Task B \u2014\n that count equals the visible list's row count. -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\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-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 <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 </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"] }]
947
954
  }], null, null); })();
948
955
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 39 }); })();
949
956
  export function LoadActivityComponent() {