@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
|
@@ -10,463 +10,418 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
|
10
10
|
import { RunView } from '@memberjunction/core';
|
|
11
11
|
import { IntegrationDataService, } from '../../services/integration-data.service';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@
|
|
13
|
+
import * as i1 from "@memberjunction/ng-ui-components";
|
|
14
14
|
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
15
15
|
import * as i3 from "@angular/common";
|
|
16
|
-
const _forTrack0 = ($index, $item) => $item.
|
|
17
|
-
const _forTrack1 = ($index, $item) => $item.
|
|
16
|
+
const _forTrack0 = ($index, $item) => $item.Value;
|
|
17
|
+
const _forTrack1 = ($index, $item) => $item.ID;
|
|
18
18
|
const _forTrack2 = ($index, $item) => $item.EntityID;
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
i0.ɵɵ
|
|
22
|
-
i0.ɵɵ
|
|
23
|
-
i0.ɵɵtext(1);
|
|
19
|
+
function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
21
|
+
i0.ɵɵelement(1, "mj-stat-badge", 15)(2, "mj-stat-badge", 16)(3, "mj-stat-badge", 17)(4, "mj-stat-badge", 18);
|
|
22
|
+
i0.ɵɵpipe(5, "number");
|
|
24
23
|
i0.ɵɵelementEnd();
|
|
25
24
|
} if (rf & 2) {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
i0.ɵɵ
|
|
25
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
26
|
+
i0.ɵɵadvance();
|
|
27
|
+
i0.ɵɵproperty("Count", ctx_r0.TotalRuns);
|
|
28
|
+
i0.ɵɵadvance();
|
|
29
|
+
i0.ɵɵproperty("Count", ctx_r0.SuccessfulRuns);
|
|
29
30
|
i0.ɵɵadvance();
|
|
30
|
-
i0.ɵɵ
|
|
31
|
+
i0.ɵɵproperty("Count", ctx_r0.FailedRuns);
|
|
32
|
+
i0.ɵɵadvance();
|
|
33
|
+
i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(5, 4, ctx_r0.TotalRecordsProcessed));
|
|
31
34
|
} }
|
|
32
35
|
function ActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
i0.ɵɵ
|
|
34
|
-
i0.ɵɵ
|
|
36
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
37
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 19);
|
|
38
|
+
i0.ɵɵlistener("Clicked", function ActivityComponent_For_10_Template_mj_filter_chip_Clicked_0_listener() { const status_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetStatusFilter(status_r3)); });
|
|
35
39
|
i0.ɵɵelementEnd();
|
|
36
40
|
} if (rf & 2) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵ
|
|
39
|
-
i0.ɵɵ
|
|
40
|
-
i0.ɵɵtextInterpolate(opt_r4.Name);
|
|
41
|
+
const status_r3 = ctx.$implicit;
|
|
42
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
43
|
+
i0.ɵɵproperty("Label", status_r3)("Active", ctx_r0.StatusFilter === status_r3);
|
|
41
44
|
} }
|
|
42
45
|
function ActivityComponent_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
-
const
|
|
44
|
-
i0.ɵɵelementStart(0, "
|
|
45
|
-
i0.ɵɵlistener("
|
|
46
|
-
i0.ɵɵtext(1);
|
|
46
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
47
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 19);
|
|
48
|
+
i0.ɵɵlistener("Clicked", function ActivityComponent_For_13_Template_mj_filter_chip_Clicked_0_listener() { const d_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDateFilter(d_r5.Value)); });
|
|
47
49
|
i0.ɵɵelementEnd();
|
|
48
50
|
} if (rf & 2) {
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
i0.ɵɵ
|
|
52
|
-
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵtextInterpolate1(" ", d_r6.Label, " ");
|
|
54
|
-
} }
|
|
55
|
-
function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
i0.ɵɵelementStart(0, "div", 11)(1, "div", 16);
|
|
57
|
-
i0.ɵɵelement(2, "span", 17);
|
|
58
|
-
i0.ɵɵelementStart(3, "span", 18);
|
|
59
|
-
i0.ɵɵtext(4);
|
|
60
|
-
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelementStart(5, "span", 19);
|
|
62
|
-
i0.ɵɵtext(6, "Total Runs");
|
|
63
|
-
i0.ɵɵelementEnd()();
|
|
64
|
-
i0.ɵɵelementStart(7, "div", 16);
|
|
65
|
-
i0.ɵɵelement(8, "span", 20);
|
|
66
|
-
i0.ɵɵelementStart(9, "span", 21);
|
|
67
|
-
i0.ɵɵtext(10);
|
|
68
|
-
i0.ɵɵelementEnd();
|
|
69
|
-
i0.ɵɵelementStart(11, "span", 19);
|
|
70
|
-
i0.ɵɵtext(12, "Successful");
|
|
71
|
-
i0.ɵɵelementEnd()();
|
|
72
|
-
i0.ɵɵelementStart(13, "div", 16);
|
|
73
|
-
i0.ɵɵelement(14, "span", 22);
|
|
74
|
-
i0.ɵɵelementStart(15, "span", 23);
|
|
75
|
-
i0.ɵɵtext(16);
|
|
76
|
-
i0.ɵɵelementEnd();
|
|
77
|
-
i0.ɵɵelementStart(17, "span", 19);
|
|
78
|
-
i0.ɵɵtext(18, "Failed");
|
|
79
|
-
i0.ɵɵelementEnd()();
|
|
80
|
-
i0.ɵɵelementStart(19, "div", 16);
|
|
81
|
-
i0.ɵɵelement(20, "span", 17);
|
|
82
|
-
i0.ɵɵelementStart(21, "span", 18);
|
|
83
|
-
i0.ɵɵtext(22);
|
|
84
|
-
i0.ɵɵpipe(23, "number");
|
|
85
|
-
i0.ɵɵelementEnd();
|
|
86
|
-
i0.ɵɵelementStart(24, "span", 19);
|
|
87
|
-
i0.ɵɵtext(25, "Records Processed");
|
|
88
|
-
i0.ɵɵelementEnd()()();
|
|
89
|
-
} if (rf & 2) {
|
|
90
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
91
|
-
i0.ɵɵadvance(4);
|
|
92
|
-
i0.ɵɵtextInterpolate(ctx_r2.TotalRuns);
|
|
93
|
-
i0.ɵɵadvance(6);
|
|
94
|
-
i0.ɵɵtextInterpolate(ctx_r2.SuccessfulRuns);
|
|
95
|
-
i0.ɵɵadvance(6);
|
|
96
|
-
i0.ɵɵtextInterpolate(ctx_r2.FailedRuns);
|
|
97
|
-
i0.ɵɵadvance(6);
|
|
98
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 4, ctx_r2.TotalRecordsProcessed));
|
|
51
|
+
const d_r5 = ctx.$implicit;
|
|
52
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
53
|
+
i0.ɵɵproperty("Label", d_r5.Label)("Active", ctx_r0.DateFilter === d_r5.Value);
|
|
99
54
|
} }
|
|
100
|
-
function
|
|
55
|
+
function ActivityComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
101
56
|
i0.ɵɵelementStart(0, "div", 12);
|
|
102
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
57
|
+
i0.ɵɵelement(1, "mj-loading", 20);
|
|
103
58
|
i0.ɵɵelementEnd();
|
|
104
59
|
} }
|
|
105
|
-
function
|
|
60
|
+
function ActivityComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
106
61
|
i0.ɵɵelementStart(0, "div", 13);
|
|
107
|
-
i0.ɵɵelement(1, "i",
|
|
62
|
+
i0.ɵɵelement(1, "i", 21);
|
|
108
63
|
i0.ɵɵelementStart(2, "p");
|
|
109
64
|
i0.ɵɵtext(3, "No runs found for the selected filters.");
|
|
110
65
|
i0.ɵɵelementEnd()();
|
|
111
66
|
} }
|
|
112
|
-
function
|
|
113
|
-
i0.ɵɵelement(0, "i",
|
|
67
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelement(0, "i", 35);
|
|
114
69
|
} }
|
|
115
|
-
function
|
|
116
|
-
i0.ɵɵelementStart(0, "div",
|
|
117
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
70
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
72
|
+
i0.ɵɵelement(1, "mj-loading", 45);
|
|
118
73
|
i0.ɵɵelementEnd();
|
|
119
74
|
} }
|
|
120
|
-
function
|
|
121
|
-
i0.ɵɵelementStart(0, "div",
|
|
122
|
-
i0.ɵɵelement(1, "i",
|
|
75
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
77
|
+
i0.ɵɵelement(1, "i", 46);
|
|
123
78
|
i0.ɵɵtext(2, " No entity details for this run. ");
|
|
124
79
|
i0.ɵɵelementEnd();
|
|
125
80
|
} }
|
|
126
|
-
function
|
|
81
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
127
82
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
128
83
|
i0.ɵɵtext(2);
|
|
129
84
|
i0.ɵɵelementEnd();
|
|
130
|
-
i0.ɵɵelementStart(3, "td",
|
|
85
|
+
i0.ɵɵelementStart(3, "td", 47);
|
|
131
86
|
i0.ɵɵtext(4);
|
|
132
87
|
i0.ɵɵpipe(5, "number");
|
|
133
88
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵelementStart(6, "td",
|
|
89
|
+
i0.ɵɵelementStart(6, "td", 49);
|
|
135
90
|
i0.ɵɵtext(7);
|
|
136
91
|
i0.ɵɵpipe(8, "number");
|
|
137
92
|
i0.ɵɵelementEnd();
|
|
138
|
-
i0.ɵɵelementStart(9, "td",
|
|
93
|
+
i0.ɵɵelementStart(9, "td", 50);
|
|
139
94
|
i0.ɵɵtext(10);
|
|
140
95
|
i0.ɵɵpipe(11, "number");
|
|
141
96
|
i0.ɵɵelementEnd();
|
|
142
|
-
i0.ɵɵelementStart(12, "td",
|
|
97
|
+
i0.ɵɵelementStart(12, "td", 47);
|
|
143
98
|
i0.ɵɵtext(13);
|
|
144
99
|
i0.ɵɵpipe(14, "number");
|
|
145
100
|
i0.ɵɵelementEnd();
|
|
146
|
-
i0.ɵɵelementStart(15, "td",
|
|
101
|
+
i0.ɵɵelementStart(15, "td", 51);
|
|
147
102
|
i0.ɵɵtext(16);
|
|
148
103
|
i0.ɵɵpipe(17, "number");
|
|
149
104
|
i0.ɵɵelementEnd();
|
|
150
|
-
i0.ɵɵelementStart(18, "td",
|
|
105
|
+
i0.ɵɵelementStart(18, "td", 47);
|
|
151
106
|
i0.ɵɵtext(19);
|
|
152
107
|
i0.ɵɵpipe(20, "number");
|
|
153
108
|
i0.ɵɵelementEnd()();
|
|
154
109
|
} if (rf & 2) {
|
|
155
|
-
const
|
|
156
|
-
i0.ɵɵclassProp("error-row",
|
|
110
|
+
const detail_r9 = ctx.$implicit;
|
|
111
|
+
i0.ɵɵclassProp("error-row", detail_r9.RecordsErrored > 0);
|
|
157
112
|
i0.ɵɵadvance(2);
|
|
158
|
-
i0.ɵɵtextInterpolate(
|
|
113
|
+
i0.ɵɵtextInterpolate(detail_r9.Entity);
|
|
159
114
|
i0.ɵɵadvance(2);
|
|
160
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9,
|
|
115
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r9.RecordsProcessed));
|
|
161
116
|
i0.ɵɵadvance(3);
|
|
162
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11,
|
|
117
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r9.RecordsCreated));
|
|
163
118
|
i0.ɵɵadvance(3);
|
|
164
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13,
|
|
119
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r9.RecordsUpdated));
|
|
165
120
|
i0.ɵɵadvance(3);
|
|
166
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15,
|
|
121
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r9.RecordsDeleted));
|
|
167
122
|
i0.ɵɵadvance(3);
|
|
168
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17,
|
|
123
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r9.RecordsErrored));
|
|
169
124
|
i0.ɵɵadvance(3);
|
|
170
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19,
|
|
125
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r9.RecordsSkipped));
|
|
171
126
|
} }
|
|
172
|
-
function
|
|
173
|
-
i0.ɵɵelementStart(0, "table",
|
|
127
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelementStart(0, "table", 43)(1, "thead")(2, "tr")(3, "th");
|
|
174
129
|
i0.ɵɵtext(4, "Entity");
|
|
175
130
|
i0.ɵɵelementEnd();
|
|
176
|
-
i0.ɵɵelementStart(5, "th",
|
|
131
|
+
i0.ɵɵelementStart(5, "th", 47);
|
|
177
132
|
i0.ɵɵtext(6, "Processed");
|
|
178
133
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(7, "th",
|
|
134
|
+
i0.ɵɵelementStart(7, "th", 47);
|
|
180
135
|
i0.ɵɵtext(8, "Created");
|
|
181
136
|
i0.ɵɵelementEnd();
|
|
182
|
-
i0.ɵɵelementStart(9, "th",
|
|
137
|
+
i0.ɵɵelementStart(9, "th", 47);
|
|
183
138
|
i0.ɵɵtext(10, "Updated");
|
|
184
139
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(11, "th",
|
|
140
|
+
i0.ɵɵelementStart(11, "th", 47);
|
|
186
141
|
i0.ɵɵtext(12, "Deleted");
|
|
187
142
|
i0.ɵɵelementEnd();
|
|
188
|
-
i0.ɵɵelementStart(13, "th",
|
|
143
|
+
i0.ɵɵelementStart(13, "th", 47);
|
|
189
144
|
i0.ɵɵtext(14, "Errored");
|
|
190
145
|
i0.ɵɵelementEnd();
|
|
191
|
-
i0.ɵɵelementStart(15, "th",
|
|
146
|
+
i0.ɵɵelementStart(15, "th", 47);
|
|
192
147
|
i0.ɵɵtext(16, "Skipped");
|
|
193
148
|
i0.ɵɵelementEnd()()();
|
|
194
149
|
i0.ɵɵelementStart(17, "tbody");
|
|
195
|
-
i0.ɵɵrepeaterCreate(18,
|
|
150
|
+
i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 48, _forTrack2);
|
|
196
151
|
i0.ɵɵelementEnd()();
|
|
197
152
|
} if (rf & 2) {
|
|
198
|
-
const
|
|
153
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
199
154
|
i0.ɵɵadvance(18);
|
|
200
|
-
i0.ɵɵrepeater(
|
|
155
|
+
i0.ɵɵrepeater(ctx_r0.GetExpandedDetails());
|
|
201
156
|
} }
|
|
202
|
-
function
|
|
203
|
-
i0.ɵɵelementStart(0, "div",
|
|
204
|
-
i0.ɵɵelement(2, "i",
|
|
157
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "div", 52);
|
|
159
|
+
i0.ɵɵelement(2, "i", 35);
|
|
205
160
|
i0.ɵɵtext(3, " Error Log ");
|
|
206
161
|
i0.ɵɵelementEnd();
|
|
207
|
-
i0.ɵɵelementStart(4, "pre",
|
|
162
|
+
i0.ɵɵelementStart(4, "pre", 53);
|
|
208
163
|
i0.ɵɵtext(5);
|
|
209
164
|
i0.ɵɵelementEnd()();
|
|
210
165
|
} if (rf & 2) {
|
|
211
|
-
const
|
|
166
|
+
const run_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
212
167
|
i0.ɵɵadvance(5);
|
|
213
|
-
i0.ɵɵtextInterpolate(
|
|
168
|
+
i0.ɵɵtextInterpolate(run_r7.ErrorLog);
|
|
214
169
|
} }
|
|
215
|
-
function
|
|
216
|
-
const
|
|
217
|
-
i0.ɵɵelementStart(0, "div",
|
|
218
|
-
i0.ɵɵlistener("click", function
|
|
219
|
-
i0.ɵɵconditionalCreate(1,
|
|
220
|
-
i0.ɵɵconditionalCreate(4,
|
|
170
|
+
function ActivityComponent_Conditional_18_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
171
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
172
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
173
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
174
|
+
i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 41)(2, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 42)(3, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 43);
|
|
175
|
+
i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 44);
|
|
221
176
|
i0.ɵɵelementEnd();
|
|
222
177
|
} if (rf & 2) {
|
|
223
|
-
const
|
|
224
|
-
const
|
|
178
|
+
const run_r7 = i0.ɵɵnextContext().$implicit;
|
|
179
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
225
180
|
i0.ɵɵadvance();
|
|
226
|
-
i0.ɵɵconditional(
|
|
181
|
+
i0.ɵɵconditional(ctx_r0.IsLoadingExpandedDetails() ? 1 : ctx_r0.GetExpandedDetails().length === 0 ? 2 : 3);
|
|
227
182
|
i0.ɵɵadvance(3);
|
|
228
|
-
i0.ɵɵconditional(
|
|
183
|
+
i0.ɵɵconditional(run_r7.ErrorLog ? 4 : -1);
|
|
229
184
|
} }
|
|
230
|
-
function
|
|
231
|
-
const
|
|
232
|
-
i0.ɵɵelementStart(0, "div",
|
|
233
|
-
i0.ɵɵlistener("click", function
|
|
234
|
-
i0.ɵɵelementStart(1, "div",
|
|
235
|
-
i0.ɵɵelement(2, "span")(3, "i",
|
|
236
|
-
i0.ɵɵelementStart(4, "div",
|
|
185
|
+
function ActivityComponent_Conditional_18_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
186
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
187
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
188
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_div_click_0_listener() { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(run_r7.ID)); });
|
|
189
|
+
i0.ɵɵelementStart(1, "div", 26);
|
|
190
|
+
i0.ɵɵelement(2, "span")(3, "i", 27);
|
|
191
|
+
i0.ɵɵelementStart(4, "div", 28)(5, "span", 29);
|
|
237
192
|
i0.ɵɵtext(6);
|
|
238
193
|
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵelementStart(7, "span",
|
|
194
|
+
i0.ɵɵelementStart(7, "span", 30);
|
|
240
195
|
i0.ɵɵtext(8);
|
|
241
196
|
i0.ɵɵelementEnd()();
|
|
242
|
-
i0.ɵɵelementStart(9, "div",
|
|
197
|
+
i0.ɵɵelementStart(9, "div", 31);
|
|
243
198
|
i0.ɵɵtext(10);
|
|
244
199
|
i0.ɵɵelementEnd();
|
|
245
|
-
i0.ɵɵelementStart(11, "div",
|
|
200
|
+
i0.ɵɵelementStart(11, "div", 32);
|
|
246
201
|
i0.ɵɵtext(12);
|
|
247
202
|
i0.ɵɵelementEnd();
|
|
248
|
-
i0.ɵɵelementStart(13, "div",
|
|
203
|
+
i0.ɵɵelementStart(13, "div", 33);
|
|
249
204
|
i0.ɵɵtext(14);
|
|
250
205
|
i0.ɵɵpipe(15, "number");
|
|
251
206
|
i0.ɵɵelementEnd();
|
|
252
|
-
i0.ɵɵelementStart(16, "div",
|
|
253
|
-
i0.ɵɵconditionalCreate(17,
|
|
207
|
+
i0.ɵɵelementStart(16, "div", 34);
|
|
208
|
+
i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i", 35);
|
|
254
209
|
i0.ɵɵelementEnd();
|
|
255
|
-
i0.ɵɵelementStart(18, "div",
|
|
210
|
+
i0.ɵɵelementStart(18, "div", 36);
|
|
256
211
|
i0.ɵɵtext(19);
|
|
257
212
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(20, "button",
|
|
259
|
-
i0.ɵɵlistener("click", function
|
|
260
|
-
i0.ɵɵelement(21, "i",
|
|
213
|
+
i0.ɵɵelementStart(20, "button", 37);
|
|
214
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_button_click_20_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.ToggleExpand(run_r7.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
215
|
+
i0.ɵɵelement(21, "i", 38);
|
|
261
216
|
i0.ɵɵelementEnd()();
|
|
262
|
-
i0.ɵɵconditionalCreate(22,
|
|
217
|
+
i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_For_3_Conditional_22_Template, 5, 2, "div", 39);
|
|
263
218
|
i0.ɵɵelementEnd();
|
|
264
219
|
} if (rf & 2) {
|
|
265
|
-
const
|
|
266
|
-
const
|
|
267
|
-
i0.ɵɵclassProp("selected",
|
|
220
|
+
const run_r7 = ctx.$implicit;
|
|
221
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
222
|
+
i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(run_r7.ID));
|
|
268
223
|
i0.ɵɵadvance(2);
|
|
269
|
-
i0.ɵɵclassMap(
|
|
224
|
+
i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(run_r7.Status));
|
|
270
225
|
i0.ɵɵadvance();
|
|
271
|
-
i0.ɵɵclassMap(
|
|
272
|
-
i0.ɵɵclassProp("icon-green",
|
|
226
|
+
i0.ɵɵclassMap(ctx_r0.GetStatusIcon(run_r7.Status));
|
|
227
|
+
i0.ɵɵclassProp("icon-green", run_r7.Status === "Success")("icon-red", run_r7.Status === "Failed")("icon-amber", run_r7.Status === "In Progress")("icon-gray", run_r7.Status === "Pending");
|
|
273
228
|
i0.ɵɵadvance(3);
|
|
274
|
-
i0.ɵɵtextInterpolate(
|
|
229
|
+
i0.ɵɵtextInterpolate(run_r7.Integration);
|
|
275
230
|
i0.ɵɵadvance(2);
|
|
276
|
-
i0.ɵɵtextInterpolate(
|
|
231
|
+
i0.ɵɵtextInterpolate(run_r7.Company);
|
|
277
232
|
i0.ɵɵadvance();
|
|
278
|
-
i0.ɵɵproperty("title",
|
|
233
|
+
i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(run_r7.StartedAt));
|
|
279
234
|
i0.ɵɵadvance();
|
|
280
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
235
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(run_r7.StartedAt), " ");
|
|
281
236
|
i0.ɵɵadvance(2);
|
|
282
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
237
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(run_r7.StartedAt, run_r7.EndedAt), " ");
|
|
283
238
|
i0.ɵɵadvance(2);
|
|
284
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27,
|
|
239
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r7.TotalRecords), " ");
|
|
285
240
|
i0.ɵɵadvance(2);
|
|
286
|
-
i0.ɵɵclassProp("has-errors",
|
|
241
|
+
i0.ɵɵclassProp("has-errors", run_r7.ErrorLog);
|
|
287
242
|
i0.ɵɵadvance();
|
|
288
|
-
i0.ɵɵconditional(
|
|
243
|
+
i0.ɵɵconditional(run_r7.ErrorLog ? 17 : -1);
|
|
289
244
|
i0.ɵɵadvance(2);
|
|
290
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
245
|
+
i0.ɵɵtextInterpolate1(" ", run_r7.RunByUser || "Scheduled", " ");
|
|
291
246
|
i0.ɵɵadvance(2);
|
|
292
|
-
i0.ɵɵclassProp("rotated",
|
|
247
|
+
i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(run_r7.ID));
|
|
293
248
|
i0.ɵɵadvance();
|
|
294
|
-
i0.ɵɵconditional(
|
|
249
|
+
i0.ɵɵconditional(ctx_r0.IsExpanded(run_r7.ID) ? 22 : -1);
|
|
295
250
|
} }
|
|
296
|
-
function
|
|
297
|
-
i0.ɵɵelementStart(0, "div",
|
|
298
|
-
i0.ɵɵelement(2, "div",
|
|
251
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "div", 65);
|
|
253
|
+
i0.ɵɵelement(2, "div", 66);
|
|
299
254
|
i0.ɵɵelementEnd();
|
|
300
|
-
i0.ɵɵelementStart(3, "div",
|
|
255
|
+
i0.ɵɵelementStart(3, "div", 67)(4, "span");
|
|
301
256
|
i0.ɵɵtext(5);
|
|
302
257
|
i0.ɵɵelementEnd();
|
|
303
|
-
i0.ɵɵelementStart(6, "span",
|
|
258
|
+
i0.ɵɵelementStart(6, "span", 68);
|
|
304
259
|
i0.ɵɵtext(7);
|
|
305
260
|
i0.ɵɵelementEnd();
|
|
306
261
|
i0.ɵɵelementStart(8, "span");
|
|
307
262
|
i0.ɵɵtext(9);
|
|
308
263
|
i0.ɵɵelementEnd()()();
|
|
309
264
|
} if (rf & 2) {
|
|
310
|
-
const
|
|
265
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
311
266
|
i0.ɵɵadvance(2);
|
|
312
|
-
i0.ɵɵstyleProp("width",
|
|
267
|
+
i0.ɵɵstyleProp("width", ctx_r0.GetDurationBarWidth(ctx_r0.GetSelectedRun()), "%");
|
|
313
268
|
i0.ɵɵadvance(3);
|
|
314
|
-
i0.ɵɵtextInterpolate(
|
|
269
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().StartedAt));
|
|
315
270
|
i0.ɵɵadvance(2);
|
|
316
|
-
i0.ɵɵtextInterpolate(
|
|
271
|
+
i0.ɵɵtextInterpolate(ctx_r0.GetDurationBarLabel(ctx_r0.GetSelectedRun()));
|
|
317
272
|
i0.ɵɵadvance(2);
|
|
318
|
-
i0.ɵɵtextInterpolate(
|
|
273
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().EndedAt));
|
|
319
274
|
} }
|
|
320
|
-
function
|
|
321
|
-
i0.ɵɵelementStart(0, "div",
|
|
322
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
275
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
277
|
+
i0.ɵɵelement(1, "mj-loading", 73);
|
|
323
278
|
i0.ɵɵelementEnd();
|
|
324
279
|
} }
|
|
325
|
-
function
|
|
326
|
-
i0.ɵɵelementStart(0, "div",
|
|
327
|
-
i0.ɵɵelement(1, "i",
|
|
280
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
281
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
282
|
+
i0.ɵɵelement(1, "i", 46);
|
|
328
283
|
i0.ɵɵelementStart(2, "p");
|
|
329
284
|
i0.ɵɵtext(3, "No entity detail records for this run.");
|
|
330
285
|
i0.ɵɵelementEnd()();
|
|
331
286
|
} }
|
|
332
|
-
function
|
|
287
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
333
288
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
334
289
|
i0.ɵɵtext(2);
|
|
335
290
|
i0.ɵɵelementEnd();
|
|
336
|
-
i0.ɵɵelementStart(3, "td",
|
|
291
|
+
i0.ɵɵelementStart(3, "td", 47);
|
|
337
292
|
i0.ɵɵtext(4);
|
|
338
293
|
i0.ɵɵpipe(5, "number");
|
|
339
294
|
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(6, "td",
|
|
295
|
+
i0.ɵɵelementStart(6, "td", 49);
|
|
341
296
|
i0.ɵɵtext(7);
|
|
342
297
|
i0.ɵɵpipe(8, "number");
|
|
343
298
|
i0.ɵɵelementEnd();
|
|
344
|
-
i0.ɵɵelementStart(9, "td",
|
|
299
|
+
i0.ɵɵelementStart(9, "td", 50);
|
|
345
300
|
i0.ɵɵtext(10);
|
|
346
301
|
i0.ɵɵpipe(11, "number");
|
|
347
302
|
i0.ɵɵelementEnd();
|
|
348
|
-
i0.ɵɵelementStart(12, "td",
|
|
303
|
+
i0.ɵɵelementStart(12, "td", 47);
|
|
349
304
|
i0.ɵɵtext(13);
|
|
350
305
|
i0.ɵɵpipe(14, "number");
|
|
351
306
|
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵelementStart(15, "td",
|
|
307
|
+
i0.ɵɵelementStart(15, "td", 51);
|
|
353
308
|
i0.ɵɵtext(16);
|
|
354
309
|
i0.ɵɵpipe(17, "number");
|
|
355
310
|
i0.ɵɵelementEnd();
|
|
356
|
-
i0.ɵɵelementStart(18, "td",
|
|
311
|
+
i0.ɵɵelementStart(18, "td", 47);
|
|
357
312
|
i0.ɵɵtext(19);
|
|
358
313
|
i0.ɵɵpipe(20, "number");
|
|
359
314
|
i0.ɵɵelementEnd()();
|
|
360
315
|
} if (rf & 2) {
|
|
361
|
-
const
|
|
362
|
-
i0.ɵɵclassProp("error-row",
|
|
316
|
+
const detail_r11 = ctx.$implicit;
|
|
317
|
+
i0.ɵɵclassProp("error-row", detail_r11.RecordsErrored > 0);
|
|
363
318
|
i0.ɵɵadvance(2);
|
|
364
|
-
i0.ɵɵtextInterpolate(
|
|
319
|
+
i0.ɵɵtextInterpolate(detail_r11.Entity);
|
|
365
320
|
i0.ɵɵadvance(2);
|
|
366
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9,
|
|
321
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r11.RecordsProcessed));
|
|
367
322
|
i0.ɵɵadvance(3);
|
|
368
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11,
|
|
323
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r11.RecordsCreated));
|
|
369
324
|
i0.ɵɵadvance(3);
|
|
370
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13,
|
|
325
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r11.RecordsUpdated));
|
|
371
326
|
i0.ɵɵadvance(3);
|
|
372
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15,
|
|
327
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r11.RecordsDeleted));
|
|
373
328
|
i0.ɵɵadvance(3);
|
|
374
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17,
|
|
329
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r11.RecordsErrored));
|
|
375
330
|
i0.ɵɵadvance(3);
|
|
376
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19,
|
|
331
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r11.RecordsSkipped));
|
|
377
332
|
} }
|
|
378
|
-
function
|
|
379
|
-
i0.ɵɵelementStart(0, "table",
|
|
333
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
+
i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
|
|
380
335
|
i0.ɵɵtext(4, "Entity");
|
|
381
336
|
i0.ɵɵelementEnd();
|
|
382
|
-
i0.ɵɵelementStart(5, "th",
|
|
337
|
+
i0.ɵɵelementStart(5, "th", 47);
|
|
383
338
|
i0.ɵɵtext(6, "Processed");
|
|
384
339
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(7, "th",
|
|
340
|
+
i0.ɵɵelementStart(7, "th", 47);
|
|
386
341
|
i0.ɵɵtext(8, "Created");
|
|
387
342
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵelementStart(9, "th",
|
|
343
|
+
i0.ɵɵelementStart(9, "th", 47);
|
|
389
344
|
i0.ɵɵtext(10, "Updated");
|
|
390
345
|
i0.ɵɵelementEnd();
|
|
391
|
-
i0.ɵɵelementStart(11, "th",
|
|
346
|
+
i0.ɵɵelementStart(11, "th", 47);
|
|
392
347
|
i0.ɵɵtext(12, "Deleted");
|
|
393
348
|
i0.ɵɵelementEnd();
|
|
394
|
-
i0.ɵɵelementStart(13, "th",
|
|
349
|
+
i0.ɵɵelementStart(13, "th", 47);
|
|
395
350
|
i0.ɵɵtext(14, "Errors");
|
|
396
351
|
i0.ɵɵelementEnd();
|
|
397
|
-
i0.ɵɵelementStart(15, "th",
|
|
352
|
+
i0.ɵɵelementStart(15, "th", 47);
|
|
398
353
|
i0.ɵɵtext(16, "Skipped");
|
|
399
354
|
i0.ɵɵelementEnd()()();
|
|
400
355
|
i0.ɵɵelementStart(17, "tbody");
|
|
401
|
-
i0.ɵɵrepeaterCreate(18,
|
|
356
|
+
i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 48, _forTrack2);
|
|
402
357
|
i0.ɵɵelementEnd()();
|
|
403
358
|
} if (rf & 2) {
|
|
404
|
-
const
|
|
359
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
405
360
|
i0.ɵɵadvance(18);
|
|
406
|
-
i0.ɵɵrepeater(
|
|
361
|
+
i0.ɵɵrepeater(ctx_r0.SelectedRunDetails);
|
|
407
362
|
} }
|
|
408
|
-
function
|
|
409
|
-
i0.ɵɵelementStart(0, "div",
|
|
410
|
-
i0.ɵɵelement(2, "i",
|
|
363
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 52);
|
|
365
|
+
i0.ɵɵelement(2, "i", 35);
|
|
411
366
|
i0.ɵɵtext(3, " Error Log ");
|
|
412
367
|
i0.ɵɵelementEnd();
|
|
413
|
-
i0.ɵɵelementStart(4, "pre",
|
|
368
|
+
i0.ɵɵelementStart(4, "pre", 53);
|
|
414
369
|
i0.ɵɵtext(5);
|
|
415
370
|
i0.ɵɵelementEnd()();
|
|
416
371
|
} if (rf & 2) {
|
|
417
|
-
const
|
|
372
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
418
373
|
i0.ɵɵadvance(5);
|
|
419
|
-
i0.ɵɵtextInterpolate(
|
|
374
|
+
i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().ErrorLog);
|
|
420
375
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵconditionalCreate(0,
|
|
423
|
-
i0.ɵɵconditionalCreate(3,
|
|
376
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 71);
|
|
378
|
+
i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 72);
|
|
424
379
|
} if (rf & 2) {
|
|
425
380
|
let tmp_4_0;
|
|
426
|
-
const
|
|
427
|
-
i0.ɵɵconditional(
|
|
381
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
382
|
+
i0.ɵɵconditional(ctx_r0.IsLoadingDetail ? 0 : ctx_r0.SelectedRunDetails.length === 0 ? 1 : 2);
|
|
428
383
|
i0.ɵɵadvance(3);
|
|
429
|
-
i0.ɵɵconditional(((tmp_4_0 =
|
|
384
|
+
i0.ɵɵconditional(((tmp_4_0 = ctx_r0.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
|
|
430
385
|
} }
|
|
431
|
-
function
|
|
432
|
-
i0.ɵɵelementStart(0, "div",
|
|
433
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
386
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
387
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
388
|
+
i0.ɵɵelement(1, "mj-loading", 74);
|
|
434
389
|
i0.ɵɵelementEnd();
|
|
435
390
|
} }
|
|
436
|
-
function
|
|
437
|
-
i0.ɵɵelementStart(0, "div",
|
|
438
|
-
i0.ɵɵelement(1, "i",
|
|
391
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
392
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
393
|
+
i0.ɵɵelement(1, "i", 75);
|
|
439
394
|
i0.ɵɵelementStart(2, "p");
|
|
440
395
|
i0.ɵɵtext(3, "No watermarks recorded for this integration.");
|
|
441
396
|
i0.ɵɵelementEnd()();
|
|
442
397
|
} }
|
|
443
|
-
function
|
|
398
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
444
399
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
445
400
|
i0.ɵɵtext(2);
|
|
446
401
|
i0.ɵɵelementEnd();
|
|
447
|
-
i0.ɵɵelementStart(3, "td")(4, "span",
|
|
402
|
+
i0.ɵɵelementStart(3, "td")(4, "span", 76);
|
|
448
403
|
i0.ɵɵtext(5);
|
|
449
404
|
i0.ɵɵelementEnd()();
|
|
450
|
-
i0.ɵɵelementStart(6, "td",
|
|
405
|
+
i0.ɵɵelementStart(6, "td", 77);
|
|
451
406
|
i0.ɵɵtext(7);
|
|
452
407
|
i0.ɵɵelementEnd();
|
|
453
408
|
i0.ɵɵelementStart(8, "td");
|
|
454
409
|
i0.ɵɵtext(9);
|
|
455
410
|
i0.ɵɵelementEnd()();
|
|
456
411
|
} if (rf & 2) {
|
|
457
|
-
const
|
|
458
|
-
const
|
|
412
|
+
const wm_r12 = ctx.$implicit;
|
|
413
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
459
414
|
i0.ɵɵadvance(2);
|
|
460
|
-
i0.ɵɵtextInterpolate(
|
|
415
|
+
i0.ɵɵtextInterpolate(wm_r12.EntityMap);
|
|
461
416
|
i0.ɵɵadvance(3);
|
|
462
|
-
i0.ɵɵtextInterpolate(
|
|
417
|
+
i0.ɵɵtextInterpolate(wm_r12.WatermarkType);
|
|
463
418
|
i0.ɵɵadvance(2);
|
|
464
|
-
i0.ɵɵtextInterpolate(
|
|
419
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(wm_r12.WatermarkValue));
|
|
465
420
|
i0.ɵɵadvance(2);
|
|
466
|
-
i0.ɵɵtextInterpolate(
|
|
421
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r12.LastSyncAt));
|
|
467
422
|
} }
|
|
468
|
-
function
|
|
469
|
-
i0.ɵɵelementStart(0, "table",
|
|
423
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
424
|
+
i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
|
|
470
425
|
i0.ɵɵtext(4, "Entity Map");
|
|
471
426
|
i0.ɵɵelementEnd();
|
|
472
427
|
i0.ɵɵelementStart(5, "th");
|
|
@@ -479,85 +434,85 @@ function ActivityComponent_Conditional_21_Conditional_4_Conditional_22_Condition
|
|
|
479
434
|
i0.ɵɵtext(10, "Last Applied");
|
|
480
435
|
i0.ɵɵelementEnd()()();
|
|
481
436
|
i0.ɵɵelementStart(11, "tbody");
|
|
482
|
-
i0.ɵɵrepeaterCreate(12,
|
|
437
|
+
i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack1);
|
|
483
438
|
i0.ɵɵelementEnd()();
|
|
484
439
|
} if (rf & 2) {
|
|
485
|
-
const
|
|
440
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
486
441
|
i0.ɵɵadvance(12);
|
|
487
|
-
i0.ɵɵrepeater(
|
|
442
|
+
i0.ɵɵrepeater(ctx_r0.WatermarkData);
|
|
488
443
|
} }
|
|
489
|
-
function
|
|
490
|
-
i0.ɵɵconditionalCreate(0,
|
|
444
|
+
function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
+
i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 71);
|
|
491
446
|
} if (rf & 2) {
|
|
492
|
-
const
|
|
493
|
-
i0.ɵɵconditional(
|
|
447
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
448
|
+
i0.ɵɵconditional(ctx_r0.IsLoadingWatermarks ? 0 : ctx_r0.WatermarkData.length === 0 ? 1 : 2);
|
|
494
449
|
} }
|
|
495
|
-
function
|
|
496
|
-
const
|
|
497
|
-
i0.ɵɵelementStart(0, "div",
|
|
450
|
+
function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
451
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
452
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "div", 54)(2, "div", 55)(3, "h3");
|
|
498
453
|
i0.ɵɵtext(4);
|
|
499
454
|
i0.ɵɵelementEnd();
|
|
500
455
|
i0.ɵɵelementStart(5, "span");
|
|
501
456
|
i0.ɵɵelement(6, "i");
|
|
502
457
|
i0.ɵɵtext(7);
|
|
503
458
|
i0.ɵɵelementEnd();
|
|
504
|
-
i0.ɵɵelementStart(8, "span",
|
|
459
|
+
i0.ɵɵelementStart(8, "span", 56);
|
|
505
460
|
i0.ɵɵtext(9);
|
|
506
461
|
i0.ɵɵelementEnd()();
|
|
507
|
-
i0.ɵɵelementStart(10, "button",
|
|
508
|
-
i0.ɵɵlistener("click", function
|
|
509
|
-
i0.ɵɵelement(11, "i",
|
|
462
|
+
i0.ɵɵelementStart(10, "button", 57);
|
|
463
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(ctx_r0.SelectedRunID)); });
|
|
464
|
+
i0.ɵɵelement(11, "i", 58);
|
|
510
465
|
i0.ɵɵelementEnd()();
|
|
511
|
-
i0.ɵɵconditionalCreate(12,
|
|
512
|
-
i0.ɵɵelementStart(13, "div",
|
|
513
|
-
i0.ɵɵlistener("click", function
|
|
514
|
-
i0.ɵɵelement(15, "i",
|
|
466
|
+
i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template, 10, 5, "div", 59);
|
|
467
|
+
i0.ɵɵelementStart(13, "div", 60)(14, "button", 61);
|
|
468
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("entities")); });
|
|
469
|
+
i0.ɵɵelement(15, "i", 62);
|
|
515
470
|
i0.ɵɵtext(16, " Entity Breakdown ");
|
|
516
471
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(17, "button",
|
|
518
|
-
i0.ɵɵlistener("click", function
|
|
519
|
-
i0.ɵɵelement(18, "i",
|
|
472
|
+
i0.ɵɵelementStart(17, "button", 61);
|
|
473
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("watermarks")); });
|
|
474
|
+
i0.ɵɵelement(18, "i", 63);
|
|
520
475
|
i0.ɵɵtext(19, " Watermarks ");
|
|
521
476
|
i0.ɵɵelementEnd()();
|
|
522
|
-
i0.ɵɵelementStart(20, "div",
|
|
523
|
-
i0.ɵɵconditionalCreate(21,
|
|
524
|
-
i0.ɵɵconditionalCreate(22,
|
|
477
|
+
i0.ɵɵelementStart(20, "div", 64);
|
|
478
|
+
i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template, 4, 2);
|
|
479
|
+
i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template, 3, 1);
|
|
525
480
|
i0.ɵɵelementEnd()();
|
|
526
481
|
} if (rf & 2) {
|
|
527
|
-
const
|
|
482
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
528
483
|
i0.ɵɵadvance(4);
|
|
529
|
-
i0.ɵɵtextInterpolate(
|
|
484
|
+
i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().Integration);
|
|
530
485
|
i0.ɵɵadvance();
|
|
531
|
-
i0.ɵɵclassMap(
|
|
486
|
+
i0.ɵɵclassMap(ctx_r0.StatusChipClass(ctx_r0.GetSelectedRun().Status));
|
|
532
487
|
i0.ɵɵadvance();
|
|
533
|
-
i0.ɵɵclassMap(
|
|
488
|
+
i0.ɵɵclassMap(ctx_r0.GetStatusIcon(ctx_r0.GetSelectedRun().Status));
|
|
534
489
|
i0.ɵɵadvance();
|
|
535
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
490
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.GetSelectedRun().Status, " ");
|
|
536
491
|
i0.ɵɵadvance(2);
|
|
537
|
-
i0.ɵɵtextInterpolate(
|
|
492
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().StartedAt));
|
|
538
493
|
i0.ɵɵadvance(3);
|
|
539
|
-
i0.ɵɵconditional(
|
|
494
|
+
i0.ɵɵconditional(ctx_r0.GetSelectedRun().StartedAt && ctx_r0.GetSelectedRun().EndedAt ? 12 : -1);
|
|
540
495
|
i0.ɵɵadvance(2);
|
|
541
|
-
i0.ɵɵclassProp("active",
|
|
496
|
+
i0.ɵɵclassProp("active", ctx_r0.ActiveDetailTab === "entities");
|
|
542
497
|
i0.ɵɵadvance(3);
|
|
543
|
-
i0.ɵɵclassProp("active",
|
|
498
|
+
i0.ɵɵclassProp("active", ctx_r0.ActiveDetailTab === "watermarks");
|
|
544
499
|
i0.ɵɵadvance(4);
|
|
545
|
-
i0.ɵɵconditional(
|
|
500
|
+
i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "entities" ? 21 : -1);
|
|
546
501
|
i0.ɵɵadvance();
|
|
547
|
-
i0.ɵɵconditional(
|
|
502
|
+
i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "watermarks" ? 22 : -1);
|
|
548
503
|
} }
|
|
549
|
-
function
|
|
550
|
-
i0.ɵɵelementStart(0, "div", 14)(1, "div",
|
|
551
|
-
i0.ɵɵrepeaterCreate(2,
|
|
504
|
+
function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 22);
|
|
506
|
+
i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div", 23, _forTrack1);
|
|
552
507
|
i0.ɵɵelementEnd();
|
|
553
|
-
i0.ɵɵconditionalCreate(4,
|
|
508
|
+
i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_Conditional_4_Template, 23, 14, "div", 24);
|
|
554
509
|
i0.ɵɵelementEnd();
|
|
555
510
|
} if (rf & 2) {
|
|
556
|
-
const
|
|
511
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
557
512
|
i0.ɵɵadvance(2);
|
|
558
|
-
i0.ɵɵrepeater(
|
|
513
|
+
i0.ɵɵrepeater(ctx_r0.FilteredRuns);
|
|
559
514
|
i0.ɵɵadvance(2);
|
|
560
|
-
i0.ɵɵconditional(
|
|
515
|
+
i0.ɵɵconditional(ctx_r0.SelectedRunID && ctx_r0.GetSelectedRun() ? 4 : -1);
|
|
561
516
|
} }
|
|
562
517
|
let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
563
518
|
// Data
|
|
@@ -583,10 +538,10 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
583
538
|
IsLoadingWatermarks = false;
|
|
584
539
|
StatusOptions = ['All', 'Success', 'Failed', 'In Progress', 'Pending'];
|
|
585
540
|
DateOptions = [
|
|
541
|
+
{ Value: 'all', Label: 'All' },
|
|
586
542
|
{ Value: 'today', Label: 'Today' },
|
|
587
543
|
{ Value: '7d', Label: '7 Days' },
|
|
588
|
-
{ Value: '30d', Label: '30 Days' }
|
|
589
|
-
{ Value: 'all', Label: 'All' }
|
|
544
|
+
{ Value: '30d', Label: '30 Days' }
|
|
590
545
|
];
|
|
591
546
|
dataService = inject(IntegrationDataService);
|
|
592
547
|
cdr = inject(ChangeDetectorRef);
|
|
@@ -743,6 +698,42 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
743
698
|
OnSearchChange() {
|
|
744
699
|
this.ApplyFilters();
|
|
745
700
|
}
|
|
701
|
+
/** Bridge for <mj-page-search> which emits a plain string. */
|
|
702
|
+
OnSearchValueChange(value) {
|
|
703
|
+
this.SearchQuery = value;
|
|
704
|
+
this.ApplyFilters();
|
|
705
|
+
}
|
|
706
|
+
// ---- Integration filter popover wiring ---------------------------------
|
|
707
|
+
get ActivityFilterFields() {
|
|
708
|
+
return [
|
|
709
|
+
{
|
|
710
|
+
key: 'integration',
|
|
711
|
+
type: 'dropdown',
|
|
712
|
+
label: 'Integration',
|
|
713
|
+
icon: 'fa-solid fa-plug',
|
|
714
|
+
placeholder: 'All Integrations',
|
|
715
|
+
filterable: this.Integrations.length > 10,
|
|
716
|
+
options: [
|
|
717
|
+
{ text: 'All Integrations', value: '' },
|
|
718
|
+
...this.Integrations.map(i => ({ text: i.Name, value: i.ID })),
|
|
719
|
+
],
|
|
720
|
+
},
|
|
721
|
+
];
|
|
722
|
+
}
|
|
723
|
+
get ActivityFilterValues() {
|
|
724
|
+
return { integration: this.IntegrationFilter ?? '' };
|
|
725
|
+
}
|
|
726
|
+
get ActiveFilterCount() {
|
|
727
|
+
return this.IntegrationFilter ? 1 : 0;
|
|
728
|
+
}
|
|
729
|
+
OnFilterValuesChange(values) {
|
|
730
|
+
const next = (values ?? {}).integration ?? '';
|
|
731
|
+
this.SetIntegrationFilter(next || null);
|
|
732
|
+
}
|
|
733
|
+
ResetIntegrationFilter() {
|
|
734
|
+
if (this.IntegrationFilter)
|
|
735
|
+
this.SetIntegrationFilter(null);
|
|
736
|
+
}
|
|
746
737
|
async Refresh() {
|
|
747
738
|
await this.LoadData();
|
|
748
739
|
}
|
|
@@ -900,53 +891,53 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
900
891
|
return 'fa-solid fa-clock-rotate-left';
|
|
901
892
|
}
|
|
902
893
|
static ɵfac = /*@__PURE__*/ (() => { let ɵActivityComponent_BaseFactory; return function ActivityComponent_Factory(__ngFactoryType__) { return (ɵActivityComponent_BaseFactory || (ɵActivityComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ActivityComponent)))(__ngFactoryType__ || ActivityComponent); }; })();
|
|
903
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
904
|
-
i0.ɵɵelementStart(0, "
|
|
905
|
-
i0.ɵɵ
|
|
906
|
-
i0.ɵɵ
|
|
907
|
-
i0.ɵɵ
|
|
908
|
-
i0.ɵɵ
|
|
909
|
-
i0.ɵɵ
|
|
910
|
-
i0.ɵɵtext(8, "All Integrations");
|
|
911
|
-
i0.ɵɵelementEnd();
|
|
912
|
-
i0.ɵɵrepeaterCreate(9, ActivityComponent_For_10_Template, 2, 2, "option", 7, _forTrack0);
|
|
894
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "Label", "Active"], ["aria-hidden", "true", 1, "toolbar-divider"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "total", 3, "Count"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], [3, "Clicked", "Label", "Active"], ["text", "Loading activity...", "size", "medium"], [1, "fa-solid", "fa-inbox"], [1, "run-list-panel"], [1, "run-row", 3, "selected"], [1, "detail-panel"], [1, "run-row", 3, "click"], [1, "run-row-main"], [1, "status-icon"], [1, "run-info"], [1, "run-integration"], [1, "run-company"], [1, "run-meta", 3, "title"], [1, "run-meta", "run-duration"], [1, "run-meta", "run-records"], [1, "run-meta", "run-errors"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "run-meta", "run-user"], ["title", "Show entity breakdown", 1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "expanded-section"], [1, "expanded-section", 3, "click"], [1, "expanded-loading"], [1, "expanded-empty"], [1, "entity-table"], [1, "error-log-block"], ["text", "Loading breakdown...", "size", "small"], [1, "fa-solid", "fa-circle-info"], [1, "num-col"], [3, "error-row"], [1, "num-col", "created-col"], [1, "num-col", "updated-col"], [1, "num-col", "error-col"], [1, "error-log-label"], [1, "error-log-content"], [1, "detail-header"], [1, "detail-header-info"], [1, "detail-time"], ["title", "Close", 1, "close-detail-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "duration-bar-container"], [1, "detail-tabs"], [1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-droplet"], [1, "detail-content"], [1, "duration-bar-track"], [1, "duration-bar-fill"], [1, "duration-bar-labels"], [1, "duration-bar-value"], [1, "detail-loading"], [1, "detail-empty"], [1, "detail-table"], [1, "error-log-block", "detail-error-log"], ["text", "Loading details...", "size", "small"], ["text", "Loading watermarks...", "size", "small"], [1, "fa-solid", "fa-droplet-slash"], [1, "type-badge"], [1, "mono-cell", "watermark-value"]], template: function ActivityComponent_Template(rf, ctx) { if (rf & 1) {
|
|
895
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
|
|
896
|
+
i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 6, 6, "div", 1);
|
|
897
|
+
i0.ɵɵelementStart(3, "div", 2)(4, "mj-filter-popover", 3);
|
|
898
|
+
i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_4_listener() { return ctx.ResetIntegrationFilter(); });
|
|
899
|
+
i0.ɵɵelementStart(5, "mj-filter-panel", 4);
|
|
900
|
+
i0.ɵɵlistener("ValuesChange", function ActivityComponent_Template_mj_filter_panel_ValuesChange_5_listener($event) { return ctx.OnFilterValuesChange($event); })("Reset", function ActivityComponent_Template_mj_filter_panel_Reset_5_listener() { return ctx.ResetIntegrationFilter(); });
|
|
913
901
|
i0.ɵɵelementEnd()();
|
|
914
|
-
i0.ɵɵelementStart(
|
|
915
|
-
i0.ɵɵ
|
|
916
|
-
i0.ɵɵelementEnd();
|
|
917
|
-
i0.ɵɵelementStart(14, "div", 4)(15, "input", 8);
|
|
918
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ActivityComponent_Template_input_ngModelChange_15_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SearchQuery, $event) || (ctx.SearchQuery = $event); return $event; });
|
|
919
|
-
i0.ɵɵlistener("input", function ActivityComponent_Template_input_input_15_listener() { return ctx.OnSearchChange(); });
|
|
902
|
+
i0.ɵɵelementStart(6, "mj-refresh-button", 5);
|
|
903
|
+
i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_6_listener() { return ctx.Refresh(); });
|
|
920
904
|
i0.ɵɵelementEnd()();
|
|
921
|
-
i0.ɵɵelementStart(
|
|
922
|
-
i0.ɵɵlistener("
|
|
923
|
-
i0.ɵɵelement(17, "i", 10);
|
|
924
|
-
i0.ɵɵelementEnd()();
|
|
925
|
-
i0.ɵɵconditionalCreate(18, ActivityComponent_Conditional_18_Template, 26, 6, "div", 11);
|
|
926
|
-
i0.ɵɵconditionalCreate(19, ActivityComponent_Conditional_19_Template, 2, 0, "div", 12);
|
|
927
|
-
i0.ɵɵconditionalCreate(20, ActivityComponent_Conditional_20_Template, 4, 0, "div", 13);
|
|
928
|
-
i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_21_Template, 5, 1, "div", 14);
|
|
905
|
+
i0.ɵɵelementStart(7, "div", 6)(8, "mj-page-search", 7);
|
|
906
|
+
i0.ɵɵlistener("ValueChange", function ActivityComponent_Template_mj_page_search_ValueChange_8_listener($event) { return ctx.OnSearchValueChange($event); });
|
|
929
907
|
i0.ɵɵelementEnd();
|
|
908
|
+
i0.ɵɵrepeaterCreate(9, ActivityComponent_For_10_Template, 1, 2, "mj-filter-chip", 8, i0.ɵɵrepeaterTrackByIdentity);
|
|
909
|
+
i0.ɵɵelement(11, "span", 9);
|
|
910
|
+
i0.ɵɵrepeaterCreate(12, ActivityComponent_For_13_Template, 1, 2, "mj-filter-chip", 8, _forTrack0);
|
|
911
|
+
i0.ɵɵelementEnd()();
|
|
912
|
+
i0.ɵɵelementStart(14, "mj-page-body", 10)(15, "div", 11);
|
|
913
|
+
i0.ɵɵconditionalCreate(16, ActivityComponent_Conditional_16_Template, 2, 0, "div", 12);
|
|
914
|
+
i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_17_Template, 4, 0, "div", 13);
|
|
915
|
+
i0.ɵɵconditionalCreate(18, ActivityComponent_Conditional_18_Template, 5, 1, "div", 14);
|
|
916
|
+
i0.ɵɵelementEnd()()();
|
|
930
917
|
} if (rf & 2) {
|
|
931
|
-
i0.ɵɵadvance(
|
|
918
|
+
i0.ɵɵadvance(2);
|
|
919
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.AllRuns.length > 0 ? 2 : -1);
|
|
920
|
+
i0.ɵɵadvance(2);
|
|
921
|
+
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
922
|
+
i0.ɵɵadvance();
|
|
923
|
+
i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
|
|
924
|
+
i0.ɵɵadvance();
|
|
925
|
+
i0.ɵɵproperty("Loading", ctx.IsLoading);
|
|
926
|
+
i0.ɵɵadvance(2);
|
|
927
|
+
i0.ɵɵproperty("Value", ctx.SearchQuery);
|
|
928
|
+
i0.ɵɵadvance();
|
|
932
929
|
i0.ɵɵrepeater(ctx.StatusOptions);
|
|
933
930
|
i0.ɵɵadvance(3);
|
|
934
|
-
i0.ɵɵproperty("ngModel", ctx.IntegrationFilter ?? "");
|
|
935
|
-
i0.ɵɵadvance(3);
|
|
936
|
-
i0.ɵɵrepeater(ctx.Integrations);
|
|
937
|
-
i0.ɵɵadvance(3);
|
|
938
931
|
i0.ɵɵrepeater(ctx.DateOptions);
|
|
939
|
-
i0.ɵɵadvance(
|
|
940
|
-
i0.ɵɵ
|
|
941
|
-
i0.ɵɵadvance(
|
|
942
|
-
i0.ɵɵconditional(
|
|
943
|
-
i0.ɵɵadvance();
|
|
944
|
-
i0.ɵɵconditional(ctx.IsLoading ? 19 : -1);
|
|
932
|
+
i0.ɵɵadvance(2);
|
|
933
|
+
i0.ɵɵproperty("Flex", true);
|
|
934
|
+
i0.ɵɵadvance(2);
|
|
935
|
+
i0.ɵɵconditional(ctx.IsLoading ? 16 : -1);
|
|
945
936
|
i0.ɵɵadvance();
|
|
946
|
-
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ?
|
|
937
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 17 : -1);
|
|
947
938
|
i0.ɵɵadvance();
|
|
948
|
-
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ?
|
|
949
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.DecimalPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.activity-container[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 14px;\n overflow: auto;\n}\n\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.filter-pills[_ngcontent-%COMP%] {\n gap: 0;\n}\n\n.pill-btn[_ngcontent-%COMP%] {\n height: 32px;\n padding: 0 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n}\n\n.pill-btn[_ngcontent-%COMP%]:first-child {\n border-radius: 9999px 0 0 9999px;\n}\n\n.pill-btn[_ngcontent-%COMP%]:last-child {\n border-radius: 0 9999px 9999px 0;\n}\n\n.pill-btn[_ngcontent-%COMP%]:not(:first-child) {\n margin-left: -1px;\n}\n\n.pill-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-info-bg);\n border-color: var(--mj-border-strong);\n z-index: 1;\n}\n\n.pill-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n z-index: 2;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 180px;\n height: 32px;\n}\n\n.filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.search-input[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n min-width: 180px;\n height: 32px;\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.refresh-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n transition: background 0.15s, color 0.15s;\n}\n\n.refresh-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n.summary-strip[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.summary-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.badge-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dot-blue[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.dot-green[_ngcontent-%COMP%] { background: var(--mj-color-success-600); }\n.dot-red[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.dot-amber[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n.dot-gray[_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n.badge-count[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.count-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.count-red[_ngcontent-%COMP%] { color: var(--mj-color-error-600); }\n\n.badge-label[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n\n\n\n.loading-area[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n.split-view[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.run-list-panel[_ngcontent-%COMP%] {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.icon-red[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.icon-amber[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n.icon-gray[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n\n\n.run-info[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.run-meta[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors[_ngcontent-%COMP%] {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.run-user[_ngcontent-%COMP%] {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n\n.expanded-section[_ngcontent-%COMP%] {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading[_ngcontent-%COMP%], \n.expanded-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%] {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%] {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n.error-log-block[_ngcontent-%COMP%] {\n margin-top: 10px;\n}\n\n.error-log-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n\n\n.duration-bar-container[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track[_ngcontent-%COMP%] {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n\n\n.detail-tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n\n\n.detail-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading[_ngcontent-%COMP%], \n.detail-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n\n\n.chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n@media (max-width: 900px) {\n .split-view[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
|
|
939
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 18 : -1);
|
|
940
|
+
} }, dependencies: [i1.MJPageLayoutComponent, i1.MJPageHeaderComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, i1.MJFilterChipComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJStatBadgeComponent, i1.MJRefreshButtonComponent, i2.LoadingComponent, i3.DecimalPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.activity-container[_ngcontent-%COMP%] {\n \n\n\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n\n\n\n\n\n\n\n.toolbar-divider[_ngcontent-%COMP%] {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n\n\n\n.loading-area[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n.split-view[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.run-list-panel[_ngcontent-%COMP%] {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green[_ngcontent-%COMP%] { color: var(--mj-color-success-600); }\n.icon-red[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.icon-amber[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n.icon-gray[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n\n\n.run-info[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.run-meta[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors[_ngcontent-%COMP%] {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.run-user[_ngcontent-%COMP%] {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n\n.expanded-section[_ngcontent-%COMP%] {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading[_ngcontent-%COMP%], \n.expanded-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .num-col[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .created-col[_ngcontent-%COMP%] {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .updated-col[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%], \n.detail-table[_ngcontent-%COMP%] .error-col[_ngcontent-%COMP%] {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n.error-log-block[_ngcontent-%COMP%] {\n margin-top: 10px;\n}\n\n.error-log-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n\n\n.duration-bar-container[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track[_ngcontent-%COMP%] {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n\n\n.detail-tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n\n\n.detail-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading[_ngcontent-%COMP%], \n.detail-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n\n\n.chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n\n@media (max-width: 900px) {\n .split-view[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .detail-panel[_ngcontent-%COMP%] {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
|
|
950
941
|
};
|
|
951
942
|
ActivityComponent = __decorate([
|
|
952
943
|
RegisterClass(BaseResourceComponent, 'IntegrationActivity')
|
|
@@ -954,9 +945,9 @@ ActivityComponent = __decorate([
|
|
|
954
945
|
export { ActivityComponent };
|
|
955
946
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityComponent, [{
|
|
956
947
|
type: Component,
|
|
957
|
-
args: [{ standalone: false, selector: 'app-integration-activity', template: "<div class=\"activity-container\">\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"filter-group filter-pills\">\n @for (status of StatusOptions; track status) {\n <button class=\"pill-btn\"\n [class.active]=\"StatusFilter === status\"\n (click)=\"SetStatusFilter(status)\">\n {{ status }}\n </button>\n }\n </div>\n\n <div class=\"filter-group\">\n <select class=\"filter-select\"\n [ngModel]=\"IntegrationFilter ?? ''\"\n (ngModelChange)=\"SetIntegrationFilter($event || null)\">\n <option value=\"\">All Integrations</option>\n @for (opt of Integrations; track opt.ID) {\n <option [value]=\"opt.ID\">{{ opt.Name }}</option>\n }\n </select>\n </div>\n\n <div class=\"filter-group filter-pills\">\n @for (d of DateOptions; track d.Value) {\n <button class=\"pill-btn\"\n [class.active]=\"DateFilter === d.Value\"\n (click)=\"SetDateFilter(d.Value)\">\n {{ d.Label }}\n </button>\n }\n </div>\n\n <div class=\"filter-group\">\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\"\n (input)=\"OnSearchChange()\" />\n </div>\n\n <button class=\"refresh-btn\" (click)=\"Refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n\n <!-- Summary Strip -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div class=\"summary-strip\">\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-blue\"></span>\n <span class=\"badge-count\">{{ TotalRuns }}</span>\n <span class=\"badge-label\">Total Runs</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-green\"></span>\n <span class=\"badge-count count-green\">{{ SuccessfulRuns }}</span>\n <span class=\"badge-label\">Successful</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-red\"></span>\n <span class=\"badge-count count-red\">{{ FailedRuns }}</span>\n <span class=\"badge-label\">Failed</span>\n </div>\n <div class=\"summary-badge\">\n <span class=\"badge-dot dot-blue\"></span>\n <span class=\"badge-count\">{{ TotalRecordsProcessed | number }}</span>\n <span class=\"badge-label\">Records Processed</span>\n </div>\n </div>\n }\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: 14px;\n overflow: auto;\n}\n\n/* \u2500\u2500 Filter Bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.filter-group {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.filter-pills {\n gap: 0;\n}\n\n.pill-btn {\n height: 32px;\n padding: 0 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n}\n\n.pill-btn:first-child {\n border-radius: 9999px 0 0 9999px;\n}\n\n.pill-btn:last-child {\n border-radius: 0 9999px 9999px 0;\n}\n\n.pill-btn:not(:first-child) {\n margin-left: -1px;\n}\n\n.pill-btn:hover {\n background: var(--mj-status-info-bg);\n border-color: var(--mj-border-strong);\n z-index: 1;\n}\n\n.pill-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n z-index: 2;\n}\n\n.filter-select {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 180px;\n height: 32px;\n}\n\n.filter-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.search-input {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n min-width: 180px;\n height: 32px;\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n.refresh-btn {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n transition: background 0.15s, color 0.15s;\n}\n\n.refresh-btn:hover {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Summary Strip \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.summary-strip {\n display: inline-flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.summary-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.badge-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dot-blue { background: var(--mj-brand-primary); }\n.dot-green { background: var(--mj-color-success-600); }\n.dot-red { background: var(--mj-status-error); }\n.dot-amber { background: var(--mj-status-warning); }\n.dot-gray { background: var(--mj-text-disabled); }\n\n.badge-count {\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.count-green { color: var(--mj-color-success-600); }\n.count-red { color: var(--mj-color-error-600); }\n\n.badge-label {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
|
|
948
|
+
args: [{ standalone: false, selector: 'app-integration-activity', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integration Activity\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Sync run history and outcomes\">\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\n <mj-stat-badge [Count]=\"TotalRuns\" Label=\"total\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"SuccessfulRuns\" Label=\"succeeded\" Variant=\"success\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"FailedRuns\" Label=\"failed\" Variant=\"error\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"TotalRecordsProcessed | number\" Label=\"records\"></mj-stat-badge>\n </div>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ResetIntegrationFilter()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n (Reset)=\"ResetIntegrationFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search integrations...\"\n [Value]=\"SearchQuery\"\n (ValueChange)=\"OnSearchValueChange($event)\">\n </mj-page-search>\n @for (status of StatusOptions; track status) {\n <mj-filter-chip\n [Label]=\"status\"\n [Active]=\"StatusFilter === status\"\n (Clicked)=\"SetStatusFilter(status)\">\n </mj-filter-chip>\n }\n <span class=\"toolbar-divider\" aria-hidden=\"true\"></span>\n @for (d of DateOptions; track d.Value) {\n <mj-filter-chip\n [Label]=\"d.Label\"\n [Active]=\"DateFilter === d.Value\"\n (Clicked)=\"SetDateFilter(d.Value)\">\n </mj-filter-chip>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n<div class=\"activity-container\">\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n /* padding / scroll now owned by <mj-page-body>; flex sizing keeps the\n inner split-view (flex: 1 + min-height: 0) able to fill remaining height. */\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n/* Slot passthrough now lives in <mj-page-header>'s SCSS; per-section\n .integration-header-* rules deleted. Stat badge styling now lives in\n <mj-stat-badge>; per-section .integration-stat-badge* rules deleted. */\n\n/* Vertical separator between distinct chip groups in the toolbar slot. */\n.toolbar-divider {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
|
|
958
949
|
}], null, null); })();
|
|
959
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber:
|
|
950
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 39 }); })();
|
|
960
951
|
export function LoadActivityComponent() {
|
|
961
952
|
// Tree-shaking prevention: importing this module causes
|
|
962
953
|
// @RegisterClass decorators to fire, registering components.
|