@memberjunction/ng-dashboards 4.0.0 → 4.2.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 (242) hide show
  1. package/README.md +102 -339
  2. package/dist/AI/components/agents/agent-configuration.component.js +1 -1
  3. package/dist/AI/components/agents/agent-editor.component.js +1 -1
  4. package/dist/AI/components/agents/agent-filter-panel.component.js +1 -1
  5. package/dist/AI/components/charts/performance-heatmap.component.js +1 -1
  6. package/dist/AI/components/charts/time-series-chart.component.js +1 -1
  7. package/dist/AI/components/execution-monitoring.component.js +1 -1
  8. package/dist/AI/components/models/model-management.component.js +1 -1
  9. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +1 -1
  10. package/dist/AI/components/prompts/prompt-filter-panel.component.js +1 -1
  11. package/dist/AI/components/prompts/prompt-management.component.js +1 -1
  12. package/dist/AI/components/prompts/prompt-version-control.component.js +1 -1
  13. package/dist/AI/components/system/system-config-filter-panel.component.js +1 -1
  14. package/dist/AI/components/system/system-configuration.component.js +1 -1
  15. package/dist/AI/components/widgets/kpi-card.component.js +1 -1
  16. package/dist/AI/components/widgets/live-execution-widget.component.js +1 -1
  17. package/dist/APIKeys/api-applications-panel.component.js +1 -1
  18. package/dist/APIKeys/api-key-create-dialog.component.js +1 -1
  19. package/dist/APIKeys/api-key-edit-panel.component.js +1 -1
  20. package/dist/APIKeys/api-key-list.component.js +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +1 -1
  22. package/dist/APIKeys/api-scopes-panel.component.js +1 -1
  23. package/dist/APIKeys/api-usage-panel.component.js +1 -1
  24. package/dist/Actions/components/actions-list-view.component.js +1 -1
  25. package/dist/Actions/components/actions-overview.component.js +1 -1
  26. package/dist/Actions/components/categories-list-view.component.js +1 -1
  27. package/dist/Actions/components/code-management.component.js +1 -1
  28. package/dist/Actions/components/entity-integration.component.js +1 -1
  29. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  30. package/dist/Actions/components/executions-list-view.component.js +1 -1
  31. package/dist/Actions/components/explorer/action-breadcrumb.component.js +1 -1
  32. package/dist/Actions/components/explorer/action-card.component.js +1 -1
  33. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  34. package/dist/Actions/components/explorer/action-list-item.component.js +1 -1
  35. package/dist/Actions/components/explorer/action-toolbar.component.js +1 -1
  36. package/dist/Actions/components/explorer/action-tree-panel.component.js +1 -1
  37. package/dist/Actions/components/explorer/new-action-panel.component.js +1 -1
  38. package/dist/Actions/components/explorer/new-category-panel.component.js +1 -1
  39. package/dist/Actions/components/scheduled-actions.component.js +1 -1
  40. package/dist/Actions/components/security-permissions.component.js +1 -1
  41. package/dist/Communication/communication-dashboard.component.js +1 -1
  42. package/dist/Communication/communication-logs-resource.component.js +1 -1
  43. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  44. package/dist/Communication/communication-providers-resource.component.js +1 -1
  45. package/dist/Communication/communication-runs-resource.component.js +1 -1
  46. package/dist/Communication/communication-templates-resource.component.js +1 -1
  47. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -1
  48. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +1 -1
  49. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +1 -1
  50. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +1 -1
  51. package/dist/ComponentStudio/components/browser/component-browser.component.js +1 -1
  52. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +1 -1
  53. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +1 -1
  54. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +1 -1
  55. package/dist/ComponentStudio/components/editors/spec-editor.component.js +1 -1
  56. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +1 -1
  57. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +1 -1
  58. package/dist/ComponentStudio/components/text-import-dialog.component.js +1 -1
  59. package/dist/ComponentStudio/components/workspace/component-preview.component.js +1 -1
  60. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +1 -1
  61. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  62. package/dist/Credentials/components/credentials-categories-resource.component.js +1 -1
  63. package/dist/Credentials/components/credentials-list-resource.component.js +1 -1
  64. package/dist/Credentials/components/credentials-overview-resource.component.js +1 -1
  65. package/dist/Credentials/components/credentials-types-resource.component.js +1 -1
  66. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  67. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +1 -1
  68. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +1 -1
  69. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +1 -1
  70. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +1 -1
  71. package/dist/DataExplorer/components/view-selector/view-selector.component.js +1 -1
  72. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -0
  73. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  74. package/dist/DataExplorer/data-explorer-dashboard.component.js +35 -11
  75. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  76. package/dist/DataExplorer/data-explorer-resource.component.js +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.js +1 -1
  78. package/dist/Home/home-application.d.ts +109 -22
  79. package/dist/Home/home-application.d.ts.map +1 -1
  80. package/dist/Home/home-application.js +351 -66
  81. package/dist/Home/home-application.js.map +1 -1
  82. package/dist/Home/home-dashboard.component.d.ts +48 -8
  83. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  84. package/dist/Home/home-dashboard.component.js +140 -62
  85. package/dist/Home/home-dashboard.component.js.map +1 -1
  86. package/dist/Lists/components/lists-browse-resource.component.js +1 -1
  87. package/dist/Lists/components/lists-categories-resource.component.js +1 -1
  88. package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
  89. package/dist/Lists/components/lists-operations-resource.component.js +1 -1
  90. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +1 -1
  91. package/dist/MCP/components/mcp-connection-dialog.component.js +1 -1
  92. package/dist/MCP/components/mcp-log-detail-panel.component.js +1 -1
  93. package/dist/MCP/components/mcp-server-dialog.component.js +1 -1
  94. package/dist/MCP/components/mcp-test-tool-dialog.component.js +1 -1
  95. package/dist/MCP/mcp-dashboard.component.js +1 -1
  96. package/dist/MCP/mcp-filter-panel.component.js +1 -1
  97. package/dist/MCP/mcp-resource.component.js +1 -1
  98. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  99. package/dist/Scheduling/components/job-slideout.component.js +1 -1
  100. package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -1
  101. package/dist/Scheduling/components/scheduling-activity.component.js +1 -1
  102. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -1
  103. package/dist/Scheduling/components/scheduling-jobs.component.js +1 -1
  104. package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -1
  105. package/dist/Scheduling/components/scheduling-overview.component.js +1 -1
  106. package/dist/Scheduling/scheduling-dashboard.component.js +1 -1
  107. package/dist/SystemDiagnostics/system-diagnostics.component.js +1 -1
  108. package/dist/Testing/components/testing-analytics-resource.component.js +1 -1
  109. package/dist/Testing/components/testing-analytics.component.js +1 -1
  110. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  111. package/dist/Testing/components/testing-dashboard-tab.component.js +1 -1
  112. package/dist/Testing/components/testing-explorer-resource.component.js +1 -1
  113. package/dist/Testing/components/testing-explorer.component.js +1 -1
  114. package/dist/Testing/components/testing-review-resource.component.js +1 -1
  115. package/dist/Testing/components/testing-review.component.js +1 -1
  116. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  117. package/dist/Testing/components/testing-runs.component.js +1 -1
  118. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +1 -1
  119. package/dist/Testing/components/widgets/suite-tree.component.js +2 -2
  120. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +1 -1
  121. package/dist/Testing/testing-dashboard.component.js +1 -1
  122. package/dist/VersionHistory/components/diff-resource.component.js +1 -1
  123. package/dist/VersionHistory/components/graph-resource.component.js +1 -1
  124. package/dist/VersionHistory/components/labels-resource.component.js +1 -1
  125. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  126. package/package.json +38 -38
  127. package/dist/AI/ai-dashboard.component.d.ts +0 -62
  128. package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
  129. package/dist/AI/ai-dashboard.component.js +0 -338
  130. package/dist/AI/ai-dashboard.component.js.map +0 -1
  131. package/dist/AI/components/models/model-management-v2.component.d.ts +0 -96
  132. package/dist/AI/components/models/model-management-v2.component.d.ts.map +0 -1
  133. package/dist/AI/components/models/model-management-v2.component.js +0 -981
  134. package/dist/AI/components/models/model-management-v2.component.js.map +0 -1
  135. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +0 -97
  136. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +0 -1
  137. package/dist/AI/components/prompts/prompt-management-v2.component.js +0 -811
  138. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +0 -1
  139. package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
  140. package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
  141. package/dist/Actions/actions-management-dashboard.component.js +0 -308
  142. package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
  143. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts +0 -44
  144. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts.map +0 -1
  145. package/dist/Credentials/components/credential-category-edit-panel.component.js +0 -456
  146. package/dist/Credentials/components/credential-category-edit-panel.component.js.map +0 -1
  147. package/dist/Credentials/components/credential-edit-panel.component.d.ts +0 -70
  148. package/dist/Credentials/components/credential-edit-panel.component.d.ts.map +0 -1
  149. package/dist/Credentials/components/credential-edit-panel.component.js +0 -694
  150. package/dist/Credentials/components/credential-edit-panel.component.js.map +0 -1
  151. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts +0 -56
  152. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts.map +0 -1
  153. package/dist/Credentials/components/credential-type-edit-panel.component.js +0 -563
  154. package/dist/Credentials/components/credential-type-edit-panel.component.js.map +0 -1
  155. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +0 -245
  156. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +0 -1
  157. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +0 -1143
  158. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +0 -1
  159. package/dist/EntityAdmin/components/entity-details.component.d.ts +0 -50
  160. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +0 -1
  161. package/dist/EntityAdmin/components/entity-details.component.js +0 -680
  162. package/dist/EntityAdmin/components/entity-details.component.js.map +0 -1
  163. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +0 -31
  164. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +0 -1
  165. package/dist/EntityAdmin/components/entity-filter-panel.component.js +0 -160
  166. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +0 -1
  167. package/dist/EntityAdmin/components/erd-composite.component.d.ts +0 -73
  168. package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +0 -1
  169. package/dist/EntityAdmin/components/erd-composite.component.js +0 -271
  170. package/dist/EntityAdmin/components/erd-composite.component.js.map +0 -1
  171. package/dist/EntityAdmin/components/erd-diagram.component.d.ts +0 -47
  172. package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +0 -1
  173. package/dist/EntityAdmin/components/erd-diagram.component.js +0 -618
  174. package/dist/EntityAdmin/components/erd-diagram.component.js.map +0 -1
  175. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +0 -20
  176. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +0 -1
  177. package/dist/Scheduling/components/scheduling-health-resource.component.js +0 -55
  178. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +0 -1
  179. package/dist/Scheduling/components/scheduling-health.component.d.ts +0 -30
  180. package/dist/Scheduling/components/scheduling-health.component.d.ts.map +0 -1
  181. package/dist/Scheduling/components/scheduling-health.component.js +0 -315
  182. package/dist/Scheduling/components/scheduling-health.component.js.map +0 -1
  183. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +0 -20
  184. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +0 -1
  185. package/dist/Scheduling/components/scheduling-history-resource.component.js +0 -55
  186. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +0 -1
  187. package/dist/Scheduling/components/scheduling-history.component.d.ts +0 -48
  188. package/dist/Scheduling/components/scheduling-history.component.d.ts.map +0 -1
  189. package/dist/Scheduling/components/scheduling-history.component.js +0 -377
  190. package/dist/Scheduling/components/scheduling-history.component.js.map +0 -1
  191. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +0 -20
  192. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +0 -1
  193. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +0 -55
  194. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +0 -1
  195. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts +0 -37
  196. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts.map +0 -1
  197. package/dist/Scheduling/components/scheduling-monitoring.component.js +0 -488
  198. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +0 -1
  199. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +0 -20
  200. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +0 -1
  201. package/dist/Scheduling/components/scheduling-types-resource.component.js +0 -55
  202. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +0 -1
  203. package/dist/Scheduling/components/scheduling-types.component.d.ts +0 -22
  204. package/dist/Scheduling/components/scheduling-types.component.d.ts.map +0 -1
  205. package/dist/Scheduling/components/scheduling-types.component.js +0 -165
  206. package/dist/Scheduling/components/scheduling-types.component.js.map +0 -1
  207. package/dist/Testing/components/testing-execution-resource.component.d.ts +0 -20
  208. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +0 -1
  209. package/dist/Testing/components/testing-execution-resource.component.js +0 -55
  210. package/dist/Testing/components/testing-execution-resource.component.js.map +0 -1
  211. package/dist/Testing/components/testing-execution.component.d.ts +0 -71
  212. package/dist/Testing/components/testing-execution.component.d.ts.map +0 -1
  213. package/dist/Testing/components/testing-execution.component.js +0 -845
  214. package/dist/Testing/components/testing-execution.component.js.map +0 -1
  215. package/dist/Testing/components/testing-feedback-resource.component.d.ts +0 -20
  216. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +0 -1
  217. package/dist/Testing/components/testing-feedback-resource.component.js +0 -55
  218. package/dist/Testing/components/testing-feedback-resource.component.js.map +0 -1
  219. package/dist/Testing/components/testing-feedback.component.d.ts +0 -111
  220. package/dist/Testing/components/testing-feedback.component.d.ts.map +0 -1
  221. package/dist/Testing/components/testing-feedback.component.js +0 -1486
  222. package/dist/Testing/components/testing-feedback.component.js.map +0 -1
  223. package/dist/Testing/components/testing-overview-resource.component.d.ts +0 -20
  224. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +0 -1
  225. package/dist/Testing/components/testing-overview-resource.component.js +0 -55
  226. package/dist/Testing/components/testing-overview-resource.component.js.map +0 -1
  227. package/dist/Testing/components/testing-overview.component.d.ts +0 -30
  228. package/dist/Testing/components/testing-overview.component.d.ts.map +0 -1
  229. package/dist/Testing/components/testing-overview.component.js +0 -361
  230. package/dist/Testing/components/testing-overview.component.js.map +0 -1
  231. package/dist/Testing/components/testing-version-comparison.component.d.ts +0 -62
  232. package/dist/Testing/components/testing-version-comparison.component.d.ts.map +0 -1
  233. package/dist/Testing/components/testing-version-comparison.component.js +0 -815
  234. package/dist/Testing/components/testing-version-comparison.component.js.map +0 -1
  235. package/dist/Testing/components/testing-version-resource.component.d.ts +0 -20
  236. package/dist/Testing/components/testing-version-resource.component.d.ts.map +0 -1
  237. package/dist/Testing/components/testing-version-resource.component.js +0 -55
  238. package/dist/Testing/components/testing-version-resource.component.js.map +0 -1
  239. package/dist/generic/base-dashboard.d.ts +0 -65
  240. package/dist/generic/base-dashboard.d.ts.map +0 -1
  241. package/dist/generic/base-dashboard.js +0 -74
  242. package/dist/generic/base-dashboard.js.map +0 -1
