@memberjunction/ng-dashboards 3.4.0 → 4.1.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 (458) hide show
  1. package/README.md +102 -339
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
  3. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  4. package/dist/AI/components/agents/agent-configuration.component.js +103 -44
  5. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
  7. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  8. package/dist/AI/components/agents/agent-editor.component.js +149 -211
  9. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  10. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
  11. package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
  12. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
  14. package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
  15. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  16. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
  17. package/dist/AI/components/charts/time-series-chart.component.js +6 -7
  18. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
  20. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  21. package/dist/AI/components/execution-monitoring.component.js +33 -37
  22. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  23. package/dist/AI/components/models/model-management.component.d.ts +3 -6
  24. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  25. package/dist/AI/components/models/model-management.component.js +34 -27
  26. package/dist/AI/components/models/model-management.component.js.map +1 -1
  27. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  28. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
  29. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  30. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
  31. package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
  32. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  33. package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
  34. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  35. package/dist/AI/components/prompts/prompt-management.component.js +34 -32
  36. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  37. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  38. package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
  39. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  40. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
  41. package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
  42. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  43. package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
  44. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  45. package/dist/AI/components/system/system-configuration.component.js +26 -27
  46. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  47. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  48. package/dist/AI/components/widgets/kpi-card.component.js +52 -42
  49. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  50. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
  51. package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
  52. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  53. package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
  54. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  55. package/dist/APIKeys/api-applications-panel.component.js +193 -189
  56. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  57. package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
  58. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  59. package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
  60. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  61. package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
  62. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  63. package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
  64. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  65. package/dist/APIKeys/api-key-list.component.d.ts +0 -2
  66. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  67. package/dist/APIKeys/api-key-list.component.js +113 -114
  68. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  69. package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
  70. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  71. package/dist/APIKeys/api-keys-resource.component.js +294 -302
  72. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  73. package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
  74. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  75. package/dist/APIKeys/api-scopes-panel.component.js +151 -155
  76. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  77. package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
  78. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  79. package/dist/APIKeys/api-usage-panel.component.js +237 -234
  80. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  81. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  82. package/dist/Actions/components/actions-list-view.component.js +15 -14
  83. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  84. package/dist/Actions/components/actions-overview.component.d.ts +3 -6
  85. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  86. package/dist/Actions/components/actions-overview.component.js +17 -19
  87. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  88. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  89. package/dist/Actions/components/categories-list-view.component.js +6 -6
  90. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  91. package/dist/Actions/components/code-management.component.d.ts +0 -4
  92. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  93. package/dist/Actions/components/code-management.component.js +3 -9
  94. package/dist/Actions/components/code-management.component.js.map +1 -1
  95. package/dist/Actions/components/entity-integration.component.d.ts +0 -4
  96. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  97. package/dist/Actions/components/entity-integration.component.js +3 -9
  98. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  99. package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
  100. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  101. package/dist/Actions/components/execution-monitoring.component.js +13 -16
  102. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  103. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
  104. package/dist/Actions/components/executions-list-view.component.js +3 -3
  105. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  106. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
  107. package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
  108. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  109. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  110. package/dist/Actions/components/explorer/action-card.component.js +11 -10
  111. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  112. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
  113. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  114. package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
  115. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  116. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
  117. package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
  118. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
  120. package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
  121. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  122. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
  123. package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
  124. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  125. package/dist/Actions/components/explorer/index.d.ts +0 -1
  126. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  127. package/dist/Actions/components/explorer/index.js +0 -4
  128. package/dist/Actions/components/explorer/index.js.map +1 -1
  129. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  130. package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
  131. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  132. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  133. package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
  134. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  135. package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
  136. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  137. package/dist/Actions/components/scheduled-actions.component.js +3 -9
  138. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  139. package/dist/Actions/components/security-permissions.component.d.ts +0 -4
  140. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  141. package/dist/Actions/components/security-permissions.component.js +3 -9
  142. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  143. package/dist/Actions/index.d.ts +0 -7
  144. package/dist/Actions/index.d.ts.map +1 -1
  145. package/dist/Actions/index.js +0 -8
  146. package/dist/Actions/index.js.map +1 -1
  147. package/dist/Communication/communication-dashboard.component.d.ts +0 -1
  148. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  149. package/dist/Communication/communication-dashboard.component.js +38 -51
  150. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  151. package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
  152. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  153. package/dist/Communication/communication-logs-resource.component.js +112 -108
  154. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  155. package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
  156. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  157. package/dist/Communication/communication-monitor-resource.component.js +210 -201
  158. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  159. package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
  160. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  161. package/dist/Communication/communication-providers-resource.component.js +136 -124
  162. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  163. package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
  164. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  165. package/dist/Communication/communication-runs-resource.component.js +91 -88
  166. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
  168. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-templates-resource.component.js +139 -122
  170. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  171. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
  172. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  173. package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
  174. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  175. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  176. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
  177. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  178. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  179. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
  180. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  181. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  182. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
  183. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  184. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
  185. package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
  186. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  187. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
  188. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
  189. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  190. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  191. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
  192. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  193. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
  194. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
  195. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  196. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
  197. package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
  198. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  199. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
  200. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
  201. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  202. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  203. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
  204. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  205. package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
  206. package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
  207. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  208. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  209. package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
  210. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  211. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  212. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
  213. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  214. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
  215. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  216. package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
  217. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  218. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
  219. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  220. package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
  221. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  222. package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
  223. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  224. package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
  225. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  226. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
  227. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  228. package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
  229. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  230. package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
  231. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  232. package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
  233. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  234. package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
  235. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  236. package/dist/Credentials/credentials-dashboard.component.js +31 -44
  237. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  238. package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
  239. package/dist/Credentials/pipes/group-by.pipe.js +2 -1
  240. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  241. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
  242. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  243. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
  244. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  245. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  246. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
  247. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  248. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
  249. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
  250. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  251. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  252. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
  253. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  254. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  255. package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
  256. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  257. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -4
  258. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  259. package/dist/DataExplorer/data-explorer-dashboard.component.js +83 -64
  260. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  261. package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
  262. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  263. package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
  264. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  265. package/dist/DataExplorer/index.d.ts +2 -2
  266. package/dist/DataExplorer/index.d.ts.map +1 -1
  267. package/dist/DataExplorer/index.js +2 -2
  268. package/dist/DataExplorer/index.js.map +1 -1
  269. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
  270. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  271. package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
  272. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  273. package/dist/Home/home-application.d.ts +109 -27
  274. package/dist/Home/home-application.d.ts.map +1 -1
  275. package/dist/Home/home-application.js +351 -75
  276. package/dist/Home/home-application.js.map +1 -1
  277. package/dist/Home/home-dashboard.component.d.ts +48 -12
  278. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  279. package/dist/Home/home-dashboard.component.js +267 -187
  280. package/dist/Home/home-dashboard.component.js.map +1 -1
  281. package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
  282. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  283. package/dist/Lists/components/lists-browse-resource.component.js +761 -685
  284. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  285. package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
  286. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  287. package/dist/Lists/components/lists-categories-resource.component.js +340 -316
  288. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  289. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
  290. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  291. package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
  292. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  293. package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
  294. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  295. package/dist/Lists/components/lists-operations-resource.component.js +508 -455
  296. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  297. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  298. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
  299. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  300. package/dist/Lists/index.d.ts +0 -1
  301. package/dist/Lists/index.d.ts.map +1 -1
  302. package/dist/Lists/index.js +0 -11
  303. package/dist/Lists/index.js.map +1 -1
  304. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
  305. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  306. package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
  307. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  308. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
  309. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
  310. package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
  311. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  312. package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
  313. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  314. package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
  315. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  316. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
  317. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
  318. package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
  319. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  320. package/dist/MCP/index.d.ts +5 -5
  321. package/dist/MCP/index.d.ts.map +1 -1
  322. package/dist/MCP/index.js +5 -5
  323. package/dist/MCP/index.js.map +1 -1
  324. package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
  325. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  326. package/dist/MCP/mcp-dashboard.component.js +976 -697
  327. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  328. package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
  329. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
  330. package/dist/MCP/mcp-filter-panel.component.js +288 -0
  331. package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
  332. package/dist/MCP/mcp-resource.component.d.ts +11 -5
  333. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  334. package/dist/MCP/mcp-resource.component.js +8 -9
  335. package/dist/MCP/mcp-resource.component.js.map +1 -1
  336. package/dist/MCP/mcp.module.d.ts +16 -19
  337. package/dist/MCP/mcp.module.d.ts.map +1 -1
  338. package/dist/MCP/mcp.module.js +17 -26
  339. package/dist/MCP/mcp.module.js.map +1 -1
  340. package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
  341. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
  342. package/dist/MCP/services/mcp-tools.service.js +5 -6
  343. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  344. package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
  345. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  346. package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
  347. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  348. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
  349. package/dist/Scheduling/components/job-slideout.component.js +117 -116
  350. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  351. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
  352. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  353. package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
  354. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  355. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  356. package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
  357. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  358. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
  359. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  360. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
  361. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  362. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  363. package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
  364. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  365. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
  366. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  367. package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
  368. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  369. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  370. package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
  371. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  372. package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
  373. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  374. package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
  375. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  376. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
  377. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  378. package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
  379. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  380. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  381. package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
  382. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  383. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  384. package/dist/Testing/components/testing-analytics.component.js +30 -30
  385. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  386. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
  388. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  389. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  390. package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
  391. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  392. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  393. package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
  394. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  395. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  396. package/dist/Testing/components/testing-explorer.component.js +42 -35
  397. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  398. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  399. package/dist/Testing/components/testing-review-resource.component.js +3 -3
  400. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  401. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  402. package/dist/Testing/components/testing-review.component.js +16 -16
  403. package/dist/Testing/components/testing-review.component.js.map +1 -1
  404. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  405. package/dist/Testing/components/testing-runs-resource.component.js +3 -3
  406. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  407. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  408. package/dist/Testing/components/testing-runs.component.js +15 -15
  409. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  410. package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
  411. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
  412. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  413. package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
  414. package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
  415. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  416. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  417. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
  418. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  419. package/dist/Testing/testing-dashboard.component.d.ts +0 -1
  420. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  421. package/dist/Testing/testing-dashboard.component.js +9 -8
  422. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  423. package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
  424. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
  425. package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
  426. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
  427. package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
  428. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
  429. package/dist/VersionHistory/components/graph-resource.component.js +521 -0
  430. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
  431. package/dist/VersionHistory/components/index.d.ts +5 -0
  432. package/dist/VersionHistory/components/index.d.ts.map +1 -0
  433. package/dist/VersionHistory/components/index.js +5 -0
  434. package/dist/VersionHistory/components/index.js.map +1 -0
  435. package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
  436. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
  437. package/dist/VersionHistory/components/labels-resource.component.js +968 -0
  438. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
  439. package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
  440. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
  441. package/dist/VersionHistory/components/restore-resource.component.js +472 -0
  442. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
  443. package/dist/VersionHistory/index.d.ts +2 -0
  444. package/dist/VersionHistory/index.d.ts.map +1 -0
  445. package/dist/VersionHistory/index.js +2 -0
  446. package/dist/VersionHistory/index.js.map +1 -0
  447. package/dist/module.d.ts +42 -36
  448. package/dist/module.d.ts.map +1 -1
  449. package/dist/module.js +41 -7
  450. package/dist/module.js.map +1 -1
  451. package/dist/public-api.d.ts +20 -19
  452. package/dist/public-api.d.ts.map +1 -1
  453. package/dist/public-api.js +22 -120
  454. package/dist/public-api.js.map +1 -1
  455. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  456. package/dist/shared/pipes/highlight-search.pipe.js +2 -1
  457. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  458. package/package.json +64 -62
