@memberjunction/ng-dashboards 5.34.1 → 5.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +329 -371
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +202 -158
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +191 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +19 -79
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +19 -79
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +19 -79
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/Admin/base-admin-container.component.d.ts +9 -7
- package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
- package/dist/Admin/base-admin-container.component.js +26 -17
- package/dist/Admin/base-admin-container.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
- package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-new-message-resource.component.js +661 -0
- package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
- package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +46 -72
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -100
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +158 -168
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +257 -264
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.d.ts +5 -0
- package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +46 -64
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/DevTools/lazy-module-status.component.js +75 -84
- package/dist/DevTools/lazy-module-status.component.js.map +1 -1
- package/dist/DevTools/settings-explorer.component.js +76 -85
- package/dist/DevTools/settings-explorer.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +307 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +654 -648
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +230 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +1 -0
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +1 -0
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +236 -10
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +679 -786
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +114 -99
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +51 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +9 -6
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +37 -7
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +46 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +10 -9
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +40 -2
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +42 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +53 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
7
|
+
import { Component, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
8
8
|
import { BaseDashboard } from '@memberjunction/ng-shared';
|
|
9
9
|
import { RegisterClass } from '@memberjunction/global';
|
|
10
10
|
import { Subject } from 'rxjs';
|
|
@@ -12,65 +12,140 @@ import { debounceTime } from 'rxjs/operators';
|
|
|
12
12
|
import { SharedService } from '@memberjunction/ng-shared';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "./services/scheduling-instrumentation.service";
|
|
15
|
-
import * as i2 from "
|
|
16
|
-
import * as i3 from "./components/scheduling-
|
|
17
|
-
import * as i4 from "./components/scheduling-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
16
|
+
import * as i3 from "./components/scheduling-overview.component";
|
|
17
|
+
import * as i4 from "./components/scheduling-jobs.component";
|
|
18
|
+
import * as i5 from "./components/scheduling-activity.component";
|
|
19
|
+
const _c0 = ["overviewCmp"];
|
|
20
|
+
const _c1 = ["jobsCmp"];
|
|
21
|
+
const _c2 = ["activityCmp"];
|
|
22
|
+
const _forTrack0 = ($index, $item) => $item.value;
|
|
23
|
+
function SchedulingDashboardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelement(0, "mj-stat-badge", 5);
|
|
24
25
|
} if (rf & 2) {
|
|
25
26
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
26
|
-
i0.ɵɵ
|
|
27
|
-
i0.ɵɵtextInterpolate2("", ctx_r0.AlertCount, " Alert", ctx_r0.AlertCount !== 1 ? "s" : "");
|
|
27
|
+
i0.ɵɵproperty("Count", ctx_r0.AlertCount)("Label", ctx_r0.AlertCount === 1 ? "Alert" : "Alerts");
|
|
28
28
|
} }
|
|
29
|
-
function
|
|
30
|
-
i0.ɵɵ
|
|
31
|
-
i0.ɵɵelement(1, "i", 20);
|
|
32
|
-
i0.ɵɵelementStart(2, "span");
|
|
33
|
-
i0.ɵɵtext(3, "Healthy");
|
|
34
|
-
i0.ɵɵelementEnd()();
|
|
29
|
+
function SchedulingDashboardComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelement(0, "mj-stat-badge", 6);
|
|
35
31
|
} }
|
|
36
|
-
function
|
|
37
|
-
i0.ɵɵ
|
|
38
|
-
i0.ɵɵtext(1);
|
|
39
|
-
i0.ɵɵelementEnd();
|
|
32
|
+
function SchedulingDashboardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelement(0, "mj-stat-badge", 7);
|
|
40
34
|
} if (rf & 2) {
|
|
41
35
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
42
|
-
i0.ɵɵ
|
|
43
|
-
i0.ɵɵtextInterpolate(ctx_r0.ActiveJobCount);
|
|
36
|
+
i0.ɵɵproperty("Count", (ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.FilteredJobs == null ? null : ctx_r0.jobsCmp.FilteredJobs.length) ?? 0)("Total", (ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.Jobs == null ? null : ctx_r0.jobsCmp.Jobs.length) ?? 0);
|
|
44
37
|
} }
|
|
45
|
-
function
|
|
38
|
+
function SchedulingDashboardComponent_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
46
39
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
47
|
-
i0.ɵɵelementStart(0, "
|
|
48
|
-
i0.ɵɵlistener("
|
|
49
|
-
i0.ɵɵelementEnd()
|
|
40
|
+
i0.ɵɵelementStart(0, "mj-refresh-button", 13);
|
|
41
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_7_Template_mj_refresh_button_Clicked_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.overviewCmp == null ? null : ctx_r0.overviewCmp.Refresh()); });
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
i0.ɵɵelementStart(1, "button", 14);
|
|
44
|
+
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Case_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.overviewCmp == null ? null : ctx_r0.overviewCmp.ToggleAutoRefresh()); });
|
|
45
|
+
i0.ɵɵelement(2, "i", 15);
|
|
46
|
+
i0.ɵɵtext(3);
|
|
47
|
+
i0.ɵɵelementEnd();
|
|
50
48
|
} if (rf & 2) {
|
|
51
49
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
52
50
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵproperty("
|
|
51
|
+
i0.ɵɵproperty("variant", (ctx_r0.overviewCmp == null ? null : ctx_r0.overviewCmp.AutoRefreshEnabled) ? "primary" : "secondary");
|
|
52
|
+
i0.ɵɵadvance(2);
|
|
53
|
+
i0.ɵɵtextInterpolate1(" Auto: ", (ctx_r0.overviewCmp == null ? null : ctx_r0.overviewCmp.AutoRefreshEnabled) ? "ON" : "OFF", " ");
|
|
54
54
|
} }
|
|
55
|
-
function
|
|
55
|
+
function SchedulingDashboardComponent_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
56
56
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
57
|
-
i0.ɵɵelementStart(0, "
|
|
58
|
-
i0.ɵɵlistener("
|
|
57
|
+
i0.ɵɵelementStart(0, "mj-filter-popover", 16);
|
|
58
|
+
i0.ɵɵlistener("ClearAllRequested", function SchedulingDashboardComponent_Case_8_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.resetJobsFilters()); });
|
|
59
|
+
i0.ɵɵelementStart(1, "mj-filter-panel", 17);
|
|
60
|
+
i0.ɵɵlistener("ValuesChange", function SchedulingDashboardComponent_Case_8_Template_mj_filter_panel_ValuesChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onJobsFilterValuesChange($event)); })("Reset", function SchedulingDashboardComponent_Case_8_Template_mj_filter_panel_Reset_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.resetJobsFilters()); });
|
|
59
61
|
i0.ɵɵelementEnd()();
|
|
62
|
+
i0.ɵɵelementStart(2, "mj-refresh-button", 13);
|
|
63
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_8_Template_mj_refresh_button_Clicked_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.Refresh()); });
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵelementStart(3, "button", 18);
|
|
66
|
+
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Case_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.OpenCreateSlideout()); });
|
|
67
|
+
i0.ɵɵelement(4, "i", 19);
|
|
68
|
+
i0.ɵɵtext(5, " New Job ");
|
|
69
|
+
i0.ɵɵelementEnd();
|
|
60
70
|
} if (rf & 2) {
|
|
61
71
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
72
|
+
i0.ɵɵproperty("ActiveCount", ctx_r0.JobsActiveFilterCount)("ShowClearAll", ctx_r0.JobsActiveFilterCount > 0);
|
|
62
73
|
i0.ɵɵadvance();
|
|
63
|
-
i0.ɵɵproperty("
|
|
74
|
+
i0.ɵɵproperty("Fields", ctx_r0.JobsFilterFields)("Values", ctx_r0.JobsFilterValues);
|
|
64
75
|
} }
|
|
65
|
-
function
|
|
76
|
+
function SchedulingDashboardComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
66
77
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
67
|
-
i0.ɵɵelementStart(0, "
|
|
68
|
-
i0.ɵɵlistener("
|
|
78
|
+
i0.ɵɵelementStart(0, "mj-filter-popover", 16);
|
|
79
|
+
i0.ɵɵlistener("ClearAllRequested", function SchedulingDashboardComponent_Case_9_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.resetActivityFilters()); });
|
|
80
|
+
i0.ɵɵelementStart(1, "mj-filter-panel", 17);
|
|
81
|
+
i0.ɵɵlistener("ValuesChange", function SchedulingDashboardComponent_Case_9_Template_mj_filter_panel_ValuesChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onActivityFilterValuesChange($event)); })("Reset", function SchedulingDashboardComponent_Case_9_Template_mj_filter_panel_Reset_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.resetActivityFilters()); });
|
|
69
82
|
i0.ɵɵelementEnd()();
|
|
83
|
+
i0.ɵɵelementStart(2, "mj-refresh-button", 13);
|
|
84
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_9_Template_mj_refresh_button_Clicked_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.Refresh()); });
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
70
86
|
} if (rf & 2) {
|
|
71
87
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
88
|
+
i0.ɵɵproperty("ActiveCount", ctx_r0.ActivityActiveFilterCount)("ShowClearAll", ctx_r0.ActivityActiveFilterCount > 0);
|
|
72
89
|
i0.ɵɵadvance();
|
|
73
|
-
i0.ɵɵproperty("
|
|
90
|
+
i0.ɵɵproperty("Fields", ctx_r0.ActivityFilterFields)("Values", ctx_r0.ActivityFilterValues);
|
|
91
|
+
} }
|
|
92
|
+
function SchedulingDashboardComponent_Case_12_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "mj-page-search", 20);
|
|
95
|
+
i0.ɵɵlistener("ValueChange", function SchedulingDashboardComponent_Case_12_Template_mj_page_search_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.OnSearchChange($event)); });
|
|
96
|
+
i0.ɵɵelementEnd();
|
|
97
|
+
} if (rf & 2) {
|
|
98
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
99
|
+
i0.ɵɵproperty("Value", (ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.SearchTerm) ?? "");
|
|
100
|
+
} }
|
|
101
|
+
function SchedulingDashboardComponent_Case_13_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
103
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 23);
|
|
104
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_13_For_2_Template_mj_filter_chip_Clicked_0_listener() { const range_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.OnTimeRangeChange(range_r8.value)); });
|
|
105
|
+
i0.ɵɵelementEnd();
|
|
106
|
+
} if (rf & 2) {
|
|
107
|
+
const range_r8 = ctx.$implicit;
|
|
108
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
109
|
+
i0.ɵɵproperty("Label", range_r8.label)("Active", (ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.SelectedTimeRange) === range_r8.value);
|
|
110
|
+
} }
|
|
111
|
+
function SchedulingDashboardComponent_Case_13_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
113
|
+
i0.ɵɵelementStart(0, "mj-page-search", 21);
|
|
114
|
+
i0.ɵɵlistener("ValueChange", function SchedulingDashboardComponent_Case_13_Template_mj_page_search_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.OnSearchChange($event)); });
|
|
115
|
+
i0.ɵɵelementEnd();
|
|
116
|
+
i0.ɵɵrepeaterCreate(1, SchedulingDashboardComponent_Case_13_For_2_Template, 1, 2, "mj-filter-chip", 22, _forTrack0);
|
|
117
|
+
} if (rf & 2) {
|
|
118
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
119
|
+
i0.ɵɵproperty("Value", (ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.SearchTerm) ?? "");
|
|
120
|
+
i0.ɵɵadvance();
|
|
121
|
+
i0.ɵɵrepeater(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.TimeRanges);
|
|
122
|
+
} }
|
|
123
|
+
function SchedulingDashboardComponent_Case_15_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
125
|
+
i0.ɵɵelementStart(0, "app-scheduling-overview", 24, 0);
|
|
126
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_15_Template_app_scheduling_overview_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnDashboardStateChange($event)); });
|
|
127
|
+
i0.ɵɵelementEnd();
|
|
128
|
+
} if (rf & 2) {
|
|
129
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
130
|
+
i0.ɵɵproperty("initialState", ctx_r0.DashboardState)("HideToolbar", true);
|
|
131
|
+
} }
|
|
132
|
+
function SchedulingDashboardComponent_Case_16_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
134
|
+
i0.ɵɵelementStart(0, "app-scheduling-jobs", 24, 1);
|
|
135
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_16_Template_app_scheduling_jobs_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnJobsStateChange($event)); });
|
|
136
|
+
i0.ɵɵelementEnd();
|
|
137
|
+
} if (rf & 2) {
|
|
138
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
139
|
+
i0.ɵɵproperty("initialState", ctx_r0.JobsState)("HideToolbar", true);
|
|
140
|
+
} }
|
|
141
|
+
function SchedulingDashboardComponent_Case_17_Template(rf, ctx) { if (rf & 1) {
|
|
142
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
143
|
+
i0.ɵɵelementStart(0, "app-scheduling-activity", 24, 2);
|
|
144
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_17_Template_app_scheduling_activity_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnActivityStateChange($event)); });
|
|
145
|
+
i0.ɵɵelementEnd();
|
|
146
|
+
} if (rf & 2) {
|
|
147
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
148
|
+
i0.ɵɵproperty("initialState", ctx_r0.ActivityState)("HideToolbar", true);
|
|
74
149
|
} }
|
|
75
150
|
let SchedulingDashboardComponent = class SchedulingDashboardComponent extends BaseDashboard {
|
|
76
151
|
cdr;
|
|
@@ -84,13 +159,24 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
84
159
|
stateChangeSubject = new Subject();
|
|
85
160
|
ActiveJobCount = 0;
|
|
86
161
|
AlertCount = 0;
|
|
162
|
+
/** ViewChild references to the active inner tab component — drive the toolbar UI rendered in <mj-page-header>. */
|
|
163
|
+
overviewCmp;
|
|
164
|
+
jobsCmp;
|
|
165
|
+
activityCmp;
|
|
87
166
|
kpiSub;
|
|
88
167
|
alertSub;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
168
|
+
get Tabs() {
|
|
169
|
+
return [
|
|
170
|
+
{ key: 'dashboard', label: 'Dashboard', icon: 'fa-solid fa-gauge-high' },
|
|
171
|
+
{
|
|
172
|
+
key: 'jobs',
|
|
173
|
+
label: 'Jobs',
|
|
174
|
+
icon: 'fa-solid fa-calendar-check',
|
|
175
|
+
badge: this.ActiveJobCount > 0 ? this.ActiveJobCount : null
|
|
176
|
+
},
|
|
177
|
+
{ key: 'activity', label: 'Activity', icon: 'fa-solid fa-clock-rotate-left' }
|
|
178
|
+
];
|
|
179
|
+
}
|
|
94
180
|
constructor(cdr, schedulingService) {
|
|
95
181
|
super();
|
|
96
182
|
this.cdr = cdr;
|
|
@@ -135,6 +221,91 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
135
221
|
HasVisited(tabId) {
|
|
136
222
|
return this.visitedTabs.has(tabId);
|
|
137
223
|
}
|
|
224
|
+
// ───── Filter-popover plumbing for the [actions]/[toolbar] slots ─────
|
|
225
|
+
get JobsFilterFields() {
|
|
226
|
+
const statusOptions = (this.jobsCmp?.StatusOptions ?? ['']).map(s => ({
|
|
227
|
+
text: s === '' ? 'All Statuses' : s,
|
|
228
|
+
value: s
|
|
229
|
+
}));
|
|
230
|
+
const typeOptions = (this.jobsCmp?.TypeOptions ?? ['']).map(t => ({
|
|
231
|
+
text: t === '' ? 'All Types' : t,
|
|
232
|
+
value: t
|
|
233
|
+
}));
|
|
234
|
+
return [
|
|
235
|
+
{ key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },
|
|
236
|
+
{ key: 'typeFilter', type: 'dropdown', label: 'Type', icon: 'fa-solid fa-shapes', placeholder: 'All Types', options: typeOptions }
|
|
237
|
+
];
|
|
238
|
+
}
|
|
239
|
+
get JobsFilterValues() {
|
|
240
|
+
return {
|
|
241
|
+
statusFilter: this.jobsCmp?.StatusFilter ?? '',
|
|
242
|
+
typeFilter: this.jobsCmp?.TypeFilter ?? ''
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
get JobsActiveFilterCount() {
|
|
246
|
+
let n = 0;
|
|
247
|
+
if (this.jobsCmp?.StatusFilter)
|
|
248
|
+
n++;
|
|
249
|
+
if (this.jobsCmp?.TypeFilter)
|
|
250
|
+
n++;
|
|
251
|
+
return n;
|
|
252
|
+
}
|
|
253
|
+
onJobsFilterValuesChange(v) {
|
|
254
|
+
if (!this.jobsCmp)
|
|
255
|
+
return;
|
|
256
|
+
const next = (v ?? {});
|
|
257
|
+
if ((next.statusFilter ?? '') !== this.jobsCmp.StatusFilter)
|
|
258
|
+
this.jobsCmp.OnStatusFilterChange(next.statusFilter ?? '');
|
|
259
|
+
if ((next.typeFilter ?? '') !== this.jobsCmp.TypeFilter)
|
|
260
|
+
this.jobsCmp.OnTypeFilterChange(next.typeFilter ?? '');
|
|
261
|
+
}
|
|
262
|
+
resetJobsFilters() {
|
|
263
|
+
if (this.jobsCmp?.StatusFilter)
|
|
264
|
+
this.jobsCmp.OnStatusFilterChange('');
|
|
265
|
+
if (this.jobsCmp?.TypeFilter)
|
|
266
|
+
this.jobsCmp.OnTypeFilterChange('');
|
|
267
|
+
}
|
|
268
|
+
get ActivityFilterFields() {
|
|
269
|
+
const statusOptions = (this.activityCmp?.StatusOptions ?? ['']).map(s => ({
|
|
270
|
+
text: s === '' ? 'All Statuses' : s,
|
|
271
|
+
value: s
|
|
272
|
+
}));
|
|
273
|
+
const jobNames = this.activityCmp?.UniqueJobNames ?? [];
|
|
274
|
+
const jobOptions = [{ text: 'All Jobs', value: '' }, ...jobNames.map(n => ({ text: n, value: n }))];
|
|
275
|
+
return [
|
|
276
|
+
{ key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },
|
|
277
|
+
{ key: 'jobNameFilter', type: 'dropdown', label: 'Job', icon: 'fa-solid fa-tag', placeholder: 'All Jobs', filterable: true, options: jobOptions }
|
|
278
|
+
];
|
|
279
|
+
}
|
|
280
|
+
get ActivityFilterValues() {
|
|
281
|
+
return {
|
|
282
|
+
statusFilter: this.activityCmp?.StatusFilter ?? '',
|
|
283
|
+
jobNameFilter: this.activityCmp?.JobNameFilter ?? ''
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
get ActivityActiveFilterCount() {
|
|
287
|
+
let n = 0;
|
|
288
|
+
if (this.activityCmp?.StatusFilter)
|
|
289
|
+
n++;
|
|
290
|
+
if (this.activityCmp?.JobNameFilter)
|
|
291
|
+
n++;
|
|
292
|
+
return n;
|
|
293
|
+
}
|
|
294
|
+
onActivityFilterValuesChange(v) {
|
|
295
|
+
if (!this.activityCmp)
|
|
296
|
+
return;
|
|
297
|
+
const next = (v ?? {});
|
|
298
|
+
if ((next.statusFilter ?? '') !== this.activityCmp.StatusFilter)
|
|
299
|
+
this.activityCmp.OnStatusFilterChange(next.statusFilter ?? '');
|
|
300
|
+
if ((next.jobNameFilter ?? '') !== this.activityCmp.JobNameFilter)
|
|
301
|
+
this.activityCmp.OnJobNameFilterChange(next.jobNameFilter ?? '');
|
|
302
|
+
}
|
|
303
|
+
resetActivityFilters() {
|
|
304
|
+
if (this.activityCmp?.StatusFilter)
|
|
305
|
+
this.activityCmp.OnStatusFilterChange('');
|
|
306
|
+
if (this.activityCmp?.JobNameFilter)
|
|
307
|
+
this.activityCmp.OnJobNameFilterChange('');
|
|
308
|
+
}
|
|
138
309
|
setupStateManagement() {
|
|
139
310
|
this.stateChangeSubject.pipe(debounceTime(50)).subscribe(state => {
|
|
140
311
|
this.UserStateChanged.emit(state);
|
|
@@ -160,10 +331,6 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
160
331
|
this.ActivityState = state;
|
|
161
332
|
this.emitStateChange();
|
|
162
333
|
}
|
|
163
|
-
GetCurrentTabLabel() {
|
|
164
|
-
const item = this.NavigationItems.find(n => n.id === this.ActiveTab);
|
|
165
|
-
return item ? item.text : 'Scheduling';
|
|
166
|
-
}
|
|
167
334
|
initDashboard() {
|
|
168
335
|
this.schedulingService.Provider = this.ProviderToUse;
|
|
169
336
|
this.IsLoading = false;
|
|
@@ -186,66 +353,46 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
186
353
|
this.NotifyLoadComplete();
|
|
187
354
|
}
|
|
188
355
|
static ɵfac = function SchedulingDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SchedulingDashboardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.SchedulingInstrumentationService)); };
|
|
189
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingDashboardComponent, selectors: [["mj-scheduling-dashboard"]],
|
|
190
|
-
i0.ɵɵ
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
i0.ɵɵ
|
|
194
|
-
i0.ɵɵ
|
|
195
|
-
i0.ɵɵ
|
|
196
|
-
|
|
197
|
-
i0.ɵɵ
|
|
198
|
-
i0.ɵɵ
|
|
199
|
-
i0.ɵɵ
|
|
200
|
-
i0.ɵɵelementEnd()()();
|
|
201
|
-
i0.ɵɵelementStart(11, "div", 8)(12, "div", 9)(13, "div", 10)(14, "div", 11);
|
|
202
|
-
i0.ɵɵtext(15, "Overview");
|
|
203
|
-
i0.ɵɵelementEnd()();
|
|
204
|
-
i0.ɵɵelementStart(16, "div", 12);
|
|
205
|
-
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Template_div_click_16_listener() { return ctx.OnTabChange("dashboard"); });
|
|
206
|
-
i0.ɵɵelement(17, "i", 13);
|
|
207
|
-
i0.ɵɵelementStart(18, "span");
|
|
208
|
-
i0.ɵɵtext(19, "Dashboard");
|
|
209
|
-
i0.ɵɵelementEnd()();
|
|
210
|
-
i0.ɵɵelementStart(20, "div", 10)(21, "div", 11);
|
|
211
|
-
i0.ɵɵtext(22, "Management");
|
|
212
|
-
i0.ɵɵelementEnd()();
|
|
213
|
-
i0.ɵɵelementStart(23, "div", 12);
|
|
214
|
-
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Template_div_click_23_listener() { return ctx.OnTabChange("jobs"); });
|
|
215
|
-
i0.ɵɵelement(24, "i", 3);
|
|
216
|
-
i0.ɵɵelementStart(25, "span");
|
|
217
|
-
i0.ɵɵtext(26, "Jobs");
|
|
356
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingDashboardComponent, selectors: [["mj-scheduling-dashboard"]], viewQuery: function SchedulingDashboardComponent_Query(rf, ctx) { if (rf & 1) {
|
|
357
|
+
i0.ɵɵviewQuery(_c0, 5)(_c1, 5)(_c2, 5);
|
|
358
|
+
} if (rf & 2) {
|
|
359
|
+
let _t;
|
|
360
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overviewCmp = _t.first);
|
|
361
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.jobsCmp = _t.first);
|
|
362
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.activityCmp = _t.first);
|
|
363
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 7, consts: [["overviewCmp", ""], ["jobsCmp", ""], ["activityCmp", ""], ["Title", "Scheduling", "Icon", "fa-solid fa-calendar-check", "Subtitle", "Background jobs, executions, and system health"], ["meta", ""], ["Icon", "fa-solid fa-triangle-exclamation", "Variant", "error", 3, "Count", "Label"], ["Icon", "fa-solid fa-circle-check", "Label", "Healthy", "Variant", "success"], ["Label", "jobs", 3, "Count", "Total"], ["actions", ""], ["toolbar", "", 1, "scheduling-toolbar"], [3, "TabChange", "Tabs", "ActiveKey"], ["Placeholder", "Search jobs...", 3, "Value"], [3, "initialState", "HideToolbar"], [3, "Clicked"], ["mjButton", "", "size", "sm", "title", "Toggle auto-refresh", 3, "click", "variant"], [1, "fa-solid", "fa-rotate"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["Placeholder", "Search jobs...", 3, "ValueChange", "Value"], ["Placeholder", "Search executions...", 3, "ValueChange", "Value"], [3, "Label", "Active"], [3, "Clicked", "Label", "Active"], [3, "stateChange", "initialState", "HideToolbar"]], template: function SchedulingDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 3)(2, "div", 4);
|
|
365
|
+
i0.ɵɵconditionalCreate(3, SchedulingDashboardComponent_Conditional_3_Template, 1, 2, "mj-stat-badge", 5)(4, SchedulingDashboardComponent_Conditional_4_Template, 1, 0, "mj-stat-badge", 6);
|
|
366
|
+
i0.ɵɵconditionalCreate(5, SchedulingDashboardComponent_Conditional_5_Template, 1, 2, "mj-stat-badge", 7);
|
|
218
367
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵ
|
|
368
|
+
i0.ɵɵelementStart(6, "div", 8);
|
|
369
|
+
i0.ɵɵconditionalCreate(7, SchedulingDashboardComponent_Case_7_Template, 4, 2)(8, SchedulingDashboardComponent_Case_8_Template, 6, 4)(9, SchedulingDashboardComponent_Case_9_Template, 3, 4);
|
|
220
370
|
i0.ɵɵelementEnd();
|
|
221
|
-
i0.ɵɵelementStart(
|
|
222
|
-
i0.ɵɵlistener("
|
|
223
|
-
i0.ɵɵ
|
|
224
|
-
i0.ɵɵ
|
|
225
|
-
i0.ɵɵ
|
|
226
|
-
i0.ɵɵ
|
|
227
|
-
i0.ɵɵ
|
|
228
|
-
i0.ɵɵ
|
|
229
|
-
i0.ɵɵelementEnd()()()();
|
|
371
|
+
i0.ɵɵelementStart(10, "div", 9)(11, "mj-tab-nav", 10);
|
|
372
|
+
i0.ɵɵlistener("TabChange", function SchedulingDashboardComponent_Template_mj_tab_nav_TabChange_11_listener($event) { return ctx.OnTabChange($event); });
|
|
373
|
+
i0.ɵɵelementEnd();
|
|
374
|
+
i0.ɵɵconditionalCreate(12, SchedulingDashboardComponent_Case_12_Template, 1, 1, "mj-page-search", 11)(13, SchedulingDashboardComponent_Case_13_Template, 3, 1);
|
|
375
|
+
i0.ɵɵelementEnd()();
|
|
376
|
+
i0.ɵɵelementStart(14, "mj-page-body");
|
|
377
|
+
i0.ɵɵconditionalCreate(15, SchedulingDashboardComponent_Case_15_Template, 2, 2, "app-scheduling-overview", 12)(16, SchedulingDashboardComponent_Case_16_Template, 2, 2, "app-scheduling-jobs", 12)(17, SchedulingDashboardComponent_Case_17_Template, 2, 2, "app-scheduling-activity", 12);
|
|
378
|
+
i0.ɵɵelementEnd()();
|
|
230
379
|
} if (rf & 2) {
|
|
231
|
-
let
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
i0.ɵɵadvance();
|
|
235
|
-
i0.ɵɵconditional(ctx.AlertCount
|
|
380
|
+
let tmp_2_0;
|
|
381
|
+
let tmp_5_0;
|
|
382
|
+
let tmp_6_0;
|
|
383
|
+
i0.ɵɵadvance(3);
|
|
384
|
+
i0.ɵɵconditional(ctx.AlertCount > 0 ? 3 : 4);
|
|
385
|
+
i0.ɵɵadvance(2);
|
|
386
|
+
i0.ɵɵconditional(ctx.ActiveTab === "jobs" ? 5 : -1);
|
|
236
387
|
i0.ɵɵadvance(2);
|
|
237
|
-
i0.ɵɵ
|
|
238
|
-
i0.ɵɵadvance(6);
|
|
239
|
-
i0.ɵɵclassProp("selected", ctx.ActiveTab === "dashboard");
|
|
240
|
-
i0.ɵɵadvance(7);
|
|
241
|
-
i0.ɵɵclassProp("selected", ctx.ActiveTab === "jobs");
|
|
388
|
+
i0.ɵɵconditional((tmp_2_0 = ctx.ActiveTab) === "dashboard" ? 7 : tmp_2_0 === "jobs" ? 8 : tmp_2_0 === "activity" ? 9 : -1);
|
|
242
389
|
i0.ɵɵadvance(4);
|
|
243
|
-
i0.ɵɵ
|
|
390
|
+
i0.ɵɵproperty("Tabs", ctx.Tabs)("ActiveKey", ctx.ActiveTab);
|
|
244
391
|
i0.ɵɵadvance();
|
|
245
|
-
i0.ɵɵ
|
|
246
|
-
i0.ɵɵadvance(
|
|
247
|
-
i0.ɵɵconditional((
|
|
248
|
-
} }, dependencies: [i2.
|
|
392
|
+
i0.ɵɵconditional((tmp_5_0 = ctx.ActiveTab) === "jobs" ? 12 : tmp_5_0 === "activity" ? 13 : -1);
|
|
393
|
+
i0.ɵɵadvance(3);
|
|
394
|
+
i0.ɵɵconditional((tmp_6_0 = ctx.ActiveTab) === "dashboard" ? 15 : tmp_6_0 === "jobs" ? 16 : tmp_6_0 === "activity" ? 17 : -1);
|
|
395
|
+
} }, dependencies: [i2.MJButtonDirective, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJTabNavComponent, i2.MJPageSearchComponent, i2.MJFilterChipComponent, i2.MJFilterPopoverComponent, i2.MJFilterPanelComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.SchedulingOverviewComponent, i4.SchedulingJobsComponent, i5.SchedulingActivityComponent], styles: ["\n\n.scheduling-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}"], changeDetection: 0 });
|
|
249
396
|
};
|
|
250
397
|
SchedulingDashboardComponent = __decorate([
|
|
251
398
|
RegisterClass(BaseDashboard, 'SchedulingDashboard')
|
|
@@ -253,7 +400,16 @@ SchedulingDashboardComponent = __decorate([
|
|
|
253
400
|
export { SchedulingDashboardComponent };
|
|
254
401
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingDashboardComponent, [{
|
|
255
402
|
type: Component,
|
|
256
|
-
args: [{ standalone: false, selector: 'mj-scheduling-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
257
|
-
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.SchedulingInstrumentationService }],
|
|
258
|
-
|
|
403
|
+
args: [{ standalone: false, selector: 'mj-scheduling-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Scheduling\"\n Icon=\"fa-solid fa-calendar-check\"\n Subtitle=\"Background jobs, executions, and system health\">\n <div meta>\n @if (AlertCount > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-triangle-exclamation\"\n [Count]=\"AlertCount\"\n [Label]=\"AlertCount === 1 ? 'Alert' : 'Alerts'\"\n Variant=\"error\">\n </mj-stat-badge>\n } @else {\n <mj-stat-badge\n Icon=\"fa-solid fa-circle-check\"\n Label=\"Healthy\"\n Variant=\"success\">\n </mj-stat-badge>\n }\n @if (ActiveTab === 'jobs') {\n <mj-stat-badge\n [Count]=\"jobsCmp?.FilteredJobs?.length ?? 0\"\n [Total]=\"jobsCmp?.Jobs?.length ?? 0\"\n Label=\"jobs\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n @switch (ActiveTab) {\n @case ('dashboard') {\n <mj-refresh-button (Clicked)=\"overviewCmp?.Refresh()\"></mj-refresh-button>\n <button mjButton\n [variant]=\"overviewCmp?.AutoRefreshEnabled ? 'primary' : 'secondary'\"\n size=\"sm\"\n (click)=\"overviewCmp?.ToggleAutoRefresh()\"\n title=\"Toggle auto-refresh\">\n <i class=\"fa-solid fa-rotate\"></i>\n Auto: {{overviewCmp?.AutoRefreshEnabled ? 'ON' : 'OFF'}}\n </button>\n }\n @case ('jobs') {\n <mj-filter-popover\n [ActiveCount]=\"JobsActiveFilterCount\"\n [ShowClearAll]=\"JobsActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetJobsFilters()\">\n <mj-filter-panel\n [Fields]=\"JobsFilterFields\"\n [Values]=\"JobsFilterValues\"\n (ValuesChange)=\"onJobsFilterValuesChange($event)\"\n (Reset)=\"resetJobsFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button (Clicked)=\"jobsCmp?.Refresh()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"jobsCmp?.OpenCreateSlideout()\">\n <i class=\"fa-solid fa-plus\"></i> New Job\n </button>\n }\n @case ('activity') {\n <mj-filter-popover\n [ActiveCount]=\"ActivityActiveFilterCount\"\n [ShowClearAll]=\"ActivityActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetActivityFilters()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"onActivityFilterValuesChange($event)\"\n (Reset)=\"resetActivityFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button (Clicked)=\"activityCmp?.Refresh()\"></mj-refresh-button>\n }\n }\n </div>\n\n <div toolbar class=\"scheduling-toolbar\">\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"ActiveTab\"\n (TabChange)=\"OnTabChange($any($event))\">\n </mj-tab-nav>\n @switch (ActiveTab) {\n @case ('jobs') {\n <mj-page-search\n Placeholder=\"Search jobs...\"\n [Value]=\"jobsCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"jobsCmp?.OnSearchChange($event)\">\n </mj-page-search>\n }\n @case ('activity') {\n <mj-page-search\n Placeholder=\"Search executions...\"\n [Value]=\"activityCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"activityCmp?.OnSearchChange($event)\">\n </mj-page-search>\n @for (range of activityCmp?.TimeRanges; track range.value) {\n <mj-filter-chip\n [Label]=\"range.label\"\n [Active]=\"activityCmp?.SelectedTimeRange === range.value\"\n (Clicked)=\"activityCmp?.OnTimeRangeChange(range.value)\">\n </mj-filter-chip>\n }\n }\n }\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @switch (ActiveTab) {\n @case ('dashboard') {\n <app-scheduling-overview\n #overviewCmp\n [initialState]=\"DashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnDashboardStateChange($event)\">\n </app-scheduling-overview>\n }\n @case ('jobs') {\n <app-scheduling-jobs\n #jobsCmp\n [initialState]=\"JobsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnJobsStateChange($event)\">\n </app-scheduling-jobs>\n }\n @case ('activity') {\n <app-scheduling-activity\n #activityCmp\n [initialState]=\"ActivityState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnActivityStateChange($event)\">\n </app-scheduling-activity>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Per-tab toolbar rendered in the [toolbar] slot of <mj-page-header>. */\n.scheduling-toolbar {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n"] }]
|
|
404
|
+
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.SchedulingInstrumentationService }], { overviewCmp: [{
|
|
405
|
+
type: ViewChild,
|
|
406
|
+
args: ['overviewCmp']
|
|
407
|
+
}], jobsCmp: [{
|
|
408
|
+
type: ViewChild,
|
|
409
|
+
args: ['jobsCmp']
|
|
410
|
+
}], activityCmp: [{
|
|
411
|
+
type: ViewChild,
|
|
412
|
+
args: ['activityCmp']
|
|
413
|
+
}] }); })();
|
|
414
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingDashboardComponent, { className: "SchedulingDashboardComponent", filePath: "src/Scheduling/scheduling-dashboard.component.ts", lineNumber: 29 }); })();
|
|
259
415
|
//# sourceMappingURL=scheduling-dashboard.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduling-dashboard.component.js","sourceRoot":"","sources":["../../src/Scheduling/scheduling-dashboard.component.ts","../../src/Scheduling/scheduling-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, AfterViewInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { SchedulingInstrumentationService } from './services/scheduling-instrumentation.service';\n\ninterface SchedulingDashboardState {\n activeTab: string;\n dashboardState: Record<string, unknown>;\n jobsState: Record<string, unknown>;\n activityState: Record<string, unknown>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-scheduling-dashboard',\n templateUrl: './scheduling-dashboard.component.html',\n styleUrls: ['./scheduling-dashboard.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@RegisterClass(BaseDashboard, 'SchedulingDashboard')\nexport class SchedulingDashboardComponent extends BaseDashboard implements AfterViewInit, OnDestroy {\n public IsLoading = false;\n public ActiveTab = 'dashboard';\n\n public DashboardState: Record<string, unknown> = {};\n public JobsState: Record<string, unknown> = {};\n public ActivityState: Record<string, unknown> = {};\n\n private visitedTabs = new Set<string>();\n private stateChangeSubject = new Subject<SchedulingDashboardState>();\n\n public ActiveJobCount = 0;\n public AlertCount = 0;\n\n private kpiSub: Subscription | undefined;\n private alertSub: Subscription | undefined;\n\n public NavigationItems = [\n { id: 'dashboard', text: 'Dashboard', icon: 'fa-solid fa-gauge-high' },\n { id: 'jobs', text: 'Jobs', icon: 'fa-solid fa-calendar-check' },\n { id: 'activity', text: 'Activity', icon: 'fa-solid fa-clock-rotate-left' }\n ];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private schedulingService: SchedulingInstrumentationService\n ) {\n super();\n this.setupStateManagement();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Scheduling';\n }\n\n ngAfterViewInit(): void {\n this.visitedTabs.add(this.ActiveTab);\n this.loadSidebarCounts();\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.stateChangeSubject.complete();\n if (this.kpiSub) this.kpiSub.unsubscribe();\n if (this.alertSub) this.alertSub.unsubscribe();\n }\n\n private loadSidebarCounts(): void {\n this.kpiSub = this.schedulingService.kpis$.subscribe(kpis => {\n this.ActiveJobCount = kpis.totalActiveJobs;\n this.cdr.markForCheck();\n });\n\n this.alertSub = this.schedulingService.alerts$.subscribe(alerts => {\n this.AlertCount = alerts.length;\n this.cdr.markForCheck();\n });\n }\n\n public OnTabChange(tabId: string): void {\n this.ActiveTab = tabId;\n this.visitedTabs.add(tabId);\n\n setTimeout(() => {\n SharedService.Instance.InvokeManualResize();\n }, 100);\n\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n public HasVisited(tabId: string): boolean {\n return this.visitedTabs.has(tabId);\n }\n\n private setupStateManagement(): void {\n this.stateChangeSubject.pipe(\n debounceTime(50)\n ).subscribe(state => {\n this.UserStateChanged.emit(state);\n });\n }\n\n private emitStateChange(): void {\n this.stateChangeSubject.next({\n activeTab: this.ActiveTab,\n dashboardState: this.DashboardState,\n jobsState: this.JobsState,\n activityState: this.ActivityState\n });\n }\n\n public OnDashboardStateChange(state: Record<string, unknown>): void {\n this.DashboardState = state;\n this.emitStateChange();\n }\n\n public OnJobsStateChange(state: Record<string, unknown>): void {\n this.JobsState = state;\n this.emitStateChange();\n }\n\n public OnActivityStateChange(state: Record<string, unknown>): void {\n this.ActivityState = state;\n this.emitStateChange();\n }\n\n public GetCurrentTabLabel(): string {\n const item = this.NavigationItems.find(n => n.id === this.ActiveTab);\n return item ? item.text : 'Scheduling';\n }\n\n initDashboard(): void {\n this.schedulingService.Provider = this.ProviderToUse;\n this.IsLoading = false;\n }\n\n loadData(): void {\n if (this.Config?.userState) {\n const state = this.Config.userState as Partial<SchedulingDashboardState>;\n if (state.activeTab) {\n this.ActiveTab = state.activeTab;\n this.visitedTabs.add(state.activeTab);\n }\n if (state.dashboardState) this.DashboardState = state.dashboardState;\n if (state.jobsState) this.JobsState = state.jobsState;\n if (state.activityState) this.ActivityState = state.activityState;\n this.cdr.markForCheck();\n }\n this.NotifyLoadComplete();\n }\n}\n","<div class=\"scheduling-dashboard-container\">\n <div class=\"dashboard-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Job Scheduling</span>\n </div>\n <div class=\"header-actions\">\n @if (AlertCount > 0) {\n <div class=\"status-badge\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{AlertCount}} Alert{{AlertCount !== 1 ? 's' : ''}}</span>\n </div>\n }\n @if (AlertCount === 0) {\n <div class=\"status-badge healthy\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <span>Healthy</span>\n </div>\n }\n <span class=\"tab-label\">{{GetCurrentTabLabel()}}</span>\n </div>\n </div>\n\n <div class=\"dashboard-content\">\n <div class=\"sidebar\">\n <div class=\"sidebar-section\">\n <div class=\"sidebar-section-title\">Overview</div>\n </div>\n <div class=\"nav-item\" [class.selected]=\"ActiveTab === 'dashboard'\" (click)=\"OnTabChange('dashboard')\">\n <i class=\"fa-solid fa-gauge-high\"></i>\n <span>Dashboard</span>\n </div>\n\n <div class=\"sidebar-section\">\n <div class=\"sidebar-section-title\">Management</div>\n </div>\n <div class=\"nav-item\" [class.selected]=\"ActiveTab === 'jobs'\" (click)=\"OnTabChange('jobs')\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Jobs</span>\n @if (ActiveJobCount > 0) {\n <span class=\"badge\">{{ActiveJobCount}}</span>\n }\n </div>\n <div class=\"nav-item\" [class.selected]=\"ActiveTab === 'activity'\" (click)=\"OnTabChange('activity')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <span>Activity</span>\n </div>\n </div>\n\n <div class=\"main-content\">\n <div class=\"tab-container\">\n @switch (ActiveTab) {\n @case ('dashboard') {\n <div class=\"tab-content\">\n <app-scheduling-overview\n [initialState]=\"DashboardState\"\n (stateChange)=\"OnDashboardStateChange($event)\">\n </app-scheduling-overview>\n </div>\n }\n @case ('jobs') {\n <div class=\"tab-content\">\n <app-scheduling-jobs\n [initialState]=\"JobsState\"\n (stateChange)=\"OnJobsStateChange($event)\">\n </app-scheduling-jobs>\n </div>\n }\n @case ('activity') {\n <div class=\"tab-content\">\n <app-scheduling-activity\n [initialState]=\"ActivityState\"\n (stateChange)=\"OnActivityStateChange($event)\">\n </app-scheduling-activity>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"scheduling-dashboard.component.js","sourceRoot":"","sources":["../../src/Scheduling/scheduling-dashboard.component.ts","../../src/Scheduling/scheduling-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, AfterViewInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { TabConfig, FilterFieldConfig } from '@memberjunction/ng-ui-components';\nimport { SchedulingInstrumentationService } from './services/scheduling-instrumentation.service';\nimport { SchedulingOverviewComponent } from './components/scheduling-overview.component';\nimport { SchedulingJobsComponent } from './components/scheduling-jobs.component';\nimport { SchedulingActivityComponent } from './components/scheduling-activity.component';\n\ninterface SchedulingDashboardState {\n activeTab: string;\n dashboardState: Record<string, unknown>;\n jobsState: Record<string, unknown>;\n activityState: Record<string, unknown>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-scheduling-dashboard',\n templateUrl: './scheduling-dashboard.component.html',\n styleUrls: ['./scheduling-dashboard.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@RegisterClass(BaseDashboard, 'SchedulingDashboard')\nexport class SchedulingDashboardComponent extends BaseDashboard implements AfterViewInit, OnDestroy {\n public IsLoading = false;\n public ActiveTab = 'dashboard';\n\n public DashboardState: Record<string, unknown> = {};\n public JobsState: Record<string, unknown> = {};\n public ActivityState: Record<string, unknown> = {};\n\n private visitedTabs = new Set<string>();\n private stateChangeSubject = new Subject<SchedulingDashboardState>();\n\n public ActiveJobCount = 0;\n public AlertCount = 0;\n\n /** ViewChild references to the active inner tab component — drive the toolbar UI rendered in <mj-page-header>. */\n @ViewChild('overviewCmp') overviewCmp?: SchedulingOverviewComponent;\n @ViewChild('jobsCmp') jobsCmp?: SchedulingJobsComponent;\n @ViewChild('activityCmp') activityCmp?: SchedulingActivityComponent;\n\n private kpiSub: Subscription | undefined;\n private alertSub: Subscription | undefined;\n\n public get Tabs(): TabConfig[] {\n return [\n { key: 'dashboard', label: 'Dashboard', icon: 'fa-solid fa-gauge-high' },\n {\n key: 'jobs',\n label: 'Jobs',\n icon: 'fa-solid fa-calendar-check',\n badge: this.ActiveJobCount > 0 ? this.ActiveJobCount : null\n },\n { key: 'activity', label: 'Activity', icon: 'fa-solid fa-clock-rotate-left' }\n ];\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private schedulingService: SchedulingInstrumentationService\n ) {\n super();\n this.setupStateManagement();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Scheduling';\n }\n\n ngAfterViewInit(): void {\n this.visitedTabs.add(this.ActiveTab);\n this.loadSidebarCounts();\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.stateChangeSubject.complete();\n if (this.kpiSub) this.kpiSub.unsubscribe();\n if (this.alertSub) this.alertSub.unsubscribe();\n }\n\n private loadSidebarCounts(): void {\n this.kpiSub = this.schedulingService.kpis$.subscribe(kpis => {\n this.ActiveJobCount = kpis.totalActiveJobs;\n this.cdr.markForCheck();\n });\n\n this.alertSub = this.schedulingService.alerts$.subscribe(alerts => {\n this.AlertCount = alerts.length;\n this.cdr.markForCheck();\n });\n }\n\n public OnTabChange(tabId: string): void {\n this.ActiveTab = tabId;\n this.visitedTabs.add(tabId);\n\n setTimeout(() => {\n SharedService.Instance.InvokeManualResize();\n }, 100);\n\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n public HasVisited(tabId: string): boolean {\n return this.visitedTabs.has(tabId);\n }\n\n // ───── Filter-popover plumbing for the [actions]/[toolbar] slots ─────\n\n public get JobsFilterFields(): FilterFieldConfig[] {\n const statusOptions = (this.jobsCmp?.StatusOptions ?? ['']).map(s => ({\n text: s === '' ? 'All Statuses' : s,\n value: s\n }));\n const typeOptions = (this.jobsCmp?.TypeOptions ?? ['']).map(t => ({\n text: t === '' ? 'All Types' : t,\n value: t\n }));\n return [\n { key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },\n { key: 'typeFilter', type: 'dropdown', label: 'Type', icon: 'fa-solid fa-shapes', placeholder: 'All Types', options: typeOptions }\n ];\n }\n public get JobsFilterValues(): Record<string, unknown> {\n return {\n statusFilter: this.jobsCmp?.StatusFilter ?? '',\n typeFilter: this.jobsCmp?.TypeFilter ?? ''\n };\n }\n public get JobsActiveFilterCount(): number {\n let n = 0;\n if (this.jobsCmp?.StatusFilter) n++;\n if (this.jobsCmp?.TypeFilter) n++;\n return n;\n }\n public onJobsFilterValuesChange(v: Record<string, unknown>): void {\n if (!this.jobsCmp) return;\n const next = (v ?? {}) as { statusFilter?: string; typeFilter?: string };\n if ((next.statusFilter ?? '') !== this.jobsCmp.StatusFilter) this.jobsCmp.OnStatusFilterChange(next.statusFilter ?? '');\n if ((next.typeFilter ?? '') !== this.jobsCmp.TypeFilter) this.jobsCmp.OnTypeFilterChange(next.typeFilter ?? '');\n }\n public resetJobsFilters(): void {\n if (this.jobsCmp?.StatusFilter) this.jobsCmp.OnStatusFilterChange('');\n if (this.jobsCmp?.TypeFilter) this.jobsCmp.OnTypeFilterChange('');\n }\n\n public get ActivityFilterFields(): FilterFieldConfig[] {\n const statusOptions = (this.activityCmp?.StatusOptions ?? ['']).map(s => ({\n text: s === '' ? 'All Statuses' : s,\n value: s\n }));\n const jobNames = this.activityCmp?.UniqueJobNames ?? [];\n const jobOptions = [{ text: 'All Jobs', value: '' }, ...jobNames.map(n => ({ text: n, value: n }))];\n return [\n { key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },\n { key: 'jobNameFilter', type: 'dropdown', label: 'Job', icon: 'fa-solid fa-tag', placeholder: 'All Jobs', filterable: true, options: jobOptions }\n ];\n }\n public get ActivityFilterValues(): Record<string, unknown> {\n return {\n statusFilter: this.activityCmp?.StatusFilter ?? '',\n jobNameFilter: this.activityCmp?.JobNameFilter ?? ''\n };\n }\n public get ActivityActiveFilterCount(): number {\n let n = 0;\n if (this.activityCmp?.StatusFilter) n++;\n if (this.activityCmp?.JobNameFilter) n++;\n return n;\n }\n public onActivityFilterValuesChange(v: Record<string, unknown>): void {\n if (!this.activityCmp) return;\n const next = (v ?? {}) as { statusFilter?: string; jobNameFilter?: string };\n if ((next.statusFilter ?? '') !== this.activityCmp.StatusFilter) this.activityCmp.OnStatusFilterChange(next.statusFilter ?? '');\n if ((next.jobNameFilter ?? '') !== this.activityCmp.JobNameFilter) this.activityCmp.OnJobNameFilterChange(next.jobNameFilter ?? '');\n }\n public resetActivityFilters(): void {\n if (this.activityCmp?.StatusFilter) this.activityCmp.OnStatusFilterChange('');\n if (this.activityCmp?.JobNameFilter) this.activityCmp.OnJobNameFilterChange('');\n }\n\n private setupStateManagement(): void {\n this.stateChangeSubject.pipe(\n debounceTime(50)\n ).subscribe(state => {\n this.UserStateChanged.emit(state);\n });\n }\n\n private emitStateChange(): void {\n this.stateChangeSubject.next({\n activeTab: this.ActiveTab,\n dashboardState: this.DashboardState,\n jobsState: this.JobsState,\n activityState: this.ActivityState\n });\n }\n\n public OnDashboardStateChange(state: Record<string, unknown>): void {\n this.DashboardState = state;\n this.emitStateChange();\n }\n\n public OnJobsStateChange(state: Record<string, unknown>): void {\n this.JobsState = state;\n this.emitStateChange();\n }\n\n public OnActivityStateChange(state: Record<string, unknown>): void {\n this.ActivityState = state;\n this.emitStateChange();\n }\n\n initDashboard(): void {\n this.schedulingService.Provider = this.ProviderToUse;\n this.IsLoading = false;\n }\n\n loadData(): void {\n if (this.Config?.userState) {\n const state = this.Config.userState as Partial<SchedulingDashboardState>;\n if (state.activeTab) {\n this.ActiveTab = state.activeTab;\n this.visitedTabs.add(state.activeTab);\n }\n if (state.dashboardState) this.DashboardState = state.dashboardState;\n if (state.jobsState) this.JobsState = state.jobsState;\n if (state.activityState) this.ActivityState = state.activityState;\n this.cdr.markForCheck();\n }\n this.NotifyLoadComplete();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Scheduling\"\n Icon=\"fa-solid fa-calendar-check\"\n Subtitle=\"Background jobs, executions, and system health\">\n <div meta>\n @if (AlertCount > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-triangle-exclamation\"\n [Count]=\"AlertCount\"\n [Label]=\"AlertCount === 1 ? 'Alert' : 'Alerts'\"\n Variant=\"error\">\n </mj-stat-badge>\n } @else {\n <mj-stat-badge\n Icon=\"fa-solid fa-circle-check\"\n Label=\"Healthy\"\n Variant=\"success\">\n </mj-stat-badge>\n }\n @if (ActiveTab === 'jobs') {\n <mj-stat-badge\n [Count]=\"jobsCmp?.FilteredJobs?.length ?? 0\"\n [Total]=\"jobsCmp?.Jobs?.length ?? 0\"\n Label=\"jobs\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n @switch (ActiveTab) {\n @case ('dashboard') {\n <mj-refresh-button (Clicked)=\"overviewCmp?.Refresh()\"></mj-refresh-button>\n <button mjButton\n [variant]=\"overviewCmp?.AutoRefreshEnabled ? 'primary' : 'secondary'\"\n size=\"sm\"\n (click)=\"overviewCmp?.ToggleAutoRefresh()\"\n title=\"Toggle auto-refresh\">\n <i class=\"fa-solid fa-rotate\"></i>\n Auto: {{overviewCmp?.AutoRefreshEnabled ? 'ON' : 'OFF'}}\n </button>\n }\n @case ('jobs') {\n <mj-filter-popover\n [ActiveCount]=\"JobsActiveFilterCount\"\n [ShowClearAll]=\"JobsActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetJobsFilters()\">\n <mj-filter-panel\n [Fields]=\"JobsFilterFields\"\n [Values]=\"JobsFilterValues\"\n (ValuesChange)=\"onJobsFilterValuesChange($event)\"\n (Reset)=\"resetJobsFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button (Clicked)=\"jobsCmp?.Refresh()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"jobsCmp?.OpenCreateSlideout()\">\n <i class=\"fa-solid fa-plus\"></i> New Job\n </button>\n }\n @case ('activity') {\n <mj-filter-popover\n [ActiveCount]=\"ActivityActiveFilterCount\"\n [ShowClearAll]=\"ActivityActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetActivityFilters()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"onActivityFilterValuesChange($event)\"\n (Reset)=\"resetActivityFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button (Clicked)=\"activityCmp?.Refresh()\"></mj-refresh-button>\n }\n }\n </div>\n\n <div toolbar class=\"scheduling-toolbar\">\n <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"ActiveTab\"\n (TabChange)=\"OnTabChange($any($event))\">\n </mj-tab-nav>\n @switch (ActiveTab) {\n @case ('jobs') {\n <mj-page-search\n Placeholder=\"Search jobs...\"\n [Value]=\"jobsCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"jobsCmp?.OnSearchChange($event)\">\n </mj-page-search>\n }\n @case ('activity') {\n <mj-page-search\n Placeholder=\"Search executions...\"\n [Value]=\"activityCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"activityCmp?.OnSearchChange($event)\">\n </mj-page-search>\n @for (range of activityCmp?.TimeRanges; track range.value) {\n <mj-filter-chip\n [Label]=\"range.label\"\n [Active]=\"activityCmp?.SelectedTimeRange === range.value\"\n (Clicked)=\"activityCmp?.OnTimeRangeChange(range.value)\">\n </mj-filter-chip>\n }\n }\n }\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @switch (ActiveTab) {\n @case ('dashboard') {\n <app-scheduling-overview\n #overviewCmp\n [initialState]=\"DashboardState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnDashboardStateChange($event)\">\n </app-scheduling-overview>\n }\n @case ('jobs') {\n <app-scheduling-jobs\n #jobsCmp\n [initialState]=\"JobsState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnJobsStateChange($event)\">\n </app-scheduling-jobs>\n }\n @case ('activity') {\n <app-scheduling-activity\n #activityCmp\n [initialState]=\"ActivityState\"\n [HideToolbar]=\"true\"\n (stateChange)=\"OnActivityStateChange($event)\">\n </app-scheduling-activity>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n"]}
|