@@ -1,48 +0,0 @@
1
- import { OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { SchedulingInstrumentationService, JobExecution, ExecutionTrendData } from '../services/scheduling-instrumentation.service';
4
- import * as i0 from "@angular/core";
5
- export declare class SchedulingHistoryComponent implements OnInit, OnDestroy {
6
- private schedulingService;
7
- private cdr;
8
- initialState: any;
9
- stateChange: EventEmitter<any>;
10
- executions: JobExecution[];
11
- filteredExecutions: JobExecution[];
12
- trends: ExecutionTrendData[];
13
- isLoading: boolean;
14
- dateRange: {
15
- start: Date;
16
- end: Date;
17
- };
18
- searchTerm$: BehaviorSubject<string>;
19
- statusFilter$: BehaviorSubject<string>;
20
- statusOptions: {
21
- text: string;
22
- value: string;
23
- }[];
24
- timeRangeOptions: {
25
- text: string;
26
- value: number;
27
- }[];
28
- private destroy$;
29
- constructor(schedulingService: SchedulingInstrumentationService, cdr: ChangeDetectorRef);
30
- ngOnInit(): void;
31
- ngOnDestroy(): void;
32
- private loadState;
33
- private setupFilters;
34
- private loadData;
35
- private applyFilters;
36
- onSearchChange(value: string): void;
37
- onStatusFilterChange(value: string): void;
38
- onTimeRangeChange(days: number): void;
39
- onRefresh(): void;
40
- getStatusClass(status: string): string;
41
- getStatusIcon(status: string): string;
42
- formatDuration(ms?: number): string;
43
- formatDate(date: Date): string;
44
- private emitStateChange;
45
- static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingHistoryComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingHistoryComponent, "app-scheduling-history", never, { "initialState": { "alias": "initialState"; "required": false; }; }, { "stateChange": "stateChange"; }, never, never, false, never>;
47
- }
48
- //# sourceMappingURL=scheduling-history.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduling-history.component.d.ts","sourceRoot":"","sources":["../../../src/Scheduling/components/scheduling-history.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAW,eAAe,EAAiB,MAAM,MAAM,CAAC;AAE/D,OAAO,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;;AAEpI,qBAKa,0BAA2B,YAAW,MAAM,EAAE,SAAS;IAoChE,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IApCJ,YAAY,EAAE,GAAG,CAAC;IACjB,WAAW,oBAA2B;IAEzC,UAAU,EAAE,YAAY,EAAE,CAAM;IAChC,kBAAkB,EAAE,YAAY,EAAE,CAAM;IACxC,MAAM,EAAE,kBAAkB,EAAE,CAAM;IAClC,SAAS,UAAS;IAElB,SAAS;;;MAGd;IAEK,WAAW,0BAAmC;IAC9C,aAAa,0BAAsC;IAEnD,aAAa;;;QAOlB;IAEK,gBAAgB;;;QAKrB;IAEF,OAAO,CAAC,QAAQ,CAAuB;gBAG7B,iBAAiB,EAAE,gCAAgC,EACnD,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAMhB,WAAW,IAAI,IAAI;IAKnB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,QAAQ;IAiChB,OAAO,CAAC,YAAY;IAqBb,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQrC,SAAS,IAAI,IAAI;IAIjB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWtC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWrC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAUnC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIrC,OAAO,CAAC,eAAe;yCA1LZ,0BAA0B;2CAA1B,0BAA0B;CAkMtC"}
@@ -1,377 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
3
- import { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../services/scheduling-instrumentation.service";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@progress/kendo-angular-dropdowns";
8
- import * as i4 from "@progress/kendo-angular-inputs";
9
- import * as i5 from "@progress/kendo-angular-buttons";
10
- import * as i6 from "@memberjunction/ng-shared-generic";
11
- const _forTrack0 = ($index, $item) => $item.id;
12
- function SchedulingHistoryComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelement(0, "i", 14);
14
- } }
15
- function SchedulingHistoryComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelementStart(0, "div", 10);
17
- i0.ɵɵelement(1, "mj-loading", 15);
18
- i0.ɵɵelementEnd();
19
- } }
20
- function SchedulingHistoryComponent_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 23);
22
- i0.ɵɵelement(2, "div", 24)(3, "div", 25);
23
- i0.ɵɵelementEnd();
24
- i0.ɵɵelementStart(4, "div", 26);
25
- i0.ɵɵtext(5);
26
- i0.ɵɵpipe(6, "date");
27
- i0.ɵɵelementEnd()();
28
- } if (rf & 2) {
29
- const point_r1 = ctx.$implicit;
30
- i0.ɵɵadvance(2);
31
- i0.ɵɵstyleProp("height", point_r1.successes * 5, "px");
32
- i0.ɵɵproperty("title", "Successes: " + point_r1.successes);
33
- i0.ɵɵadvance();
34
- i0.ɵɵstyleProp("height", point_r1.failures * 5, "px");
35
- i0.ɵɵproperty("title", "Failures: " + point_r1.failures);
36
- i0.ɵɵadvance(2);
37
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 7, point_r1.timestamp, "short"), " ");
38
- } }
39
- function SchedulingHistoryComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "div", 11)(1, "h3");
41
- i0.ɵɵelement(2, "i", 16);
42
- i0.ɵɵtext(3, " Execution Trends");
43
- i0.ɵɵelementEnd();
44
- i0.ɵɵelementStart(4, "div", 17);
45
- i0.ɵɵrepeaterCreate(5, SchedulingHistoryComponent_Conditional_14_For_6_Template, 7, 10, "div", 18, i0.ɵɵrepeaterTrackByIndex);
46
- i0.ɵɵelementEnd();
47
- i0.ɵɵelementStart(7, "div", 19)(8, "div", 20);
48
- i0.ɵɵelement(9, "div", 21);
49
- i0.ɵɵelementStart(10, "span");
50
- i0.ɵɵtext(11, "Successful");
51
- i0.ɵɵelementEnd()();
52
- i0.ɵɵelementStart(12, "div", 20);
53
- i0.ɵɵelement(13, "div", 22);
54
- i0.ɵɵelementStart(14, "span");
55
- i0.ɵɵtext(15, "Failed");
56
- i0.ɵɵelementEnd()()()();
57
- } if (rf & 2) {
58
- const ctx_r1 = i0.ɵɵnextContext();
59
- i0.ɵɵadvance(5);
60
- i0.ɵɵrepeater(ctx_r1.trends);
61
- } }
62
- function SchedulingHistoryComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
63
- i0.ɵɵelementStart(0, "div", 12);
64
- i0.ɵɵelement(1, "i", 27);
65
- i0.ɵɵelementStart(2, "p");
66
- i0.ɵɵtext(3, "No execution history found");
67
- i0.ɵɵelementEnd()();
68
- } }
69
- function SchedulingHistoryComponent_Conditional_16_For_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelementStart(0, "span", 31);
71
- i0.ɵɵtext(1);
72
- i0.ɵɵelementEnd();
73
- } if (rf & 2) {
74
- const exec_r3 = i0.ɵɵnextContext().$implicit;
75
- i0.ɵɵproperty("title", exec_r3.errorMessage);
76
- i0.ɵɵadvance();
77
- i0.ɵɵtextInterpolate2(" ", exec_r3.errorMessage.substring(0, 50), "", exec_r3.errorMessage.length > 50 ? "..." : "", " ");
78
- } }
79
- function SchedulingHistoryComponent_Conditional_16_For_18_Conditional_15_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelementStart(0, "span", 32);
81
- i0.ɵɵtext(1, "-");
82
- i0.ɵɵelementEnd();
83
- } }
84
- function SchedulingHistoryComponent_Conditional_16_For_18_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 29);
86
- i0.ɵɵelement(3, "i", 30);
87
- i0.ɵɵtext(4);
88
- i0.ɵɵelementEnd()();
89
- i0.ɵɵelementStart(5, "td");
90
- i0.ɵɵtext(6);
91
- i0.ɵɵelementEnd();
92
- i0.ɵɵelementStart(7, "td");
93
- i0.ɵɵtext(8);
94
- i0.ɵɵelementEnd();
95
- i0.ɵɵelementStart(9, "td");
96
- i0.ɵɵtext(10);
97
- i0.ɵɵelementEnd();
98
- i0.ɵɵelementStart(11, "td");
99
- i0.ɵɵtext(12);
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(13, "td");
102
- i0.ɵɵtemplate(14, SchedulingHistoryComponent_Conditional_16_For_18_Conditional_14_Template, 2, 3, "span", 31)(15, SchedulingHistoryComponent_Conditional_16_For_18_Conditional_15_Template, 2, 0, "span", 32);
103
- i0.ɵɵelementEnd()();
104
- } if (rf & 2) {
105
- const exec_r3 = ctx.$implicit;
106
- const ctx_r1 = i0.ɵɵnextContext(2);
107
- i0.ɵɵadvance(2);
108
- i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(exec_r3.status));
109
- i0.ɵɵadvance();
110
- i0.ɵɵproperty("ngClass", ctx_r1.getStatusIcon(exec_r3.status));
111
- i0.ɵɵadvance();
112
- i0.ɵɵtextInterpolate1(" ", exec_r3.status, " ");
113
- i0.ɵɵadvance(2);
114
- i0.ɵɵtextInterpolate(exec_r3.jobName);
115
- i0.ɵɵadvance(2);
116
- i0.ɵɵtextInterpolate(exec_r3.jobType);
117
- i0.ɵɵadvance(2);
118
- i0.ɵɵtextInterpolate(ctx_r1.formatDate(exec_r3.startedAt));
119
- i0.ɵɵadvance(2);
120
- i0.ɵɵtextInterpolate(ctx_r1.formatDuration(exec_r3.duration));
121
- i0.ɵɵadvance(2);
122
- i0.ɵɵconditional(exec_r3.errorMessage ? 14 : 15);
123
- } }
124
- function SchedulingHistoryComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelementStart(0, "div", 13)(1, "table", 28)(2, "thead")(3, "tr")(4, "th");
126
- i0.ɵɵtext(5, "Status");
127
- i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(6, "th");
129
- i0.ɵɵtext(7, "Job Name");
130
- i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(8, "th");
132
- i0.ɵɵtext(9, "Type");
133
- i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(10, "th");
135
- i0.ɵɵtext(11, "Started");
136
- i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(12, "th");
138
- i0.ɵɵtext(13, "Duration");
139
- i0.ɵɵelementEnd();
140
- i0.ɵɵelementStart(14, "th");
141
- i0.ɵɵtext(15, "Error");
142
- i0.ɵɵelementEnd()()();
143
- i0.ɵɵelementStart(16, "tbody");
144
- i0.ɵɵrepeaterCreate(17, SchedulingHistoryComponent_Conditional_16_For_18_Template, 16, 8, "tr", null, _forTrack0);
145
- i0.ɵɵelementEnd()()();
146
- } if (rf & 2) {
147
- const ctx_r1 = i0.ɵɵnextContext();
148
- i0.ɵɵadvance(17);
149
- i0.ɵɵrepeater(ctx_r1.filteredExecutions);
150
- } }
151
- export class SchedulingHistoryComponent {
152
- schedulingService;
153
- cdr;
154
- initialState;
155
- stateChange = new EventEmitter();
156
- executions = [];
157
- filteredExecutions = [];
158
- trends = [];
159
- isLoading = false;
160
- dateRange = {
161
- start: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
162
- end: new Date()
163
- };
164
- searchTerm$ = new BehaviorSubject('');
165
- statusFilter$ = new BehaviorSubject('all');
166
- statusOptions = [
167
- { text: 'All Statuses', value: 'all' },
168
- { text: 'Running', value: 'Running' },
169
- { text: 'Completed', value: 'Completed' },
170
- { text: 'Failed', value: 'Failed' },
171
- { text: 'Cancelled', value: 'Cancelled' },
172
- { text: 'Timeout', value: 'Timeout' }
173
- ];
174
- timeRangeOptions = [
175
- { text: 'Last 24 Hours', value: 1 },
176
- { text: 'Last 7 Days', value: 7 },
177
- { text: 'Last 30 Days', value: 30 },
178
- { text: 'Last 90 Days', value: 90 }
179
- ];
180
- destroy$ = new Subject();
181
- constructor(schedulingService, cdr) {
182
- this.schedulingService = schedulingService;
183
- this.cdr = cdr;
184
- }
185
- ngOnInit() {
186
- this.loadState();
187
- this.setupFilters();
188
- this.loadData();
189
- }
190
- ngOnDestroy() {
191
- this.destroy$.next();
192
- this.destroy$.complete();
193
- }
194
- loadState() {
195
- if (this.initialState) {
196
- if (this.initialState.searchTerm)
197
- this.searchTerm$.next(this.initialState.searchTerm);
198
- if (this.initialState.statusFilter)
199
- this.statusFilter$.next(this.initialState.statusFilter);
200
- if (this.initialState.dateRange) {
201
- this.dateRange = {
202
- start: new Date(this.initialState.dateRange.start),
203
- end: new Date(this.initialState.dateRange.end)
204
- };
205
- }
206
- }
207
- }
208
- setupFilters() {
209
- combineLatest([
210
- this.searchTerm$.pipe(debounceTime(300), distinctUntilChanged()),
211
- this.statusFilter$.pipe(distinctUntilChanged())
212
- ])
213
- .pipe(takeUntil(this.destroy$))
214
- .subscribe(() => {
215
- this.applyFilters();
216
- this.emitStateChange();
217
- });
218
- }
219
- loadData() {
220
- this.isLoading = true;
221
- this.schedulingService.executionHistory$
222
- .pipe(takeUntil(this.destroy$))
223
- .subscribe({
224
- next: (executions) => {
225
- this.executions = executions;
226
- this.applyFilters();
227
- this.isLoading = false;
228
- this.cdr.markForCheck();
229
- },
230
- error: (error) => {
231
- console.error('Error loading execution history:', error);
232
- this.isLoading = false;
233
- this.cdr.markForCheck();
234
- }
235
- });
236
- this.schedulingService.executionTrends$
237
- .pipe(takeUntil(this.destroy$))
238
- .subscribe({
239
- next: (trends) => {
240
- this.trends = trends;
241
- this.cdr.markForCheck();
242
- },
243
- error: (error) => {
244
- console.error('Error loading trends:', error);
245
- this.cdr.markForCheck();
246
- }
247
- });
248
- }
249
- applyFilters() {
250
- let filtered = [...this.executions];
251
- const searchTerm = this.searchTerm$.value.toLowerCase();
252
- if (searchTerm) {
253
- filtered = filtered.filter(exec => exec.jobName.toLowerCase().includes(searchTerm) ||
254
- exec.jobType.toLowerCase().includes(searchTerm) ||
255
- (exec.errorMessage && exec.errorMessage.toLowerCase().includes(searchTerm)));
256
- }
257
- const statusFilter = this.statusFilter$.value;
258
- if (statusFilter !== 'all') {
259
- filtered = filtered.filter(exec => exec.status === statusFilter);
260
- }
261
- this.filteredExecutions = filtered;
262
- this.cdr.markForCheck();
263
- }
264
- onSearchChange(value) {
265
- this.searchTerm$.next(value);
266
- }
267
- onStatusFilterChange(value) {
268
- this.statusFilter$.next(value);
269
- }
270
- onTimeRangeChange(days) {
271
- const end = new Date();
272
- const start = new Date(end.getTime() - days * 24 * 60 * 60 * 1000);
273
- this.dateRange = { start, end };
274
- this.schedulingService.setDateRange(start, end);
275
- this.emitStateChange();
276
- }
277
- onRefresh() {
278
- this.schedulingService.refresh();
279
- }
280
- getStatusClass(status) {
281
- switch (status) {
282
- case 'Running': return 'status-running';
283
- case 'Completed': return 'status-success';
284
- case 'Failed': return 'status-error';
285
- case 'Cancelled': return 'status-warning';
286
- case 'Timeout': return 'status-warning';
287
- default: return 'status-info';
288
- }
289
- }
290
- getStatusIcon(status) {
291
- switch (status) {
292
- case 'Running': return 'fa-spinner fa-spin';
293
- case 'Completed': return 'fa-check-circle';
294
- case 'Failed': return 'fa-exclamation-circle';
295
- case 'Cancelled': return 'fa-ban';
296
- case 'Timeout': return 'fa-clock';
297
- default: return 'fa-question-circle';
298
- }
299
- }
300
- formatDuration(ms) {
301
- if (!ms)
302
- return 'N/A';
303
- const seconds = Math.floor(ms / 1000);
304
- if (seconds < 60)
305
- return `${seconds}s`;
306
- const minutes = Math.floor(seconds / 60);
307
- if (minutes < 60)
308
- return `${minutes}m ${seconds % 60}s`;
309
- const hours = Math.floor(minutes / 60);
310
- return `${hours}h ${minutes % 60}m`;
311
- }
312
- formatDate(date) {
313
- return new Date(date).toLocaleString();
314
- }
315
- emitStateChange() {
316
- const state = {
317
- searchTerm: this.searchTerm$.value,
318
- statusFilter: this.statusFilter$.value,
319
- dateRange: this.dateRange
320
- };
321
- this.stateChange.emit(state);
322
- }
323
- static ɵfac = function SchedulingHistoryComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SchedulingHistoryComponent)(i0.ɵɵdirectiveInject(i1.SchedulingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
324
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingHistoryComponent, selectors: [["app-scheduling-history"]], inputs: { initialState: "initialState" }, outputs: { stateChange: "stateChange" }, decls: 17, vars: 16, consts: [[1, "scheduling-history"], [1, "history-header"], [1, "filters-row"], [1, "search-container"], ["placeholder", "Search executions...", 3, "valueChange", "value"], ["kendoTextBoxPrefixTemplate", ""], ["textField", "text", "valueField", "value", 3, "valueChange", "data", "valuePrimitive", "value"], ["kendoButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "results-count"], [1, "loading-overlay"], [1, "trends-chart-container"], [1, "empty-state"], [1, "execution-list"], [1, "fa-solid", "fa-search"], ["text", "Loading execution history...", "size", "medium"], [1, "fa-solid", "fa-chart-line"], [1, "simple-chart"], [1, "chart-bar-group"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-color", "success"], [1, "legend-color", "error"], [1, "chart-bars"], [1, "chart-bar", "success", 3, "title"], [1, "chart-bar", "error", 3, "title"], [1, "chart-label"], [1, "fa-solid", "fa-inbox"], [1, "execution-table"], [1, "status-badge", 3, "ngClass"], [1, "fa-solid", 3, "ngClass"], [1, "error-message", 3, "title"], [1, "no-error"]], template: function SchedulingHistoryComponent_Template(rf, ctx) { if (rf & 1) {
325
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "kendo-textbox", 4);
326
- i0.ɵɵlistener("valueChange", function SchedulingHistoryComponent_Template_kendo_textbox_valueChange_4_listener($event) { return ctx.onSearchChange($event); });
327
- i0.ɵɵtemplate(5, SchedulingHistoryComponent_ng_template_5_Template, 1, 0, "ng-template", 5);
328
- i0.ɵɵelementEnd()();
329
- i0.ɵɵelementStart(6, "kendo-dropdownlist", 6);
330
- i0.ɵɵlistener("valueChange", function SchedulingHistoryComponent_Template_kendo_dropdownlist_valueChange_6_listener($event) { return ctx.onStatusFilterChange($event); });
331
- i0.ɵɵelementEnd();
332
- i0.ɵɵelementStart(7, "kendo-dropdownlist", 6);
333
- i0.ɵɵlistener("valueChange", function SchedulingHistoryComponent_Template_kendo_dropdownlist_valueChange_7_listener($event) { return ctx.onTimeRangeChange($event); });
334
- i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(8, "button", 7);
336
- i0.ɵɵlistener("click", function SchedulingHistoryComponent_Template_button_click_8_listener() { return ctx.onRefresh(); });
337
- i0.ɵɵelement(9, "i", 8);
338
- i0.ɵɵtext(10, " Refresh ");
339
- i0.ɵɵelementEnd()();
340
- i0.ɵɵelementStart(11, "div", 9);
341
- i0.ɵɵtext(12);
342
- i0.ɵɵelementEnd()();
343
- i0.ɵɵtemplate(13, SchedulingHistoryComponent_Conditional_13_Template, 2, 0, "div", 10)(14, SchedulingHistoryComponent_Conditional_14_Template, 16, 0, "div", 11)(15, SchedulingHistoryComponent_Conditional_15_Template, 4, 0, "div", 12)(16, SchedulingHistoryComponent_Conditional_16_Template, 19, 0, "div", 13);
344
- i0.ɵɵelementEnd();
345
- } if (rf & 2) {
346
- i0.ɵɵadvance(4);
347
- i0.ɵɵproperty("value", ctx.searchTerm$.value);
348
- i0.ɵɵadvance(2);
349
- i0.ɵɵproperty("data", ctx.statusOptions)("valuePrimitive", true)("value", ctx.statusFilter$.value);
350
- i0.ɵɵadvance();
351
- i0.ɵɵproperty("data", ctx.timeRangeOptions)("valuePrimitive", true)("value", 7);
352
- i0.ɵɵadvance();
353
- i0.ɵɵproperty("disabled", ctx.isLoading);
354
- i0.ɵɵadvance();
355
- i0.ɵɵclassProp("fa-spin", ctx.isLoading);
356
- i0.ɵɵadvance(3);
357
- i0.ɵɵtextInterpolate2(" Showing ", ctx.filteredExecutions.length, " of ", ctx.executions.length, " executions ");
358
- i0.ɵɵadvance();
359
- i0.ɵɵconditional(ctx.isLoading && ctx.executions.length === 0 ? 13 : -1);
360
- i0.ɵɵadvance();
361
- i0.ɵɵconditional(!ctx.isLoading && ctx.trends.length > 0 ? 14 : -1);
362
- i0.ɵɵadvance();
363
- i0.ɵɵconditional(!ctx.isLoading && ctx.filteredExecutions.length === 0 ? 15 : -1);
364
- i0.ɵɵadvance();
365
- i0.ɵɵconditional(ctx.filteredExecutions.length > 0 ? 16 : -1);
366
- } }, dependencies: [i2.NgClass, i3.DropDownListComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.ButtonComponent, i6.LoadingComponent, i2.DatePipe], styles: [".scheduling-history[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.history-header[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.filters-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n.filters-row[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 250px;\n}\n\n.results-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n}\n\n.loading-overlay[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px;\n color: #6c757d;\n}\n.loading-overlay[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n font-size: 48px;\n opacity: 0.3;\n}\n.loading-overlay[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n.trends-chart-container[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n.trends-chart-container[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.trends-chart-container[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0078d4;\n}\n\n.simple-chart[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: flex-end;\n height: 200px;\n padding: 20px 0;\n border-bottom: 2px solid #dee2e6;\n overflow-x: auto;\n}\n\n.chart-bar-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n min-width: 60px;\n}\n\n.chart-bars[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n align-items: flex-end;\n height: 150px;\n}\n\n.chart-bar[_ngcontent-%COMP%] {\n width: 20px;\n min-height: 2px;\n border-radius: 4px 4px 0 0;\n transition: all 0.3s;\n}\n.chart-bar.success[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #86d16f 0%, #107c10 100%);\n}\n.chart-bar.error[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #f8a5a8 0%, #d13438 100%);\n}\n.chart-bar[_ngcontent-%COMP%]:hover {\n opacity: 0.8;\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #6c757d;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n white-space: nowrap;\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-top: 16px;\n justify-content: center;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n}\n.legend-item[_ngcontent-%COMP%] .legend-color[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n border-radius: 3px;\n}\n.legend-item[_ngcontent-%COMP%] .legend-color.success[_ngcontent-%COMP%] {\n background: #107c10;\n}\n.legend-item[_ngcontent-%COMP%] .legend-color.error[_ngcontent-%COMP%] {\n background: #d13438;\n}\n\n.execution-list[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: auto;\n flex: 1;\n}\n\n.execution-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n.execution-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: #f8f9fa;\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.execution-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px;\n text-align: left;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n border-bottom: 2px solid #dee2e6;\n}\n.execution-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid #dee2e6;\n transition: background 0.2s;\n}\n.execution-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n}\n.execution-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px;\n font-size: 13px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n.status-badge.status-running[_ngcontent-%COMP%] {\n background: #cfe2ff;\n color: #0d6efd;\n}\n.status-badge.status-success[_ngcontent-%COMP%] {\n background: #d1e7dd;\n color: #0f5132;\n}\n.status-badge.status-error[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #842029;\n}\n.status-badge.status-warning[_ngcontent-%COMP%] {\n background: #fff3cd;\n color: #664d03;\n}\n.status-badge.status-info[_ngcontent-%COMP%] {\n background: #cff4fc;\n color: #055160;\n}\n\n.error-message[_ngcontent-%COMP%] {\n color: #d13438;\n font-size: 12px;\n font-family: \"Courier New\", monospace;\n}\n\n.no-error[_ngcontent-%COMP%] {\n color: #6c757d;\n}"] });
367
- }
368
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingHistoryComponent, [{
369
- type: Component,
370
- args: [{ selector: 'app-scheduling-history', template: "<div class=\"scheduling-history\">\n <div class=\"history-header\">\n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox\n placeholder=\"Search executions...\"\n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n\n <kendo-dropdownlist\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [value]=\"statusFilter$.value\"\n (valueChange)=\"onStatusFilterChange($event)\">\n </kendo-dropdownlist>\n\n <kendo-dropdownlist\n [data]=\"timeRangeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [value]=\"7\"\n (valueChange)=\"onTimeRangeChange($event)\">\n </kendo-dropdownlist>\n\n <button kendoButton (click)=\"onRefresh()\" [disabled]=\"isLoading\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\"></i>\n Refresh\n </button>\n </div>\n\n <div class=\"results-count\">\n Showing {{ filteredExecutions.length }} of {{ executions.length }} executions\n </div>\n </div>\n\n @if (isLoading && executions.length === 0) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading execution history...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n @if (!isLoading && trends.length > 0) {\n <div class=\"trends-chart-container\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Execution Trends</h3>\n <div class=\"simple-chart\">\n @for (point of trends; track $index) {\n <div class=\"chart-bar-group\">\n <div class=\"chart-bars\">\n <div\n class=\"chart-bar success\"\n [style.height.px]=\"point.successes * 5\"\n [title]=\"'Successes: ' + point.successes\">\n </div>\n <div\n class=\"chart-bar error\"\n [style.height.px]=\"point.failures * 5\"\n [title]=\"'Failures: ' + point.failures\">\n </div>\n </div>\n <div class=\"chart-label\">\n {{ point.timestamp | date: 'short' }}\n </div>\n </div>\n }\n </div>\n <div class=\"chart-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-color success\"></div>\n <span>Successful</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-color error\"></div>\n <span>Failed</span>\n </div>\n </div>\n </div>\n }\n\n @if (!isLoading && filteredExecutions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No execution history found</p>\n </div>\n }\n\n @if (filteredExecutions.length > 0) {\n <div class=\"execution-list\">\n <table class=\"execution-table\">\n <thead>\n <tr>\n <th>Status</th>\n <th>Job Name</th>\n <th>Type</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.id) {\n <tr>\n <td>\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(exec.status)\">\n <i class=\"fa-solid\" [ngClass]=\"getStatusIcon(exec.status)\"></i>\n {{ exec.status }}\n </span>\n </td>\n <td>{{ exec.jobName }}</td>\n <td>{{ exec.jobType }}</td>\n <td>{{ formatDate(exec.startedAt) }}</td>\n <td>{{ formatDuration(exec.duration) }}</td>\n <td>\n @if (exec.errorMessage) {\n <span class=\"error-message\" [title]=\"exec.errorMessage\">\n {{ exec.errorMessage.substring(0, 50) }}{{ exec.errorMessage.length > 50 ? '...' : '' }}\n </span>\n } @else {\n <span class=\"no-error\">-</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n</div>\n", styles: [".scheduling-history {\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.history-header {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.filters-row {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n.filters-row .search-container {\n flex: 1;\n min-width: 250px;\n}\n\n.results-count {\n font-size: 13px;\n color: #6c757d;\n}\n\n.loading-overlay,\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px;\n color: #6c757d;\n}\n.loading-overlay i,\n.empty-state i {\n margin-bottom: 16px;\n font-size: 48px;\n opacity: 0.3;\n}\n.loading-overlay p,\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n.trends-chart-container {\n background: white;\n border-radius: 8px;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n.trends-chart-container h3 {\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.trends-chart-container h3 i {\n color: #0078d4;\n}\n\n.simple-chart {\n display: flex;\n gap: 8px;\n align-items: flex-end;\n height: 200px;\n padding: 20px 0;\n border-bottom: 2px solid #dee2e6;\n overflow-x: auto;\n}\n\n.chart-bar-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n min-width: 60px;\n}\n\n.chart-bars {\n display: flex;\n gap: 4px;\n align-items: flex-end;\n height: 150px;\n}\n\n.chart-bar {\n width: 20px;\n min-height: 2px;\n border-radius: 4px 4px 0 0;\n transition: all 0.3s;\n}\n.chart-bar.success {\n background: linear-gradient(180deg, #86d16f 0%, #107c10 100%);\n}\n.chart-bar.error {\n background: linear-gradient(180deg, #f8a5a8 0%, #d13438 100%);\n}\n.chart-bar:hover {\n opacity: 0.8;\n}\n\n.chart-label {\n font-size: 10px;\n color: #6c757d;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n white-space: nowrap;\n}\n\n.chart-legend {\n display: flex;\n gap: 20px;\n margin-top: 16px;\n justify-content: center;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n}\n.legend-item .legend-color {\n width: 16px;\n height: 16px;\n border-radius: 3px;\n}\n.legend-item .legend-color.success {\n background: #107c10;\n}\n.legend-item .legend-color.error {\n background: #d13438;\n}\n\n.execution-list {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: auto;\n flex: 1;\n}\n\n.execution-table {\n width: 100%;\n border-collapse: collapse;\n}\n.execution-table thead {\n background: #f8f9fa;\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.execution-table thead th {\n padding: 12px;\n text-align: left;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n border-bottom: 2px solid #dee2e6;\n}\n.execution-table tbody tr {\n border-bottom: 1px solid #dee2e6;\n transition: background 0.2s;\n}\n.execution-table tbody tr:hover {\n background: #f8f9fa;\n}\n.execution-table tbody tr td {\n padding: 12px;\n font-size: 13px;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n.status-badge.status-running {\n background: #cfe2ff;\n color: #0d6efd;\n}\n.status-badge.status-success {\n background: #d1e7dd;\n color: #0f5132;\n}\n.status-badge.status-error {\n background: #f8d7da;\n color: #842029;\n}\n.status-badge.status-warning {\n background: #fff3cd;\n color: #664d03;\n}\n.status-badge.status-info {\n background: #cff4fc;\n color: #055160;\n}\n\n.error-message {\n color: #d13438;\n font-size: 12px;\n font-family: \"Courier New\", monospace;\n}\n\n.no-error {\n color: #6c757d;\n}\n"] }]
371
- }], () => [{ type: i1.SchedulingInstrumentationService }, { type: i0.ChangeDetectorRef }], { initialState: [{
372
- type: Input
373
- }], stateChange: [{
374
- type: Output
375
- }] }); })();
376
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingHistoryComponent, { className: "SchedulingHistoryComponent" }); })();
377
- //# sourceMappingURL=scheduling-history.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduling-history.component.js","sourceRoot":"","sources":["../../../src/Scheduling/components/scheduling-history.component.ts","../../../src/Scheduling/components/scheduling-history.component.html"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { OnInit, OnDestroy } from '@angular/core';
2
- import { ResourceData } from '@memberjunction/core-entities';
3
- import { BaseResourceComponent } from '@memberjunction/ng-shared';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Tree-shaking prevention function
7
- */
8
- export declare function LoadSchedulingMonitorResource(): void;
9
- /**
10
- * Scheduling Monitor Resource - displays real-time job monitoring and metrics
11
- */
12
- export declare class SchedulingMonitorResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {
13
- ngOnInit(): void;
14
- ngOnDestroy(): void;
15
- GetResourceDisplayName(data: ResourceData): Promise<string>;
16
- GetResourceIconClass(data: ResourceData): Promise<string>;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingMonitorResourceComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingMonitorResourceComponent, "mj-scheduling-monitor-resource", never, {}, {}, never, never, false, never>;
19
- }
20
- //# sourceMappingURL=scheduling-monitor-resource.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduling-monitor-resource.component.d.ts","sourceRoot":"","sources":["../../../src/Scheduling/components/scheduling-monitor-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;;AAElE;;GAEG;AACH,wBAAgB,6BAA6B,SAE5C;AAED;;GAEG;AACH,qBAkBa,kCAAmC,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IAExG,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAIb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAfpD,kCAAkC;2CAAlC,kCAAkC;CAkB9C"}
@@ -1,55 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { Component } from '@angular/core';
8
- import { RegisterClass } from '@memberjunction/global';
9
- import { BaseResourceComponent } from '@memberjunction/ng-shared';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./scheduling-monitoring.component";
12
- /**
13
- * Tree-shaking prevention function
14
- */
15
- export function LoadSchedulingMonitorResource() {
16
- // Force inclusion in production builds
17
- }
18
- /**
19
- * Scheduling Monitor Resource - displays real-time job monitoring and metrics
20
- */
21
- let SchedulingMonitorResourceComponent = class SchedulingMonitorResourceComponent extends BaseResourceComponent {
22
- ngOnInit() {
23
- // Notify that loading is complete
24
- this.NotifyLoadComplete();
25
- }
26
- ngOnDestroy() {
27
- // Cleanup if needed
28
- }
29
- async GetResourceDisplayName(data) {
30
- return 'Monitor';
31
- }
32
- async GetResourceIconClass(data) {
33
- return 'fa-solid fa-chart-line';
34
- }
35
- static ɵfac = /*@__PURE__*/ (() => { let ɵSchedulingMonitorResourceComponent_BaseFactory; return function SchedulingMonitorResourceComponent_Factory(__ngFactoryType__) { return (ɵSchedulingMonitorResourceComponent_BaseFactory || (ɵSchedulingMonitorResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SchedulingMonitorResourceComponent)))(__ngFactoryType__ || SchedulingMonitorResourceComponent); }; })();
36
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingMonitorResourceComponent, selectors: [["mj-scheduling-monitor-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 0, consts: [[1, "resource-container"]], template: function SchedulingMonitorResourceComponent_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "div", 0);
38
- i0.ɵɵelement(1, "app-scheduling-monitoring");
39
- i0.ɵɵelementEnd();
40
- } }, dependencies: [i1.SchedulingMonitoringComponent], styles: [".resource-container[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n overflow: auto;\n padding: 7px;\n box-sizing: border-box;\n }"] });
41
- };
42
- SchedulingMonitorResourceComponent = __decorate([
43
- RegisterClass(BaseResourceComponent, 'SchedulingMonitorResource')
44
- ], SchedulingMonitorResourceComponent);
45
- export { SchedulingMonitorResourceComponent };
46
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingMonitorResourceComponent, [{
47
- type: Component,
48
- args: [{ selector: 'mj-scheduling-monitor-resource', template: `
49
- <div class="resource-container">
50
- <app-scheduling-monitoring></app-scheduling-monitoring>
51
- </div>
52
- `, styles: ["\n .resource-container {\n width: 100%;\n height: 100%;\n overflow: auto;\n padding: 7px;\n box-sizing: border-box;\n }\n "] }]
53
- }], null, null); })();
54
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingMonitorResourceComponent, { className: "SchedulingMonitorResourceComponent" }); })();
55
- //# sourceMappingURL=scheduling-monitor-resource.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduling-monitor-resource.component.js","sourceRoot":"","sources":["../../../src/Scheduling/components/scheduling-monitor-resource.component.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;;;AAElE;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,uCAAuC;AACzC,CAAC;AAED;;GAEG;AAmBI,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,qBAAqB;IAE3E,QAAQ;QACN,kCAAkC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,oBAAoB;IACtB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAkB;QAC3C,OAAO,wBAAwB,CAAC;IAClC,CAAC;qTAjBU,kCAAkC,yBAAlC,kCAAkC;6DAAlC,kCAAkC;YAd3C,8BAAgC;YAC9B,4CAAuD;YACzD,iBAAM;;;AAYG,kCAAkC;IAlB9C,aAAa,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;GAkBrD,kCAAkC,CAkB9C;;iFAlBY,kCAAkC;cAjB9C,SAAS;2BACE,gCAAgC,YAChC;;;;GAIT;;kFAWU,kCAAkC"}
@@ -1,37 +0,0 @@
1
- import { OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
- import { SchedulingInstrumentationService, SchedulingKPIs, JobExecution, UpcomingExecution } from '../services/scheduling-instrumentation.service';
3
- import * as i0 from "@angular/core";
4
- export declare class SchedulingMonitoringComponent implements OnInit, OnDestroy {
5
- private schedulingService;
6
- private cdr;
7
- initialState: any;
8
- stateChange: EventEmitter<any>;
9
- kpis: SchedulingKPIs | null;
10
- liveExecutions: JobExecution[];
11
- upcomingExecutions: UpcomingExecution[];
12
- isLoading: boolean;
13
- autoRefreshInterval: number;
14
- autoRefreshEnabled: boolean;
15
- private destroy$;
16
- private refreshTimer;
17
- constructor(schedulingService: SchedulingInstrumentationService, cdr: ChangeDetectorRef);
18
- ngOnInit(): void;
19
- ngOnDestroy(): void;
20
- private loadState;
21
- private loadData;
22
- private setupAutoRefresh;
23
- onRefresh(): void;
24
- toggleAutoRefresh(): void;
25
- setRefreshInterval(interval: number): void;
26
- getStatusClass(status: string): string;
27
- getStatusIcon(status: string): string;
28
- formatDuration(ms?: number): string;
29
- formatTimeAgo(date: Date): string;
30
- formatTimeUntil(date: Date): string;
31
- formatCost(cost: number): string;
32
- formatPercentage(value: number): string;
33
- private emitStateChange;
34
- static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingMonitoringComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingMonitoringComponent, "app-scheduling-monitoring", never, { "initialState": { "alias": "initialState"; "required": false; }; }, { "stateChange": "stateChange"; }, never, never, false, never>;
36
- }
37
- //# sourceMappingURL=scheduling-monitoring.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduling-monitoring.component.d.ts","sourceRoot":"","sources":["../../../src/Scheduling/components/scheduling-monitoring.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG7G,OAAO,EAAE,gCAAgC,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;;AAEnJ,qBAKa,6BAA8B,YAAW,MAAM,EAAE,SAAS;IAenE,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IAfJ,YAAY,EAAE,GAAG,CAAC;IACjB,WAAW,oBAA2B;IAEzC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAQ;IACnC,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IAC7C,SAAS,UAAS;IAClB,mBAAmB,EAAE,MAAM,CAAS;IACpC,kBAAkB,UAAQ;IAEjC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,YAAY,CAAM;gBAGhB,iBAAiB,EAAE,gCAAgC,EACnD,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAMhB,WAAW,IAAI,IAAI;IAQnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IA6ChB,OAAO,CAAC,gBAAgB;IAQjB,SAAS,IAAI,IAAI;IAIjB,iBAAiB,IAAI,IAAI;IAWzB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAW1C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWtC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWrC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAUnC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAajC,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAcnC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMhC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9C,OAAO,CAAC,eAAe;yCA5LZ,6BAA6B;2CAA7B,6BAA6B;CAmMzC"}