@memberjunction/ng-dashboards 5.34.0 → 5.35.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 +75 -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 +400 -89
- 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.js +990 -992
- 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.js +781 -783
- 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/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 +79 -30
- 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 +196 -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 +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- 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-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 +245 -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 +294 -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 +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- 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 +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -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 +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- 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 +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -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.js +673 -674
- 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.js +745 -703
- 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 +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- 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.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.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 +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
- 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 +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- 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 +107 -93
- 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 +36 -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 +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- 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 +31 -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 +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -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 +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -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,143 @@ 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_8_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", 12);
|
|
41
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_8_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", 13);
|
|
44
|
+
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Case_8_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", 14);
|
|
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_9_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", 15);
|
|
58
|
+
i0.ɵɵlistener("ClearAllRequested", function SchedulingDashboardComponent_Case_9_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", 16);
|
|
60
|
+
i0.ɵɵlistener("ValuesChange", function SchedulingDashboardComponent_Case_9_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_9_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", 12);
|
|
63
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_9_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", 17);
|
|
66
|
+
i0.ɵɵlistener("click", function SchedulingDashboardComponent_Case_9_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", 18);
|
|
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_10_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", 15);
|
|
79
|
+
i0.ɵɵlistener("ClearAllRequested", function SchedulingDashboardComponent_Case_10_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", 16);
|
|
81
|
+
i0.ɵɵlistener("ValuesChange", function SchedulingDashboardComponent_Case_10_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_10_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", 12);
|
|
84
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_10_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_11_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mj-page-search", 19);
|
|
95
|
+
i0.ɵɵlistener("ValueChange", function SchedulingDashboardComponent_Case_11_Template_mj_page_search_ValueChange_1_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.ɵɵadvance();
|
|
100
|
+
i0.ɵɵproperty("Value", (ctx_r0.jobsCmp == null ? null : ctx_r0.jobsCmp.SearchTerm) ?? "");
|
|
101
|
+
} }
|
|
102
|
+
function SchedulingDashboardComponent_Case_12_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
104
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 22);
|
|
105
|
+
i0.ɵɵlistener("Clicked", function SchedulingDashboardComponent_Case_12_For_3_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)); });
|
|
106
|
+
i0.ɵɵelementEnd();
|
|
107
|
+
} if (rf & 2) {
|
|
108
|
+
const range_r8 = ctx.$implicit;
|
|
109
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
110
|
+
i0.ɵɵproperty("Label", range_r8.label)("Active", (ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.SelectedTimeRange) === range_r8.value);
|
|
111
|
+
} }
|
|
112
|
+
function SchedulingDashboardComponent_Case_12_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
114
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mj-page-search", 20);
|
|
115
|
+
i0.ɵɵlistener("ValueChange", function SchedulingDashboardComponent_Case_12_Template_mj_page_search_ValueChange_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.OnSearchChange($event)); });
|
|
116
|
+
i0.ɵɵelementEnd();
|
|
117
|
+
i0.ɵɵrepeaterCreate(2, SchedulingDashboardComponent_Case_12_For_3_Template, 1, 2, "mj-filter-chip", 21, _forTrack0);
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
121
|
+
i0.ɵɵadvance();
|
|
122
|
+
i0.ɵɵproperty("Value", (ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.SearchTerm) ?? "");
|
|
123
|
+
i0.ɵɵadvance();
|
|
124
|
+
i0.ɵɵrepeater(ctx_r0.activityCmp == null ? null : ctx_r0.activityCmp.TimeRanges);
|
|
125
|
+
} }
|
|
126
|
+
function SchedulingDashboardComponent_Case_14_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
128
|
+
i0.ɵɵelementStart(0, "app-scheduling-overview", 23, 0);
|
|
129
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_14_Template_app_scheduling_overview_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnDashboardStateChange($event)); });
|
|
130
|
+
i0.ɵɵelementEnd();
|
|
131
|
+
} if (rf & 2) {
|
|
132
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
133
|
+
i0.ɵɵproperty("initialState", ctx_r0.DashboardState)("HideToolbar", true);
|
|
134
|
+
} }
|
|
135
|
+
function SchedulingDashboardComponent_Case_15_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
137
|
+
i0.ɵɵelementStart(0, "app-scheduling-jobs", 23, 1);
|
|
138
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_15_Template_app_scheduling_jobs_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnJobsStateChange($event)); });
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
} if (rf & 2) {
|
|
141
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
142
|
+
i0.ɵɵproperty("initialState", ctx_r0.JobsState)("HideToolbar", true);
|
|
143
|
+
} }
|
|
144
|
+
function SchedulingDashboardComponent_Case_16_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
146
|
+
i0.ɵɵelementStart(0, "app-scheduling-activity", 23, 2);
|
|
147
|
+
i0.ɵɵlistener("stateChange", function SchedulingDashboardComponent_Case_16_Template_app_scheduling_activity_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnActivityStateChange($event)); });
|
|
148
|
+
i0.ɵɵelementEnd();
|
|
149
|
+
} if (rf & 2) {
|
|
150
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
151
|
+
i0.ɵɵproperty("initialState", ctx_r0.ActivityState)("HideToolbar", true);
|
|
74
152
|
} }
|
|
75
153
|
let SchedulingDashboardComponent = class SchedulingDashboardComponent extends BaseDashboard {
|
|
76
154
|
cdr;
|
|
@@ -84,13 +162,24 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
84
162
|
stateChangeSubject = new Subject();
|
|
85
163
|
ActiveJobCount = 0;
|
|
86
164
|
AlertCount = 0;
|
|
165
|
+
/** ViewChild references to the active inner tab component — drive the toolbar UI rendered in <mj-page-header>. */
|
|
166
|
+
overviewCmp;
|
|
167
|
+
jobsCmp;
|
|
168
|
+
activityCmp;
|
|
87
169
|
kpiSub;
|
|
88
170
|
alertSub;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
171
|
+
get Tabs() {
|
|
172
|
+
return [
|
|
173
|
+
{ key: 'dashboard', label: 'Dashboard', icon: 'fa-solid fa-gauge-high' },
|
|
174
|
+
{
|
|
175
|
+
key: 'jobs',
|
|
176
|
+
label: 'Jobs',
|
|
177
|
+
icon: 'fa-solid fa-calendar-check',
|
|
178
|
+
badge: this.ActiveJobCount > 0 ? this.ActiveJobCount : null
|
|
179
|
+
},
|
|
180
|
+
{ key: 'activity', label: 'Activity', icon: 'fa-solid fa-clock-rotate-left' }
|
|
181
|
+
];
|
|
182
|
+
}
|
|
94
183
|
constructor(cdr, schedulingService) {
|
|
95
184
|
super();
|
|
96
185
|
this.cdr = cdr;
|
|
@@ -135,6 +224,91 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
135
224
|
HasVisited(tabId) {
|
|
136
225
|
return this.visitedTabs.has(tabId);
|
|
137
226
|
}
|
|
227
|
+
// ───── Filter-popover plumbing for the [actions]/[toolbar] slots ─────
|
|
228
|
+
get JobsFilterFields() {
|
|
229
|
+
const statusOptions = (this.jobsCmp?.StatusOptions ?? ['']).map(s => ({
|
|
230
|
+
text: s === '' ? 'All Statuses' : s,
|
|
231
|
+
value: s
|
|
232
|
+
}));
|
|
233
|
+
const typeOptions = (this.jobsCmp?.TypeOptions ?? ['']).map(t => ({
|
|
234
|
+
text: t === '' ? 'All Types' : t,
|
|
235
|
+
value: t
|
|
236
|
+
}));
|
|
237
|
+
return [
|
|
238
|
+
{ key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },
|
|
239
|
+
{ key: 'typeFilter', type: 'dropdown', label: 'Type', icon: 'fa-solid fa-shapes', placeholder: 'All Types', options: typeOptions }
|
|
240
|
+
];
|
|
241
|
+
}
|
|
242
|
+
get JobsFilterValues() {
|
|
243
|
+
return {
|
|
244
|
+
statusFilter: this.jobsCmp?.StatusFilter ?? '',
|
|
245
|
+
typeFilter: this.jobsCmp?.TypeFilter ?? ''
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
get JobsActiveFilterCount() {
|
|
249
|
+
let n = 0;
|
|
250
|
+
if (this.jobsCmp?.StatusFilter)
|
|
251
|
+
n++;
|
|
252
|
+
if (this.jobsCmp?.TypeFilter)
|
|
253
|
+
n++;
|
|
254
|
+
return n;
|
|
255
|
+
}
|
|
256
|
+
onJobsFilterValuesChange(v) {
|
|
257
|
+
if (!this.jobsCmp)
|
|
258
|
+
return;
|
|
259
|
+
const next = (v ?? {});
|
|
260
|
+
if ((next.statusFilter ?? '') !== this.jobsCmp.StatusFilter)
|
|
261
|
+
this.jobsCmp.OnStatusFilterChange(next.statusFilter ?? '');
|
|
262
|
+
if ((next.typeFilter ?? '') !== this.jobsCmp.TypeFilter)
|
|
263
|
+
this.jobsCmp.OnTypeFilterChange(next.typeFilter ?? '');
|
|
264
|
+
}
|
|
265
|
+
resetJobsFilters() {
|
|
266
|
+
if (this.jobsCmp?.StatusFilter)
|
|
267
|
+
this.jobsCmp.OnStatusFilterChange('');
|
|
268
|
+
if (this.jobsCmp?.TypeFilter)
|
|
269
|
+
this.jobsCmp.OnTypeFilterChange('');
|
|
270
|
+
}
|
|
271
|
+
get ActivityFilterFields() {
|
|
272
|
+
const statusOptions = (this.activityCmp?.StatusOptions ?? ['']).map(s => ({
|
|
273
|
+
text: s === '' ? 'All Statuses' : s,
|
|
274
|
+
value: s
|
|
275
|
+
}));
|
|
276
|
+
const jobNames = this.activityCmp?.UniqueJobNames ?? [];
|
|
277
|
+
const jobOptions = [{ text: 'All Jobs', value: '' }, ...jobNames.map(n => ({ text: n, value: n }))];
|
|
278
|
+
return [
|
|
279
|
+
{ key: 'statusFilter', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-circle-info', placeholder: 'All Statuses', options: statusOptions },
|
|
280
|
+
{ key: 'jobNameFilter', type: 'dropdown', label: 'Job', icon: 'fa-solid fa-tag', placeholder: 'All Jobs', filterable: true, options: jobOptions }
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
get ActivityFilterValues() {
|
|
284
|
+
return {
|
|
285
|
+
statusFilter: this.activityCmp?.StatusFilter ?? '',
|
|
286
|
+
jobNameFilter: this.activityCmp?.JobNameFilter ?? ''
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
get ActivityActiveFilterCount() {
|
|
290
|
+
let n = 0;
|
|
291
|
+
if (this.activityCmp?.StatusFilter)
|
|
292
|
+
n++;
|
|
293
|
+
if (this.activityCmp?.JobNameFilter)
|
|
294
|
+
n++;
|
|
295
|
+
return n;
|
|
296
|
+
}
|
|
297
|
+
onActivityFilterValuesChange(v) {
|
|
298
|
+
if (!this.activityCmp)
|
|
299
|
+
return;
|
|
300
|
+
const next = (v ?? {});
|
|
301
|
+
if ((next.statusFilter ?? '') !== this.activityCmp.StatusFilter)
|
|
302
|
+
this.activityCmp.OnStatusFilterChange(next.statusFilter ?? '');
|
|
303
|
+
if ((next.jobNameFilter ?? '') !== this.activityCmp.JobNameFilter)
|
|
304
|
+
this.activityCmp.OnJobNameFilterChange(next.jobNameFilter ?? '');
|
|
305
|
+
}
|
|
306
|
+
resetActivityFilters() {
|
|
307
|
+
if (this.activityCmp?.StatusFilter)
|
|
308
|
+
this.activityCmp.OnStatusFilterChange('');
|
|
309
|
+
if (this.activityCmp?.JobNameFilter)
|
|
310
|
+
this.activityCmp.OnJobNameFilterChange('');
|
|
311
|
+
}
|
|
138
312
|
setupStateManagement() {
|
|
139
313
|
this.stateChangeSubject.pipe(debounceTime(50)).subscribe(state => {
|
|
140
314
|
this.UserStateChanged.emit(state);
|
|
@@ -160,10 +334,6 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
160
334
|
this.ActivityState = state;
|
|
161
335
|
this.emitStateChange();
|
|
162
336
|
}
|
|
163
|
-
GetCurrentTabLabel() {
|
|
164
|
-
const item = this.NavigationItems.find(n => n.id === this.ActiveTab);
|
|
165
|
-
return item ? item.text : 'Scheduling';
|
|
166
|
-
}
|
|
167
337
|
initDashboard() {
|
|
168
338
|
this.schedulingService.Provider = this.ProviderToUse;
|
|
169
339
|
this.IsLoading = false;
|
|
@@ -186,66 +356,45 @@ let SchedulingDashboardComponent = class SchedulingDashboardComponent extends Ba
|
|
|
186
356
|
this.NotifyLoadComplete();
|
|
187
357
|
}
|
|
188
358
|
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(
|
|
202
|
-
i0.ɵɵ
|
|
203
|
-
i0.ɵɵelementEnd()
|
|
204
|
-
i0.ɵɵ
|
|
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");
|
|
359
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingDashboardComponent, selectors: [["mj-scheduling-dashboard"]], viewQuery: function SchedulingDashboardComponent_Query(rf, ctx) { if (rf & 1) {
|
|
360
|
+
i0.ɵɵviewQuery(_c0, 5)(_c1, 5)(_c2, 5);
|
|
361
|
+
} if (rf & 2) {
|
|
362
|
+
let _t;
|
|
363
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overviewCmp = _t.first);
|
|
364
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.jobsCmp = _t.first);
|
|
365
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.activityCmp = _t.first);
|
|
366
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 17, 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", ""], [3, "TabChange", "Tabs", "ActiveKey"], ["toolbar", "", 1, "scheduling-toolbar"], [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) {
|
|
367
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 3)(2, "div", 4);
|
|
368
|
+
i0.ɵɵconditionalCreate(3, SchedulingDashboardComponent_Conditional_3_Template, 1, 2, "mj-stat-badge", 5)(4, SchedulingDashboardComponent_Conditional_4_Template, 1, 0, "mj-stat-badge", 6);
|
|
369
|
+
i0.ɵɵconditionalCreate(5, SchedulingDashboardComponent_Conditional_5_Template, 1, 2, "mj-stat-badge", 7);
|
|
370
|
+
i0.ɵɵelementEnd();
|
|
371
|
+
i0.ɵɵelementStart(6, "div", 8)(7, "mj-tab-nav", 9);
|
|
372
|
+
i0.ɵɵlistener("TabChange", function SchedulingDashboardComponent_Template_mj_tab_nav_TabChange_7_listener($event) { return ctx.OnTabChange($event); });
|
|
373
|
+
i0.ɵɵelementEnd();
|
|
374
|
+
i0.ɵɵconditionalCreate(8, SchedulingDashboardComponent_Case_8_Template, 4, 2)(9, SchedulingDashboardComponent_Case_9_Template, 6, 4)(10, SchedulingDashboardComponent_Case_10_Template, 3, 4);
|
|
218
375
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵconditionalCreate(
|
|
376
|
+
i0.ɵɵconditionalCreate(11, SchedulingDashboardComponent_Case_11_Template, 2, 1, "div", 10)(12, SchedulingDashboardComponent_Case_12_Template, 4, 1, "div", 10);
|
|
220
377
|
i0.ɵɵelementEnd();
|
|
221
|
-
i0.ɵɵelementStart(
|
|
222
|
-
i0.ɵɵ
|
|
223
|
-
i0.ɵɵ
|
|
224
|
-
i0.ɵɵelementStart(30, "span");
|
|
225
|
-
i0.ɵɵtext(31, "Activity");
|
|
226
|
-
i0.ɵɵelementEnd()()();
|
|
227
|
-
i0.ɵɵelementStart(32, "div", 16)(33, "div", 17);
|
|
228
|
-
i0.ɵɵconditionalCreate(34, SchedulingDashboardComponent_Case_34_Template, 2, 1, "div", 18)(35, SchedulingDashboardComponent_Case_35_Template, 2, 1, "div", 18)(36, SchedulingDashboardComponent_Case_36_Template, 2, 1, "div", 18);
|
|
229
|
-
i0.ɵɵelementEnd()()()();
|
|
378
|
+
i0.ɵɵelementStart(13, "mj-page-body");
|
|
379
|
+
i0.ɵɵconditionalCreate(14, SchedulingDashboardComponent_Case_14_Template, 2, 2, "app-scheduling-overview", 11)(15, SchedulingDashboardComponent_Case_15_Template, 2, 2, "app-scheduling-jobs", 11)(16, SchedulingDashboardComponent_Case_16_Template, 2, 2, "app-scheduling-activity", 11);
|
|
380
|
+
i0.ɵɵelementEnd()();
|
|
230
381
|
} if (rf & 2) {
|
|
231
|
-
let
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
i0.ɵɵadvance();
|
|
235
|
-
i0.ɵɵconditional(ctx.AlertCount
|
|
382
|
+
let tmp_4_0;
|
|
383
|
+
let tmp_5_0;
|
|
384
|
+
let tmp_6_0;
|
|
385
|
+
i0.ɵɵadvance(3);
|
|
386
|
+
i0.ɵɵconditional(ctx.AlertCount > 0 ? 3 : 4);
|
|
387
|
+
i0.ɵɵadvance(2);
|
|
388
|
+
i0.ɵɵconditional(ctx.ActiveTab === "jobs" ? 5 : -1);
|
|
236
389
|
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");
|
|
242
|
-
i0.ɵɵadvance(4);
|
|
243
|
-
i0.ɵɵconditional(ctx.ActiveJobCount > 0 ? 27 : -1);
|
|
390
|
+
i0.ɵɵproperty("Tabs", ctx.Tabs)("ActiveKey", ctx.ActiveTab);
|
|
244
391
|
i0.ɵɵadvance();
|
|
245
|
-
i0.ɵɵ
|
|
246
|
-
i0.ɵɵadvance(
|
|
247
|
-
i0.ɵɵconditional((
|
|
248
|
-
|
|
392
|
+
i0.ɵɵconditional((tmp_4_0 = ctx.ActiveTab) === "dashboard" ? 8 : tmp_4_0 === "jobs" ? 9 : tmp_4_0 === "activity" ? 10 : -1);
|
|
393
|
+
i0.ɵɵadvance(3);
|
|
394
|
+
i0.ɵɵconditional((tmp_5_0 = ctx.ActiveTab) === "jobs" ? 11 : tmp_5_0 === "activity" ? 12 : -1);
|
|
395
|
+
i0.ɵɵadvance(3);
|
|
396
|
+
i0.ɵɵconditional((tmp_6_0 = ctx.ActiveTab) === "dashboard" ? 14 : tmp_6_0 === "jobs" ? 15 : tmp_6_0 === "activity" ? 16 : -1);
|
|
397
|
+
} }, 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
398
|
};
|
|
250
399
|
SchedulingDashboardComponent = __decorate([
|
|
251
400
|
RegisterClass(BaseDashboard, 'SchedulingDashboard')
|
|
@@ -253,7 +402,16 @@ SchedulingDashboardComponent = __decorate([
|
|
|
253
402
|
export { SchedulingDashboardComponent };
|
|
254
403
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingDashboardComponent, [{
|
|
255
404
|
type: Component,
|
|
256
|
-
args: [{ standalone: false, selector: 'mj-scheduling-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
257
|
-
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.SchedulingInstrumentationService }],
|
|
258
|
-
|
|
405
|
+
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 <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"ActiveTab\"\n (TabChange)=\"OnTabChange($any($event))\">\n </mj-tab-nav>\n\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 @switch (ActiveTab) {\n @case ('jobs') {\n <div toolbar class=\"scheduling-toolbar\">\n <mj-page-search\n Placeholder=\"Search jobs...\"\n [Value]=\"jobsCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"jobsCmp?.OnSearchChange($event)\">\n </mj-page-search>\n </div>\n }\n @case ('activity') {\n <div toolbar class=\"scheduling-toolbar\">\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 </div>\n }\n }\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"] }]
|
|
406
|
+
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.SchedulingInstrumentationService }], { overviewCmp: [{
|
|
407
|
+
type: ViewChild,
|
|
408
|
+
args: ['overviewCmp']
|
|
409
|
+
}], jobsCmp: [{
|
|
410
|
+
type: ViewChild,
|
|
411
|
+
args: ['jobsCmp']
|
|
412
|
+
}], activityCmp: [{
|
|
413
|
+
type: ViewChild,
|
|
414
|
+
args: ['activityCmp']
|
|
415
|
+
}] }); })();
|
|
416
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingDashboardComponent, { className: "SchedulingDashboardComponent", filePath: "src/Scheduling/scheduling-dashboard.component.ts", lineNumber: 29 }); })();
|
|
259
417
|
//# 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 <mj-tab-nav\n [Tabs]=\"Tabs\"\n [ActiveKey]=\"ActiveTab\"\n (TabChange)=\"OnTabChange($any($event))\">\n </mj-tab-nav>\n\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 @switch (ActiveTab) {\n @case ('jobs') {\n <div toolbar class=\"scheduling-toolbar\">\n <mj-page-search\n Placeholder=\"Search jobs...\"\n [Value]=\"jobsCmp?.SearchTerm ?? ''\"\n (ValueChange)=\"jobsCmp?.OnSearchChange($event)\">\n </mj-page-search>\n </div>\n }\n @case ('activity') {\n <div toolbar class=\"scheduling-toolbar\">\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 </div>\n }\n }\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"]}
|