@@ -9,8 +9,8 @@ import * as i1 from "../services/scheduling-instrumentation.service";
9
9
  import * as i2 from "@angular/common";
10
10
  import * as i3 from "@angular/forms";
11
11
  import * as i4 from "@memberjunction/ng-shared-generic";
12
- function SchedulingActivityComponent_option_9_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "option", 16);
12
+ function SchedulingActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "option", 8);
14
14
  i0.ɵɵtext(1);
15
15
  i0.ɵɵelementEnd();
16
16
  } if (rf & 2) {
@@ -19,8 +19,8 @@ function SchedulingActivityComponent_option_9_Template(rf, ctx) { if (rf & 1) {
19
19
  i0.ɵɵadvance();
20
20
  i0.ɵɵtextInterpolate(s_r1);
21
21
  } }
22
- function SchedulingActivityComponent_option_13_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "option", 16);
22
+ function SchedulingActivityComponent_For_15_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "option", 8);
24
24
  i0.ɵɵtext(1);
25
25
  i0.ɵɵelementEnd();
26
26
  } if (rf & 2) {
@@ -29,10 +29,10 @@ function SchedulingActivityComponent_option_13_Template(rf, ctx) { if (rf & 1) {
29
29
  i0.ɵɵadvance();
30
30
  i0.ɵɵtextInterpolate(name_r2);
31
31
  } }
32
- function SchedulingActivityComponent_button_16_Template(rf, ctx) { if (rf & 1) {
32
+ function SchedulingActivityComponent_For_19_Template(rf, ctx) { if (rf & 1) {
33
33
  const _r3 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "button", 17);
35
- i0.ɵɵlistener("click", function SchedulingActivityComponent_button_16_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)); });
34
+ i0.ɵɵelementStart(0, "button", 16);
35
+ 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)); });
36
36
  i0.ɵɵtext(1);
37
37
  i0.ɵɵelementEnd();
38
38
  } if (rf & 2) {
@@ -42,35 +42,35 @@ function SchedulingActivityComponent_button_16_Template(rf, ctx) { if (rf & 1) {
42
42
  i0.ɵɵadvance();
43
43
  i0.ɵɵtextInterpolate1(" ", range_r4.label, " ");
44
44
  } }
45
- function SchedulingActivityComponent_div_20_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "div", 18);
47
- i0.ɵɵelement(1, "mj-loading", 19);
45
+ function SchedulingActivityComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
46
+ i0.ɵɵelementStart(0, "div", 14);
47
+ i0.ɵɵelement(1, "mj-loading", 17);
48
48
  i0.ɵɵelementEnd();
49
49
  } }
50
- function SchedulingActivityComponent_div_21_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
50
+ function SchedulingActivityComponent_Conditional_24_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementStart(0, "div", 27)(1, "div", 28);
52
52
  i0.ɵɵelement(2, "i");
53
53
  i0.ɵɵelementEnd();
54
- i0.ɵɵelementStart(3, "div", 35)(4, "div", 36);
54
+ i0.ɵɵelementStart(3, "div", 29)(4, "div", 30);
55
55
  i0.ɵɵtext(5);
56
56
  i0.ɵɵelementEnd();
57
- i0.ɵɵelementStart(6, "div", 37)(7, "span");
57
+ i0.ɵɵelementStart(6, "div", 31)(7, "span");
58
58
  i0.ɵɵtext(8);
