@memberjunction/ng-dashboards 5.34.1 → 5.36.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 (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -7,77 +7,99 @@ import { SharedService } from '@memberjunction/ng-shared';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../services/scheduling-instrumentation.service";
9
9
  import * as i2 from "@angular/common";
10
- import * as i3 from "@angular/forms";
11
- import * as i4 from "@memberjunction/ng-ui-components";
12
- import * as i5 from "@memberjunction/ng-shared-generic";
13
- function SchedulingActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "option", 8);
15
- i0.ɵɵtext(1);
16
- i0.ɵɵelementEnd();
10
+ import * as i3 from "@memberjunction/ng-ui-components";
11
+ import * as i4 from "@memberjunction/ng-shared-generic";
12
+ const _forTrack0 = ($index, $item) => $item.value;
13
+ function SchedulingActivityComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementContainer(0);
15
+ } }
16
+ function SchedulingActivityComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵtemplate(0, SchedulingActivityComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 1);
17
18
  } if (rf & 2) {
18
- const s_r1 = ctx.$implicit;
19
- i0.ɵɵproperty("value", s_r1);
20
- i0.ɵɵadvance();
21
- i0.ɵɵtextInterpolate(s_r1);
19
+ i0.ɵɵnextContext();
20
+ const content_r1 = i0.ɵɵreference(3);
21
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
22
22
  } }
23
- function SchedulingActivityComponent_For_15_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "option", 8);
25
- i0.ɵɵtext(1);
23
+ function SchedulingActivityComponent_Conditional_1_For_9_Template(rf, ctx) { if (rf & 1) {
24
+ const _r4 = i0.ɵɵgetCurrentView();
25
+ i0.ɵɵelementStart(0, "mj-filter-chip", 10);
26
+ i0.ɵɵlistener("Clicked", function SchedulingActivityComponent_Conditional_1_For_9_Template_mj_filter_chip_Clicked_0_listener() { const range_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange(range_r5.value)); });
26
27
  i0.ɵɵelementEnd();
27
28
  } if (rf & 2) {
28
- const name_r2 = ctx.$implicit;
29
- i0.ɵɵproperty("value", name_r2);
30
- i0.ɵɵadvance();
31
- i0.ɵɵtextInterpolate(name_r2);
29
+ const range_r5 = ctx.$implicit;
30
+ const ctx_r2 = i0.ɵɵnextContext(2);
31
+ i0.ɵɵproperty("Label", range_r5.label)("Active", ctx_r2.SelectedTimeRange === range_r5.value);
32
32
  } }
33
- function SchedulingActivityComponent_For_19_Template(rf, ctx) { if (rf & 1) {
34
- const _r3 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "button", 16);
36
- i0.ɵɵlistener("click", function SchedulingActivityComponent_For_19_Template_button_click_0_listener() { const range_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.OnTimeRangeChange(range_r4.value)); });
37
- i0.ɵɵtext(1);
33
+ function SchedulingActivityComponent_Conditional_1_ng_container_11_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementContainer(0);
35
+ } }
36
+ function SchedulingActivityComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
37
+ const _r2 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3)(3, "mj-filter-popover", 4);
39
+ i0.ɵɵlistener("ClearAllRequested", function SchedulingActivityComponent_Conditional_1_Template_mj_filter_popover_ClearAllRequested_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ResetFilters()); });
40
+ i0.ɵɵelementStart(4, "mj-filter-panel", 5);
41
+ i0.ɵɵlistener("ValuesChange", function SchedulingActivityComponent_Conditional_1_Template_mj_filter_panel_ValuesChange_4_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnFilterValuesChange($event)); })("Reset", function SchedulingActivityComponent_Conditional_1_Template_mj_filter_panel_Reset_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ResetFilters()); });
42
+ i0.ɵɵelementEnd()();
43
+ i0.ɵɵelementStart(5, "mj-refresh-button", 6);
44
+ i0.ɵɵlistener("Clicked", function SchedulingActivityComponent_Conditional_1_Template_mj_refresh_button_Clicked_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Refresh()); });
45
+ i0.ɵɵelementEnd()();
46
+ i0.ɵɵelementStart(6, "div", 7)(7, "mj-page-search", 8);
47
+ i0.ɵɵlistener("ValueChange", function SchedulingActivityComponent_Conditional_1_Template_mj_page_search_ValueChange_7_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchChange($event)); });
38
48
  i0.ɵɵelementEnd();
49
+ i0.ɵɵrepeaterCreate(8, SchedulingActivityComponent_Conditional_1_For_9_Template, 1, 2, "mj-filter-chip", 9, _forTrack0);
50
+ i0.ɵɵelementEnd()();
51
+ i0.ɵɵelementStart(10, "mj-page-body");
52
+ i0.ɵɵtemplate(11, SchedulingActivityComponent_Conditional_1_ng_container_11_Template, 1, 0, "ng-container", 1);
53
+ i0.ɵɵelementEnd()();
39
54
  } if (rf & 2) {
40
- const range_r4 = ctx.$implicit;
41
- const ctx_r4 = i0.ɵɵnextContext();
42
- i0.ɵɵclassProp("active", ctx_r4.SelectedTimeRange === range_r4.value);
55
+ const ctx_r2 = i0.ɵɵnextContext();
56
+ const content_r1 = i0.ɵɵreference(3);
57
+ i0.ɵɵadvance(3);
58
+ i0.ɵɵproperty("ActiveCount", ctx_r2.ActiveFilterCount)("ShowClearAll", ctx_r2.ActiveFilterCount > 0);
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵproperty("Fields", ctx_r2.ActivityFilterFields)("Values", ctx_r2.ActivityFilterValues);
61
+ i0.ɵɵadvance(3);
62
+ i0.ɵɵproperty("Value", ctx_r2.SearchTerm);
43
63
  i0.ɵɵadvance();
44
- i0.ɵɵtextInterpolate1(" ", range_r4.label, " ");
64
+ i0.ɵɵrepeater(ctx_r2.TimeRanges);
65
+ i0.ɵɵadvance(3);
66
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
45
67
  } }
46
- function SchedulingActivityComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "div", 14);
48
- i0.ɵɵelement(1, "mj-loading", 17);
68
+ function SchedulingActivityComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelementStart(0, "div", 12);
70
+ i0.ɵɵelement(1, "mj-loading", 14);
49
71
  i0.ɵɵelementEnd();
50
72
  } }
51
- function SchedulingActivityComponent_Conditional_24_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "div", 27)(1, "div", 28);
73
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 25);
53
75
  i0.ɵɵelement(2, "i");
54
76
  i0.ɵɵelementEnd();
55
- i0.ɵɵelementStart(3, "div", 29)(4, "div", 30);
77
+ i0.ɵɵelementStart(3, "div", 26)(4, "div", 27);
56
78
  i0.ɵɵtext(5);
57
79
  i0.ɵɵelementEnd();
58
- i0.ɵɵelementStart(6, "div", 31)(7, "span");
80
+ i0.ɵɵelementStart(6, "div", 28)(7, "span");
59
81
  i0.ɵɵtext(8);
60
82
  i0.ɵɵelementEnd();
61
- i0.ɵɵelementStart(9, "span", 32);
83
+ i0.ɵɵelementStart(9, "span", 29);
62
84
  i0.ɵɵtext(10, "\u00B7");
63
85
  i0.ɵɵelementEnd();
64
86
  i0.ɵɵelementStart(11, "span");
65
87
  i0.ɵɵtext(12);
66
88
  i0.ɵɵelementEnd();
67
- i0.ɵɵelementStart(13, "span", 32);
89
+ i0.ɵɵelementStart(13, "span", 29);
68
90
  i0.ɵɵtext(14, "\u00B7");
69
91
  i0.ɵɵelementEnd();
70
92
  i0.ɵɵelementStart(15, "span");
71
93
  i0.ɵɵtext(16);
72
94
  i0.ɵɵelementEnd()()();
73
- i0.ɵɵelementStart(17, "div", 33);
74
- i0.ɵɵelement(18, "div", 34);
95
+ i0.ɵɵelementStart(17, "div", 30);
96
+ i0.ɵɵelement(18, "div", 31);
75
97
  i0.ɵɵelementEnd()();
76
98
  } if (rf & 2) {
77
99
  const type_r6 = ctx.$implicit;
78
- const ctx_r4 = i0.ɵɵnextContext(3);
100
+ const ctx_r2 = i0.ɵɵnextContext(4);
79
101
  i0.ɵɵadvance(2);
80
- i0.ɵɵclassMap(ctx_r4.GetTypeIcon(type_r6.typeName));
102
+ i0.ɵɵclassMap(ctx_r2.GetTypeIcon(type_r6.typeName));
81
103
  i0.ɵɵadvance(3);
82
104
  i0.ɵɵtextInterpolate(type_r6.typeName);
83
105
  i0.ɵɵadvance(3);
@@ -85,89 +107,89 @@ function SchedulingActivityComponent_Conditional_24_Conditional_1_For_2_Template
85
107
  i0.ɵɵadvance(4);
86
108
  i0.ɵɵtextInterpolate1("", type_r6.totalRuns, " runs");
87
109
  i0.ɵɵadvance(3);
88
- i0.ɵɵstyleProp("color", ctx_r4.GetSuccessRateColor(type_r6.successRate));
110
+ i0.ɵɵstyleProp("color", ctx_r2.GetSuccessRateColor(type_r6.successRate));
89
111
  i0.ɵɵadvance();
90
- i0.ɵɵtextInterpolate1(" ", ctx_r4.FormatPercentage(type_r6.successRate), " ");
112
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatPercentage(type_r6.successRate), " ");
91
113
  i0.ɵɵadvance(2);
