@memberjunction/ng-dashboards 5.38.0 → 5.40.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/README.md +14 -7
- package/dist/AI/components/agents/agent-configuration.component.js +199 -198
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
- 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 +166 -58
- package/dist/AI/components/analytics/cost-budget/cost-budget.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 +2 -1
- 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 +1 -0
- 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 +55 -36
- 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 +9 -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 +158 -117
- 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 +1 -0
- 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 +22 -8
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +209 -208
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +130 -128
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +17 -17
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +578 -538
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +14 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/AI/services/cache-metrics.d.ts +50 -0
- package/dist/AI/services/cache-metrics.d.ts.map +1 -0
- package/dist/AI/services/cache-metrics.js +43 -0
- package/dist/AI/services/cache-metrics.js.map +1 -0
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js +132 -131
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +141 -141
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +15 -15
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +2 -2
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +2 -2
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +2 -2
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +72 -50
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +103 -102
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +52 -51
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +39 -38
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +92 -89
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +18 -17
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -85
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +155 -150
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +245 -243
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +18 -17
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +236 -229
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +390 -389
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +525 -566
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +135 -134
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js +443 -438
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +436 -427
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +1 -1
- package/dist/Testing/components/testing-runs.component.js +116 -115
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +6 -7
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +173 -172
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +116 -92
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +57 -35
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +80 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +1 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +7 -1
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +12 -14
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +5 -14
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +4 -5
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +7 -5
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +57 -54
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
|
@@ -13,12 +13,11 @@ import * as i0 from "@angular/core";
|
|
|
13
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.
|
|
18
|
-
const _forTrack2 = ($index, $item) => $item.EntityID;
|
|
16
|
+
const _forTrack0 = ($index, $item) => $item.ID;
|
|
17
|
+
const _forTrack1 = ($index, $item) => $item.EntityID;
|
|
19
18
|
function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
19
|
i0.ɵɵelementStart(0, "div", 1);
|
|
21
|
-
i0.ɵɵelement(1, "mj-stat-badge",
|
|
20
|
+
i0.ɵɵelement(1, "mj-stat-badge", 13)(2, "mj-stat-badge", 14)(3, "mj-stat-badge", 15);
|
|
22
21
|
i0.ɵɵpipe(4, "number");
|
|
23
22
|
i0.ɵɵelementEnd();
|
|
24
23
|
} if (rf & 2) {
|
|
@@ -30,230 +29,210 @@ function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
30
29
|
i0.ɵɵadvance();
|
|
31
30
|
i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(4, 3, ctx_r0.TotalRecordsProcessed));
|
|
32
31
|
} }
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
i0.ɵɵ
|
|
36
|
-
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)); });
|
|
32
|
+
function ActivityComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
34
|
+
i0.ɵɵelement(1, "mj-loading", 16);
|
|
37
35
|
i0.ɵɵelementEnd();
|
|
38
|
-
} if (rf & 2) {
|
|
39
|
-
const status_r3 = ctx.$implicit;
|
|
40
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
41
|
-
i0.ɵɵproperty("Label", status_r3)("Active", ctx_r0.StatusFilter === status_r3);
|
|
42
36
|
} }
|
|
43
|
-
function
|
|
44
|
-
|
|
45
|
-
i0.ɵɵ
|
|
46
|
-
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
|
-
i0.ɵɵelementEnd();
|
|
48
|
-
} if (rf & 2) {
|
|
49
|
-
const d_r5 = ctx.$implicit;
|
|
50
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
51
|
-
i0.ɵɵproperty("Label", d_r5.Label)("Active", ctx_r0.DateFilter === d_r5.Value);
|
|
52
|
-
} }
|
|
53
|
-
function ActivityComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
-
i0.ɵɵelementStart(0, "div", 12);
|
|
55
|
-
i0.ɵɵelement(1, "mj-loading", 19);
|
|
56
|
-
i0.ɵɵelementEnd();
|
|
57
|
-
} }
|
|
58
|
-
function ActivityComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
i0.ɵɵelementStart(0, "div", 13);
|
|
60
|
-
i0.ɵɵelement(1, "i", 20);
|
|
37
|
+
function ActivityComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
39
|
+
i0.ɵɵelement(1, "i", 17);
|
|
61
40
|
i0.ɵɵelementStart(2, "p");
|
|
62
41
|
i0.ɵɵtext(3, "No runs found for the selected filters.");
|
|
63
42
|
i0.ɵɵelementEnd()();
|
|
64
43
|
} }
|
|
65
|
-
function
|
|
66
|
-
i0.ɵɵelement(0, "i",
|
|
44
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelement(0, "i", 31);
|
|
67
46
|
} }
|
|
68
|
-
function
|
|
69
|
-
i0.ɵɵelementStart(0, "div",
|
|
70
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
47
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
49
|
+
i0.ɵɵelement(1, "mj-loading", 41);
|
|
71
50
|
i0.ɵɵelementEnd();
|
|
72
51
|
} }
|
|
73
|
-
function
|
|
74
|
-
i0.ɵɵelementStart(0, "div",
|
|
75
|
-
i0.ɵɵelement(1, "i",
|
|
52
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
54
|
+
i0.ɵɵelement(1, "i", 42);
|
|
76
55
|
i0.ɵɵtext(2, " No entity details for this run. ");
|
|
77
56
|
i0.ɵɵelementEnd();
|
|
78
57
|
} }
|
|
79
|
-
function
|
|
58
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
80
59
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
81
60
|
i0.ɵɵtext(2);
|
|
82
61
|
i0.ɵɵelementEnd();
|
|
83
|
-
i0.ɵɵelementStart(3, "td",
|
|
62
|
+
i0.ɵɵelementStart(3, "td", 43);
|
|
84
63
|
i0.ɵɵtext(4);
|
|
85
64
|
i0.ɵɵpipe(5, "number");
|
|
86
65
|
i0.ɵɵelementEnd();
|
|
87
|
-
i0.ɵɵelementStart(6, "td",
|
|
66
|
+
i0.ɵɵelementStart(6, "td", 45);
|
|
88
67
|
i0.ɵɵtext(7);
|
|
89
68
|
i0.ɵɵpipe(8, "number");
|
|
90
69
|
i0.ɵɵelementEnd();
|
|
91
|
-
i0.ɵɵelementStart(9, "td",
|
|
70
|
+
i0.ɵɵelementStart(9, "td", 46);
|
|
92
71
|
i0.ɵɵtext(10);
|
|
93
72
|
i0.ɵɵpipe(11, "number");
|
|
94
73
|
i0.ɵɵelementEnd();
|
|
95
|
-
i0.ɵɵelementStart(12, "td",
|
|
74
|
+
i0.ɵɵelementStart(12, "td", 43);
|
|
96
75
|
i0.ɵɵtext(13);
|
|
97
76
|
i0.ɵɵpipe(14, "number");
|
|
98
77
|
i0.ɵɵelementEnd();
|
|
99
|
-
i0.ɵɵelementStart(15, "td",
|
|
78
|
+
i0.ɵɵelementStart(15, "td", 47);
|
|
100
79
|
i0.ɵɵtext(16);
|
|
101
80
|
i0.ɵɵpipe(17, "number");
|
|
102
81
|
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵelementStart(18, "td",
|
|
82
|
+
i0.ɵɵelementStart(18, "td", 43);
|
|
104
83
|
i0.ɵɵtext(19);
|
|
105
84
|
i0.ɵɵpipe(20, "number");
|
|
106
85
|
i0.ɵɵelementEnd()();
|
|
107
86
|
} if (rf & 2) {
|
|
108
|
-
const
|
|
109
|
-
i0.ɵɵclassProp("error-row",
|
|
87
|
+
const detail_r5 = ctx.$implicit;
|
|
88
|
+
i0.ɵɵclassProp("error-row", detail_r5.RecordsErrored > 0);
|
|
110
89
|
i0.ɵɵadvance(2);
|
|
111
|
-
i0.ɵɵtextInterpolate(
|
|
90
|
+
i0.ɵɵtextInterpolate(detail_r5.Entity);
|
|
112
91
|
i0.ɵɵadvance(2);
|
|
113
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9,
|
|
92
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r5.RecordsProcessed));
|
|
114
93
|
i0.ɵɵadvance(3);
|
|
115
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11,
|
|
94
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r5.RecordsCreated));
|
|
116
95
|
i0.ɵɵadvance(3);
|
|
117
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13,
|
|
96
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r5.RecordsUpdated));
|
|
118
97
|
i0.ɵɵadvance(3);
|
|
119
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15,
|
|
98
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r5.RecordsDeleted));
|
|
120
99
|
i0.ɵɵadvance(3);
|
|
121
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17,
|
|
100
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r5.RecordsErrored));
|
|
122
101
|
i0.ɵɵadvance(3);
|
|
123
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19,
|
|
102
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r5.RecordsSkipped));
|
|
124
103
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵelementStart(0, "table",
|
|
104
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "table", 39)(1, "thead")(2, "tr")(3, "th");
|
|
127
106
|
i0.ɵɵtext(4, "Entity");
|
|
128
107
|
i0.ɵɵelementEnd();
|
|
129
|
-
i0.ɵɵelementStart(5, "th",
|
|
108
|
+
i0.ɵɵelementStart(5, "th", 43);
|
|
130
109
|
i0.ɵɵtext(6, "Processed");
|
|
131
110
|
i0.ɵɵelementEnd();
|
|
132
|
-
i0.ɵɵelementStart(7, "th",
|
|
111
|
+
i0.ɵɵelementStart(7, "th", 43);
|
|
133
112
|
i0.ɵɵtext(8, "Created");
|
|
134
113
|
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵelementStart(9, "th",
|
|
114
|
+
i0.ɵɵelementStart(9, "th", 43);
|
|
136
115
|
i0.ɵɵtext(10, "Updated");
|
|
137
116
|
i0.ɵɵelementEnd();
|
|
138
|
-
i0.ɵɵelementStart(11, "th",
|
|
117
|
+
i0.ɵɵelementStart(11, "th", 43);
|
|
139
118
|
i0.ɵɵtext(12, "Deleted");
|
|
140
119
|
i0.ɵɵelementEnd();
|
|
141
|
-
i0.ɵɵelementStart(13, "th",
|
|
120
|
+
i0.ɵɵelementStart(13, "th", 43);
|
|
142
121
|
i0.ɵɵtext(14, "Errored");
|
|
143
122
|
i0.ɵɵelementEnd();
|
|
144
|
-
i0.ɵɵelementStart(15, "th",
|
|
123
|
+
i0.ɵɵelementStart(15, "th", 43);
|
|
145
124
|
i0.ɵɵtext(16, "Skipped");
|
|
146
125
|
i0.ɵɵelementEnd()()();
|
|
147
126
|
i0.ɵɵelementStart(17, "tbody");
|
|
148
|
-
i0.ɵɵrepeaterCreate(18,
|
|
127
|
+
i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 44, _forTrack1);
|
|
149
128
|
i0.ɵɵelementEnd()();
|
|
150
129
|
} if (rf & 2) {
|
|
151
130
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
152
131
|
i0.ɵɵadvance(18);
|
|
153
132
|
i0.ɵɵrepeater(ctx_r0.GetExpandedDetails());
|
|
154
133
|
} }
|
|
155
|
-
function
|
|
156
|
-
i0.ɵɵelementStart(0, "div",
|
|
157
|
-
i0.ɵɵelement(2, "i",
|
|
134
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "div", 48);
|
|
136
|
+
i0.ɵɵelement(2, "i", 31);
|
|
158
137
|
i0.ɵɵtext(3, " Error Log ");
|
|
159
138
|
i0.ɵɵelementEnd();
|
|
160
|
-
i0.ɵɵelementStart(4, "pre",
|
|
139
|
+
i0.ɵɵelementStart(4, "pre", 49);
|
|
161
140
|
i0.ɵɵtext(5);
|
|
162
141
|
i0.ɵɵelementEnd()();
|
|
163
142
|
} if (rf & 2) {
|
|
164
|
-
const
|
|
143
|
+
const run_r3 = i0.ɵɵnextContext(2).$implicit;
|
|
165
144
|
i0.ɵɵadvance(5);
|
|
166
|
-
i0.ɵɵtextInterpolate(
|
|
145
|
+
i0.ɵɵtextInterpolate(run_r3.ErrorLog);
|
|
167
146
|
} }
|
|
168
|
-
function
|
|
169
|
-
const
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
-
i0.ɵɵlistener("click", function
|
|
172
|
-
i0.ɵɵconditionalCreate(1,
|
|
173
|
-
i0.ɵɵconditionalCreate(4,
|
|
147
|
+
function ActivityComponent_Conditional_13_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
149
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
150
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
151
|
+
i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 37)(2, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 38)(3, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 39);
|
|
152
|
+
i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_13_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 40);
|
|
174
153
|
i0.ɵɵelementEnd();
|
|
175
154
|
} if (rf & 2) {
|
|
176
|
-
const
|
|
155
|
+
const run_r3 = i0.ɵɵnextContext().$implicit;
|
|
177
156
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
178
157
|
i0.ɵɵadvance();
|
|
179
158
|
i0.ɵɵconditional(ctx_r0.IsLoadingExpandedDetails() ? 1 : ctx_r0.GetExpandedDetails().length === 0 ? 2 : 3);
|
|
180
159
|
i0.ɵɵadvance(3);
|
|
181
|
-
i0.ɵɵconditional(
|
|
160
|
+
i0.ɵɵconditional(run_r3.ErrorLog ? 4 : -1);
|
|
182
161
|
} }
|
|
183
|
-
function
|
|
184
|
-
const
|
|
185
|
-
i0.ɵɵelementStart(0, "div",
|
|
186
|
-
i0.ɵɵlistener("click", function
|
|
187
|
-
i0.ɵɵelementStart(1, "div",
|
|
188
|
-
i0.ɵɵelement(2, "span")(3, "i",
|
|
189
|
-
i0.ɵɵelementStart(4, "div",
|
|
162
|
+
function ActivityComponent_Conditional_13_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
165
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Template_div_click_0_listener() { const run_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(run_r3.ID)); });
|
|
166
|
+
i0.ɵɵelementStart(1, "div", 22);
|
|
167
|
+
i0.ɵɵelement(2, "span")(3, "i", 23);
|
|
168
|
+
i0.ɵɵelementStart(4, "div", 24)(5, "span", 25);
|
|
190
169
|
i0.ɵɵtext(6);
|
|
191
170
|
i0.ɵɵelementEnd();
|
|
192
|
-
i0.ɵɵelementStart(7, "span",
|
|
171
|
+
i0.ɵɵelementStart(7, "span", 26);
|
|
193
172
|
i0.ɵɵtext(8);
|
|
194
173
|
i0.ɵɵelementEnd()();
|
|
195
|
-
i0.ɵɵelementStart(9, "div",
|
|
174
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
196
175
|
i0.ɵɵtext(10);
|
|
197
176
|
i0.ɵɵelementEnd();
|
|
198
|
-
i0.ɵɵelementStart(11, "div",
|
|
177
|
+
i0.ɵɵelementStart(11, "div", 28);
|
|
199
178
|
i0.ɵɵtext(12);
|
|
200
179
|
i0.ɵɵelementEnd();
|
|
201
|
-
i0.ɵɵelementStart(13, "div",
|
|
180
|
+
i0.ɵɵelementStart(13, "div", 29);
|
|
202
181
|
i0.ɵɵtext(14);
|
|
203
182
|
i0.ɵɵpipe(15, "number");
|
|
204
183
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵelementStart(16, "div",
|
|
206
|
-
i0.ɵɵconditionalCreate(17,
|
|
184
|
+
i0.ɵɵelementStart(16, "div", 30);
|
|
185
|
+
i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_13_For_3_Conditional_17_Template, 1, 0, "i", 31);
|
|
207
186
|
i0.ɵɵelementEnd();
|
|
208
|
-
i0.ɵɵelementStart(18, "div",
|
|
187
|
+
i0.ɵɵelementStart(18, "div", 32);
|
|
209
188
|
i0.ɵɵtext(19);
|
|
210
189
|
i0.ɵɵelementEnd();
|
|
211
|
-
i0.ɵɵelementStart(20, "button",
|
|
212
|
-
i0.ɵɵlistener("click", function
|
|
213
|
-
i0.ɵɵelement(21, "i",
|
|
190
|
+
i0.ɵɵelementStart(20, "button", 33);
|
|
191
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_For_3_Template_button_click_20_listener($event) { const run_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.ToggleExpand(run_r3.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
192
|
+
i0.ɵɵelement(21, "i", 34);
|
|
214
193
|
i0.ɵɵelementEnd()();
|
|
215
|
-
i0.ɵɵconditionalCreate(22,
|
|
194
|
+
i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_13_For_3_Conditional_22_Template, 5, 2, "div", 35);
|
|
216
195
|
i0.ɵɵelementEnd();
|
|
217
196
|
} if (rf & 2) {
|
|
218
|
-
const
|
|
197
|
+
const run_r3 = ctx.$implicit;
|
|
219
198
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
220
|
-
i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(
|
|
199
|
+
i0.ɵɵclassProp("selected", ctx_r0.IsSelectedRun(run_r3.ID));
|
|
221
200
|
i0.ɵɵadvance(2);
|
|
222
|
-
i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(
|
|
201
|
+
i0.ɵɵclassMap(ctx_r0.GetStatusDotClass(run_r3.Status));
|
|
223
202
|
i0.ɵɵadvance();
|
|
224
|
-
i0.ɵɵclassMap(ctx_r0.GetStatusIcon(
|
|
225
|
-
i0.ɵɵclassProp("icon-green",
|
|
203
|
+
i0.ɵɵclassMap(ctx_r0.GetStatusIcon(run_r3.Status));
|
|
204
|
+
i0.ɵɵclassProp("icon-green", run_r3.Status === "Success")("icon-red", run_r3.Status === "Failed")("icon-amber", run_r3.Status === "In Progress")("icon-gray", run_r3.Status === "Pending");
|
|
226
205
|
i0.ɵɵadvance(3);
|
|
227
|
-
i0.ɵɵtextInterpolate(
|
|
206
|
+
i0.ɵɵtextInterpolate(run_r3.Integration);
|
|
228
207
|
i0.ɵɵadvance(2);
|
|
229
|
-
i0.ɵɵtextInterpolate(
|
|
208
|
+
i0.ɵɵtextInterpolate(run_r3.Company);
|
|
230
209
|
i0.ɵɵadvance();
|
|
231
|
-
i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(
|
|
210
|
+
i0.ɵɵproperty("title", ctx_r0.FormatAbsoluteDate(run_r3.StartedAt));
|
|
232
211
|
i0.ɵɵadvance();
|
|
233
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(
|
|
212
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.GetRelativeTime(run_r3.StartedAt), " ");
|
|
234
213
|
i0.ɵɵadvance(2);
|
|
235
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(
|
|
214
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.FormatDuration(run_r3.StartedAt, run_r3.EndedAt), " ");
|
|
236
215
|
i0.ɵɵadvance(2);
|
|
237
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27,
|
|
216
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 27, run_r3.TotalRecords), " ");
|
|
238
217
|
i0.ɵɵadvance(2);
|
|
239
|
-
i0.ɵɵclassProp("has-errors",
|
|
218
|
+
i0.ɵɵclassProp("has-errors", run_r3.ErrorLog);
|
|
240
219
|
i0.ɵɵadvance();
|
|
241
|
-
i0.ɵɵconditional(
|
|
220
|
+
i0.ɵɵconditional(run_r3.ErrorLog ? 17 : -1);
|
|
242
221
|
i0.ɵɵadvance(2);
|
|
243
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
222
|
+
i0.ɵɵtextInterpolate1(" ", run_r3.RunByUser || "Scheduled", " ");
|
|
244
223
|
i0.ɵɵadvance(2);
|
|
245
|
-
i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(
|
|
224
|
+
i0.ɵɵclassProp("rotated", ctx_r0.IsExpanded(run_r3.ID));
|
|
246
225
|
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵconditional(ctx_r0.IsExpanded(
|
|
226
|
+
i0.ɵɵconditional(ctx_r0.IsExpanded(run_r3.ID) ? 22 : -1);
|
|
248
227
|
} }
|
|
249
|
-
function
|
|
250
|
-
i0.ɵɵelementStart(0, "div",
|
|
251
|
-
i0.ɵɵelement(2, "div",
|
|
228
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
+
i0.ɵɵelementStart(0, "div", 55)(1, "div", 61);
|
|
230
|
+
i0.ɵɵelement(2, "div", 62);
|
|
252
231
|
i0.ɵɵelementEnd();
|
|
253
|
-
i0.ɵɵelementStart(3, "div",
|
|
232
|
+
i0.ɵɵelementStart(3, "div", 63)(4, "span");
|
|
254
233
|
i0.ɵɵtext(5);
|
|
255
234
|
i0.ɵɵelementEnd();
|
|
256
|
-
i0.ɵɵelementStart(6, "span",
|
|
235
|
+
i0.ɵɵelementStart(6, "span", 64);
|
|
257
236
|
i0.ɵɵtext(7);
|
|
258
237
|
i0.ɵɵelementEnd();
|
|
259
238
|
i0.ɵɵelementStart(8, "span");
|
|
@@ -270,100 +249,100 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(
|
|
|
270
249
|
i0.ɵɵadvance(2);
|
|
271
250
|
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().EndedAt));
|
|
272
251
|
} }
|
|
273
|
-
function
|
|
274
|
-
i0.ɵɵelementStart(0, "div",
|
|
275
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
252
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
253
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
254
|
+
i0.ɵɵelement(1, "mj-loading", 69);
|
|
276
255
|
i0.ɵɵelementEnd();
|
|
277
256
|
} }
|
|
278
|
-
function
|
|
279
|
-
i0.ɵɵelementStart(0, "div",
|
|
280
|
-
i0.ɵɵelement(1, "i",
|
|
257
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
258
|
+
i0.ɵɵelementStart(0, "div", 66);
|
|
259
|
+
i0.ɵɵelement(1, "i", 42);
|
|
281
260
|
i0.ɵɵelementStart(2, "p");
|
|
282
261
|
i0.ɵɵtext(3, "No entity detail records for this run.");
|
|
283
262
|
i0.ɵɵelementEnd()();
|
|
284
263
|
} }
|
|
285
|
-
function
|
|
264
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
286
265
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
287
266
|
i0.ɵɵtext(2);
|
|
288
267
|
i0.ɵɵelementEnd();
|
|
289
|
-
i0.ɵɵelementStart(3, "td",
|
|
268
|
+
i0.ɵɵelementStart(3, "td", 43);
|
|
290
269
|
i0.ɵɵtext(4);
|
|
291
270
|
i0.ɵɵpipe(5, "number");
|
|
292
271
|
i0.ɵɵelementEnd();
|
|
293
|
-
i0.ɵɵelementStart(6, "td",
|
|
272
|
+
i0.ɵɵelementStart(6, "td", 45);
|
|
294
273
|
i0.ɵɵtext(7);
|
|
295
274
|
i0.ɵɵpipe(8, "number");
|
|
296
275
|
i0.ɵɵelementEnd();
|
|
297
|
-
i0.ɵɵelementStart(9, "td",
|
|
276
|
+
i0.ɵɵelementStart(9, "td", 46);
|
|
298
277
|
i0.ɵɵtext(10);
|
|
299
278
|
i0.ɵɵpipe(11, "number");
|
|
300
279
|
i0.ɵɵelementEnd();
|
|
301
|
-
i0.ɵɵelementStart(12, "td",
|
|
280
|
+
i0.ɵɵelementStart(12, "td", 43);
|
|
302
281
|
i0.ɵɵtext(13);
|
|
303
282
|
i0.ɵɵpipe(14, "number");
|
|
304
283
|
i0.ɵɵelementEnd();
|
|
305
|
-
i0.ɵɵelementStart(15, "td",
|
|
284
|
+
i0.ɵɵelementStart(15, "td", 47);
|
|
306
285
|
i0.ɵɵtext(16);
|
|
307
286
|
i0.ɵɵpipe(17, "number");
|
|
308
287
|
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵelementStart(18, "td",
|
|
288
|
+
i0.ɵɵelementStart(18, "td", 43);
|
|
310
289
|
i0.ɵɵtext(19);
|
|
311
290
|
i0.ɵɵpipe(20, "number");
|
|
312
291
|
i0.ɵɵelementEnd()();
|
|
313
292
|
} if (rf & 2) {
|
|
314
|
-
const
|
|
315
|
-
i0.ɵɵclassProp("error-row",
|
|
293
|
+
const detail_r7 = ctx.$implicit;
|
|
294
|
+
i0.ɵɵclassProp("error-row", detail_r7.RecordsErrored > 0);
|
|
316
295
|
i0.ɵɵadvance(2);
|
|
317
|
-
i0.ɵɵtextInterpolate(
|
|
296
|
+
i0.ɵɵtextInterpolate(detail_r7.Entity);
|
|
318
297
|
i0.ɵɵadvance(2);
|
|
319
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9,
|
|
298
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, detail_r7.RecordsProcessed));
|
|
320
299
|
i0.ɵɵadvance(3);
|
|
321
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11,
|
|
300
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, detail_r7.RecordsCreated));
|
|
322
301
|
i0.ɵɵadvance(3);
|
|
323
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13,
|
|
302
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, detail_r7.RecordsUpdated));
|
|
324
303
|
i0.ɵɵadvance(3);
|
|
325
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15,
|
|
304
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, detail_r7.RecordsDeleted));
|
|
326
305
|
i0.ɵɵadvance(3);
|
|
327
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17,
|
|
306
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 17, detail_r7.RecordsErrored));
|
|
328
307
|
i0.ɵɵadvance(3);
|
|
329
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19,
|
|
308
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r7.RecordsSkipped));
|
|
330
309
|
} }
|
|
331
|
-
function
|
|
332
|
-
i0.ɵɵelementStart(0, "table",
|
|
310
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
311
|
+
i0.ɵɵelementStart(0, "table", 67)(1, "thead")(2, "tr")(3, "th");
|
|
333
312
|
i0.ɵɵtext(4, "Entity");
|
|
334
313
|
i0.ɵɵelementEnd();
|
|
335
|
-
i0.ɵɵelementStart(5, "th",
|
|
314
|
+
i0.ɵɵelementStart(5, "th", 43);
|
|
336
315
|
i0.ɵɵtext(6, "Processed");
|
|
337
316
|
i0.ɵɵelementEnd();
|
|
338
|
-
i0.ɵɵelementStart(7, "th",
|
|
317
|
+
i0.ɵɵelementStart(7, "th", 43);
|
|
339
318
|
i0.ɵɵtext(8, "Created");
|
|
340
319
|
i0.ɵɵelementEnd();
|
|
341
|
-
i0.ɵɵelementStart(9, "th",
|
|
320
|
+
i0.ɵɵelementStart(9, "th", 43);
|
|
342
321
|
i0.ɵɵtext(10, "Updated");
|
|
343
322
|
i0.ɵɵelementEnd();
|
|
344
|
-
i0.ɵɵelementStart(11, "th",
|
|
323
|
+
i0.ɵɵelementStart(11, "th", 43);
|
|
345
324
|
i0.ɵɵtext(12, "Deleted");
|
|
346
325
|
i0.ɵɵelementEnd();
|
|
347
|
-
i0.ɵɵelementStart(13, "th",
|
|
326
|
+
i0.ɵɵelementStart(13, "th", 43);
|
|
348
327
|
i0.ɵɵtext(14, "Errors");
|
|
349
328
|
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelementStart(15, "th",
|
|
329
|
+
i0.ɵɵelementStart(15, "th", 43);
|
|
351
330
|
i0.ɵɵtext(16, "Skipped");
|
|
352
331
|
i0.ɵɵelementEnd()()();
|
|
353
332
|
i0.ɵɵelementStart(17, "tbody");
|
|
354
|
-
i0.ɵɵrepeaterCreate(18,
|
|
333
|
+
i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 44, _forTrack1);
|
|
355
334
|
i0.ɵɵelementEnd()();
|
|
356
335
|
} if (rf & 2) {
|
|
357
336
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
358
337
|
i0.ɵɵadvance(18);
|
|
359
338
|
i0.ɵɵrepeater(ctx_r0.SelectedRunDetails);
|
|
360
339
|
} }
|
|
361
|
-
function
|
|
362
|
-
i0.ɵɵelementStart(0, "div",
|
|
363
|
-
i0.ɵɵelement(2, "i",
|
|
340
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 48);
|
|
342
|
+
i0.ɵɵelement(2, "i", 31);
|
|
364
343
|
i0.ɵɵtext(3, " Error Log ");
|
|
365
344
|
i0.ɵɵelementEnd();
|
|
366
|
-
i0.ɵɵelementStart(4, "pre",
|
|
345
|
+
i0.ɵɵelementStart(4, "pre", 49);
|
|
367
346
|
i0.ɵɵtext(5);
|
|
368
347
|
i0.ɵɵelementEnd()();
|
|
369
348
|
} if (rf & 2) {
|
|
@@ -371,9 +350,9 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
|
|
|
371
350
|
i0.ɵɵadvance(5);
|
|
372
351
|
i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().ErrorLog);
|
|
373
352
|
} }
|
|
374
|
-
function
|
|
375
|
-
i0.ɵɵconditionalCreate(0,
|
|
376
|
-
i0.ɵɵconditionalCreate(3,
|
|
353
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
354
|
+
i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 65)(1, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 66)(2, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 67);
|
|
355
|
+
i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 68);
|
|
377
356
|
} if (rf & 2) {
|
|
378
357
|
let tmp_4_0;
|
|
379
358
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -381,45 +360,45 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(
|
|
|
381
360
|
i0.ɵɵadvance(3);
|
|
382
361
|
i0.ɵɵconditional(((tmp_4_0 = ctx_r0.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
|
|
383
362
|
} }
|
|
384
|
-
function
|
|
385
|
-
i0.ɵɵelementStart(0, "div",
|
|
386
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
363
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
365
|
+
i0.ɵɵelement(1, "mj-loading", 70);
|
|
387
366
|
i0.ɵɵelementEnd();
|
|
388
367
|
} }
|
|
389
|
-
function
|
|
390
|
-
i0.ɵɵelementStart(0, "div",
|
|
391
|
-
i0.ɵɵelement(1, "i",
|
|
368
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
369
|
+
i0.ɵɵelementStart(0, "div", 66);
|
|
370
|
+
i0.ɵɵelement(1, "i", 71);
|
|
392
371
|
i0.ɵɵelementStart(2, "p");
|
|
393
372
|
i0.ɵɵtext(3, "No watermarks recorded for this integration.");
|
|
394
373
|
i0.ɵɵelementEnd()();
|
|
395
374
|
} }
|
|
396
|
-
function
|
|
375
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
397
376
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
398
377
|
i0.ɵɵtext(2);
|
|
399
378
|
i0.ɵɵelementEnd();
|
|
400
|
-
i0.ɵɵelementStart(3, "td")(4, "span",
|
|
379
|
+
i0.ɵɵelementStart(3, "td")(4, "span", 72);
|
|
401
380
|
i0.ɵɵtext(5);
|
|
402
381
|
i0.ɵɵelementEnd()();
|
|
403
|
-
i0.ɵɵelementStart(6, "td",
|
|
382
|
+
i0.ɵɵelementStart(6, "td", 73);
|
|
404
383
|
i0.ɵɵtext(7);
|
|
405
384
|
i0.ɵɵelementEnd();
|
|
406
385
|
i0.ɵɵelementStart(8, "td");
|
|
407
386
|
i0.ɵɵtext(9);
|
|
408
387
|
i0.ɵɵelementEnd()();
|
|
409
388
|
} if (rf & 2) {
|
|
410
|
-
const
|
|
389
|
+
const wm_r8 = ctx.$implicit;
|
|
411
390
|
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
412
391
|
i0.ɵɵadvance(2);
|
|
413
|
-
i0.ɵɵtextInterpolate(
|
|
392
|
+
i0.ɵɵtextInterpolate(wm_r8.EntityMap);
|
|
414
393
|
i0.ɵɵadvance(3);
|
|
415
|
-
i0.ɵɵtextInterpolate(
|
|
394
|
+
i0.ɵɵtextInterpolate(wm_r8.WatermarkType);
|
|
416
395
|
i0.ɵɵadvance(2);
|
|
417
|
-
i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(
|
|
396
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatWatermark(wm_r8.WatermarkValue));
|
|
418
397
|
i0.ɵɵadvance(2);
|
|
419
|
-
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(
|
|
398
|
+
i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r8.LastSyncAt));
|
|
420
399
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵelementStart(0, "table",
|
|
400
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
401
|
+
i0.ɵɵelementStart(0, "table", 67)(1, "thead")(2, "tr")(3, "th");
|
|
423
402
|
i0.ɵɵtext(4, "Entity Map");
|
|
424
403
|
i0.ɵɵelementEnd();
|
|
425
404
|
i0.ɵɵelementStart(5, "th");
|
|
@@ -432,49 +411,49 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Condition
|
|
|
432
411
|
i0.ɵɵtext(10, "Last Applied");
|
|
433
412
|
i0.ɵɵelementEnd()()();
|
|
434
413
|
i0.ɵɵelementStart(11, "tbody");
|
|
435
|
-
i0.ɵɵrepeaterCreate(12,
|
|
414
|
+
i0.ɵɵrepeaterCreate(12, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_For_13_Template, 10, 4, "tr", null, _forTrack0);
|
|
436
415
|
i0.ɵɵelementEnd()();
|
|
437
416
|
} if (rf & 2) {
|
|
438
417
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
439
418
|
i0.ɵɵadvance(12);
|
|
440
419
|
i0.ɵɵrepeater(ctx_r0.WatermarkData);
|
|
441
420
|
} }
|
|
442
|
-
function
|
|
443
|
-
i0.ɵɵconditionalCreate(0,
|
|
421
|
+
function ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
422
|
+
i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 65)(1, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 66)(2, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 67);
|
|
444
423
|
} if (rf & 2) {
|
|
445
424
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
446
425
|
i0.ɵɵconditional(ctx_r0.IsLoadingWatermarks ? 0 : ctx_r0.WatermarkData.length === 0 ? 1 : 2);
|
|
447
426
|
} }
|
|
448
|
-
function
|
|
449
|
-
const
|
|
450
|
-
i0.ɵɵelementStart(0, "div",
|
|
427
|
+
function ActivityComponent_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
428
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
429
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 50)(2, "div", 51)(3, "h3");
|
|
451
430
|
i0.ɵɵtext(4);
|
|
452
431
|
i0.ɵɵelementEnd();
|
|
453
432
|
i0.ɵɵelementStart(5, "span");
|
|
454
433
|
i0.ɵɵelement(6, "i");
|
|
455
434
|
i0.ɵɵtext(7);
|
|
456
435
|
i0.ɵɵelementEnd();
|
|
457
|
-
i0.ɵɵelementStart(8, "span",
|
|
436
|
+
i0.ɵɵelementStart(8, "span", 52);
|
|
458
437
|
i0.ɵɵtext(9);
|
|
459
438
|
i0.ɵɵelementEnd()();
|
|
460
|
-
i0.ɵɵelementStart(10, "button",
|
|
461
|
-
i0.ɵɵlistener("click", function
|
|
462
|
-
i0.ɵɵelement(11, "i",
|
|
439
|
+
i0.ɵɵelementStart(10, "button", 53);
|
|
440
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(ctx_r0.SelectedRunID)); });
|
|
441
|
+
i0.ɵɵelement(11, "i", 54);
|
|
463
442
|
i0.ɵɵelementEnd()();
|
|
464
|
-
i0.ɵɵconditionalCreate(12,
|
|
465
|
-
i0.ɵɵelementStart(13, "div",
|
|
466
|
-
i0.ɵɵlistener("click", function
|
|
467
|
-
i0.ɵɵelement(15, "i",
|
|
443
|
+
i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_13_Conditional_4_Conditional_12_Template, 10, 5, "div", 55);
|
|
444
|
+
i0.ɵɵelementStart(13, "div", 56)(14, "button", 57);
|
|
445
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("entities")); });
|
|
446
|
+
i0.ɵɵelement(15, "i", 58);
|
|
468
447
|
i0.ɵɵtext(16, " Entity Breakdown ");
|
|
469
448
|
i0.ɵɵelementEnd();
|
|
470
|
-
i0.ɵɵelementStart(17, "button",
|
|
471
|
-
i0.ɵɵlistener("click", function
|
|
472
|
-
i0.ɵɵelement(18, "i",
|
|
449
|
+
i0.ɵɵelementStart(17, "button", 57);
|
|
450
|
+
i0.ɵɵlistener("click", function ActivityComponent_Conditional_13_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("watermarks")); });
|
|
451
|
+
i0.ɵɵelement(18, "i", 59);
|
|
473
452
|
i0.ɵɵtext(19, " Watermarks ");
|
|
474
453
|
i0.ɵɵelementEnd()();
|
|
475
|
-
i0.ɵɵelementStart(20, "div",
|
|
476
|
-
i0.ɵɵconditionalCreate(21,
|
|
477
|
-
i0.ɵɵconditionalCreate(22,
|
|
454
|
+
i0.ɵɵelementStart(20, "div", 60);
|
|
455
|
+
i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_13_Conditional_4_Conditional_21_Template, 4, 2);
|
|
456
|
+
i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_13_Conditional_4_Conditional_22_Template, 3, 1);
|
|
478
457
|
i0.ɵɵelementEnd()();
|
|
479
458
|
} if (rf & 2) {
|
|
480
459
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -499,11 +478,11 @@ function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (
|
|
|
499
478
|
i0.ɵɵadvance();
|
|
500
479
|
i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "watermarks" ? 22 : -1);
|
|
501
480
|
} }
|
|
502
|
-
function
|
|
503
|
-
i0.ɵɵelementStart(0, "div",
|
|
504
|
-
i0.ɵɵrepeaterCreate(2,
|
|
481
|
+
function ActivityComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
482
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "div", 18);
|
|
483
|
+
i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_13_For_3_Template, 23, 29, "div", 19, _forTrack0);
|
|
505
484
|
i0.ɵɵelementEnd();
|
|
506
|
-
i0.ɵɵconditionalCreate(4,
|
|
485
|
+
i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_13_Conditional_4_Template, 23, 14, "div", 20);
|
|
507
486
|
i0.ɵɵelementEnd();
|
|
508
487
|
} if (rf & 2) {
|
|
509
488
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -704,6 +683,18 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
704
683
|
// ---- Integration filter popover wiring ---------------------------------
|
|
705
684
|
get ActivityFilterFields() {
|
|
706
685
|
return [
|
|
686
|
+
{
|
|
687
|
+
key: 'dateRange',
|
|
688
|
+
type: 'chips',
|
|
689
|
+
label: 'Date range',
|
|
690
|
+
chipOptions: this.DateOptions.map(d => ({ text: d.Label, value: d.Value })),
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
key: 'status',
|
|
694
|
+
type: 'chips',
|
|
695
|
+
label: 'Status',
|
|
696
|
+
chipOptions: this.StatusOptions.map(s => ({ text: s, value: s })),
|
|
697
|
+
},
|
|
707
698
|
{
|
|
708
699
|
key: 'integration',
|
|
709
700
|
type: 'dropdown',
|
|
@@ -719,16 +710,40 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
719
710
|
];
|
|
720
711
|
}
|
|
721
712
|
get ActivityFilterValues() {
|
|
722
|
-
return {
|
|
713
|
+
return {
|
|
714
|
+
dateRange: this.DateFilter,
|
|
715
|
+
status: this.StatusFilter,
|
|
716
|
+
integration: this.IntegrationFilter ?? ''
|
|
717
|
+
};
|
|
723
718
|
}
|
|
724
719
|
get ActiveFilterCount() {
|
|
725
|
-
|
|
720
|
+
let count = 0;
|
|
721
|
+
if (this.DateFilter !== '7d')
|
|
722
|
+
count++;
|
|
723
|
+
if (this.StatusFilter !== 'All')
|
|
724
|
+
count++;
|
|
725
|
+
if (this.IntegrationFilter)
|
|
726
|
+
count++;
|
|
727
|
+
return count;
|
|
726
728
|
}
|
|
727
729
|
OnFilterValuesChange(values) {
|
|
728
|
-
const next = (values ?? {})
|
|
729
|
-
|
|
730
|
+
const next = (values ?? {});
|
|
731
|
+
if (next.dateRange && next.dateRange !== this.DateFilter) {
|
|
732
|
+
this.SetDateFilter(next.dateRange);
|
|
733
|
+
}
|
|
734
|
+
if (next.status && next.status !== this.StatusFilter) {
|
|
735
|
+
this.SetStatusFilter(next.status);
|
|
736
|
+
}
|
|
737
|
+
const integ = next.integration ?? '';
|
|
738
|
+
if ((integ || null) !== this.IntegrationFilter) {
|
|
739
|
+
this.SetIntegrationFilter(integ || null);
|
|
740
|
+
}
|
|
730
741
|
}
|
|
731
742
|
ResetIntegrationFilter() {
|
|
743
|
+
if (this.DateFilter !== '7d')
|
|
744
|
+
this.SetDateFilter('7d');
|
|
745
|
+
if (this.StatusFilter !== 'All')
|
|
746
|
+
this.SetStatusFilter('All');
|
|
732
747
|
if (this.IntegrationFilter)
|
|
733
748
|
this.SetIntegrationFilter(null);
|
|
734
749
|
}
|
|
@@ -889,53 +904,45 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
|
|
|
889
904
|
return 'fa-solid fa-clock-rotate-left';
|
|
890
905
|
}
|
|
891
906
|
static ɵfac = /*@__PURE__*/ (() => { let ɵActivityComponent_BaseFactory; return function ActivityComponent_Factory(__ngFactoryType__) { return (ɵActivityComponent_BaseFactory || (ɵActivityComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ActivityComponent)))(__ngFactoryType__ || ActivityComponent); }; })();
|
|
892
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
907
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 14, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], ["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) {
|
|
893
908
|
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
|
|
894
909
|
i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 5, 5, "div", 1);
|
|
895
|
-
i0.ɵɵelementStart(3, "div", 2)(4, "mj-
|
|
896
|
-
i0.ɵɵlistener("
|
|
897
|
-
i0.ɵɵelementStart(5, "mj-filter-panel", 4);
|
|
898
|
-
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(); });
|
|
899
|
-
i0.ɵɵelementEnd()();
|
|
900
|
-
i0.ɵɵelementStart(6, "mj-refresh-button", 5);
|
|
901
|
-
i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_6_listener() { return ctx.Refresh(); });
|
|
910
|
+
i0.ɵɵelementStart(3, "div", 2)(4, "mj-refresh-button", 3);
|
|
911
|
+
i0.ɵɵlistener("Clicked", function ActivityComponent_Template_mj_refresh_button_Clicked_4_listener() { return ctx.Refresh(); });
|
|
902
912
|
i0.ɵɵelementEnd()();
|
|
903
|
-
i0.ɵɵelementStart(
|
|
904
|
-
i0.ɵɵlistener("ValueChange", function
|
|
913
|
+
i0.ɵɵelementStart(5, "div", 4)(6, "mj-page-search", 5);
|
|
914
|
+
i0.ɵɵlistener("ValueChange", function ActivityComponent_Template_mj_page_search_ValueChange_6_listener($event) { return ctx.OnSearchValueChange($event); });
|
|
905
915
|
i0.ɵɵelementEnd();
|
|
906
|
-
i0.ɵɵ
|
|
907
|
-
i0.ɵɵ
|
|
908
|
-
i0.ɵɵ
|
|
909
|
-
i0.ɵɵ
|
|
910
|
-
i0.ɵɵ
|
|
911
|
-
i0.ɵɵ
|
|
912
|
-
i0.ɵɵconditionalCreate(
|
|
913
|
-
i0.ɵɵconditionalCreate(
|
|
916
|
+
i0.ɵɵelementStart(7, "mj-filter-popover", 6);
|
|
917
|
+
i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { return ctx.ResetIntegrationFilter(); });
|
|
918
|
+
i0.ɵɵelementStart(8, "mj-filter-panel", 7);
|
|
919
|
+
i0.ɵɵlistener("ValuesChange", function ActivityComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { return ctx.OnFilterValuesChange($event); })("Reset", function ActivityComponent_Template_mj_filter_panel_Reset_8_listener() { return ctx.ResetIntegrationFilter(); });
|
|
920
|
+
i0.ɵɵelementEnd()()()();
|
|
921
|
+
i0.ɵɵelementStart(9, "mj-page-body", 8)(10, "div", 9);
|
|
922
|
+
i0.ɵɵconditionalCreate(11, ActivityComponent_Conditional_11_Template, 2, 0, "div", 10);
|
|
923
|
+
i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_12_Template, 4, 0, "div", 11);
|
|
924
|
+
i0.ɵɵconditionalCreate(13, ActivityComponent_Conditional_13_Template, 5, 1, "div", 12);
|
|
914
925
|
i0.ɵɵelementEnd()()();
|
|
915
926
|
} if (rf & 2) {
|
|
916
927
|
i0.ɵɵadvance(2);
|
|
917
928
|
i0.ɵɵconditional(!ctx.IsLoading && ctx.AllRuns.length > 0 ? 2 : -1);
|
|
918
929
|
i0.ɵɵadvance(2);
|
|
919
|
-
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
920
|
-
i0.ɵɵadvance();
|
|
921
|
-
i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
|
|
922
|
-
i0.ɵɵadvance();
|
|
923
930
|
i0.ɵɵproperty("Loading", ctx.IsLoading);
|
|
924
931
|
i0.ɵɵadvance(2);
|
|
925
932
|
i0.ɵɵproperty("Value", ctx.SearchQuery);
|
|
926
933
|
i0.ɵɵadvance();
|
|
927
|
-
i0.ɵɵ
|
|
928
|
-
i0.ɵɵadvance(
|
|
929
|
-
i0.ɵɵ
|
|
930
|
-
i0.ɵɵadvance(
|
|
934
|
+
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
935
|
+
i0.ɵɵadvance();
|
|
936
|
+
i0.ɵɵproperty("Fields", ctx.ActivityFilterFields)("Values", ctx.ActivityFilterValues);
|
|
937
|
+
i0.ɵɵadvance();
|
|
931
938
|
i0.ɵɵproperty("Flex", true);
|
|
932
939
|
i0.ɵɵadvance(2);
|
|
933
|
-
i0.ɵɵconditional(ctx.IsLoading ?
|
|
940
|
+
i0.ɵɵconditional(ctx.IsLoading ? 11 : -1);
|
|
934
941
|
i0.ɵɵadvance();
|
|
935
|
-
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ?
|
|
942
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length === 0 ? 12 : -1);
|
|
936
943
|
i0.ɵɵadvance();
|
|
937
|
-
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ?
|
|
938
|
-
} }, 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}"] });
|
|
944
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredRuns.length > 0 ? 13 : -1);
|
|
945
|
+
} }, dependencies: [i1.MJPageLayoutComponent, i1.MJPageHeaderComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, 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}"] });
|
|
939
946
|
};
|
|
940
947
|
ActivityComponent = __decorate([
|
|
941
948
|
RegisterClass(BaseResourceComponent, 'IntegrationActivity')
|
|
@@ -943,7 +950,7 @@ ActivityComponent = __decorate([
|
|
|
943
950
|
export { ActivityComponent };
|
|
944
951
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityComponent, [{
|
|
945
952
|
type: Component,
|
|
946
|
-
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 <!-- [meta] retains the succeeded/failed status pills (genuine variant\n signal \u2014 error rate at a glance) and the records aggregate\n (non-trivially derived: count of records across all runs).\n \"Total runs\" dropped per chrome slot discipline audit Task B \u2014\n that count equals the visible list's row count. -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\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"] }]
|
|
953
|
+
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 <!-- [meta] retains the succeeded/failed status pills (genuine variant\n signal \u2014 error rate at a glance) and the records aggregate\n (non-trivially derived: count of records across all runs).\n \"Total runs\" dropped per chrome slot discipline audit Task B \u2014\n that count equals the visible list's row count. -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\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-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 <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 </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"] }]
|
|
947
954
|
}], null, null); })();
|
|
948
955
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 39 }); })();
|
|
949
956
|
export function LoadActivityComponent() {
|