59
59
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(9, "span", 38);
60
+ i0.ɵɵelementStart(9, "span", 32);
61
61
  i0.ɵɵtext(10, "\u00B7");
62
62
  i0.ɵɵelementEnd();
63
63
  i0.ɵɵelementStart(11, "span");
64
64
  i0.ɵɵtext(12);
65
65
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(13, "span", 38);
66
+ i0.ɵɵelementStart(13, "span", 32);
67
67
  i0.ɵɵtext(14, "\u00B7");
68
68
  i0.ɵɵelementEnd();
69
69
  i0.ɵɵelementStart(15, "span");
70
70
  i0.ɵɵtext(16);
71
71
  i0.ɵɵelementEnd()()();
72
- i0.ɵɵelementStart(17, "div", 39);
73
- i0.ɵɵelement(18, "div", 40);
72
+ i0.ɵɵelementStart(17, "div", 33);
73
+ i0.ɵɵelement(18, "div", 34);
74
74
  i0.ɵɵelementEnd()();
75
75
  } if (rf & 2) {
76
76
  const type_r6 = ctx.$implicit;
@@ -90,83 +90,83 @@ function SchedulingActivityComponent_div_21_div_1_div_1_Template(rf, ctx) { if (
90
90
  i0.ɵɵadvance(2);
91
91
  i0.ɵɵstyleProp("width", type_r6.successRate * 100 + "%")("background", ctx_r4.GetSuccessRateColor(type_r6.successRate));
92
92
  } }
93
- function SchedulingActivityComponent_div_21_div_1_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "div", 31);
95
- i0.ɵɵtemplate(1, SchedulingActivityComponent_div_21_div_1_div_1_Template, 19, 12, "div", 32);
93
+ function SchedulingActivityComponent_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelementStart(0, "div", 18);
95
+ i0.ɵɵrepeaterCreate(1, SchedulingActivityComponent_Conditional_24_Conditional_1_For_2_Template, 19, 12, "div", 27, i0.ɵɵrepeaterTrackByIdentity);
96
96
  i0.ɵɵelementEnd();
97
97
  } if (rf & 2) {
98
98
  const ctx_r4 = i0.ɵɵnextContext(2);
99
99
  i0.ɵɵadvance();
100
- i0.ɵɵproperty("ngForOf", ctx_r4.JobTypes);
100
+ i0.ɵɵrepeater(ctx_r4.JobTypes);
101
101
  } }
102
- function SchedulingActivityComponent_div_21_div_2_div_9_div_3_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵelement(0, "div", 54);
102
+ function SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵelement(0, "div", 47);
104
104
  } if (rf & 2) {
105
105
  const trend_r7 = i0.ɵɵnextContext().$implicit;
106
106
  const ctx_r4 = i0.ɵɵnextContext(3);
107
107
  i0.ɵɵstyleProp("height", ctx_r4.GetBarHeight(trend_r7.failures));
108
108
  i0.ɵɵproperty("title", trend_r7.failures + " failed");
109
109
  } }
110
- function SchedulingActivityComponent_div_21_div_2_div_9_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "div", 49)(1, "div", 50);
112
- i0.ɵɵelement(2, "div", 51);
113
- i0.ɵɵtemplate(3, SchedulingActivityComponent_div_21_div_2_div_9_div_3_Template, 1, 3, "div", 52);
110
+ function SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Template(rf, ctx) { if (rf & 1) {
111
+ i0.ɵɵelementStart(0, "div", 38)(1, "div", 43);
112
+ i0.ɵɵelement(2, "div", 44);
113
+ i0.ɵɵconditionalCreate(3, SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Conditional_3_Template, 1, 3, "div", 45);
114
114
  i0.ɵɵelementEnd();
115
- i0.ɵɵelementStart(4, "div", 53);
115
+ i0.ɵɵelementStart(4, "div", 46);
116
116
  i0.ɵɵtext(5);
117
117
  i0.ɵɵelementEnd()();
118
118
  } if (rf & 2) {
119
119
  const trend_r7 = ctx.$implicit;
120
- const i_r8 = ctx.index;
120
+ const ɵ$index_105_r8 = ctx.$index;
121
121
  const ctx_r4 = i0.ɵɵnextContext(3);
122
122
  i0.ɵɵadvance(2);
123
123
  i0.ɵɵstyleProp("height", ctx_r4.GetBarHeight(trend_r7.successes));
124
124
  i0.ɵɵproperty("title", trend_r7.successes + " successful");
125
125
  i0.ɵɵadvance();
126
- i0.ɵɵproperty("ngIf", trend_r7.failures > 0);
126
+ i0.ɵɵconditional(trend_r7.failures > 0 ? 3 : -1);
127
127
  i0.ɵɵadvance();
128
- i0.ɵɵclassProp("hidden-label", !ctx_r4.ShouldShowLabel(i_r8));
128
+ i0.ɵɵclassProp("hidden-label", !ctx_r4.ShouldShowLabel(ɵ$index_105_r8));
129
129
  i0.ɵɵadvance();
130
130
  i0.ɵɵtextInterpolate(ctx_r4.FormatChartLabel(trend_r7.timestamp));
131
131
  } }
132
- function SchedulingActivityComponent_div_21_div_2_Template(rf, ctx) { if (rf & 1) {
133
- i0.ɵɵelementStart(0, "div", 23)(1, "div", 24)(2, "div", 25);
134
- i0.ɵɵelement(3, "i", 41);
132
+ function SchedulingActivityComponent_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 20)(2, "div", 21);
134
+ i0.ɵɵelement(3, "i", 35);
135
135
  i0.ɵɵtext(4, " Execution Trends ");
136
136
  i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(5, "span", 27);
137
+ i0.ɵɵelementStart(5, "span", 23);
138
138
  i0.ɵɵtext(6);
139
139
  i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(7, "div", 42)(8, "div", 43);
141
- i0.ɵɵtemplate(9, SchedulingActivityComponent_div_21_div_2_div_9_Template, 6, 7, "div", 44);
140
+ i0.ɵɵelementStart(7, "div", 36)(8, "div", 37);
141
+ i0.ɵɵrepeaterCreate(9, SchedulingActivityComponent_Conditional_24_Conditional_2_For_10_Template, 6, 7, "div", 38, i0.ɵɵrepeaterTrackByIdentity);
142
142
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(10, "div", 45)(11, "span", 46);
144
- i0.ɵɵelement(12, "span", 47);
145
- i0.ɵɵtext(13, " Successful");
143
+ i0.ɵɵelementStart(11, "div", 39)(12, "span", 40);
144
+ i0.ɵɵelement(13, "span", 41);
145
+ i0.ɵɵtext(14, " Successful");
146
146
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(14, "span", 46);
148
- i0.ɵɵelement(15, "span", 48);
149
- i0.ɵɵtext(16, " Failed");
147
+ i0.ɵɵelementStart(15, "span", 40);
148
+ i0.ɵɵelement(16, "span", 42);
149
+ i0.ɵɵtext(17, " Failed");
150
150
  i0.ɵɵelementEnd()()()();
151
151
  } if (rf & 2) {
152
152
  const ctx_r4 = i0.ɵɵnextContext(2);
153
153
  i0.ɵɵadvance(6);
154
154
  i0.ɵɵtextInterpolate1("", ctx_r4.FilteredExecutions.length, " executions");
155
155
  i0.ɵɵadvance(3);
156
- i0.ɵɵproperty("ngForOf", ctx_r4.Trends);
156
+ i0.ɵɵrepeater(ctx_r4.Trends);
157
157
  } }