92
- i0.ɵɵstyleProp("width", type_r6.successRate * 100 + "%")("background", ctx_r4.GetSuccessRateColor(type_r6.successRate));
114
+ i0.ɵɵstyleProp("width", type_r6.successRate * 100 + "%")("background", ctx_r2.GetSuccessRateColor(type_r6.successRate));
93
115
  } }
94
- function SchedulingActivityComponent_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
95
- i0.ɵɵelementStart(0, "div", 18);
96
- i0.ɵɵrepeaterCreate(1, SchedulingActivityComponent_Conditional_24_Conditional_1_For_2_Template, 19, 12, "div", 27, i0.ɵɵrepeaterTrackByIdentity);
116
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
117
+ i0.ɵɵelementStart(0, "div", 15);
118
+ i0.ɵɵrepeaterCreate(1, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_1_For_2_Template, 19, 12, "div", 24, i0.ɵɵrepeaterTrackByIdentity);
97
119
  i0.ɵɵelementEnd();
98
120
  } if (rf & 2) {
99
- const ctx_r4 = i0.ɵɵnextContext(2);
121
+ const ctx_r2 = i0.ɵɵnextContext(3);
100
122
  i0.ɵɵadvance();
101
- i0.ɵɵrepeater(ctx_r4.JobTypes);
123
+ i0.ɵɵrepeater(ctx_r2.JobTypes);
102
124
  } }
103
- function SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelement(0, "div", 47);
125
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_For_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
126
+ i0.ɵɵelement(0, "div", 44);
105
127
  } if (rf & 2) {
106
128
  const trend_r7 = i0.ɵɵnextContext().$implicit;
107
- const ctx_r4 = i0.ɵɵnextContext(3);
108
- i0.ɵɵstyleProp("height", ctx_r4.GetBarHeight(trend_r7.failures));
129
+ const ctx_r2 = i0.ɵɵnextContext(4);
130
+ i0.ɵɵstyleProp("height", ctx_r2.GetBarHeight(trend_r7.failures));
109
131
  i0.ɵɵproperty("title", trend_r7.failures + " failed");
110
132
  } }
111
- function SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Template(rf, ctx) { if (rf & 1) {
112
- i0.ɵɵelementStart(0, "div", 38)(1, "div", 43);
113
- i0.ɵɵelement(2, "div", 44);
114
- i0.ɵɵconditionalCreate(3, SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Conditional_3_Template, 1, 3, "div", 45);
133
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_For_10_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 40);
135
+ i0.ɵɵelement(2, "div", 41);
136
+ i0.ɵɵconditionalCreate(3, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_For_10_Conditional_3_Template, 1, 3, "div", 42);
115
137
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(4, "div", 46);
138
+ i0.ɵɵelementStart(4, "div", 43);
117
139
  i0.ɵɵtext(5);
118
140
  i0.ɵɵelementEnd()();
119
141
  } if (rf & 2) {
120
142
  const trend_r7 = ctx.$implicit;
121
- const ɵ$index_105_r8 = ctx.$index;
122
- const ctx_r4 = i0.ɵɵnextContext(3);
143
+ const ɵ$index_97_r8 = ctx.$index;
144
+ const ctx_r2 = i0.ɵɵnextContext(4);
123
145
  i0.ɵɵadvance(2);
124
- i0.ɵɵstyleProp("height", ctx_r4.GetBarHeight(trend_r7.successes));
146
+ i0.ɵɵstyleProp("height", ctx_r2.GetBarHeight(trend_r7.successes));
125
147
  i0.ɵɵproperty("title", trend_r7.successes + " successful");
126
148
  i0.ɵɵadvance();
127
149
  i0.ɵɵconditional(trend_r7.failures > 0 ? 3 : -1);
128
150
  i0.ɵɵadvance();
129
- i0.ɵɵclassProp("hidden-label", !ctx_r4.ShouldShowLabel(ɵ$index_105_r8));
151
+ i0.ɵɵclassProp("hidden-label", !ctx_r2.ShouldShowLabel(ɵ$index_97_r8));
130
152
  i0.ɵɵadvance();
131
- i0.ɵɵtextInterpolate(ctx_r4.FormatChartLabel(trend_r7.timestamp));
153
+ i0.ɵɵtextInterpolate(ctx_r2.FormatChartLabel(trend_r7.timestamp));
132
154
  } }
133
- function SchedulingActivityComponent_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
134
- i0.ɵɵelementStart(0, "div", 19)(1, "div", 20)(2, "div", 21);
135
- i0.ɵɵelement(3, "i", 35);
155
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementStart(0, "div", 16)(1, "div", 17)(2, "div", 18);
157
+ i0.ɵɵelement(3, "i", 32);
136
158
  i0.ɵɵtext(4, " Execution Trends ");
137
159
  i0.ɵɵelementEnd();
138
- i0.ɵɵelementStart(5, "span", 23);
160
+ i0.ɵɵelementStart(5, "span", 20);
139
161
  i0.ɵɵtext(6);
140
162
  i0.ɵɵelementEnd()();
141
- i0.ɵɵelementStart(7, "div", 36)(8, "div", 37);
142
- i0.ɵɵrepeaterCreate(9, SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Template, 6, 7, "div", 38, i0.ɵɵrepeaterTrackByIdentity);
163
+ i0.ɵɵelementStart(7, "div", 33)(8, "div", 34);
164
+ i0.ɵɵrepeaterCreate(9, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_For_10_Template, 6, 7, "div", 35, i0.ɵɵrepeaterTrackByIdentity);
143
165
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(11, "div", 39)(12, "span", 40);
145
- i0.ɵɵelement(13, "span", 41);
166
+ i0.ɵɵelementStart(11, "div", 36)(12, "span", 37);
167
+ i0.ɵɵelement(13, "span", 38);
146
168
  i0.ɵɵtext(14, " Successful");
147
169
  i0.ɵɵelementEnd();
148
- i0.ɵɵelementStart(15, "span", 40);
149
- i0.ɵɵelement(16, "span", 42);
170
+ i0.ɵɵelementStart(15, "span", 37);
171
+ i0.ɵɵelement(16, "span", 39);
150
172
  i0.ɵɵtext(17, " Failed");
151
173
  i0.ɵɵelementEnd()()()();
152
174
  } if (rf & 2) {
153
- const ctx_r4 = i0.ɵɵnextContext(2);
175
+ const ctx_r2 = i0.ɵɵnextContext(3);
154
176
  i0.ɵɵadvance(6);
155
- i0.ɵɵtextInterpolate1("", ctx_r4.FilteredExecutions.length, " executions");
177
+ i0.ɵɵtextInterpolate1("", ctx_r2.FilteredExecutions.length, " executions");
156
178
  i0.ɵɵadvance(3);
157
- i0.ɵɵrepeater(ctx_r4.Trends);
179
+ i0.ɵɵrepeater(ctx_r2.Trends);
158
180
  } }
159
- function SchedulingActivityComponent_Conditional_24_Conditional_11_Template(rf, ctx) { if (rf & 1) {
160
- i0.ɵɵelementStart(0, "div", 25);
161
- i0.ɵɵelement(1, "i", 48);
181
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "div", 22);
183
+ i0.ɵɵelement(1, "i", 45);
162
184
  i0.ɵɵelementStart(2, "span");
163
185
  i0.ɵɵtext(3, "No executions found for this time range");
164
186
  i0.ɵɵelementEnd()();
165
187
  } }
166
- function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
167
- i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
188
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
168
190
  i0.ɵɵtext(2, "Error");
169
191
  i0.ɵɵelementEnd();
170
- i0.ɵɵelementStart(3, "span", 67);
192
+ i0.ɵɵelementStart(3, "span", 64);
171
193
  i0.ɵɵtext(4);
172
194
  i0.ɵɵelementEnd()();
173
195
  } if (rf & 2) {
@@ -175,123 +197,123 @@ function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Condit
175
197
  i0.ɵɵadvance(4);
176
198
  i0.ɵɵtextInterpolate(exec_r10.errorMessage);
177
199
  } }
178
- function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
200
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
179
201
  const _r11 = i0.ɵɵgetCurrentView();
180
- i0.ɵɵelementStart(0, "tr", 56)(1, "td")(2, "div", 57)(3, "div", 58)(4, "div", 59)(5, "span", 60);
202
+ i0.ɵɵelementStart(0, "tr", 53)(1, "td")(2, "div", 54)(3, "div", 55)(4, "div", 56)(5, "span", 57);
181
203
  i0.ɵɵtext(6, "Job Name");
182
204
  i0.ɵɵelementEnd();
183
- i0.ɵɵelementStart(7, "span", 61);
205
+ i0.ɵɵelementStart(7, "span", 58);
184
206
  i0.ɵɵtext(8);
185
207
  i0.ɵɵelementEnd()();
186
- i0.ɵɵelementStart(9, "div", 59)(10, "span", 60);
208
+ i0.ɵɵelementStart(9, "div", 56)(10, "span", 57);
187
209
  i0.ɵɵtext(11, "Started");
188
210
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(12, "span", 61);
211
+ i0.ɵɵelementStart(12, "span", 58);
190
212
  i0.ɵɵtext(13);
191
213
  i0.ɵɵelementEnd()();
192
- i0.ɵɵelementStart(14, "div", 59)(15, "span", 60);
214
+ i0.ɵɵelementStart(14, "div", 56)(15, "span", 57);
193
215
  i0.ɵɵtext(16, "Completed");