158
- function SchedulingActivityComponent_div_21_div_11_Template(rf, ctx) { if (rf & 1) {
159
- i0.ɵɵelementStart(0, "div", 55);
160
- i0.ɵɵelement(1, "i", 56);
158
+ function SchedulingActivityComponent_Conditional_24_Conditional_11_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "div", 25);
160
+ i0.ɵɵelement(1, "i", 48);
161
161
  i0.ɵɵelementStart(2, "span");
162
162
  i0.ɵɵtext(3, "No executions found for this time range");
163
163
  i0.ɵɵelementEnd()();
164
164
  } }
165
- function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_div_31_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelementStart(0, "div", 70)(1, "span", 71);
165
+ function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
166
+ i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
167
167
  i0.ɵɵtext(2, "Error");
168
168
  i0.ɵɵelementEnd();
169
- i0.ɵɵelementStart(3, "span", 79);
169
+ i0.ɵɵelementStart(3, "span", 67);
170
170
  i0.ɵɵtext(4);
171
171
  i0.ɵɵelementEnd()();
172
172
  } if (rf & 2) {
@@ -174,49 +174,49 @@ function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_div_3
174
174
  i0.ɵɵadvance(4);
175
175
  i0.ɵɵtextInterpolate(exec_r10.errorMessage);
176
176
  } }
177
- function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_Template(rf, ctx) { if (rf & 1) {
177
+ function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
178
178
  const _r11 = i0.ɵɵgetCurrentView();
179
- i0.ɵɵelementStart(0, "tr", 67)(1, "td")(2, "div", 68)(3, "div", 69)(4, "div", 70)(5, "span", 71);
179
+ i0.ɵɵelementStart(0, "tr", 56)(1, "td")(2, "div", 57)(3, "div", 58)(4, "div", 59)(5, "span", 60);
180
180
  i0.ɵɵtext(6, "Job Name");
181
181
  i0.ɵɵelementEnd();
182
- i0.ɵɵelementStart(7, "span", 72);
182
+ i0.ɵɵelementStart(7, "span", 61);
183
183
  i0.ɵɵtext(8);
184
184
  i0.ɵɵelementEnd()();
185
- i0.ɵɵelementStart(9, "div", 70)(10, "span", 71);
185
+ i0.ɵɵelementStart(9, "div", 59)(10, "span", 60);
186
186
  i0.ɵɵtext(11, "Started");
187
187
  i0.ɵɵelementEnd();
188
- i0.ɵɵelementStart(12, "span", 72);
188
+ i0.ɵɵelementStart(12, "span", 61);
189
189
  i0.ɵɵtext(13);
190
190
  i0.ɵɵelementEnd()();
191
- i0.ɵɵelementStart(14, "div", 70)(15, "span", 71);
191
+ i0.ɵɵelementStart(14, "div", 59)(15, "span", 60);
192
192
  i0.ɵɵtext(16, "Completed");
193
193
  i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(17, "span", 72);
194
+ i0.ɵɵelementStart(17, "span", 61);
195
195
  i0.ɵɵtext(18);
196
196
  i0.ɵɵelementEnd()();
197
- i0.ɵɵelementStart(19, "div", 70)(20, "span", 71);
197
+ i0.ɵɵelementStart(19, "div", 59)(20, "span", 60);
198
198
  i0.ɵɵtext(21, "Duration");
199
199
  i0.ɵɵelementEnd();
200
- i0.ɵɵelementStart(22, "span", 72);
200
+ i0.ɵɵelementStart(22, "span", 61);
201
201
  i0.ɵɵtext(23);
202
202
  i0.ɵɵelementEnd()();
203
- i0.ɵɵelementStart(24, "div", 70)(25, "span", 71);
203
+ i0.ɵɵelementStart(24, "div", 59)(25, "span", 60);
204
204
  i0.ɵɵtext(26, "Status");
205
205
  i0.ɵɵelementEnd();
206
- i0.ɵɵelementStart(27, "span", 72)(28, "span", 62);
206
+ i0.ɵɵelementStart(27, "span", 61)(28, "span", 52);
207
207
  i0.ɵɵelement(29, "i");
208
208
  i0.ɵɵtext(30);
209
209
  i0.ɵɵelementEnd()()();
210
- i0.ɵɵtemplate(31, SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_div_31_Template, 5, 1, "div", 73);
210
+ i0.ɵɵconditionalCreate(31, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Conditional_31_Template, 5, 1, "div", 59);
211
211
  i0.ɵɵelementEnd();
212
- i0.ɵɵelementStart(32, "div", 74)(33, "button", 75);
213
- i0.ɵɵlistener("click", function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_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)); });
214
- i0.ɵɵelement(34, "i", 76);
212
+ i0.ɵɵelementStart(32, "div", 62)(33, "button", 63);
213
+ 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)); });
214
+ i0.ɵɵelement(34, "i", 64);
215
215
  i0.ɵɵtext(35, " Open Run Record ");
216
216
  i0.ɵɵelementEnd();
217
- i0.ɵɵelementStart(36, "button", 77);
218
- i0.ɵɵlistener("click", function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_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)); });
219
- i0.ɵɵelement(37, "i", 78);
217
+ i0.ɵɵelementStart(36, "button", 65);
218
+ 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)); });
219
+ i0.ɵɵelement(37, "i", 66);
220
220
  i0.ɵɵtext(38, " Open Job ");
221
221
  i0.ɵɵelementEnd()()()()();
222
222
  } if (rf & 2) {
@@ -239,38 +239,35 @@ function SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_Templ
239
239
  i0.ɵɵadvance();
240
240
  i0.ɵɵtextInterpolate1(" ", exec_r10.status, " ");
241
241
  i0.ɵɵadvance();
242
- i0.ɵɵproperty("ngIf", exec_r10.errorMessage);
242
+ i0.ɵɵconditional(exec_r10.errorMessage ? 31 : -1);
243
243
  } }
244
- function SchedulingActivityComponent_div_21_table_12_ng_container_15_Template(rf, ctx) { if (rf & 1) {
244
+ function SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Template(rf, ctx) { if (rf & 1) {
245
245
  const _r9 = i0.ɵɵgetCurrentView();
246
- i0.ɵɵelementContainerStart(0);
247
- i0.ɵɵelementStart(1, "tr", 60);
248
- i0.ɵɵlistener("click", function SchedulingActivityComponent_div_21_table_12_ng_container_15_Template_tr_click_1_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(2, "td", 58);
250
- i0.ɵɵelement(3, "i", 61);
251
- i0.ɵɵelementEnd();
252
- i0.ɵɵelementStart(4, "td")(5, "span", 62);
253
- i0.ɵɵelement(6, "i");
254
- i0.ɵɵtext(7);
246
+ i0.ɵɵelementStart(0, "tr", 50);
247
+ 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)); });
248
+ i0.ɵɵelementStart(1, "td", 49);
249
+ i0.ɵɵelement(2, "i", 51);
250
+ i0.ɵɵelementEnd();
251
+ i0.ɵɵelementStart(3, "td")(4, "span", 52);
252
+ i0.ɵɵelement(5, "i");
253
+ i0.ɵɵtext(6);
255
254
  i0.ɵɵelementEnd()();
256
- i0.ɵɵelementStart(8, "td", 63);
257
- i0.ɵɵtext(9);
255
+ i0.ɵɵelementStart(7, "td", 53);
256
+ i0.ɵɵtext(8);
258
257
  i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(10, "td", 64);
260
- i0.ɵɵtext(11);
258
+ i0.ɵɵelementStart(9, "td", 54);
259
+ i0.ɵɵtext(10);
261
260
  i0.ɵɵelementEnd();
262
- i0.ɵɵelementStart(12, "td", 64);
263
- i0.ɵɵtext(13);
261
+ i0.ɵɵelementStart(11, "td", 54);
262
+ i0.ɵɵtext(12);
264
263
  i0.ɵɵelementEnd();
265
- i0.ɵɵelementStart(14, "td", 65);
266
- i0.ɵɵtext(15);
264
+ i0.ɵɵelementStart(13, "td", 55);
265
+ i0.ɵɵtext(14);
267
266
  i0.ɵɵelementEnd()();
268
- i0.ɵɵtemplate(16, SchedulingActivityComponent_div_21_table_12_ng_container_15_tr_16_Template, 39, 10, "tr", 66);
269
- i0.ɵɵelementContainerEnd();
267
+ i0.ɵɵconditionalCreate(15, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Conditional_15_Template, 39, 10, "tr", 56);
270
268
  } if (rf & 2) {
271
269
  const exec_r10 = ctx.$implicit;
272
270
  const ctx_r4 = i0.ɵɵnextContext(3);
273
- i0.ɵɵadvance();
274
271
  i0.ɵɵclassProp("expanded", ctx_r4.IsExpanded(exec_r10));
275
272
  i0.ɵɵadvance(2);
276
273
  i0.ɵɵclassProp("rotated", ctx_r4.IsExpanded(exec_r10));
@@ -289,11 +286,11 @@ function SchedulingActivityComponent_div_21_table_12_ng_container_15_Template(rf
289
286
  i0.ɵɵadvance(2);
290
287
  i0.ɵɵtextInterpolate(ctx_r4.TruncateError(exec_r10.errorMessage));
291
288
  i0.ɵɵadvance();
292
- i0.ɵɵproperty("ngIf", ctx_r4.IsExpanded(exec_r10));
289
+ i0.ɵɵconditional(ctx_r4.IsExpanded(exec_r10) ? 15 : -1);
293
290
  } }