194
216
  i0.ɵɵelementEnd();
195
- i0.ɵɵelementStart(17, "span", 61);
217
+ i0.ɵɵelementStart(17, "span", 58);
196
218
  i0.ɵɵtext(18);
197
219
  i0.ɵɵelementEnd()();
198
- i0.ɵɵelementStart(19, "div", 59)(20, "span", 60);
220
+ i0.ɵɵelementStart(19, "div", 56)(20, "span", 57);
199
221
  i0.ɵɵtext(21, "Duration");
200
222
  i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(22, "span", 61);
223
+ i0.ɵɵelementStart(22, "span", 58);
202
224
  i0.ɵɵtext(23);
203
225
  i0.ɵɵelementEnd()();
204
- i0.ɵɵelementStart(24, "div", 59)(25, "span", 60);
226
+ i0.ɵɵelementStart(24, "div", 56)(25, "span", 57);
205
227
  i0.ɵɵtext(26, "Status");
206
228
  i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(27, "span", 61)(28, "span", 52);
229
+ i0.ɵɵelementStart(27, "span", 58)(28, "span", 49);
208
230
  i0.ɵɵelement(29, "i");
209
231
  i0.ɵɵtext(30);
210
232
  i0.ɵɵelementEnd()()();
211
- i0.ɵɵconditionalCreate(31, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Conditional_31_Template, 5, 1, "div", 59);
233
+ i0.ɵɵconditionalCreate(31, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Conditional_31_Template, 5, 1, "div", 56);
212
234
  i0.ɵɵelementEnd();
213
- i0.ɵɵelementStart(32, "div", 62)(33, "button", 63);
214
- i0.ɵɵlistener("click", function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template_button_click_33_listener($event) { i0.ɵɵrestoreView(_r11); const exec_r10 = i0.ɵɵnextContext().$implicit; const ctx_r4 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r4.OpenExecutionRecord(exec_r10, $event)); });
215
- i0.ɵɵelement(34, "i", 64);
235
+ i0.ɵɵelementStart(32, "div", 59)(33, "button", 60);
236
+ i0.ɵɵlistener("click", function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Template_button_click_33_listener($event) { i0.ɵɵrestoreView(_r11); const exec_r10 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OpenExecutionRecord(exec_r10, $event)); });
237
+ i0.ɵɵelement(34, "i", 61);
216
238
  i0.ɵɵtext(35, " Open Run Record ");
217
239
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(36, "button", 65);
219
- i0.ɵɵlistener("click", function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template_button_click_36_listener($event) { i0.ɵɵrestoreView(_r11); const exec_r10 = i0.ɵɵnextContext().$implicit; const ctx_r4 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r4.OpenJobRecord(exec_r10, $event)); });
220
- i0.ɵɵelement(37, "i", 66);
240
+ i0.ɵɵelementStart(36, "button", 62);
241
+ i0.ɵɵlistener("click", function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Template_button_click_36_listener($event) { i0.ɵɵrestoreView(_r11); const exec_r10 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OpenJobRecord(exec_r10, $event)); });
242
+ i0.ɵɵelement(37, "i", 63);
221
243
  i0.ɵɵtext(38, " Open Job ");
222
244
  i0.ɵɵelementEnd()()()()();
223
245
  } if (rf & 2) {
224
246
  const exec_r10 = i0.ɵɵnextContext().$implicit;
225
- const ctx_r4 = i0.ɵɵnextContext(3);
247
+ const ctx_r2 = i0.ɵɵnextContext(4);
226
248
  i0.ɵɵadvance();
227
249
  i0.ɵɵattribute("colspan", 6);
228
250
  i0.ɵɵadvance(7);
229
251
  i0.ɵɵtextInterpolate(exec_r10.jobName);
230
252
  i0.ɵɵadvance(5);
231
- i0.ɵɵtextInterpolate(ctx_r4.FormatDateTime(exec_r10.startedAt));
253
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDateTime(exec_r10.startedAt));
232
254
  i0.ɵɵadvance(5);
233
- i0.ɵɵtextInterpolate(exec_r10.completedAt ? ctx_r4.FormatDateTime(exec_r10.completedAt) : "-");
255
+ i0.ɵɵtextInterpolate(exec_r10.completedAt ? ctx_r2.FormatDateTime(exec_r10.completedAt) : "-");
234
256
  i0.ɵɵadvance(5);
235
- i0.ɵɵtextInterpolate(ctx_r4.FormatDuration(exec_r10.duration));
257
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(exec_r10.duration));
236
258
  i0.ɵɵadvance(5);
237
- i0.ɵɵproperty("ngClass", ctx_r4.GetStatusClass(exec_r10.status));
259
+ i0.ɵɵproperty("ngClass", ctx_r2.GetStatusClass(exec_r10.status));
238
260
  i0.ɵɵadvance();
239
- i0.ɵɵclassMap(ctx_r4.GetStatusIcon(exec_r10.status));
261
+ i0.ɵɵclassMap(ctx_r2.GetStatusIcon(exec_r10.status));
240
262
  i0.ɵɵadvance();
241
263
  i0.ɵɵtextInterpolate1(" ", exec_r10.status, " ");
242
264
  i0.ɵɵadvance();
243
265
  i0.ɵɵconditional(exec_r10.errorMessage ? 31 : -1);
244
266
  } }
245
- function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Template(rf, ctx) { if (rf & 1) {
267
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Template(rf, ctx) { if (rf & 1) {
246
268
  const _r9 = i0.ɵɵgetCurrentView();
247
- i0.ɵɵelementStart(0, "tr", 50);
248
- i0.ɵɵlistener("click", function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Template_tr_click_0_listener() { const exec_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r4 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r4.ToggleExpand(exec_r10)); });
249
- i0.ɵɵelementStart(1, "td", 49);
250
- i0.ɵɵelement(2, "i", 51);
269
+ i0.ɵɵelementStart(0, "tr", 47);
270
+ i0.ɵɵlistener("click", function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Template_tr_click_0_listener() { const exec_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ToggleExpand(exec_r10)); });
271
+ i0.ɵɵelementStart(1, "td", 46);
272
+ i0.ɵɵelement(2, "i", 48);
251
273
  i0.ɵɵelementEnd();
252
- i0.ɵɵelementStart(3, "td")(4, "span", 52);
274
+ i0.ɵɵelementStart(3, "td")(4, "span", 49);
253
275
  i0.ɵɵelement(5, "i");
254
276
  i0.ɵɵtext(6);
255
277
  i0.ɵɵelementEnd()();
256
- i0.ɵɵelementStart(7, "td", 53);
278
+ i0.ɵɵelementStart(7, "td", 50);
257
279
  i0.ɵɵtext(8);
258
280
  i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(9, "td", 54);
281
+ i0.ɵɵelementStart(9, "td", 51);
260
282
  i0.ɵɵtext(10);
261
283
  i0.ɵɵelementEnd();
262
- i0.ɵɵelementStart(11, "td", 54);
284
+ i0.ɵɵelementStart(11, "td", 51);
263
285
  i0.ɵɵtext(12);
264
286
  i0.ɵɵelementEnd();
265
- i0.ɵɵelementStart(13, "td", 55);
287
+ i0.ɵɵelementStart(13, "td", 52);
266
288
  i0.ɵɵtext(14);
267
289
  i0.ɵɵelementEnd()();
268
- i0.ɵɵconditionalCreate(15, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template, 39, 10, "tr", 56);
290
+ i0.ɵɵconditionalCreate(15, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Conditional_15_Template, 39, 10, "tr", 53);
269
291
  } if (rf & 2) {
270
292
  const exec_r10 = ctx.$implicit;
271
- const ctx_r4 = i0.ɵɵnextContext(3);
272
- i0.ɵɵclassProp("expanded", ctx_r4.IsExpanded(exec_r10));
293
+ const ctx_r2 = i0.ɵɵnextContext(4);
294
+ i0.ɵɵclassProp("expanded", ctx_r2.IsExpanded(exec_r10));
273
295
  i0.ɵɵadvance(2);
274
- i0.ɵɵclassProp("rotated", ctx_r4.IsExpanded(exec_r10));
296
+ i0.ɵɵclassProp("rotated", ctx_r2.IsExpanded(exec_r10));
275
297
  i0.ɵɵadvance(2);
276
- i0.ɵɵproperty("ngClass", ctx_r4.GetStatusClass(exec_r10.status));
298
+ i0.ɵɵproperty("ngClass", ctx_r2.GetStatusClass(exec_r10.status));
277
299
  i0.ɵɵadvance();
278
- i0.ɵɵclassMap(ctx_r4.GetStatusIcon(exec_r10.status));
300
+ i0.ɵɵclassMap(ctx_r2.GetStatusIcon(exec_r10.status));
279
301
  i0.ɵɵadvance();
280
302
  i0.ɵɵtextInterpolate1(" ", exec_r10.status, " ");
281
303
  i0.ɵɵadvance(2);
282
304
  i0.ɵɵtextInterpolate(exec_r10.jobName);
283
305
  i0.ɵɵadvance(2);
284
- i0.ɵɵtextInterpolate(ctx_r4.FormatDateTime(exec_r10.startedAt));
306
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDateTime(exec_r10.startedAt));
285
307
  i0.ɵɵadvance(2);
286
- i0.ɵɵtextInterpolate(ctx_r4.FormatDuration(exec_r10.duration));
308
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(exec_r10.duration));
287
309
  i0.ɵɵadvance(2);