294
- function SchedulingActivityComponent_div_21_table_12_Template(rf, ctx) { if (rf & 1) {
295
- i0.ɵɵelementStart(0, "table", 57)(1, "thead")(2, "tr");
296
- i0.ɵɵelement(3, "th", 58);
291
+ function SchedulingActivityComponent_Conditional_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "table", 26)(1, "thead")(2, "tr");
293
+ i0.ɵɵelement(3, "th", 49);
297
294
  i0.ɵɵelementStart(4, "th");
298
295
  i0.ɵɵtext(5, "Status");
299
296
  i0.ɵɵelementEnd();
@@ -310,38 +307,40 @@ function SchedulingActivityComponent_div_21_table_12_Template(rf, ctx) { if (rf
310
307
  i0.ɵɵtext(13, "Error");
311
308
  i0.ɵɵelementEnd()()();
312
309
  i0.ɵɵelementStart(14, "tbody");
313
- i0.ɵɵtemplate(15, SchedulingActivityComponent_div_21_table_12_ng_container_15_Template, 17, 13, "ng-container", 59);
310
+ i0.ɵɵrepeaterCreate(15, SchedulingActivityComponent_Conditional_24_Conditional_12_For_16_Template, 16, 13, null, null, i0.ɵɵrepeaterTrackByIdentity);
314
311
  i0.ɵɵelementEnd()();
315
312
  } if (rf & 2) {
316
313
  const ctx_r4 = i0.ɵɵnextContext(2);
317
314
  i0.ɵɵadvance(15);
318
- i0.ɵɵproperty("ngForOf", ctx_r4.FilteredExecutions);
315
+ i0.ɵɵrepeater(ctx_r4.FilteredExecutions);
319
316
  } }
320
- function SchedulingActivityComponent_div_21_Template(rf, ctx) { if (rf & 1) {
321
- i0.ɵɵelementStart(0, "div", 20);
322
- i0.ɵɵtemplate(1, SchedulingActivityComponent_div_21_div_1_Template, 2, 1, "div", 21)(2, SchedulingActivityComponent_div_21_div_2_Template, 17, 2, "div", 22);
323
- i0.ɵɵelementStart(3, "div", 23)(4, "div", 24)(5, "div", 25);
324
- i0.ɵɵelement(6, "i", 26);
317
+ function SchedulingActivityComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "div", 15);
319
+ i0.ɵɵconditionalCreate(1, SchedulingActivityComponent_Conditional_24_Conditional_1_Template, 3, 0, "div", 18);
320
+ i0.ɵɵconditionalCreate(2, SchedulingActivityComponent_Conditional_24_Conditional_2_Template, 18, 1, "div", 19);
321
+ i0.ɵɵelementStart(3, "div", 19)(4, "div", 20)(5, "div", 21);
322
+ i0.ɵɵelement(6, "i", 22);
325
323
  i0.ɵɵtext(7, " Execution History ");
326
324
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(8, "span", 27);
325
+ i0.ɵɵelementStart(8, "span", 23);
328
326
  i0.ɵɵtext(9);
329
327
  i0.ɵɵelementEnd()();
330
- i0.ɵɵelementStart(10, "div", 28);
331
- i0.ɵɵtemplate(11, SchedulingActivityComponent_div_21_div_11_Template, 4, 0, "div", 29)(12, SchedulingActivityComponent_div_21_table_12_Template, 16, 1, "table", 30);
328
+ i0.ɵɵelementStart(10, "div", 24);
329
+ i0.ɵɵconditionalCreate(11, SchedulingActivityComponent_Conditional_24_Conditional_11_Template, 4, 0, "div", 25);
330
+ i0.ɵɵconditionalCreate(12, SchedulingActivityComponent_Conditional_24_Conditional_12_Template, 17, 0, "table", 26);
332
331
  i0.ɵɵelementEnd()()();
333
332
  } if (rf & 2) {
334
333
  const ctx_r4 = i0.ɵɵnextContext();
335
334
  i0.ɵɵadvance();
336
- i0.ɵɵproperty("ngIf", ctx_r4.JobTypes.length > 0);
335
+ i0.ɵɵconditional(ctx_r4.JobTypes.length > 0 ? 1 : -1);
337
336
  i0.ɵɵadvance();
338
- i0.ɵɵproperty("ngIf", ctx_r4.Trends.length > 0);
337
+ i0.ɵɵconditional(ctx_r4.Trends.length > 0 ? 2 : -1);
339
338
  i0.ɵɵadvance(7);
340
- i0.ɵɵtextInterpolate2("", ctx_r4.FilteredExecutions.length, " of ", ctx_r4.Executions.length, "");
339
+ i0.ɵɵtextInterpolate2("", ctx_r4.FilteredExecutions.length, " of ", ctx_r4.Executions.length);
341
340
  i0.ɵɵadvance(2);
342
- i0.ɵɵproperty("ngIf", ctx_r4.FilteredExecutions.length === 0);
341
+ i0.ɵɵconditional(ctx_r4.FilteredExecutions.length === 0 ? 11 : -1);
343
342
  i0.ɵɵadvance();
344
- i0.ɵɵproperty("ngIf", ctx_r4.FilteredExecutions.length > 0);
343
+ i0.ɵɵconditional(ctx_r4.FilteredExecutions.length > 0 ? 12 : -1);
345
344
  } }