288
- i0.ɵɵtextInterpolate(ctx_r4.TruncateError(exec_r10.errorMessage));
310
+ i0.ɵɵtextInterpolate(ctx_r2.TruncateError(exec_r10.errorMessage));
289
311
  i0.ɵɵadvance();
290
- i0.ɵɵconditional(ctx_r4.IsExpanded(exec_r10) ? 15 : -1);
312
+ i0.ɵɵconditional(ctx_r2.IsExpanded(exec_r10) ? 15 : -1);
291
313
  } }
292
- function SchedulingActivityComponent_Conditional_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "table", 26)(1, "thead")(2, "tr");
294
- i0.ɵɵelement(3, "th", 49);
314
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
315
+ i0.ɵɵelementStart(0, "table", 23)(1, "thead")(2, "tr");
316
+ i0.ɵɵelement(3, "th", 46);
295
317
  i0.ɵɵelementStart(4, "th");
296
318
  i0.ɵɵtext(5, "Status");
297
319
  i0.ɵɵelementEnd();
@@ -308,45 +330,59 @@ function SchedulingActivityComponent_Conditional_24_Conditional_12_Template(rf,
308
330
  i0.ɵɵtext(13, "Error");
309
331
  i0.ɵɵelementEnd()()();
310
332
  i0.ɵɵelementStart(14, "tbody");
311
- i0.ɵɵrepeaterCreate(15, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Template, 16, 13, null, null, i0.ɵɵrepeaterTrackByIdentity);
333
+ i0.ɵɵrepeaterCreate(15, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_For_16_Template, 16, 13, null, null, i0.ɵɵrepeaterTrackByIdentity);
312
334
  i0.ɵɵelementEnd()();
313
335
  } if (rf & 2) {
314
- const ctx_r4 = i0.ɵɵnextContext(2);
336
+ const ctx_r2 = i0.ɵɵnextContext(3);
315
337
  i0.ɵɵadvance(15);
316
- i0.ɵɵrepeater(ctx_r4.FilteredExecutions);
338
+ i0.ɵɵrepeater(ctx_r2.FilteredExecutions);
317
339
  } }
318
- function SchedulingActivityComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
319
- i0.ɵɵelementStart(0, "div", 15);
320
- i0.ɵɵconditionalCreate(1, SchedulingActivityComponent_Conditional_24_Conditional_1_Template, 3, 0, "div", 18);
321
- i0.ɵɵconditionalCreate(2, SchedulingActivityComponent_Conditional_24_Conditional_2_Template, 18, 1, "div", 19);
322
- i0.ɵɵelementStart(3, "div", 19)(4, "div", 20)(5, "div", 21);
323
- i0.ɵɵelement(6, "i", 22);
340
+ function SchedulingActivityComponent_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
341
+ i0.ɵɵelementStart(0, "div", 13);
342
+ i0.ɵɵconditionalCreate(1, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_1_Template, 3, 0, "div", 15);
343
+ i0.ɵɵconditionalCreate(2, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_2_Template, 18, 1, "div", 16);
344
+ i0.ɵɵelementStart(3, "div", 16)(4, "div", 17)(5, "div", 18);
345
+ i0.ɵɵelement(6, "i", 19);
324
346
  i0.ɵɵtext(7, " Execution History ");
325
347
  i0.ɵɵelementEnd();
326
- i0.ɵɵelementStart(8, "span", 23);
348
+ i0.ɵɵelementStart(8, "span", 20);
327
349
  i0.ɵɵtext(9);
328
350
  i0.ɵɵelementEnd()();
329
- i0.ɵɵelementStart(10, "div", 24);
330
- i0.ɵɵconditionalCreate(11, SchedulingActivityComponent_Conditional_24_Conditional_11_Template, 4, 0, "div", 25);
331
- i0.ɵɵconditionalCreate(12, SchedulingActivityComponent_Conditional_24_Conditional_12_Template, 17, 0, "table", 26);
351
+ i0.ɵɵelementStart(10, "div", 21);
352
+ i0.ɵɵconditionalCreate(11, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_11_Template, 4, 0, "div", 22);
353
+ i0.ɵɵconditionalCreate(12, SchedulingActivityComponent_ng_template_2_Conditional_2_Conditional_12_Template, 17, 0, "table", 23);
332
354
  i0.ɵɵelementEnd()()();
333
355
  } if (rf & 2) {
334
- const ctx_r4 = i0.ɵɵnextContext();
356
+ const ctx_r2 = i0.ɵɵnextContext(2);
335
357
  i0.ɵɵadvance();
336
- i0.ɵɵconditional(ctx_r4.JobTypes.length > 0 ? 1 : -1);
358
+ i0.ɵɵconditional(ctx_r2.JobTypes.length > 0 ? 1 : -1);
337
359
  i0.ɵɵadvance();
338
- i0.ɵɵconditional(ctx_r4.Trends.length > 0 ? 2 : -1);
360
+ i0.ɵɵconditional(ctx_r2.Trends.length > 0 ? 2 : -1);
339
361
  i0.ɵɵadvance(7);
340
- i0.ɵɵtextInterpolate2("", ctx_r4.FilteredExecutions.length, " of ", ctx_r4.Executions.length);
362
+ i0.ɵɵtextInterpolate2("", ctx_r2.FilteredExecutions.length, " of ", ctx_r2.Executions.length);
341
363
  i0.ɵɵadvance(2);
342
- i0.ɵɵconditional(ctx_r4.FilteredExecutions.length === 0 ? 11 : -1);
364
+ i0.ɵɵconditional(ctx_r2.FilteredExecutions.length === 0 ? 11 : -1);
343
365
  i0.ɵɵadvance();
344
- i0.ɵɵconditional(ctx_r4.FilteredExecutions.length > 0 ? 12 : -1);
366
+ i0.ɵɵconditional(ctx_r2.FilteredExecutions.length > 0 ? 12 : -1);
367
+ } }
368
+ function SchedulingActivityComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
369
+ i0.ɵɵelementStart(0, "div", 11);
370
+ i0.ɵɵconditionalCreate(1, SchedulingActivityComponent_ng_template_2_Conditional_1_Template, 2, 0, "div", 12);
371
+ i0.ɵɵconditionalCreate(2, SchedulingActivityComponent_ng_template_2_Conditional_2_Template, 13, 6, "div", 13);
372
+ i0.ɵɵelementEnd();
373
+ } if (rf & 2) {
374
+ const ctx_r2 = i0.ɵɵnextContext();
375
+ i0.ɵɵadvance();
376
+ i0.ɵɵconditional(ctx_r2.IsLoading ? 1 : -1);
377
+ i0.ɵɵadvance();
378
+ i0.ɵɵconditional(!ctx_r2.IsLoading ? 2 : -1);
345
379
  } }
346
380
  export class SchedulingActivityComponent {
347
381
  schedulingService;
348
382
  cdr;
349
383
  initialState = {};
384
+ /** When true, the inner toolbar is hidden — the parent shell is rendering it in `<mj-page-header>` instead. */
385
+ HideToolbar = false;
350
386
  stateChange = new EventEmitter();
351
387
  Executions = [];
352
388
  FilteredExecutions = [];
@@ -483,6 +519,64 @@ export class SchedulingActivityComponent {
483
519
  this.JobNameFilter = name;
484
520
  this.jobNameSubject.next(name);
485
521
  }
522
+ get ActivityFilterFields() {
523
+ const statusOptions = this.StatusOptions.map(s => ({
524
+ text: s === '' ? 'All Statuses' : s,
525
+ value: s
526
+ }));
527
+ const jobOptions = [
528
+ { text: 'All Jobs', value: '' },
529
+ ...this.UniqueJobNames.map(n => ({ text: n, value: n }))
530
+ ];
531
+ return [
532
+ {
533
+ key: 'statusFilter',
534
+ type: 'dropdown',
535
+ label: 'Status',
536
+ icon: 'fa-solid fa-circle-info',
537
+ placeholder: 'All Statuses',
538
+ options: statusOptions
539
+ },
540
+ {
541
+ key: 'jobNameFilter',
542
+ type: 'dropdown',
543
+ label: 'Job',
544
+ icon: 'fa-solid fa-tag',
545
+ placeholder: 'All Jobs',
546
+ filterable: true,
547
+ options: jobOptions
548
+ }
549
+ ];
550
+ }
551
+ get ActivityFilterValues() {
552
+ return {
553
+ statusFilter: this.StatusFilter,
554
+ jobNameFilter: this.JobNameFilter
555
+ };
556
+ }
557
+ get ActiveFilterCount() {
558
+ let count = 0;
559
+ if (this.StatusFilter)
560
+ count++;
561
+ if (this.JobNameFilter)
562
+ count++;
563
+ return count;
564
+ }
565
+ OnFilterValuesChange(values) {
566
+ const next = (values ?? {});
567
+ if ((next.statusFilter ?? '') !== this.StatusFilter) {
568
+ this.OnStatusFilterChange(next.statusFilter ?? '');
569
+ }
570
+ if ((next.jobNameFilter ?? '') !== this.JobNameFilter) {
571
+ this.OnJobNameFilterChange(next.jobNameFilter ?? '');
572
+ }
573
+ }
574
+ ResetFilters() {
575
+ if (this.StatusFilter)
576
+ this.OnStatusFilterChange('');
577
+ if (this.JobNameFilter)
578
+ this.OnJobNameFilterChange('');
579
+ }
486
580
  ShouldShowLabel(index) {
487
581
  const total = this.Trends.length;
488
582
  if (total <= 10)
@@ -653,63 +747,22 @@ export class SchedulingActivityComponent {
653
747
  this.settingsPersistSubject.next();
654
748
  }
655
749
  static ɵfac = function SchedulingActivityComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SchedulingActivityComponent)(i0.ɵɵdirectiveInject(i1.SchedulingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
656
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingActivityComponent, selectors: [["app-scheduling-activity"]], inputs: { initialState: "initialState" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 25, vars: 5, consts: [[1, "activity-container"], [1, "activity-toolbar"], [1, "toolbar-left"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search executions...", 3, "input", "value"], [1, "filter-select", 3, "change", "value"], ["value", ""], [3, "value"], [1, "toolbar-right"], [1, "time-range-group"], [1, "range-btn", 3, "active"], ["mjButton", "", "variant", "secondary", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "loading-container"], [1, "activity-content"], [1, "range-btn", 3, "click"], ["text", "Loading activity...", "size", "medium"], [1, "type-cards-row"], [1, "panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "result-count"], [1, "panel-body", "table-container"], [1, "empty-state-small"], [1, "data-table"], [1, "type-card"], [1, "type-card-icon"], [1, "type-card-info"], [1, "type-card-name"], [1, "type-card-stats"], [1, "dot"], [1, "type-card-bar"], [1, "type-bar-fill"], [1, "fa-solid", "fa-chart-bar"], [1, "panel-body", "chart-container"], [1, "trend-chart"], [1, "chart-column"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-dot", "success"], [1, "legend-dot", "failure"], [1, "bars-wrapper"], [1, "bar", "success-bar", 3, "title"], [1, "bar", "failure-bar", 3, "height", "title"], [1, "chart-label"], [1, "bar", "failure-bar", 3, "title"], [1, "fa-solid", "fa-inbox"], [1, "col-expand"], [1, "exec-row", 3, "click"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "exec-status-badge", 3, "ngClass"], [1, "cell-name"], [1, "cell-meta"], [1, "cell-error"], [1, "exec-detail-row"], [1, "exec-detail-content"], [1, "exec-detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "exec-detail-actions"], [1, "detail-action-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "detail-action-btn", "secondary", 3, "click"], [1, "fa-solid", "fa-briefcase"], [1, "detail-value", "error-text"]], template: function SchedulingActivityComponent_Template(rf, ctx) { if (rf & 1) {
657
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
658
- i0.ɵɵelement(4, "i", 4);
659
- i0.ɵɵelementStart(5, "input", 5);
660
- i0.ɵɵlistener("input", function SchedulingActivityComponent_Template_input_input_5_listener($event) { return ctx.OnSearchChange($event.target.value); });
661
- i0.ɵɵelementEnd()();
662
- i0.ɵɵelementStart(6, "select", 6);
663
- i0.ɵɵlistener("change", function SchedulingActivityComponent_Template_select_change_6_listener($event) { return ctx.OnStatusFilterChange($event.target.value); });
664
- i0.ɵɵelementStart(7, "option", 7);
665
- i0.ɵɵtext(8, "All Statuses");
666
- i0.ɵɵelementEnd();
667
- i0.ɵɵrepeaterCreate(9, SchedulingActivityComponent_For_10_Template, 2, 2, "option", 8, i0.ɵɵrepeaterTrackByIdentity);
668
- i0.ɵɵelementEnd();
669
- i0.ɵɵelementStart(11, "select", 6);
670
- i0.ɵɵlistener("change", function SchedulingActivityComponent_Template_select_change_11_listener($event) { return ctx.OnJobNameFilterChange($event.target.value); });
671
- i0.ɵɵelementStart(12, "option", 7);
672
- i0.ɵɵtext(13, "All Jobs");
673
- i0.ɵɵelementEnd();
674
- i0.ɵɵrepeaterCreate(14, SchedulingActivityComponent_For_15_Template, 2, 2, "option", 8, i0.ɵɵrepeaterTrackByIdentity);
675
- i0.ɵɵelementEnd()();
676
- i0.ɵɵelementStart(16, "div", 9)(17, "div", 10);
677
- i0.ɵɵrepeaterCreate(18, SchedulingActivityComponent_For_19_Template, 2, 3, "button", 11, i0.ɵɵrepeaterTrackByIdentity);
678
- i0.ɵɵelementEnd();
679
- i0.ɵɵelementStart(20, "button", 12);
680
- i0.ɵɵlistener("click", function SchedulingActivityComponent_Template_button_click_20_listener() { return ctx.Refresh(); });
681
- i0.ɵɵelement(21, "i", 13);
682
- i0.ɵɵtext(22, " Refresh ");
683
- i0.ɵɵelementEnd()()();
684
- i0.ɵɵconditionalCreate(23, SchedulingActivityComponent_Conditional_23_Template, 2, 0, "div", 14);
685
- i0.ɵɵconditionalCreate(24, SchedulingActivityComponent_Conditional_24_Template, 13, 6, "div", 15);
686
- i0.ɵɵelementEnd();
750
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingActivityComponent, selectors: [["app-scheduling-activity"]], inputs: { initialState: "initialState", HideToolbar: "HideToolbar" }, outputs: { stateChange: "stateChange" }, standalone: false, decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Scheduling Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Execution history, trends, and job type statistics"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked"], ["toolbar", ""], ["Placeholder", "Search executions...", 3, "ValueChange", "Value"], [3, "Label", "Active"], [3, "Clicked", "Label", "Active"], [1, "activity-container"], [1, "loading-container"], [1, "activity-content"], ["text", "Loading activity...", "size", "medium"], [1, "type-cards-row"], [1, "panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "result-count"], [1, "panel-body", "table-container"], [1, "empty-state-small"], [1, "data-table"], [1, "type-card"], [1, "type-card-icon"], [1, "type-card-info"], [1, "type-card-name"], [1, "type-card-stats"], [1, "dot"], [1, "type-card-bar"], [1, "type-bar-fill"], [1, "fa-solid", "fa-chart-bar"], [1, "panel-body", "chart-container"], [1, "trend-chart"], [1, "chart-column"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-dot", "success"], [1, "legend-dot", "failure"], [1, "bars-wrapper"], [1, "bar", "success-bar", 3, "title"], [1, "bar", "failure-bar", 3, "height", "title"], [1, "chart-label"], [1, "bar", "failure-bar", 3, "title"], [1, "fa-solid", "fa-inbox"], [1, "col-expand"], [1, "exec-row", 3, "click"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "exec-status-badge", 3, "ngClass"], [1, "cell-name"], [1, "cell-meta"], [1, "cell-error"], [1, "exec-detail-row"], [1, "exec-detail-content"], [1, "exec-detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "exec-detail-actions"], [1, "detail-action-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "detail-action-btn", "secondary", 3, "click"], [1, "fa-solid", "fa-briefcase"], [1, "detail-value", "error-text"]], template: function SchedulingActivityComponent_Template(rf, ctx) { if (rf & 1) {
751
+ i0.ɵɵconditionalCreate(0, SchedulingActivityComponent_Conditional_0_Template, 1, 1, "ng-container")(1, SchedulingActivityComponent_Conditional_1_Template, 12, 6, "mj-page-layout");
752
+ i0.ɵɵtemplate(2, SchedulingActivityComponent_ng_template_2_Template, 3, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
687
753
  } if (rf & 2) {
688
- i0.ɵɵadvance(5);
689
- i0.ɵɵproperty("value", ctx.SearchTerm);
690
- i0.ɵɵadvance();
691
- i0.ɵɵproperty("value", ctx.StatusFilter);
692
- i0.ɵɵadvance(3);
693
- i0.ɵɵrepeater(ctx.StatusOptions.slice(1));
694
- i0.ɵɵadvance(2);
695
- i0.ɵɵproperty("value", ctx.JobNameFilter);
696
- i0.ɵɵadvance(3);
697
- i0.ɵɵrepeater(ctx.UniqueJobNames);
698
- i0.ɵɵadvance(4);
699
- i0.ɵɵrepeater(ctx.TimeRanges);
700
- i0.ɵɵadvance(5);
701
- i0.ɵɵconditional(ctx.IsLoading ? 23 : -1);
702
- i0.ɵɵadvance();
703
- i0.ɵɵconditional(!ctx.IsLoading ? 24 : -1);
704
- } }, dependencies: [i2.NgClass, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i4.MJButtonDirective, i5.LoadingComponent], styles: [".activity-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n\n\n.activity-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 0.85rem; }\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: var(--mj-text-primary); width: 100%;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.range-btn[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border: none;\n background: transparent;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.range-btn[_ngcontent-%COMP%]:last-child { border-right: none; }\n\n.range-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-sunken); }\n\n.range-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n\n\n.type-cards-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.type-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 14px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n flex: 1;\n min-width: 240px;\n transition: all 0.2s ease;\n}\n\n.type-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-card-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.type-card-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.type-card-name[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.type-card-stats[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.type-card-stats[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] {\n margin: 0 4px;\n}\n\n.type-card-bar[_ngcontent-%COMP%] {\n width: 60px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.type-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.5s;\n}\n\n\n\n.panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 16px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.chart-container[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.table-container[_ngcontent-%COMP%] {\n padding: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n\n\n.trend-chart[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n height: 220px;\n align-items: flex-end;\n padding-bottom: 50px;\n overflow-x: auto;\n}\n\n.chart-column[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 24px;\n max-width: 40px;\n height: 100%;\n}\n\n.bars-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1px;\n flex: 1;\n justify-content: flex-end;\n width: 100%;\n}\n\n.bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n transition: height 0.3s;\n}\n\n.success-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.failure-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-radius: 0;\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n margin-top: 6px;\n white-space: nowrap;\n text-align: center;\n transform: rotate(-45deg);\n transform-origin: top center;\n height: 40px;\n overflow: visible;\n}\n\n.chart-label.hidden-label[_ngcontent-%COMP%] {\n visibility: hidden;\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-top: 12px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.legend-dot.failure[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n\n\n.data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-sunken);\n z-index: 1;\n}\n\n.data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cell-name[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); }\n.cell-meta[_ngcontent-%COMP%] { color: var(--mj-text-secondary); }\n.cell-error[_ngcontent-%COMP%] { color: var(--mj-status-error); font-size: 0.8rem; max-width: 300px; }\n\n.exec-status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n.exec-status-badge.status-running[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n.exec-status-badge.status-success[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n.exec-status-badge.status-error[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n.exec-status-badge.status-warning[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n\n\n.col-expand[_ngcontent-%COMP%] {\n width: 32px;\n text-align: center;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.exec-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.exec-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.exec-row.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: transparent;\n}\n\n.exec-detail-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 0 !important;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.exec-detail-content[_ngcontent-%COMP%] {\n padding: 16px 20px 16px 48px;\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.exec-detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px 24px;\n margin-bottom: 14px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n}\n\n.detail-value.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n word-break: break-word;\n}\n\n.exec-detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 0.8rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.detail-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.empty-state-small[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 48px 16px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; color: var(--mj-border-strong); }\n.empty-state-small[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 0.85rem; }\n\n\n\n@media (max-width: 1024px) {\n .type-cards-row[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n .type-card[_ngcontent-%COMP%] {\n min-width: auto;\n }\n}\n\n@media (max-width: 768px) {\n .activity-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: space-between;\n }\n .search-box[_ngcontent-%COMP%] {\n min-width: auto;\n flex: 1;\n }\n .trend-chart[_ngcontent-%COMP%] {\n height: 120px;\n }\n .data-table[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n }\n}"], changeDetection: 0 });
754
+ i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
755
+ } }, dependencies: [i2.NgClass, i2.NgTemplateOutlet, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJPageSearchComponent, i3.MJFilterChipComponent, i3.MJFilterPopoverComponent, i3.MJFilterPanelComponent, i3.MJRefreshButtonComponent, i4.LoadingComponent], styles: [".activity-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n\n\n.activity-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 0.85rem; }\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: var(--mj-text-primary); width: 100%;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.range-btn[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border: none;\n background: transparent;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.range-btn[_ngcontent-%COMP%]:last-child { border-right: none; }\n\n.range-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-sunken); }\n\n.range-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n\n\n.type-cards-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.type-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 14px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n flex: 1;\n min-width: 240px;\n transition: all 0.2s ease;\n}\n\n.type-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-card-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.type-card-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.type-card-name[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.type-card-stats[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.type-card-stats[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] {\n margin: 0 4px;\n}\n\n.type-card-bar[_ngcontent-%COMP%] {\n width: 60px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.type-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.5s;\n}\n\n\n\n.panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 16px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.chart-container[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.table-container[_ngcontent-%COMP%] {\n padding: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n\n\n.trend-chart[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n height: 220px;\n align-items: flex-end;\n padding-bottom: 50px;\n overflow-x: auto;\n}\n\n.chart-column[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 24px;\n max-width: 40px;\n height: 100%;\n}\n\n.bars-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1px;\n flex: 1;\n justify-content: flex-end;\n width: 100%;\n}\n\n.bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n transition: height 0.3s;\n}\n\n.success-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.failure-bar[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-radius: 0;\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n margin-top: 6px;\n white-space: nowrap;\n text-align: center;\n transform: rotate(-45deg);\n transform-origin: top center;\n height: 40px;\n overflow: visible;\n}\n\n.chart-label.hidden-label[_ngcontent-%COMP%] {\n visibility: hidden;\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-top: 12px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.legend-dot.failure[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n\n\n.data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-sunken);\n z-index: 1;\n}\n\n.data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cell-name[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); }\n.cell-meta[_ngcontent-%COMP%] { color: var(--mj-text-secondary); }\n.cell-error[_ngcontent-%COMP%] { color: var(--mj-status-error); font-size: 0.8rem; max-width: 300px; }\n\n.exec-status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n.exec-status-badge.status-running[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n.exec-status-badge.status-success[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n.exec-status-badge.status-error[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n.exec-status-badge.status-warning[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n\n\n.col-expand[_ngcontent-%COMP%] {\n width: 32px;\n text-align: center;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.exec-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.exec-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.exec-row.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: transparent;\n}\n\n.exec-detail-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 0 !important;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.exec-detail-content[_ngcontent-%COMP%] {\n padding: 16px 20px 16px 48px;\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.exec-detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px 24px;\n margin-bottom: 14px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n}\n\n.detail-value.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n word-break: break-word;\n}\n\n.exec-detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 0.8rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.detail-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.empty-state-small[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 48px 16px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; color: var(--mj-border-strong); }\n.empty-state-small[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 0.85rem; }\n\n\n\n@media (max-width: 1024px) {\n .type-cards-row[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n .type-card[_ngcontent-%COMP%] {\n min-width: auto;\n }\n}\n\n@media (max-width: 768px) {\n .activity-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: space-between;\n }\n .search-box[_ngcontent-%COMP%] {\n min-width: auto;\n flex: 1;\n }\n .trend-chart[_ngcontent-%COMP%] {\n height: 120px;\n }\n .data-table[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n }\n}"], changeDetection: 0 });
705
756
  }