346
345
  export class SchedulingActivityComponent {
347
346
  schedulingService;
@@ -653,7 +652,7 @@ export class SchedulingActivityComponent {
653
652
  this.settingsPersistSubject.next();
654
653
  }
655
654
  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" }, decls: 22, vars: 8, 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", 4, "ngFor", "ngForOf"], [1, "toolbar-right"], [1, "time-range-group"], ["class", "range-btn", 3, "active", "click", 4, "ngFor", "ngForOf"], [1, "control-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], ["class", "loading-container", 4, "ngIf"], ["class", "activity-content", 4, "ngIf"], [3, "value"], [1, "range-btn", 3, "click"], [1, "loading-container"], ["text", "Loading activity...", "size", "medium"], [1, "activity-content"], ["class", "type-cards-row", 4, "ngIf"], ["class", "panel", 4, "ngIf"], [1, "panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "result-count"], [1, "panel-body", "table-container"], ["class", "empty-state-small", 4, "ngIf"], ["class", "data-table", 4, "ngIf"], [1, "type-cards-row"], ["class", "type-card", 4, "ngFor", "ngForOf"], [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"], ["class", "chart-column", 4, "ngFor", "ngForOf"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-dot", "success"], [1, "legend-dot", "failure"], [1, "chart-column"], [1, "bars-wrapper"], [1, "bar", "success-bar", 3, "title"], ["class", "bar failure-bar", 3, "height", "title", 4, "ngIf"], [1, "chart-label"], [1, "bar", "failure-bar", 3, "title"], [1, "empty-state-small"], [1, "fa-solid", "fa-inbox"], [1, "data-table"], [1, "col-expand"], [4, "ngFor", "ngForOf"], [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"], ["class", "exec-detail-row", 4, "ngIf"], [1, "exec-detail-row"], [1, "exec-detail-content"], [1, "exec-detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], ["class", "detail-item", 4, "ngIf"], [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) {
655
+ 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"], [1, "control-btn", 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
656
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
658
657
  i0.ɵɵelement(4, "i", 4);
659
658
  i0.ɵɵelementStart(5, "input", 5);
@@ -664,24 +663,25 @@ export class SchedulingActivityComponent {
664
663
  i0.ɵɵelementStart(7, "option", 7);
665
664
  i0.ɵɵtext(8, "All Statuses");
666
665
  i0.ɵɵelementEnd();
667
- i0.ɵɵtemplate(9, SchedulingActivityComponent_option_9_Template, 2, 2, "option", 8);
666
+ i0.ɵɵrepeaterCreate(9, SchedulingActivityComponent_For_10_Template, 2, 2, "option", 8, i0.ɵɵrepeaterTrackByIdentity);
668
667
  i0.ɵɵelementEnd();
669
- i0.ɵɵelementStart(10, "select", 6);
670
- i0.ɵɵlistener("change", function SchedulingActivityComponent_Template_select_change_10_listener($event) { return ctx.OnJobNameFilterChange($event.target.value); });
671
- i0.ɵɵelementStart(11, "option", 7);
672
- i0.ɵɵtext(12, "All Jobs");
668
+ i0.ɵɵelementStart(11, "select", 6);
669
+ i0.ɵɵlistener("change", function SchedulingActivityComponent_Template_select_change_11_listener($event) { return ctx.OnJobNameFilterChange($event.target.value); });
670
+ i0.ɵɵelementStart(12, "option", 7);
671
+ i0.ɵɵtext(13, "All Jobs");
673
672
  i0.ɵɵelementEnd();
674
- i0.ɵɵtemplate(13, SchedulingActivityComponent_option_13_Template, 2, 2, "option", 8);
673
+ i0.ɵɵrepeaterCreate(14, SchedulingActivityComponent_For_15_Template, 2, 2, "option", 8, i0.ɵɵrepeaterTrackByIdentity);
675
674
  i0.ɵɵelementEnd()();
676
- i0.ɵɵelementStart(14, "div", 9)(15, "div", 10);
677
- i0.ɵɵtemplate(16, SchedulingActivityComponent_button_16_Template, 2, 3, "button", 11);
675
+ i0.ɵɵelementStart(16, "div", 9)(17, "div", 10);
676
+ i0.ɵɵrepeaterCreate(18, SchedulingActivityComponent_For_19_Template, 2, 3, "button", 11, i0.ɵɵrepeaterTrackByIdentity);
678
677
  i0.ɵɵelementEnd();
679
- i0.ɵɵelementStart(17, "button", 12);
680
- i0.ɵɵlistener("click", function SchedulingActivityComponent_Template_button_click_17_listener() { return ctx.Refresh(); });
681
- i0.ɵɵelement(18, "i", 13);
682
- i0.ɵɵtext(19, " Refresh ");
678
+ i0.ɵɵelementStart(20, "button", 12);
679
+ i0.ɵɵlistener("click", function SchedulingActivityComponent_Template_button_click_20_listener() { return ctx.Refresh(); });
680
+ i0.ɵɵelement(21, "i", 13);
681
+ i0.ɵɵtext(22, " Refresh ");
683
682
  i0.ɵɵelementEnd()()();
684
- i0.ɵɵtemplate(20, SchedulingActivityComponent_div_20_Template, 2, 0, "div", 14)(21, SchedulingActivityComponent_div_21_Template, 13, 6, "div", 15);
683
+ i0.ɵɵconditionalCreate(23, SchedulingActivityComponent_Conditional_23_Template, 2, 0, "div", 14);
684
+ i0.ɵɵconditionalCreate(24, SchedulingActivityComponent_Conditional_24_Template, 13, 6, "div", 15);
685
685
  i0.ɵɵelementEnd();
686
686
  } if (rf & 2) {
687
687
  i0.ɵɵadvance(5);
@@ -689,26 +689,26 @@ export class SchedulingActivityComponent {
689
689
  i0.ɵɵadvance();
690
690
  i0.ɵɵproperty("value", ctx.StatusFilter);
691
691
  i0.ɵɵadvance(3);
692
- i0.ɵɵproperty("ngForOf", ctx.StatusOptions.slice(1));
693
- i0.ɵɵadvance();
692
+ i0.ɵɵrepeater(ctx.StatusOptions.slice(1));
693
+ i0.ɵɵadvance(2);
694
694
  i0.ɵɵproperty("value", ctx.JobNameFilter);
695
695
  i0.ɵɵadvance(3);
696
- i0.ɵɵproperty("ngForOf", ctx.UniqueJobNames);
697
- i0.ɵɵadvance(3);
698
- i0.ɵɵproperty("ngForOf", ctx.TimeRanges);
696
+ i0.ɵɵrepeater(ctx.UniqueJobNames);
699
697
  i0.ɵɵadvance(4);
700
- i0.ɵɵproperty("ngIf", ctx.IsLoading);
698
+ i0.ɵɵrepeater(ctx.TimeRanges);
699
+ i0.ɵɵadvance(5);
700
+ i0.ɵɵconditional(ctx.IsLoading ? 23 : -1);
701
701
  i0.ɵɵadvance();
702
- i0.ɵɵproperty("ngIf", !ctx.IsLoading);
703
- } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, 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: white;\n border: 1px solid #e5e7eb;\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: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: #94a3b8; 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: #0f172a; width: 100%;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #475569;\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group[_ngcontent-%COMP%] {\n display: flex;\n background: white;\n border: 1px solid #e5e7eb;\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: #64748b;\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid #e5e7eb;\n}\n\n.range-btn[_ngcontent-%COMP%]:last-child { border-right: none; }\n\n.range-btn[_ngcontent-%COMP%]:hover { background: #f3f4f6; }\n\n.range-btn.active[_ngcontent-%COMP%] {\n background: #0076b6;\n color: white;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s ease;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n border-color: #999;\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #94a3b8;\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: white;\n border-radius: 14px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.type-card-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, #0076b6, #005a8c);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\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: #0f172a;\n font-size: 0.9rem;\n}\n\n.type-card-stats[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: #64748b;\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: #f1f5f9;\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: white;\n border-radius: 16px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n font-weight: 700;\n color: #0f172a;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: #0076b6; }\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: linear-gradient(180deg, #34d399, #10b981);\n}\n\n.failure-bar[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #f87171, #ef4444);\n border-radius: 0;\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n color: #94a3b8;\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: #64748b;\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: #10b981; }\n.legend-dot.failure[_ngcontent-%COMP%] { background: #ef4444; }\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n position: sticky;\n top: 0;\n background: #f9fafb;\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 #f1f5f9;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #f8fafc;\n}\n\n.cell-name[_ngcontent-%COMP%] { font-weight: 600; color: #0f172a; }\n.cell-meta[_ngcontent-%COMP%] { color: #64748b; }\n.cell-error[_ngcontent-%COMP%] { color: #ef4444; 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: #dbeafe; color: #1d4ed8; }\n.exec-status-badge.status-success[_ngcontent-%COMP%] { background: #dcfce7; color: #166534; }\n.exec-status-badge.status-error[_ngcontent-%COMP%] { background: #fee2e2; color: #991b1b; }\n.exec-status-badge.status-warning[_ngcontent-%COMP%] { background: #fef3c7; color: #92400e; }\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: #94a3b8;\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: #f1f5f9;\n}\n\n.exec-row.expanded[_ngcontent-%COMP%] {\n background: #f8fafc;\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 #e2e8f0;\n}\n\n.exec-detail-content[_ngcontent-%COMP%] {\n padding: 16px 20px 16px 48px;\n background: #f8fafc;\n border-top: 1px solid #f1f5f9;\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #0f172a;\n}\n\n.detail-value.error-text[_ngcontent-%COMP%] {\n color: #ef4444;\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 #e5e7eb;\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: #0076b6;\n color: white;\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: #005a8c;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: white;\n color: #475569;\n border: 1px solid #e2e8f0;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n border-color: #cbd5e1;\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: #94a3b8;\n}\n\n.empty-state-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; color: #cbd5e1; }\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 });
702
+ i0.ɵɵconditional(!ctx.IsLoading ? 24 : -1);
703
+ } }, dependencies: [i2.NgClass, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, 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: white;\n border: 1px solid #e5e7eb;\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: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: #94a3b8; 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: #0f172a; width: 100%;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #475569;\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group[_ngcontent-%COMP%] {\n display: flex;\n background: white;\n border: 1px solid #e5e7eb;\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: #64748b;\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid #e5e7eb;\n}\n\n.range-btn[_ngcontent-%COMP%]:last-child { border-right: none; }\n\n.range-btn[_ngcontent-%COMP%]:hover { background: #f3f4f6; }\n\n.range-btn.active[_ngcontent-%COMP%] {\n background: #0076b6;\n color: white;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s ease;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n border-color: #999;\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #94a3b8;\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: white;\n border-radius: 14px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.type-card-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, #0076b6, #005a8c);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\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: #0f172a;\n font-size: 0.9rem;\n}\n\n.type-card-stats[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: #64748b;\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: #f1f5f9;\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: white;\n border-radius: 16px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 0.95rem;\n font-weight: 700;\n color: #0f172a;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: #0076b6; }\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: linear-gradient(180deg, #34d399, #10b981);\n}\n\n.failure-bar[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #f87171, #ef4444);\n border-radius: 0;\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n color: #94a3b8;\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: #64748b;\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: #10b981; }\n.legend-dot.failure[_ngcontent-%COMP%] { background: #ef4444; }\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n position: sticky;\n top: 0;\n background: #f9fafb;\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 #f1f5f9;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #f8fafc;\n}\n\n.cell-name[_ngcontent-%COMP%] { font-weight: 600; color: #0f172a; }\n.cell-meta[_ngcontent-%COMP%] { color: #64748b; }\n.cell-error[_ngcontent-%COMP%] { color: #ef4444; 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: #dbeafe; color: #1d4ed8; }\n.exec-status-badge.status-success[_ngcontent-%COMP%] { background: #dcfce7; color: #166534; }\n.exec-status-badge.status-error[_ngcontent-%COMP%] { background: #fee2e2; color: #991b1b; }\n.exec-status-badge.status-warning[_ngcontent-%COMP%] { background: #fef3c7; color: #92400e; }\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: #94a3b8;\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: #f1f5f9;\n}\n\n.exec-row.expanded[_ngcontent-%COMP%] {\n background: #f8fafc;\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 #e2e8f0;\n}\n\n.exec-detail-content[_ngcontent-%COMP%] {\n padding: 16px 20px 16px 48px;\n background: #f8fafc;\n border-top: 1px solid #f1f5f9;\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #0f172a;\n}\n\n.detail-value.error-text[_ngcontent-%COMP%] {\n color: #ef4444;\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 #e5e7eb;\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: #0076b6;\n color: white;\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: #005a8c;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: white;\n color: #475569;\n border: 1px solid #e2e8f0;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n border-color: #cbd5e1;\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: #94a3b8;\n}\n\n.empty-state-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; color: #cbd5e1; }\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 });
704
704
  }
705
705
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingActivityComponent, [{
706
706
  type: Component,
707
- args: [{ 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 <option *ngFor=\"let s of StatusOptions.slice(1)\" [value]=\"s\">{{s}}</option>\n </select>\n <select class=\"filter-select\" [value]=\"JobNameFilter\" (change)=\"OnJobNameFilterChange($any($event.target).value)\">\n <option value=\"\">All Jobs</option>\n <option *ngFor=\"let name of UniqueJobNames\" [value]=\"name\">{{name}}</option>\n </select>\n </div>\n <div class=\"toolbar-right\">\n <div class=\"time-range-group\">\n <button *ngFor=\"let range of TimeRanges\"\n class=\"range-btn\"\n [class.active]=\"SelectedTimeRange === range.value\"\n (click)=\"OnTimeRangeChange(range.value)\">\n {{range.label}}\n </button>\n </div>\n <button class=\"control-btn\" (click)=\"Refresh()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Refresh\n </button>\n </div>\n </div>\n\n <!-- Loading -->\n <div *ngIf=\"IsLoading\" class=\"loading-container\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n\n <div *ngIf=\"!IsLoading\" class=\"activity-content\">\n <!-- Job Type Summary Cards -->\n <div class=\"type-cards-row\" *ngIf=\"JobTypes.length > 0\">\n <div *ngFor=\"let type of JobTypes\" 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 </div>\n\n <!-- Execution Trends Chart -->\n <div class=\"panel\" *ngIf=\"Trends.length > 0\">\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 <div *ngFor=\"let trend of Trends; let i = index\" 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 <div class=\"bar failure-bar\"\n *ngIf=\"trend.failures > 0\"\n [style.height]=\"GetBarHeight(trend.failures)\"\n [title]=\"trend.failures + ' failed'\">\n </div>\n </div>\n <div class=\"chart-label\" [class.hidden-label]=\"!ShouldShowLabel(i)\" >{{FormatChartLabel(trend.timestamp)}}</div>\n </div>\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 <div *ngIf=\"FilteredExecutions.length === 0\" 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 <table *ngIf=\"FilteredExecutions.length > 0\" 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 <ng-container *ngFor=\"let exec of FilteredExecutions\">\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 <tr *ngIf=\"IsExpanded(exec)\" 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 <div class=\"detail-item\" *ngIf=\"exec.errorMessage\">\n <span class=\"detail-label\">Error</span>\n <span class=\"detail-value error-text\">{{exec.errorMessage}}</span>\n </div>\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 </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\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: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.search-box i { color: #94a3b8; font-size: 0.85rem; }\n\n.search-box input {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: #0f172a; width: 100%;\n}\n\n.filter-select {\n padding: 8px 14px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #475569;\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group {\n display: flex;\n background: white;\n border: 1px solid #e5e7eb;\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: #64748b;\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid #e5e7eb;\n}\n\n.range-btn:last-child { border-right: none; }\n\n.range-btn:hover { background: #f3f4f6; }\n\n.range-btn.active {\n background: #0076b6;\n color: white;\n}\n\n.control-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s ease;\n}\n\n.control-btn:hover {\n background: #f3f4f6;\n border-color: #999;\n}\n\n.result-count {\n font-size: 0.8rem;\n color: #94a3b8;\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: white;\n border-radius: 14px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.type-card-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, #0076b6, #005a8c);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\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: #0f172a;\n font-size: 0.9rem;\n}\n\n.type-card-stats {\n font-size: 0.75rem;\n color: #64748b;\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: #f1f5f9;\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: white;\n border-radius: 16px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.panel-title {\n font-size: 0.95rem;\n font-weight: 700;\n color: #0f172a;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i { color: #0076b6; }\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: linear-gradient(180deg, #34d399, #10b981);\n}\n\n.failure-bar {\n background: linear-gradient(180deg, #f87171, #ef4444);\n border-radius: 0;\n}\n\n.chart-label {\n font-size: 0.6rem;\n color: #94a3b8;\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: #64748b;\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success { background: #10b981; }\n.legend-dot.failure { background: #ef4444; }\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n position: sticky;\n top: 0;\n background: #f9fafb;\n z-index: 1;\n}\n\n.data-table td {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.data-table tbody tr:hover {\n background: #f8fafc;\n}\n\n.cell-name { font-weight: 600; color: #0f172a; }\n.cell-meta { color: #64748b; }\n.cell-error { color: #ef4444; 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: #dbeafe; color: #1d4ed8; }\n.exec-status-badge.status-success { background: #dcfce7; color: #166534; }\n.exec-status-badge.status-error { background: #fee2e2; color: #991b1b; }\n.exec-status-badge.status-warning { background: #fef3c7; color: #92400e; }\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: #94a3b8;\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: #f1f5f9;\n}\n\n.exec-row.expanded {\n background: #f8fafc;\n border-bottom-color: transparent;\n}\n\n.exec-detail-row td {\n padding: 0 !important;\n border-bottom: 1px solid #e2e8f0;\n}\n\n.exec-detail-content {\n padding: 16px 20px 16px 48px;\n background: #f8fafc;\n border-top: 1px solid #f1f5f9;\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value {\n font-size: 0.85rem;\n color: #0f172a;\n}\n\n.detail-value.error-text {\n color: #ef4444;\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 #e5e7eb;\n}\n\n.detail-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: #0076b6;\n color: white;\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: #005a8c;\n}\n\n.detail-action-btn.secondary {\n background: white;\n color: #475569;\n border: 1px solid #e2e8f0;\n}\n\n.detail-action-btn.secondary:hover {\n background: #f1f5f9;\n border-color: #cbd5e1;\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: #94a3b8;\n}\n\n.empty-state-small i { font-size: 2rem; color: #cbd5e1; }\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"] }]
707
+ 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 class=\"control-btn\" (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: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n min-width: 220px;\n transition: border-color 0.2s;\n}\n\n.search-box:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.search-box i { color: #94a3b8; font-size: 0.85rem; }\n\n.search-box input {\n border: none; outline: none; background: transparent;\n font-size: 0.85rem; color: #0f172a; width: 100%;\n}\n\n.filter-select {\n padding: 8px 14px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #475569;\n cursor: pointer;\n outline: none;\n}\n\n.time-range-group {\n display: flex;\n background: white;\n border: 1px solid #e5e7eb;\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: #64748b;\n cursor: pointer;\n transition: all 0.2s;\n border-right: 1px solid #e5e7eb;\n}\n\n.range-btn:last-child { border-right: none; }\n\n.range-btn:hover { background: #f3f4f6; }\n\n.range-btn.active {\n background: #0076b6;\n color: white;\n}\n\n.control-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s ease;\n}\n\n.control-btn:hover {\n background: #f3f4f6;\n border-color: #999;\n}\n\n.result-count {\n font-size: 0.8rem;\n color: #94a3b8;\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: white;\n border-radius: 14px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.type-card-icon {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, #0076b6, #005a8c);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\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: #0f172a;\n font-size: 0.9rem;\n}\n\n.type-card-stats {\n font-size: 0.75rem;\n color: #64748b;\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: #f1f5f9;\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: white;\n border-radius: 16px;\n border: 1px solid #e2e8f0;\n box-shadow: 0 1px 3px rgba(0,0,0,0.05);\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: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.panel-title {\n font-size: 0.95rem;\n font-weight: 700;\n color: #0f172a;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i { color: #0076b6; }\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: linear-gradient(180deg, #34d399, #10b981);\n}\n\n.failure-bar {\n background: linear-gradient(180deg, #f87171, #ef4444);\n border-radius: 0;\n}\n\n.chart-label {\n font-size: 0.6rem;\n color: #94a3b8;\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: #64748b;\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n}\n\n.legend-dot.success { background: #10b981; }\n.legend-dot.failure { background: #ef4444; }\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n position: sticky;\n top: 0;\n background: #f9fafb;\n z-index: 1;\n}\n\n.data-table td {\n padding: 10px 16px;\n font-size: 0.85rem;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.data-table tbody tr:hover {\n background: #f8fafc;\n}\n\n.cell-name { font-weight: 600; color: #0f172a; }\n.cell-meta { color: #64748b; }\n.cell-error { color: #ef4444; 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: #dbeafe; color: #1d4ed8; }\n.exec-status-badge.status-success { background: #dcfce7; color: #166534; }\n.exec-status-badge.status-error { background: #fee2e2; color: #991b1b; }\n.exec-status-badge.status-warning { background: #fef3c7; color: #92400e; }\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: #94a3b8;\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: #f1f5f9;\n}\n\n.exec-row.expanded {\n background: #f8fafc;\n border-bottom-color: transparent;\n}\n\n.exec-detail-row td {\n padding: 0 !important;\n border-bottom: 1px solid #e2e8f0;\n}\n\n.exec-detail-content {\n padding: 16px 20px 16px 48px;\n background: #f8fafc;\n border-top: 1px solid #f1f5f9;\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: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.detail-value {\n font-size: 0.85rem;\n color: #0f172a;\n}\n\n.detail-value.error-text {\n color: #ef4444;\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 #e5e7eb;\n}\n\n.detail-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: #0076b6;\n color: white;\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: #005a8c;\n}\n\n.detail-action-btn.secondary {\n background: white;\n color: #475569;\n border: 1px solid #e2e8f0;\n}\n\n.detail-action-btn.secondary:hover {\n background: #f1f5f9;\n border-color: #cbd5e1;\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: #94a3b8;\n}\n\n.empty-state-small i { font-size: 2rem; color: #cbd5e1; }\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"] }]
708
708
  }], () => [{ type: i1.SchedulingInstrumentationService }, { type: i0.ChangeDetectorRef }], { initialState: [{
709
709
  type: Input
710
710
  }], stateChange: [{
711
711
  type: Output
712
712
  }] }); })();
713
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingActivityComponent, { className: "SchedulingActivityComponent", filePath: "src/Scheduling/components/scheduling-activity.component.ts", lineNumber: 22 }); })();
713
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingActivityComponent, { className: "SchedulingActivityComponent", filePath: "src/Scheduling/components/scheduling-activity.component.ts", lineNumber: 23 }); })();
714
714
  //# sourceMappingURL=scheduling-activity.component.js.map