706
757
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingActivityComponent, [{
707
758
  type: Component,
708
- args: [{ standalone: false, selector: 'app-scheduling-activity', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"activity-container\">\n <!-- Toolbar -->\n <div class=\"activity-toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" placeholder=\"Search executions...\"\n [value]=\"SearchTerm\"\n (input)=\"OnSearchChange($any($event.target).value)\" />\n </div>\n <select class=\"filter-select\" [value]=\"StatusFilter\" (change)=\"OnStatusFilterChange($any($event.target).value)\">\n <option value=\"\">All Statuses</option>\n @for (s of StatusOptions.slice(1); track s) {\n <option [value]=\"s\">{{s}}</option>\n }\n </select>\n <select class=\"filter-select\" [value]=\"JobNameFilter\" (change)=\"OnJobNameFilterChange($any($event.target).value)\">\n <option value=\"\">All Jobs</option>\n @for (name of UniqueJobNames; track name) {\n <option [value]=\"name\">{{name}}</option>\n }\n </select>\n </div>\n <div class=\"toolbar-right\">\n <div class=\"time-range-group\">\n @for (range of TimeRanges; track range) {\n <button\n class=\"range-btn\"\n [class.active]=\"SelectedTimeRange === range.value\"\n (click)=\"OnTimeRangeChange(range.value)\">\n {{range.label}}\n </button>\n }\n </div>\n <button mjButton variant=\"secondary\" (click)=\"Refresh()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Refresh\n </button>\n </div>\n </div>\n\n <!-- Loading -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n @if (!IsLoading) {\n <div class=\"activity-content\">\n <!-- Job Type Summary Cards -->\n @if (JobTypes.length > 0) {\n <div class=\"type-cards-row\">\n @for (type of JobTypes; track type) {\n <div class=\"type-card\">\n <div class=\"type-card-icon\">\n <i [class]=\"GetTypeIcon(type.typeName)\"></i>\n </div>\n <div class=\"type-card-info\">\n <div class=\"type-card-name\">{{type.typeName}}</div>\n <div class=\"type-card-stats\">\n <span>{{type.activeJobsCount}} active</span>\n <span class=\"dot\">&middot;</span>\n <span>{{type.totalRuns}} runs</span>\n <span class=\"dot\">&middot;</span>\n <span [style.color]=\"GetSuccessRateColor(type.successRate)\">\n {{FormatPercentage(type.successRate)}}\n </span>\n </div>\n </div>\n <div class=\"type-card-bar\">\n <div class=\"type-bar-fill\"\n [style.width]=\"(type.successRate * 100) + '%'\"\n [style.background]=\"GetSuccessRateColor(type.successRate)\">\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Execution Trends Chart -->\n @if (Trends.length > 0) {\n <div class=\"panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-chart-bar\"></i> Execution Trends\n </div>\n <span class=\"result-count\">{{FilteredExecutions.length}} executions</span>\n </div>\n <div class=\"panel-body chart-container\">\n <div class=\"trend-chart\">\n @for (trend of Trends; track trend; let i = $index) {\n <div class=\"chart-column\">\n <div class=\"bars-wrapper\">\n <div class=\"bar success-bar\"\n [style.height]=\"GetBarHeight(trend.successes)\"\n [title]=\"trend.successes + ' successful'\">\n </div>\n @if (trend.failures > 0) {\n <div class=\"bar failure-bar\"\n [style.height]=\"GetBarHeight(trend.failures)\"\n [title]=\"trend.failures + ' failed'\">\n </div>\n }\n </div>\n <div class=\"chart-label\" [class.hidden-label]=\"!ShouldShowLabel(i)\" >{{FormatChartLabel(trend.timestamp)}}</div>\n </div>\n }\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\"><span class=\"legend-dot success\"></span> Successful</span>\n <span class=\"legend-item\"><span class=\"legend-dot failure\"></span> Failed</span>\n </div>\n </div>\n </div>\n }\n <!-- Execution History Table -->\n <div class=\"panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i> Execution History\n </div>\n <span class=\"result-count\">{{FilteredExecutions.length}} of {{Executions.length}}</span>\n </div>\n <div class=\"panel-body table-container\">\n @if (FilteredExecutions.length === 0) {\n <div class=\"empty-state-small\">\n <i class=\"fa-solid fa-inbox\"></i>\n <span>No executions found for this time range</span>\n </div>\n }\n @if (FilteredExecutions.length > 0) {\n <table class=\"data-table\">\n <thead>\n <tr>\n <th class=\"col-expand\"></th>\n <th>Status</th>\n <th>Job Name</th>\n <th>Started</th>\n <th>Duration</th>\n <th>Error</th>\n </tr>\n </thead>\n <tbody>\n @for (exec of FilteredExecutions; track exec) {\n <tr class=\"exec-row\" [class.expanded]=\"IsExpanded(exec)\" (click)=\"ToggleExpand(exec)\">\n <td class=\"col-expand\">\n <i class=\"fa-solid fa-chevron-right expand-icon\"\n [class.rotated]=\"IsExpanded(exec)\"></i>\n </td>\n <td>\n <span class=\"exec-status-badge\" [ngClass]=\"GetStatusClass(exec.status)\">\n <i [class]=\"GetStatusIcon(exec.status)\"></i>\n {{exec.status}}\n </span>\n </td>\n <td class=\"cell-name\">{{exec.jobName}}</td>\n <td class=\"cell-meta\">{{FormatDateTime(exec.startedAt)}}</td>\n <td class=\"cell-meta\">{{FormatDuration(exec.duration)}}</td>\n <td class=\"cell-error\">{{TruncateError(exec.errorMessage)}}</td>\n </tr>\n @if (IsExpanded(exec)) {\n <tr class=\"exec-detail-row\">\n <td [attr.colspan]=\"6\">\n <div class=\"exec-detail-content\">\n <div class=\"exec-detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Job Name</span>\n <span class=\"detail-value\">{{exec.jobName}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Started</span>\n <span class=\"detail-value\">{{FormatDateTime(exec.startedAt)}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Completed</span>\n <span class=\"detail-value\">{{exec.completedAt ? FormatDateTime(exec.completedAt) : '-'}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{FormatDuration(exec.duration)}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">\n <span class=\"exec-status-badge\" [ngClass]=\"GetStatusClass(exec.status)\">\n <i [class]=\"GetStatusIcon(exec.status)\"></i>\n {{exec.status}}\n </span>\n </span>\n </div>\n @if (exec.errorMessage) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Error</span>\n <span class=\"detail-value error-text\">{{exec.errorMessage}}</span>\n </div>\n }\n </div>\n <div class=\"exec-detail-actions\">\n <button class=\"detail-action-btn\" (click)=\"OpenExecutionRecord(exec, $event)\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Run Record\n </button>\n <button class=\"detail-action-btn secondary\" (click)=\"OpenJobRecord(exec, $event)\">\n <i class=\"fa-solid fa-briefcase\"></i> Open Job\n </button>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [".activity-container {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n/* \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.activity-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.toolbar-right {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.search-box {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.search-box i { color: var(--mj-text-muted); font-size: 0.85rem; }\n\n.search-box input {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: var(--mj-text-primary); width: 100%;\n}\n\n.filter-select {\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.range-btn {\n padding: 8px 14px;\n border: none;\n background: transparent;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.range-btn:last-child { border-right: none; }\n\n.range-btn:hover { background: var(--mj-bg-surface-sunken); }\n\n.range-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.control-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.result-count {\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n/* \u2500\u2500 Type Summary Cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.type-cards-row {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.type-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 14px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n flex: 1;\n min-width: 240px;\n transition: all 0.2s ease;\n}\n\n.type-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-card-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.type-card-info {\n flex: 1;\n}\n\n.type-card-name {\n font-weight: 700;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.type-card-stats {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.type-card-stats .dot {\n margin: 0 4px;\n}\n\n.type-card-bar {\n width: 60px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.type-bar-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.5s;\n}\n\n/* \u2500\u2500 Panels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.panel {\n background: var(--mj-bg-surface-card);\n border-radius: 16px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.panel-title {\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i { color: var(--mj-brand-primary); }\n\n.panel-body {\n padding: 20px;\n}\n\n.chart-container {\n padding: 20px;\n}\n\n.table-container {\n padding: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n/* \u2500\u2500 Trend Chart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.trend-chart {\n display: flex;\n gap: 4px;\n height: 220px;\n align-items: flex-end;\n padding-bottom: 50px;\n overflow-x: auto;\n}\n\n.chart-column {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 24px;\n max-width: 40px;\n height: 100%;\n}\n\n.bars-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1px;\n flex: 1;\n justify-content: flex-end;\n width: 100%;\n}\n\n.bar {\n width: 100%;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n transition: height 0.3s;\n}\n\n.success-bar {\n background: var(--mj-status-success);\n}\n\n.failure-bar {\n background: var(--mj-status-error);\n border-radius: 0;\n}\n\n.chart-label {\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n margin-top: 6px;\n white-space: nowrap;\n text-align: center;\n transform: rotate(-45deg);\n transform-origin: top center;\n height: 40px;\n overflow: visible;\n}\n\n.chart-label.hidden-label {\n visibility: hidden;\n}\n\n.chart-legend {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-top: 12px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success { background: var(--mj-status-success); }\n.legend-dot.failure { background: var(--mj-status-error); }\n\n/* \u2500\u2500 Data Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.data-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.data-table th {\n text-align: left;\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-sunken);\n z-index: 1;\n}\n\n.data-table td {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.data-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cell-name { font-weight: 600; color: var(--mj-text-primary); }\n.cell-meta { color: var(--mj-text-secondary); }\n.cell-error { color: var(--mj-status-error); font-size: 0.8rem; max-width: 300px; }\n\n.exec-status-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n.exec-status-badge.status-running { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n.exec-status-badge.status-success { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n.exec-status-badge.status-error { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n.exec-status-badge.status-warning { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n/* \u2500\u2500 Expandable Rows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.col-expand {\n width: 32px;\n text-align: center;\n}\n\n.expand-icon {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.expand-icon.rotated {\n transform: rotate(90deg);\n}\n\n.exec-row {\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.exec-row:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.exec-row.expanded {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: transparent;\n}\n\n.exec-detail-row td {\n padding: 0 !important;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.exec-detail-content {\n padding: 16px 20px 16px 48px;\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.exec-detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px 24px;\n margin-bottom: 14px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.detail-label {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value {\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n}\n\n.detail-value.error-text {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n word-break: break-word;\n}\n\n.exec-detail-actions {\n display: flex;\n gap: 8px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 0.8rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.detail-action-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn.secondary:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.empty-state-small {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 48px 16px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-small i { font-size: 2rem; color: var(--mj-border-strong); }\n.empty-state-small span { font-size: 0.85rem; }\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 */\n@media (max-width: 1024px) {\n .type-cards-row {\n flex-direction: column;\n }\n .type-card {\n min-width: auto;\n }\n}\n\n@media (max-width: 768px) {\n .activity-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right {\n flex-wrap: wrap;\n justify-content: space-between;\n }\n .search-box {\n min-width: auto;\n flex: 1;\n }\n .trend-chart {\n height: 120px;\n }\n .data-table {\n font-size: 0.8rem;\n }\n}\n"] }]
759
+ args: [{ standalone: false, selector: 'app-scheduling-activity', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (HideToolbar) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n <mj-page-layout>\n <mj-page-header\n Title=\"Scheduling Activity\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Execution history, trends, and job type statistics\">\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ResetFilters()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n (Reset)=\"ResetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search executions...\"\n [Value]=\"SearchTerm\"\n (ValueChange)=\"OnSearchChange($event)\">\n </mj-page-search>\n @for (range of TimeRanges; track range.value) {\n <mj-filter-chip\n [Label]=\"range.label\"\n [Active]=\"SelectedTimeRange === range.value\"\n (Clicked)=\"OnTimeRangeChange(range.value)\">\n </mj-filter-chip>\n }\n </div>\n </mj-page-header>\n <mj-page-body>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </mj-page-body>\n </mj-page-layout>\n}\n\n<ng-template #content>\n<div class=\"activity-container\">\n\n <!-- Loading -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n @if (!IsLoading) {\n <div class=\"activity-content\">\n <!-- Job Type Summary Cards -->\n @if (JobTypes.length > 0) {\n <div class=\"type-cards-row\">\n @for (type of JobTypes; track type) {\n <div class=\"type-card\">\n <div class=\"type-card-icon\">\n <i [class]=\"GetTypeIcon(type.typeName)\"></i>\n </div>\n <div class=\"type-card-info\">\n <div class=\"type-card-name\">{{type.typeName}}</div>\n <div class=\"type-card-stats\">\n <span>{{type.activeJobsCount}} active</span>\n <span class=\"dot\">&middot;</span>\n <span>{{type.totalRuns}} runs</span>\n <span class=\"dot\">&middot;</span>\n <span [style.color]=\"GetSuccessRateColor(type.successRate)\">\n {{FormatPercentage(type.successRate)}}\n </span>\n </div>\n </div>\n <div class=\"type-card-bar\">\n <div class=\"type-bar-fill\"\n [style.width]=\"(type.successRate * 100) + '%'\"\n [style.background]=\"GetSuccessRateColor(type.successRate)\">\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Execution Trends Chart -->\n @if (Trends.length > 0) {\n <div class=\"panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-chart-bar\"></i> Execution Trends\n </div>\n <span class=\"result-count\">{{FilteredExecutions.length}} executions</span>\n </div>\n <div class=\"panel-body chart-container\">\n <div class=\"trend-chart\">\n @for (trend of Trends; track trend; let i = $index) {\n <div class=\"chart-column\">\n <div class=\"bars-wrapper\">\n <div class=\"bar success-bar\"\n [style.height]=\"GetBarHeight(trend.successes)\"\n [title]=\"trend.successes + ' successful'\">\n </div>\n @if (trend.failures > 0) {\n <div class=\"bar failure-bar\"\n [style.height]=\"GetBarHeight(trend.failures)\"\n [title]=\"trend.failures + ' failed'\">\n </div>\n }\n </div>\n <div class=\"chart-label\" [class.hidden-label]=\"!ShouldShowLabel(i)\" >{{FormatChartLabel(trend.timestamp)}}</div>\n </div>\n }\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\"><span class=\"legend-dot success\"></span> Successful</span>\n <span class=\"legend-item\"><span class=\"legend-dot failure\"></span> Failed</span>\n </div>\n </div>\n </div>\n }\n <!-- Execution History Table -->\n <div class=\"panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i> Execution History\n </div>\n <span class=\"result-count\">{{FilteredExecutions.length}} of {{Executions.length}}</span>\n </div>\n <div class=\"panel-body table-container\">\n @if (FilteredExecutions.length === 0) {\n <div class=\"empty-state-small\">\n <i class=\"fa-solid fa-inbox\"></i>\n <span>No executions found for this time range</span>\n </div>\n }\n @if (FilteredExecutions.length > 0) {\n <table class=\"data-table\">\n <thead>\n <tr>\n <th class=\"col-expand\"></th>\n <th>Status</th>\n <th>Job Name</th>\n <th>Started</th>\n <th>Duration</th>\n <th>Error</th>\n </tr>\n </thead>\n <tbody>\n @for (exec of FilteredExecutions; track exec) {\n <tr class=\"exec-row\" [class.expanded]=\"IsExpanded(exec)\" (click)=\"ToggleExpand(exec)\">\n <td class=\"col-expand\">\n <i class=\"fa-solid fa-chevron-right expand-icon\"\n [class.rotated]=\"IsExpanded(exec)\"></i>\n </td>\n <td>\n <span class=\"exec-status-badge\" [ngClass]=\"GetStatusClass(exec.status)\">\n <i [class]=\"GetStatusIcon(exec.status)\"></i>\n {{exec.status}}\n </span>\n </td>\n <td class=\"cell-name\">{{exec.jobName}}</td>\n <td class=\"cell-meta\">{{FormatDateTime(exec.startedAt)}}</td>\n <td class=\"cell-meta\">{{FormatDuration(exec.duration)}}</td>\n <td class=\"cell-error\">{{TruncateError(exec.errorMessage)}}</td>\n </tr>\n @if (IsExpanded(exec)) {\n <tr class=\"exec-detail-row\">\n <td [attr.colspan]=\"6\">\n <div class=\"exec-detail-content\">\n <div class=\"exec-detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Job Name</span>\n <span class=\"detail-value\">{{exec.jobName}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Started</span>\n <span class=\"detail-value\">{{FormatDateTime(exec.startedAt)}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Completed</span>\n <span class=\"detail-value\">{{exec.completedAt ? FormatDateTime(exec.completedAt) : '-'}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{FormatDuration(exec.duration)}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">\n <span class=\"exec-status-badge\" [ngClass]=\"GetStatusClass(exec.status)\">\n <i [class]=\"GetStatusIcon(exec.status)\"></i>\n {{exec.status}}\n </span>\n </span>\n </div>\n @if (exec.errorMessage) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Error</span>\n <span class=\"detail-value error-text\">{{exec.errorMessage}}</span>\n </div>\n }\n </div>\n <div class=\"exec-detail-actions\">\n <button class=\"detail-action-btn\" (click)=\"OpenExecutionRecord(exec, $event)\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Run Record\n </button>\n <button class=\"detail-action-btn secondary\" (click)=\"OpenJobRecord(exec, $event)\">\n <i class=\"fa-solid fa-briefcase\"></i> Open Job\n </button>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n </div>\n </div>\n </div>\n }\n</div>\n</ng-template>\n", styles: [".activity-container {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n/* \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.activity-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.toolbar-right {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.search-box {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.search-box i { color: var(--mj-text-muted); font-size: 0.85rem; }\n\n.search-box input {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: var(--mj-text-primary); width: 100%;\n}\n\n.filter-select {\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.range-btn {\n padding: 8px 14px;\n border: none;\n background: transparent;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.range-btn:last-child { border-right: none; }\n\n.range-btn:hover { background: var(--mj-bg-surface-sunken); }\n\n.range-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.control-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.result-count {\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n/* \u2500\u2500 Type Summary Cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.type-cards-row {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.type-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 14px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n flex: 1;\n min-width: 240px;\n transition: all 0.2s ease;\n}\n\n.type-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-card-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.type-card-info {\n flex: 1;\n}\n\n.type-card-name {\n font-weight: 700;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.type-card-stats {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.type-card-stats .dot {\n margin: 0 4px;\n}\n\n.type-card-bar {\n width: 60px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.type-bar-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.5s;\n}\n\n/* \u2500\u2500 Panels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.panel {\n background: var(--mj-bg-surface-card);\n border-radius: 16px;\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.panel-title {\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i { color: var(--mj-brand-primary); }\n\n.panel-body {\n padding: 20px;\n}\n\n.chart-container {\n padding: 20px;\n}\n\n.table-container {\n padding: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n/* \u2500\u2500 Trend Chart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.trend-chart {\n display: flex;\n gap: 4px;\n height: 220px;\n align-items: flex-end;\n padding-bottom: 50px;\n overflow-x: auto;\n}\n\n.chart-column {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 24px;\n max-width: 40px;\n height: 100%;\n}\n\n.bars-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1px;\n flex: 1;\n justify-content: flex-end;\n width: 100%;\n}\n\n.bar {\n width: 100%;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n transition: height 0.3s;\n}\n\n.success-bar {\n background: var(--mj-status-success);\n}\n\n.failure-bar {\n background: var(--mj-status-error);\n border-radius: 0;\n}\n\n.chart-label {\n font-size: 0.6rem;\n color: var(--mj-text-muted);\n margin-top: 6px;\n white-space: nowrap;\n text-align: center;\n transform: rotate(-45deg);\n transform-origin: top center;\n height: 40px;\n overflow: visible;\n}\n\n.chart-label.hidden-label {\n visibility: hidden;\n}\n\n.chart-legend {\n display: flex;\n justify-content: center;\n gap: 20px;\n margin-top: 12px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success { background: var(--mj-status-success); }\n.legend-dot.failure { background: var(--mj-status-error); }\n\n/* \u2500\u2500 Data Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.data-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.data-table th {\n text-align: left;\n font-size: 0.7rem;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-sunken);\n z-index: 1;\n}\n\n.data-table td {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.data-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cell-name { font-weight: 600; color: var(--mj-text-primary); }\n.cell-meta { color: var(--mj-text-secondary); }\n.cell-error { color: var(--mj-status-error); font-size: 0.8rem; max-width: 300px; }\n\n.exec-status-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n.exec-status-badge.status-running { background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface)); color: var(--mj-brand-primary); }\n.exec-status-badge.status-success { background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface)); color: var(--mj-status-success); }\n.exec-status-badge.status-error { background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface)); color: var(--mj-status-error); }\n.exec-status-badge.status-warning { background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface)); color: var(--mj-status-warning); }\n\n/* \u2500\u2500 Expandable Rows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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.col-expand {\n width: 32px;\n text-align: center;\n}\n\n.expand-icon {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.expand-icon.rotated {\n transform: rotate(90deg);\n}\n\n.exec-row {\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.exec-row:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.exec-row.expanded {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: transparent;\n}\n\n.exec-detail-row td {\n padding: 0 !important;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.exec-detail-content {\n padding: 16px 20px 16px 48px;\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.exec-detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px 24px;\n margin-bottom: 14px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.detail-label {\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value {\n font-size: 0.85rem;\n color: var(--mj-text-primary);\n}\n\n.detail-value.error-text {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n word-break: break-word;\n}\n\n.exec-detail-actions {\n display: flex;\n gap: 8px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 0.8rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.detail-action-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-action-btn.secondary:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.empty-state-small {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 48px 16px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-small i { font-size: 2rem; color: var(--mj-border-strong); }\n.empty-state-small span { font-size: 0.85rem; }\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 */\n@media (max-width: 1024px) {\n .type-cards-row {\n flex-direction: column;\n }\n .type-card {\n min-width: auto;\n }\n}\n\n@media (max-width: 768px) {\n .activity-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right {\n flex-wrap: wrap;\n justify-content: space-between;\n }\n .search-box {\n min-width: auto;\n flex: 1;\n }\n .trend-chart {\n height: 120px;\n }\n .data-table {\n font-size: 0.8rem;\n }\n}\n"] }]
709
760
  }], () => [{ type: i1.SchedulingInstrumentationService }, { type: i0.ChangeDetectorRef }], { initialState: [{
710
761
  type: Input
762
+ }], HideToolbar: [{
763
+ type: Input
711
764
  }], stateChange: [{
712
765
  type: Output
713
766
  }] }); })();
714
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingActivityComponent, { className: "SchedulingActivityComponent", filePath: "src/Scheduling/components/scheduling-activity.component.ts", lineNumber: 23 }); })();
767
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingActivityComponent, { className: "SchedulingActivityComponent", filePath: "src/Scheduling/components/scheduling-activity.component.ts", lineNumber: 24 }); })();
715
768
  //# sourceMappingURL=scheduling-activity.component.js.map