@memberjunction/ng-dashboards 5.34.1 → 5.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +329 -371
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +202 -158
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +191 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +19 -79
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +19 -79
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +19 -79
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/Admin/base-admin-container.component.d.ts +9 -7
- package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
- package/dist/Admin/base-admin-container.component.js +26 -17
- package/dist/Admin/base-admin-container.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
- package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-new-message-resource.component.js +661 -0
- package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
- package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +46 -72
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -100
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +158 -168
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +257 -264
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.d.ts +5 -0
- package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +46 -64
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/DevTools/lazy-module-status.component.js +75 -84
- package/dist/DevTools/lazy-module-status.component.js.map +1 -1
- package/dist/DevTools/settings-explorer.component.js +76 -85
- package/dist/DevTools/settings-explorer.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +307 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +654 -648
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +230 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +1 -0
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +1 -0
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +236 -10
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +679 -786
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +114 -99
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +51 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +9 -6
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +37 -7
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +46 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +10 -9
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +40 -2
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +42 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +53 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -17,7 +17,8 @@ import * as d3 from 'd3';
|
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
18
|
import * as i1 from "@angular/router";
|
|
19
19
|
import * as i2 from "@angular/forms";
|
|
20
|
-
import * as i3 from "@
|
|
20
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
21
|
+
import * as i4 from "@angular/common";
|
|
21
22
|
const _c0 = ["perfChart"];
|
|
22
23
|
const _forTrack0 = ($index, $item) => $item.className;
|
|
23
24
|
const _forTrack1 = ($index, $item) => $item.entityName;
|
|
@@ -27,187 +28,68 @@ const _forTrack4 = ($index, $item) => $item.label;
|
|
|
27
28
|
const _forTrack5 = ($index, $item) => $item.fingerprint;
|
|
28
29
|
const _forTrack6 = ($index, $item) => $item.key;
|
|
29
30
|
const _forTrack7 = ($index, $item) => $item.propertyName;
|
|
30
|
-
function
|
|
31
|
-
i0.ɵɵelementStart(0, "
|
|
32
|
-
i0.ɵɵelement(1, "i",
|
|
33
|
-
i0.ɵɵtext(2, " Every 5s ");
|
|
34
|
-
i0.ɵɵelementEnd();
|
|
35
|
-
} }
|
|
36
|
-
function SystemDiagnosticsComponent_Conditional_18_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
i0.ɵɵtext(0, " No redundant loading detected ");
|
|
38
|
-
} }
|
|
39
|
-
function SystemDiagnosticsComponent_Conditional_18_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
-
i0.ɵɵtext(0);
|
|
41
|
-
} if (rf & 2) {
|
|
42
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
43
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.redundantLoads.length, " entities loaded by multiple engines ");
|
|
44
|
-
} }
|
|
45
|
-
function SystemDiagnosticsComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
-
i0.ɵɵelementStart(0, "div", 14)(1, "div", 37)(2, "div", 38);
|
|
47
|
-
i0.ɵɵelement(3, "i", 21);
|
|
48
|
-
i0.ɵɵelementEnd();
|
|
49
|
-
i0.ɵɵelementStart(4, "div", 39)(5, "div", 40);
|
|
50
|
-
i0.ɵɵtext(6);
|
|
51
|
-
i0.ɵɵelementEnd();
|
|
52
|
-
i0.ɵɵelementStart(7, "div", 41);
|
|
53
|
-
i0.ɵɵtext(8, "Registered Engines");
|
|
54
|
-
i0.ɵɵelementEnd();
|
|
55
|
-
i0.ɵɵelementStart(9, "div", 42);
|
|
56
|
-
i0.ɵɵtext(10);
|
|
57
|
-
i0.ɵɵelementEnd()()();
|
|
58
|
-
i0.ɵɵelementStart(11, "div", 37)(12, "div", 43);
|
|
59
|
-
i0.ɵɵelement(13, "i", 44);
|
|
60
|
-
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelementStart(14, "div", 39)(15, "div", 40);
|
|
62
|
-
i0.ɵɵtext(16);
|
|
63
|
-
i0.ɵɵelementEnd();
|
|
64
|
-
i0.ɵɵelementStart(17, "div", 41);
|
|
65
|
-
i0.ɵɵtext(18, "Engine Memory");
|
|
66
|
-
i0.ɵɵelementEnd();
|
|
67
|
-
i0.ɵɵelementStart(19, "div", 42);
|
|
68
|
-
i0.ɵɵtext(20, "Estimated total");
|
|
69
|
-
i0.ɵɵelementEnd()()();
|
|
70
|
-
i0.ɵɵelementStart(21, "div", 37)(22, "div", 45);
|
|
71
|
-
i0.ɵɵelement(23, "i", 23);
|
|
72
|
-
i0.ɵɵelementEnd();
|
|
73
|
-
i0.ɵɵelementStart(24, "div", 39)(25, "div", 40);
|
|
74
|
-
i0.ɵɵtext(26);
|
|
75
|
-
i0.ɵɵelementEnd();
|
|
76
|
-
i0.ɵɵelementStart(27, "div", 41);
|
|
77
|
-
i0.ɵɵtext(28, "Redundant Loads");
|
|
78
|
-
i0.ɵɵelementEnd();
|
|
79
|
-
i0.ɵɵelementStart(29, "div", 42);
|
|
80
|
-
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_18_Conditional_30_Template, 1, 0)(31, SystemDiagnosticsComponent_Conditional_18_Conditional_31_Template, 1, 1);
|
|
81
|
-
i0.ɵɵelementEnd()()()();
|
|
82
|
-
} if (rf & 2) {
|
|
83
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
84
|
-
i0.ɵɵadvance(6);
|
|
85
|
-
i0.ɵɵtextInterpolate((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEngines) || 0);
|
|
86
|
-
i0.ɵɵadvance(4);
|
|
87
|
-
i0.ɵɵtextInterpolate1("", (ctx_r0.engineStats == null ? null : ctx_r0.engineStats.loadedEngines) || 0, " loaded");
|
|
88
|
-
i0.ɵɵadvance(6);
|
|
89
|
-
i0.ɵɵtextInterpolate(ctx_r0.formatBytes((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
90
|
-
i0.ɵɵadvance(6);
|
|
91
|
-
i0.ɵɵclassProp("card-icon--warning", ctx_r0.redundantLoads.length > 0)("card-icon--success", ctx_r0.redundantLoads.length === 0);
|
|
92
|
-
i0.ɵɵadvance(4);
|
|
93
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
94
|
-
i0.ɵɵadvance(4);
|
|
95
|
-
i0.ɵɵconditional(ctx_r0.redundantLoads.length === 0 ? 30 : 31);
|
|
96
|
-
} }
|
|
97
|
-
function SystemDiagnosticsComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "div", 46);
|
|
99
|
-
i0.ɵɵelement(2, "i", 21);
|
|
100
|
-
i0.ɵɵelementStart(3, "span", 47);
|
|
101
|
-
i0.ɵɵtext(4);
|
|
102
|
-
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵelementStart(5, "span", 48);
|
|
104
|
-
i0.ɵɵtext(6, "Engines");
|
|
105
|
-
i0.ɵɵelementEnd()();
|
|
106
|
-
i0.ɵɵelement(7, "div", 49);
|
|
107
|
-
i0.ɵɵelementStart(8, "div", 50);
|
|
108
|
-
i0.ɵɵelement(9, "i", 44);
|
|
109
|
-
i0.ɵɵelementStart(10, "span", 47);
|
|
110
|
-
i0.ɵɵtext(11);
|
|
111
|
-
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(12, "span", 48);
|
|
113
|
-
i0.ɵɵtext(13, "Memory");
|
|
114
|
-
i0.ɵɵelementEnd()();
|
|
115
|
-
i0.ɵɵelement(14, "div", 49);
|
|
116
|
-
i0.ɵɵelementStart(15, "div", 51);
|
|
117
|
-
i0.ɵɵelement(16, "i", 23);
|
|
118
|
-
i0.ɵɵelementStart(17, "span", 47);
|
|
119
|
-
i0.ɵɵtext(18);
|
|
120
|
-
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵelementStart(19, "span", 48);
|
|
122
|
-
i0.ɵɵtext(20, "Redundant");
|
|
123
|
-
i0.ɵɵelementEnd()()();
|
|
124
|
-
} if (rf & 2) {
|
|
125
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
126
|
-
i0.ɵɵadvance(4);
|
|
127
|
-
i0.ɵɵtextInterpolate((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEngines) || 0);
|
|
128
|
-
i0.ɵɵadvance(7);
|
|
129
|
-
i0.ɵɵtextInterpolate(ctx_r0.formatBytes((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
130
|
-
i0.ɵɵadvance(4);
|
|
131
|
-
i0.ɵɵclassProp("warning", ctx_r0.redundantLoads.length > 0);
|
|
132
|
-
i0.ɵɵadvance(3);
|
|
133
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
134
|
-
} }
|
|
135
|
-
function SystemDiagnosticsComponent_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
-
i0.ɵɵelementStart(0, "span", 24);
|
|
137
|
-
i0.ɵɵtext(1);
|
|
138
|
-
i0.ɵɵelementEnd();
|
|
139
|
-
} if (rf & 2) {
|
|
140
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
141
|
-
i0.ɵɵadvance();
|
|
142
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
143
|
-
} }
|
|
144
|
-
function SystemDiagnosticsComponent_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
-
i0.ɵɵelementStart(0, "span", 25);
|
|
146
|
-
i0.ɵɵtext(1, "0");
|
|
147
|
-
i0.ɵɵelementEnd();
|
|
148
|
-
} }
|
|
149
|
-
function SystemDiagnosticsComponent_Conditional_50_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
150
|
-
i0.ɵɵelementStart(0, "div", 57);
|
|
151
|
-
i0.ɵɵelement(1, "i", 59);
|
|
31
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
33
|
+
i0.ɵɵelement(1, "i", 30);
|
|
152
34
|
i0.ɵɵelementStart(2, "p");
|
|
153
35
|
i0.ɵɵtext(3, "No engines registered yet");
|
|
154
36
|
i0.ɵɵelementEnd();
|
|
155
|
-
i0.ɵɵelementStart(4, "span",
|
|
37
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
156
38
|
i0.ɵɵtext(5, "Engines register themselves when they are first configured");
|
|
157
39
|
i0.ɵɵelementEnd()();
|
|
158
40
|
} }
|
|
159
|
-
function
|
|
160
|
-
i0.ɵɵelementStart(0, "div",
|
|
161
|
-
i0.ɵɵelement(1, "i",
|
|
162
|
-
i0.ɵɵelementStart(2, "span",
|
|
41
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
43
|
+
i0.ɵɵelement(1, "i", 19);
|
|
44
|
+
i0.ɵɵelementStart(2, "span", 40);
|
|
163
45
|
i0.ɵɵtext(3, "Loaded:");
|
|
164
46
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵelementStart(4, "span",
|
|
47
|
+
i0.ɵɵelementStart(4, "span", 41);
|
|
166
48
|
i0.ɵɵtext(5);
|
|
167
49
|
i0.ɵɵelementEnd()();
|
|
168
50
|
} if (rf & 2) {
|
|
169
51
|
const engine_r4 = i0.ɵɵnextContext().$implicit;
|
|
170
|
-
const
|
|
52
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
171
53
|
i0.ɵɵadvance(5);
|
|
172
|
-
i0.ɵɵtextInterpolate(
|
|
54
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTime(engine_r4.lastLoadedAt));
|
|
173
55
|
} }
|
|
174
|
-
function
|
|
56
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
175
57
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
176
|
-
i0.ɵɵelementStart(0, "div",
|
|
58
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 34)(2, "div", 35);
|
|
177
59
|
i0.ɵɵtext(3);
|
|
178
60
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(4, "div",
|
|
61
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
180
62
|
i0.ɵɵtext(5);
|
|
181
63
|
i0.ɵɵelementEnd()();
|
|
182
|
-
i0.ɵɵelementStart(6, "div",
|
|
183
|
-
i0.ɵɵelement(8, "i",
|
|
184
|
-
i0.ɵɵelementStart(9, "span",
|
|
64
|
+
i0.ɵɵelementStart(6, "div", 37)(7, "div", 38);
|
|
65
|
+
i0.ɵɵelement(8, "i", 39);
|
|
66
|
+
i0.ɵɵelementStart(9, "span", 40);
|
|
185
67
|
i0.ɵɵtext(10, "Memory:");
|
|
186
68
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(11, "span",
|
|
69
|
+
i0.ɵɵelementStart(11, "span", 41);
|
|
188
70
|
i0.ɵɵtext(12);
|
|
189
71
|
i0.ɵɵelementEnd()();
|
|
190
|
-
i0.ɵɵelementStart(13, "div",
|
|
191
|
-
i0.ɵɵelement(14, "i",
|
|
192
|
-
i0.ɵɵelementStart(15, "span",
|
|
72
|
+
i0.ɵɵelementStart(13, "div", 38);
|
|
73
|
+
i0.ɵɵelement(14, "i", 42);
|
|
74
|
+
i0.ɵɵelementStart(15, "span", 40);
|
|
193
75
|
i0.ɵɵtext(16, "Items:");
|
|
194
76
|
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵelementStart(17, "span",
|
|
77
|
+
i0.ɵɵelementStart(17, "span", 41);
|
|
196
78
|
i0.ɵɵtext(18);
|
|
197
79
|
i0.ɵɵelementEnd()();
|
|
198
|
-
i0.ɵɵconditionalCreate(19,
|
|
80
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Conditional_19_Template, 6, 1, "div", 38);
|
|
199
81
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(20, "div",
|
|
201
|
-
i0.ɵɵlistener("click", function
|
|
202
|
-
i0.ɵɵelement(22, "i",
|
|
82
|
+
i0.ɵɵelementStart(20, "div", 43)(21, "button", 44);
|
|
83
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template_button_click_21_listener($event) { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.refreshSingleEngine(engine_r4, $event)); });
|
|
84
|
+
i0.ɵɵelement(22, "i", 26);
|
|
203
85
|
i0.ɵɵelementEnd();
|
|
204
|
-
i0.ɵɵelementStart(23, "button",
|
|
205
|
-
i0.ɵɵlistener("click", function
|
|
206
|
-
i0.ɵɵelement(24, "i",
|
|
86
|
+
i0.ɵɵelementStart(23, "button", 45);
|
|
87
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template_button_click_23_listener() { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEngineDetailPanel(engine_r4)); });
|
|
88
|
+
i0.ɵɵelement(24, "i", 46);
|
|
207
89
|
i0.ɵɵelementEnd()()();
|
|
208
90
|
} if (rf & 2) {
|
|
209
91
|
const engine_r4 = ctx.$implicit;
|
|
210
|
-
const
|
|
92
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
211
93
|
i0.ɵɵclassProp("loaded", engine_r4.isLoaded);
|
|
212
94
|
i0.ɵɵadvance(2);
|
|
213
95
|
i0.ɵɵproperty("title", engine_r4.className);
|
|
@@ -224,56 +106,56 @@ function SystemDiagnosticsComponent_Conditional_50_Conditional_11_For_2_Template
|
|
|
224
106
|
i0.ɵɵadvance();
|
|
225
107
|
i0.ɵɵconditional(engine_r4.lastLoadedAt ? 19 : -1);
|
|
226
108
|
i0.ɵɵadvance(2);
|
|
227
|
-
i0.ɵɵproperty("disabled", !engine_r4.isLoaded ||
|
|
109
|
+
i0.ɵɵproperty("disabled", !engine_r4.isLoaded || ctx_r1.isRefreshingSingleEngine === engine_r4.className);
|
|
228
110
|
i0.ɵɵadvance();
|
|
229
|
-
i0.ɵɵclassProp("spinning",
|
|
111
|
+
i0.ɵɵclassProp("spinning", ctx_r1.isRefreshingSingleEngine === engine_r4.className);
|
|
230
112
|
i0.ɵɵadvance();
|
|
231
113
|
i0.ɵɵproperty("disabled", !engine_r4.isLoaded);
|
|
232
114
|
} }
|
|
233
|
-
function
|
|
234
|
-
i0.ɵɵelementStart(0, "div",
|
|
235
|
-
i0.ɵɵrepeaterCreate(1,
|
|
115
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
117
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template, 25, 16, "div", 32, _forTrack0);
|
|
236
118
|
i0.ɵɵelementEnd();
|
|
237
119
|
} if (rf & 2) {
|
|
238
|
-
const
|
|
120
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
239
121
|
i0.ɵɵadvance();
|
|
240
|
-
i0.ɵɵrepeater(
|
|
122
|
+
i0.ɵɵrepeater(ctx_r1.engines);
|
|
241
123
|
} }
|
|
242
|
-
function
|
|
243
|
-
const
|
|
244
|
-
i0.ɵɵelementStart(0, "div",
|
|
245
|
-
i0.ɵɵelement(3, "i",
|
|
124
|
+
function SystemDiagnosticsComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
127
|
+
i0.ɵɵelement(3, "i", 23);
|
|
246
128
|
i0.ɵɵtext(4, " Registered Engines ");
|
|
247
129
|
i0.ɵɵelementEnd();
|
|
248
|
-
i0.ɵɵelementStart(5, "div",
|
|
249
|
-
i0.ɵɵlistener("click", function
|
|
250
|
-
i0.ɵɵelement(7, "i",
|
|
130
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "button", 25);
|
|
131
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshAllEngines()); });
|
|
132
|
+
i0.ɵɵelement(7, "i", 26);
|
|
251
133
|
i0.ɵɵtext(8, " Refresh All Engines ");
|
|
252
134
|
i0.ɵɵelementEnd()()();
|
|
253
|
-
i0.ɵɵelementStart(9, "div",
|
|
254
|
-
i0.ɵɵconditionalCreate(10,
|
|
135
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
136
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_15_Conditional_10_Template, 6, 0, "div", 28)(11, SystemDiagnosticsComponent_Conditional_15_Conditional_11_Template, 3, 0, "div", 29);
|
|
255
137
|
i0.ɵɵelementEnd()();
|
|
256
138
|
} if (rf & 2) {
|
|
257
|
-
const
|
|
139
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
258
140
|
i0.ɵɵadvance(6);
|
|
259
|
-
i0.ɵɵproperty("disabled",
|
|
141
|
+
i0.ɵɵproperty("disabled", ctx_r1.isRefreshingEngines);
|
|
260
142
|
i0.ɵɵadvance();
|
|
261
|
-
i0.ɵɵclassProp("spinning",
|
|
143
|
+
i0.ɵɵclassProp("spinning", ctx_r1.isRefreshingEngines);
|
|
262
144
|
i0.ɵɵadvance(3);
|
|
263
|
-
i0.ɵɵconditional(
|
|
145
|
+
i0.ɵɵconditional(ctx_r1.engines.length === 0 ? 10 : 11);
|
|
264
146
|
} }
|
|
265
|
-
function
|
|
266
|
-
i0.ɵɵelementStart(0, "div",
|
|
267
|
-
i0.ɵɵelement(1, "i",
|
|
147
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
149
|
+
i0.ɵɵelement(1, "i", 51);
|
|
268
150
|
i0.ɵɵelementStart(2, "p");
|
|
269
151
|
i0.ɵɵtext(3, "No redundant entity loading detected");
|
|
270
152
|
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵelementStart(4, "span",
|
|
153
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
272
154
|
i0.ɵɵtext(5, "Each entity is being loaded by only one engine");
|
|
273
155
|
i0.ɵɵelementEnd()();
|
|
274
156
|
} }
|
|
275
|
-
function
|
|
276
|
-
i0.ɵɵelementStart(0, "span",
|
|
157
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
i0.ɵɵelementStart(0, "span", 60);
|
|
277
159
|
i0.ɵɵtext(1);
|
|
278
160
|
i0.ɵɵelementEnd();
|
|
279
161
|
} if (rf & 2) {
|
|
@@ -281,14 +163,14 @@ function SystemDiagnosticsComponent_Conditional_51_Conditional_13_For_12_For_6_T
|
|
|
281
163
|
i0.ɵɵadvance();
|
|
282
164
|
i0.ɵɵtextInterpolate(engine_r5);
|
|
283
165
|
} }
|
|
284
|
-
function
|
|
285
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
166
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 57);
|
|
286
168
|
i0.ɵɵtext(2);
|
|
287
169
|
i0.ɵɵelementEnd();
|
|
288
|
-
i0.ɵɵelementStart(3, "td",
|
|
289
|
-
i0.ɵɵrepeaterCreate(5,
|
|
170
|
+
i0.ɵɵelementStart(3, "td", 58)(4, "div", 59);
|
|
171
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_For_6_Template, 2, 1, "span", 60, i0.ɵɵrepeaterTrackByIdentity);
|
|
290
172
|
i0.ɵɵelementEnd()();
|
|
291
|
-
i0.ɵɵelementStart(7, "td",
|
|
173
|
+
i0.ɵɵelementStart(7, "td", 61)(8, "span", 62);
|
|
292
174
|
i0.ɵɵtext(9);
|
|
293
175
|
i0.ɵɵelementEnd()()();
|
|
294
176
|
} if (rf & 2) {
|
|
@@ -300,252 +182,252 @@ function SystemDiagnosticsComponent_Conditional_51_Conditional_13_For_12_Templat
|
|
|
300
182
|
i0.ɵɵadvance(4);
|
|
301
183
|
i0.ɵɵtextInterpolate(load_r6.engines.length);
|
|
302
184
|
} }
|
|
303
|
-
function
|
|
304
|
-
i0.ɵɵelementStart(0, "div",
|
|
185
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
186
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "table", 53)(2, "thead")(3, "tr")(4, "th");
|
|
305
187
|
i0.ɵɵtext(5, "Entity Name");
|
|
306
188
|
i0.ɵɵelementEnd();
|
|
307
189
|
i0.ɵɵelementStart(6, "th");
|
|
308
190
|
i0.ɵɵtext(7, "Loaded By Engines");
|
|
309
191
|
i0.ɵɵelementEnd();
|
|
310
|
-
i0.ɵɵelementStart(8, "th",
|
|
192
|
+
i0.ɵɵelementStart(8, "th", 54);
|
|
311
193
|
i0.ɵɵtext(9, "Engine Count");
|
|
312
194
|
i0.ɵɵelementEnd()()();
|
|
313
195
|
i0.ɵɵelementStart(10, "tbody");
|
|
314
|
-
i0.ɵɵrepeaterCreate(11,
|
|
196
|
+
i0.ɵɵrepeaterCreate(11, SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_Template, 10, 2, "tr", null, _forTrack1);
|
|
315
197
|
i0.ɵɵelementEnd()()();
|
|
316
|
-
i0.ɵɵelementStart(13, "div",
|
|
317
|
-
i0.ɵɵelement(14, "i",
|
|
198
|
+
i0.ɵɵelementStart(13, "div", 55);
|
|
199
|
+
i0.ɵɵelement(14, "i", 56);
|
|
318
200
|
i0.ɵɵelementStart(15, "div")(16, "strong");
|
|
319
201
|
i0.ɵɵtext(17, "Recommendation:");
|
|
320
202
|
i0.ɵɵelementEnd();
|
|
321
203
|
i0.ɵɵtext(18, " Consider consolidating data loading by having dependent engines access data from a parent engine, or restructuring the engine hierarchy to avoid duplicate data fetches. ");
|
|
322
204
|
i0.ɵɵelementEnd()();
|
|
323
205
|
} if (rf & 2) {
|
|
324
|
-
const
|
|
206
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
325
207
|
i0.ɵɵadvance(11);
|
|
326
|
-
i0.ɵɵrepeater(
|
|
208
|
+
i0.ɵɵrepeater(ctx_r1.redundantLoads);
|
|
327
209
|
} }
|
|
328
|
-
function
|
|
329
|
-
i0.ɵɵelementStart(0, "div",
|
|
330
|
-
i0.ɵɵelement(3, "i",
|
|
210
|
+
function SystemDiagnosticsComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
211
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
212
|
+
i0.ɵɵelement(3, "i", 47);
|
|
331
213
|
i0.ɵɵtext(4, " Redundant Entity Loading ");
|
|
332
214
|
i0.ɵɵelementEnd()();
|
|
333
|
-
i0.ɵɵelementStart(5, "div",
|
|
334
|
-
i0.ɵɵelement(7, "i",
|
|
215
|
+
i0.ɵɵelementStart(5, "div", 27)(6, "div", 48);
|
|
216
|
+
i0.ɵɵelement(7, "i", 49);
|
|
335
217
|
i0.ɵɵelementStart(8, "div")(9, "strong");
|
|
336
218
|
i0.ɵɵtext(10, "What is this?");
|
|
337
219
|
i0.ɵɵelementEnd();
|
|
338
220
|
i0.ɵɵtext(11, " This section shows entities that are loaded by multiple engines. Redundant loading indicates potential optimization opportunities where engines could share data or consolidate their loading logic. ");
|
|
339
221
|
i0.ɵɵelementEnd()();
|
|
340
|
-
i0.ɵɵconditionalCreate(12,
|
|
222
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_16_Conditional_12_Template, 6, 0, "div", 50)(13, SystemDiagnosticsComponent_Conditional_16_Conditional_13_Template, 19, 0);
|
|
341
223
|
i0.ɵɵelementEnd()();
|
|
342
224
|
} if (rf & 2) {
|
|
343
|
-
const
|
|
225
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
344
226
|
i0.ɵɵadvance(12);
|
|
345
|
-
i0.ɵɵconditional(
|
|
227
|
+
i0.ɵɵconditional(ctx_r1.redundantLoads.length === 0 ? 12 : 13);
|
|
346
228
|
} }
|
|
347
|
-
function
|
|
229
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
348
230
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
349
|
-
i0.ɵɵelementStart(0, "button",
|
|
350
|
-
i0.ɵɵlistener("click", function
|
|
351
|
-
i0.ɵɵelement(1, "i",
|
|
231
|
+
i0.ɵɵelementStart(0, "button", 83);
|
|
232
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleTelemetry()); });
|
|
233
|
+
i0.ɵɵelement(1, "i", 84);
|
|
352
234
|
i0.ɵɵtext(2);
|
|
353
235
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(3, "button",
|
|
355
|
-
i0.ɵɵlistener("click", function
|
|
356
|
-
i0.ɵɵelement(4, "i",
|
|
236
|
+
i0.ɵɵelementStart(3, "button", 25);
|
|
237
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearTelemetry()); });
|
|
238
|
+
i0.ɵɵelement(4, "i", 85);
|
|
357
239
|
i0.ɵɵtext(5, " Clear ");
|
|
358
240
|
i0.ɵɵelementEnd();
|
|
359
241
|
} if (rf & 2) {
|
|
360
|
-
const
|
|
361
|
-
i0.ɵɵclassProp("active",
|
|
242
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
243
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetryEnabled);
|
|
362
244
|
i0.ɵɵadvance();
|
|
363
|
-
i0.ɵɵclassProp("fa-toggle-on",
|
|
245
|
+
i0.ɵɵclassProp("fa-toggle-on", ctx_r1.telemetryEnabled)("fa-toggle-off", !ctx_r1.telemetryEnabled);
|
|
364
246
|
i0.ɵɵadvance();
|
|
365
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
247
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.telemetryEnabled ? "Enabled" : "Disabled", " ");
|
|
366
248
|
i0.ɵɵadvance();
|
|
367
|
-
i0.ɵɵproperty("disabled", !
|
|
249
|
+
i0.ɵɵproperty("disabled", !ctx_r1.telemetryEnabled);
|
|
368
250
|
} }
|
|
369
|
-
function
|
|
370
|
-
i0.ɵɵelementStart(0, "span",
|
|
371
|
-
i0.ɵɵelement(1, "i",
|
|
251
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelementStart(0, "span", 86);
|
|
253
|
+
i0.ɵɵelement(1, "i", 84);
|
|
372
254
|
i0.ɵɵtext(2);
|
|
373
|
-
i0.ɵɵelementStart(3, "span",
|
|
255
|
+
i0.ɵɵelementStart(3, "span", 87);
|
|
374
256
|
i0.ɵɵtext(4, "(config)");
|
|
375
257
|
i0.ɵɵelementEnd()();
|
|
376
258
|
} if (rf & 2) {
|
|
377
|
-
const
|
|
378
|
-
i0.ɵɵclassProp("enabled",
|
|
259
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
260
|
+
i0.ɵɵclassProp("enabled", ctx_r1.serverTelemetryEnabled)("disabled", !ctx_r1.serverTelemetryEnabled);
|
|
379
261
|
i0.ɵɵadvance();
|
|
380
|
-
i0.ɵɵclassProp("fa-circle-check",
|
|
262
|
+
i0.ɵɵclassProp("fa-circle-check", ctx_r1.serverTelemetryEnabled)("fa-circle-xmark", !ctx_r1.serverTelemetryEnabled);
|
|
381
263
|
i0.ɵɵadvance();
|
|
382
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
264
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.serverTelemetryEnabled ? "Enabled" : "Disabled", " ");
|
|
383
265
|
} }
|
|
384
|
-
function
|
|
385
|
-
i0.ɵɵelementStart(0, "span",
|
|
386
|
-
i0.ɵɵelement(1, "i",
|
|
266
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵelementStart(0, "span", 70);
|
|
268
|
+
i0.ɵɵelement(1, "i", 88);
|
|
387
269
|
i0.ɵɵelementEnd();
|
|
388
270
|
} }
|
|
389
|
-
function
|
|
271
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
390
272
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
391
|
-
i0.ɵɵelementStart(0, "div",
|
|
392
|
-
i0.ɵɵelement(1, "i",
|
|
273
|
+
i0.ɵɵelementStart(0, "div", 71);
|
|
274
|
+
i0.ɵɵelement(1, "i", 89);
|
|
393
275
|
i0.ɵɵtext(2);
|
|
394
|
-
i0.ɵɵelementStart(3, "button",
|
|
395
|
-
i0.ɵɵlistener("click", function
|
|
396
|
-
i0.ɵɵelement(4, "i",
|
|
276
|
+
i0.ɵɵelementStart(3, "button", 90);
|
|
277
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.serverTelemetryError = null); });
|
|
278
|
+
i0.ɵɵelement(4, "i", 91);
|
|
397
279
|
i0.ɵɵelementEnd()();
|
|
398
280
|
} if (rf & 2) {
|
|
399
|
-
const
|
|
281
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
400
282
|
i0.ɵɵadvance(2);
|
|
401
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
283
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.serverTelemetryError, " ");
|
|
402
284
|
} }
|
|
403
|
-
function
|
|
404
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵelementStart(0, "span", 76);
|
|
405
287
|
i0.ɵɵtext(1);
|
|
406
288
|
i0.ɵɵelementEnd();
|
|
407
289
|
} if (rf & 2) {
|
|
408
|
-
const
|
|
290
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
409
291
|
i0.ɵɵadvance();
|
|
410
|
-
i0.ɵɵtextInterpolate(
|
|
292
|
+
i0.ɵɵtextInterpolate(ctx_r1.slowQueries.length);
|
|
411
293
|
} }
|
|
412
|
-
function
|
|
413
|
-
i0.ɵɵelementStart(0, "span",
|
|
294
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
295
|
+
i0.ɵɵelementStart(0, "span", 80);
|
|
414
296
|
i0.ɵɵtext(1);
|
|
415
297
|
i0.ɵɵelementEnd();
|
|
416
298
|
} if (rf & 2) {
|
|
417
|
-
const
|
|
299
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
418
300
|
i0.ɵɵadvance();
|
|
419
|
-
i0.ɵɵtextInterpolate(
|
|
301
|
+
i0.ɵɵtextInterpolate(ctx_r1.telemetryInsights.length);
|
|
420
302
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵelementStart(0, "div",
|
|
423
|
-
i0.ɵɵelement(1, "i",
|
|
303
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
304
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
305
|
+
i0.ɵɵelement(1, "i", 89);
|
|
424
306
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
425
307
|
i0.ɵɵtext(4, "Telemetry is disabled.");
|
|
426
308
|
i0.ɵɵelementEnd();
|
|
427
309
|
i0.ɵɵtext(5, " Enable telemetry to track RunView, RunQuery, and Engine loading performance. ");
|
|
428
310
|
i0.ɵɵelementEnd()();
|
|
429
311
|
} }
|
|
430
|
-
function
|
|
312
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
431
313
|
i0.ɵɵtext(0);
|
|
432
314
|
} if (rf & 2) {
|
|
433
|
-
const
|
|
434
|
-
i0.ɵɵtextInterpolate2(" Viewing ",
|
|
315
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
|
+
i0.ɵɵtextInterpolate2(" Viewing ", ctx_r1.formatRelativeTime(ctx_r1.chartTimeRangeStart), " - ", ctx_r1.formatRelativeTime(ctx_r1.chartTimeRangeEnd), ". Click Reset to show all. ");
|
|
435
317
|
} }
|
|
436
|
-
function
|
|
318
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
437
319
|
i0.ɵɵtext(0, " Drag to select a time range. Gaps >5s compressed. ");
|
|
438
320
|
} }
|
|
439
|
-
function
|
|
321
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
440
322
|
i0.ɵɵtext(0, " Drag to select a time range. Hover over points for details. ");
|
|
441
323
|
} }
|
|
442
|
-
function
|
|
324
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
443
325
|
i0.ɵɵtext(0);
|
|
444
326
|
i0.ɵɵpipe(1, "number");
|
|
445
327
|
} if (rf & 2) {
|
|
446
|
-
const
|
|
447
|
-
i0.ɵɵtextInterpolate1(" \u2022 ", i0.ɵɵpipeBind2(1, 1,
|
|
328
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
329
|
+
i0.ɵɵtextInterpolate1(" \u2022 ", i0.ɵɵpipeBind2(1, 1, ctx_r1.chartZoomLevel * 100, "1.0-0"), "% zoom ");
|
|
448
330
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "span",
|
|
331
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
+
i0.ɵɵelementStart(0, "span", 121);
|
|
451
333
|
i0.ɵɵtext(1);
|
|
452
|
-
i0.ɵɵconditionalCreate(2,
|
|
334
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Conditional_2_Template, 2, 4);
|
|
453
335
|
i0.ɵɵelementEnd();
|
|
454
336
|
} if (rf & 2) {
|
|
455
|
-
const
|
|
337
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
456
338
|
i0.ɵɵadvance();
|
|
457
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
339
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.telemetrySummary.totalEvents, " events ");
|
|
458
340
|
i0.ɵɵadvance();
|
|
459
|
-
i0.ɵɵconditional(
|
|
341
|
+
i0.ɵɵconditional(ctx_r1.chartZoomLevel !== 1 ? 2 : -1);
|
|
460
342
|
} }
|
|
461
|
-
function
|
|
343
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
462
344
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
463
|
-
i0.ɵɵelementStart(0, "div",
|
|
464
|
-
i0.ɵɵelement(4, "span",
|
|
345
|
+
i0.ɵɵelementStart(0, "div", 82)(1, "div", 92)(2, "div", 93)(3, "span", 94);
|
|
346
|
+
i0.ɵɵelement(4, "span", 95);
|
|
465
347
|
i0.ɵɵtext(5, " RunView");
|
|
466
348
|
i0.ɵɵelementEnd();
|
|
467
|
-
i0.ɵɵelementStart(6, "span",
|
|
468
|
-
i0.ɵɵelement(7, "span",
|
|
349
|
+
i0.ɵɵelementStart(6, "span", 96);
|
|
350
|
+
i0.ɵɵelement(7, "span", 95);
|
|
469
351
|
i0.ɵɵtext(8, " RunQuery");
|
|
470
352
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵelementStart(9, "span",
|
|
472
|
-
i0.ɵɵelement(10, "span",
|
|
353
|
+
i0.ɵɵelementStart(9, "span", 97);
|
|
354
|
+
i0.ɵɵelement(10, "span", 95);
|
|
473
355
|
i0.ɵɵtext(11, " Engine");
|
|
474
356
|
i0.ɵɵelementEnd();
|
|
475
|
-
i0.ɵɵelementStart(12, "span",
|
|
476
|
-
i0.ɵɵelement(13, "span",
|
|
357
|
+
i0.ɵɵelementStart(12, "span", 98);
|
|
358
|
+
i0.ɵɵelement(13, "span", 95);
|
|
477
359
|
i0.ɵɵtext(14, " AI");
|
|
478
360
|
i0.ɵɵelementEnd()();
|
|
479
|
-
i0.ɵɵelementStart(15, "div",
|
|
480
|
-
i0.ɵɵlistener("click", function
|
|
481
|
-
i0.ɵɵelement(18, "i",
|
|
361
|
+
i0.ɵɵelementStart(15, "div", 99)(16, "div", 100)(17, "button", 101);
|
|
362
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("pointer")); });
|
|
363
|
+
i0.ɵɵelement(18, "i", 102);
|
|
482
364
|
i0.ɵɵelementEnd();
|
|
483
|
-
i0.ɵɵelementStart(19, "button",
|
|
484
|
-
i0.ɵɵlistener("click", function
|
|
485
|
-
i0.ɵɵelement(20, "i",
|
|
365
|
+
i0.ɵɵelementStart(19, "button", 103);
|
|
366
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("select")); });
|
|
367
|
+
i0.ɵɵelement(20, "i", 104);
|
|
486
368
|
i0.ɵɵelementEnd();
|
|
487
|
-
i0.ɵɵelementStart(21, "button",
|
|
488
|
-
i0.ɵɵlistener("click", function
|
|
489
|
-
i0.ɵɵelement(22, "i",
|
|
369
|
+
i0.ɵɵelementStart(21, "button", 105);
|
|
370
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("pan")); });
|
|
371
|
+
i0.ɵɵelement(22, "i", 106);
|
|
490
372
|
i0.ɵɵelementEnd()();
|
|
491
|
-
i0.ɵɵelement(23, "span",
|
|
492
|
-
i0.ɵɵelementStart(24, "button",
|
|
493
|
-
i0.ɵɵlistener("click", function
|
|
494
|
-
i0.ɵɵelement(25, "i",
|
|
373
|
+
i0.ɵɵelement(23, "span", 107);
|
|
374
|
+
i0.ɵɵelementStart(24, "button", 108);
|
|
375
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomPerfChart("in")); });
|
|
376
|
+
i0.ɵɵelement(25, "i", 109);
|
|
495
377
|
i0.ɵɵelementEnd();
|
|
496
|
-
i0.ɵɵelementStart(26, "button",
|
|
497
|
-
i0.ɵɵlistener("click", function
|
|
498
|
-
i0.ɵɵelement(27, "i",
|
|
378
|
+
i0.ɵɵelementStart(26, "button", 110);
|
|
379
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomPerfChart("out")); });
|
|
380
|
+
i0.ɵɵelement(27, "i", 111);
|
|
499
381
|
i0.ɵɵelementEnd();
|
|
500
|
-
i0.ɵɵelementStart(28, "button",
|
|
501
|
-
i0.ɵɵlistener("click", function
|
|
502
|
-
i0.ɵɵelement(29, "i",
|
|
382
|
+
i0.ɵɵelementStart(28, "button", 112);
|
|
383
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.resetPerfChartZoom()); });
|
|
384
|
+
i0.ɵɵelement(29, "i", 113);
|
|
503
385
|
i0.ɵɵelementEnd();
|
|
504
|
-
i0.ɵɵelement(30, "span",
|
|
505
|
-
i0.ɵɵelementStart(31, "label",
|
|
506
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
507
|
-
i0.ɵɵlistener("change", function
|
|
386
|
+
i0.ɵɵelement(30, "span", 107);
|
|
387
|
+
i0.ɵɵelementStart(31, "label", 114)(32, "input", 10);
|
|
388
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_input_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.chartGapCompression, $event) || (ctx_r1.chartGapCompression = $event); return i0.ɵɵresetView($event); });
|
|
389
|
+
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_input_change_32_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGapCompressionChange()); });
|
|
508
390
|
i0.ɵɵelementEnd();
|
|
509
391
|
i0.ɵɵelementStart(33, "span");
|
|
510
392
|
i0.ɵɵtext(34, "Compress Gaps");
|
|
511
393
|
i0.ɵɵelementEnd()()()();
|
|
512
|
-
i0.ɵɵelementStart(35, "div",
|
|
394
|
+
i0.ɵɵelementStart(35, "div", 115)(36, "div", 116)(37, "span", 117);
|
|
513
395
|
i0.ɵɵtext(38, "Duration (ms)");
|
|
514
396
|
i0.ɵɵelementEnd()();
|
|
515
|
-
i0.ɵɵelement(39, "div",
|
|
397
|
+
i0.ɵɵelement(39, "div", 118, 0);
|
|
516
398
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(41, "div",
|
|
518
|
-
i0.ɵɵelement(43, "i",
|
|
519
|
-
i0.ɵɵconditionalCreate(44,
|
|
399
|
+
i0.ɵɵelementStart(41, "div", 119)(42, "span", 120);
|
|
400
|
+
i0.ɵɵelement(43, "i", 49);
|
|
401
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_44_Template, 1, 2)(45, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_45_Template, 1, 0)(46, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_46_Template, 1, 0);
|
|
520
402
|
i0.ɵɵelementEnd();
|
|
521
|
-
i0.ɵɵconditionalCreate(47,
|
|
403
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Template, 3, 2, "span", 121);
|
|
522
404
|
i0.ɵɵelementEnd()();
|
|
523
405
|
} if (rf & 2) {
|
|
524
|
-
const
|
|
406
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
525
407
|
i0.ɵɵadvance(17);
|
|
526
|
-
i0.ɵɵclassProp("active",
|
|
408
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "pointer");
|
|
527
409
|
i0.ɵɵadvance(2);
|
|
528
|
-
i0.ɵɵclassProp("active",
|
|
410
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "select");
|
|
529
411
|
i0.ɵɵadvance(2);
|
|
530
|
-
i0.ɵɵclassProp("active",
|
|
412
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "pan");
|
|
531
413
|
i0.ɵɵadvance(11);
|
|
532
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
414
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.chartGapCompression);
|
|
533
415
|
i0.ɵɵadvance(12);
|
|
534
|
-
i0.ɵɵconditional(
|
|
416
|
+
i0.ɵɵconditional(ctx_r1.chartTimeRangeStart !== null && ctx_r1.chartTimeRangeEnd !== null ? 44 : ctx_r1.chartGapCompression ? 45 : 46);
|
|
535
417
|
i0.ɵɵadvance(3);
|
|
536
|
-
i0.ɵɵconditional(
|
|
418
|
+
i0.ɵɵconditional(ctx_r1.telemetrySummary ? 47 : -1);
|
|
537
419
|
} }
|
|
538
|
-
function
|
|
420
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
539
421
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
540
|
-
i0.ɵɵelementStart(0, "div",
|
|
541
|
-
i0.ɵɵlistener("click", function
|
|
542
|
-
i0.ɵɵelementStart(1, "span",
|
|
422
|
+
i0.ɵɵelementStart(0, "div", 131);
|
|
423
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template_div_click_0_listener() { const cat_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.jumpToPatternsByCategory(cat_r12.name)); });
|
|
424
|
+
i0.ɵɵelementStart(1, "span", 132);
|
|
543
425
|
i0.ɵɵtext(2);
|
|
544
426
|
i0.ɵɵelementEnd();
|
|
545
|
-
i0.ɵɵelementStart(3, "span",
|
|
427
|
+
i0.ɵɵelementStart(3, "span", 133);
|
|
546
428
|
i0.ɵɵtext(4);
|
|
547
429
|
i0.ɵɵelementEnd();
|
|
548
|
-
i0.ɵɵelementStart(5, "span",
|
|
430
|
+
i0.ɵɵelementStart(5, "span", 134);
|
|
549
431
|
i0.ɵɵtext(6);
|
|
550
432
|
i0.ɵɵpipe(7, "number");
|
|
551
433
|
i0.ɵɵelementEnd()();
|
|
@@ -558,26 +440,26 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_21
|
|
|
558
440
|
i0.ɵɵadvance(2);
|
|
559
441
|
i0.ɵɵtextInterpolate1("avg ", i0.ɵɵpipeBind2(7, 3, cat_r12.avgMs, "1.0-0"), "ms");
|
|
560
442
|
} }
|
|
561
|
-
function
|
|
562
|
-
i0.ɵɵelementStart(0, "div",
|
|
443
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
444
|
+
i0.ɵɵelementStart(0, "div", 126)(1, "h4");
|
|
563
445
|
i0.ɵɵtext(2, "By Category");
|
|
564
446
|
i0.ɵɵelementEnd();
|
|
565
|
-
i0.ɵɵelementStart(3, "div",
|
|
566
|
-
i0.ɵɵrepeaterCreate(4,
|
|
447
|
+
i0.ɵɵelementStart(3, "div", 129);
|
|
448
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template, 8, 6, "div", 130, _forTrack2);
|
|
567
449
|
i0.ɵɵelementEnd()();
|
|
568
450
|
} if (rf & 2) {
|
|
569
|
-
const
|
|
451
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
570
452
|
i0.ɵɵadvance(4);
|
|
571
|
-
i0.ɵɵrepeater(
|
|
453
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
572
454
|
} }
|
|
573
|
-
function
|
|
574
|
-
i0.ɵɵelementStart(0, "span",
|
|
575
|
-
i0.ɵɵelement(1, "i",
|
|
455
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
457
|
+
i0.ɵɵelement(1, "i", 148);
|
|
576
458
|
i0.ɵɵtext(2, " CACHED ");
|
|
577
459
|
i0.ɵɵelementEnd();
|
|
578
460
|
} }
|
|
579
|
-
function
|
|
580
|
-
i0.ɵɵelementStart(0, "span",
|
|
461
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
581
463
|
i0.ɵɵtext(1);
|
|
582
464
|
i0.ɵɵelementEnd();
|
|
583
465
|
} if (rf & 2) {
|
|
@@ -585,34 +467,34 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
585
467
|
i0.ɵɵadvance();
|
|
586
468
|
i0.ɵɵtextInterpolate(entity_r15);
|
|
587
469
|
} }
|
|
588
|
-
function
|
|
589
|
-
i0.ɵɵelementStart(0, "span",
|
|
470
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
471
|
+
i0.ɵɵelementStart(0, "span", 150);
|
|
590
472
|
i0.ɵɵtext(1);
|
|
591
473
|
i0.ɵɵelementEnd();
|
|
592
474
|
} if (rf & 2) {
|
|
593
475
|
const query_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
594
|
-
const
|
|
476
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
595
477
|
i0.ɵɵadvance();
|
|
596
|
-
i0.ɵɵtextInterpolate1("+",
|
|
478
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.getRunViewsEntityCount(query_r14) - 4, " more");
|
|
597
479
|
} }
|
|
598
|
-
function
|
|
599
|
-
i0.ɵɵelementStart(0, "div",
|
|
600
|
-
i0.ɵɵrepeaterCreate(1,
|
|
601
|
-
i0.ɵɵconditionalCreate(3,
|
|
480
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
482
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template, 2, 1, "span", 149, i0.ɵɵrepeaterTrackByIdentity);
|
|
483
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template, 2, 1, "span", 150);
|
|
602
484
|
i0.ɵɵelementEnd();
|
|
603
485
|
} if (rf & 2) {
|
|
604
486
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
605
|
-
const
|
|
487
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
606
488
|
i0.ɵɵadvance();
|
|
607
|
-
i0.ɵɵrepeater(
|
|
489
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewsEntities(query_r14, 4));
|
|
608
490
|
i0.ɵɵadvance(2);
|
|
609
|
-
i0.ɵɵconditional(
|
|
491
|
+
i0.ɵɵconditional(ctx_r1.hasMoreEntities(query_r14, 4) ? 3 : -1);
|
|
610
492
|
} }
|
|
611
|
-
function
|
|
612
|
-
i0.ɵɵelementStart(0, "span",
|
|
493
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
494
|
+
i0.ɵɵelementStart(0, "span", 152)(1, "span", 153);
|
|
613
495
|
i0.ɵɵtext(2);
|
|
614
496
|
i0.ɵɵelementEnd();
|
|
615
|
-
i0.ɵɵelementStart(3, "span",
|
|
497
|
+
i0.ɵɵelementStart(3, "span", 154);
|
|
616
498
|
i0.ɵɵtext(4);
|
|
617
499
|
i0.ɵɵelementEnd()();
|
|
618
500
|
} if (rf & 2) {
|
|
@@ -624,51 +506,51 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
624
506
|
i0.ɵɵadvance(2);
|
|
625
507
|
i0.ɵɵtextInterpolate(pill_r16.value);
|
|
626
508
|
} }
|
|
627
|
-
function
|
|
628
|
-
i0.ɵɵelementStart(0, "div",
|
|
629
|
-
i0.ɵɵrepeaterCreate(1,
|
|
509
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
510
|
+
i0.ɵɵelementStart(0, "div", 145);
|
|
511
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template, 5, 5, "span", 151, _forTrack4);
|
|
630
512
|
i0.ɵɵelementEnd();
|
|
631
513
|
} if (rf & 2) {
|
|
632
514
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
633
|
-
const
|
|
515
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
634
516
|
i0.ɵɵadvance();
|
|
635
|
-
i0.ɵɵrepeater(
|
|
517
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewPills(query_r14));
|
|
636
518
|
} }
|
|
637
|
-
function
|
|
638
|
-
i0.ɵɵelementStart(0, "div",
|
|
519
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
+
i0.ɵɵelementStart(0, "div", 146);
|
|
639
521
|
i0.ɵɵtext(1);
|
|
640
522
|
i0.ɵɵelementEnd();
|
|
641
523
|
} if (rf & 2) {
|
|
642
524
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
643
|
-
const
|
|
525
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
644
526
|
i0.ɵɵadvance();
|
|
645
|
-
i0.ɵɵtextInterpolate(
|
|
527
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(query_r14.filter, 60));
|
|
646
528
|
} }
|
|
647
|
-
function
|
|
529
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
648
530
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
649
|
-
i0.ɵɵelementStart(0, "div",
|
|
650
|
-
i0.ɵɵlistener("click", function
|
|
651
|
-
i0.ɵɵelementStart(1, "div",
|
|
531
|
+
i0.ɵɵelementStart(0, "div", 138);
|
|
532
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template_div_click_0_listener() { const query_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openEventDetailPanel(query_r14)); });
|
|
533
|
+
i0.ɵɵelementStart(1, "div", 139)(2, "span", 140);
|
|
652
534
|
i0.ɵɵtext(3);
|
|
653
535
|
i0.ɵɵelementEnd();
|
|
654
|
-
i0.ɵɵelementStart(4, "span",
|
|
536
|
+
i0.ɵɵelementStart(4, "span", 141);
|
|
655
537
|
i0.ɵɵtext(5);
|
|
656
538
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵconditionalCreate(6,
|
|
658
|
-
i0.ɵɵelementStart(7, "span",
|
|
539
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_6_Template, 3, 0, "span", 142);
|
|
540
|
+
i0.ɵɵelementStart(7, "span", 143);
|
|
659
541
|
i0.ɵɵtext(8);
|
|
660
542
|
i0.ɵɵpipe(9, "number");
|
|
661
543
|
i0.ɵɵelementEnd()();
|
|
662
|
-
i0.ɵɵconditionalCreate(10,
|
|
663
|
-
i0.ɵɵconditionalCreate(11,
|
|
664
|
-
i0.ɵɵconditionalCreate(12,
|
|
665
|
-
i0.ɵɵelementStart(13, "div",
|
|
544
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Template, 4, 1, "div", 144);
|
|
545
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_Template, 3, 0, "div", 145);
|
|
546
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_12_Template, 2, 1, "div", 146);
|
|
547
|
+
i0.ɵɵelementStart(13, "div", 147);
|
|
666
548
|
i0.ɵɵtext(14);
|
|
667
549
|
i0.ɵɵelementEnd()();
|
|
668
550
|
} if (rf & 2) {
|
|
669
551
|
const query_r14 = ctx.$implicit;
|
|
670
|
-
const
|
|
671
|
-
i0.ɵɵclassProp("cache-hit",
|
|
552
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
553
|
+
i0.ɵɵclassProp("cache-hit", ctx_r1.isCacheHit(query_r14));
|
|
672
554
|
i0.ɵɵadvance(2);
|
|
673
555
|
i0.ɵɵclassMap("cat-" + query_r14.category.toLowerCase());
|
|
674
556
|
i0.ɵɵadvance();
|
|
@@ -676,134 +558,134 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
676
558
|
i0.ɵɵadvance(2);
|
|
677
559
|
i0.ɵɵtextInterpolate(query_r14.entityName || query_r14.operation);
|
|
678
560
|
i0.ɵɵadvance();
|
|
679
|
-
i0.ɵɵconditional(
|
|
561
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(query_r14) ? 6 : -1);
|
|
680
562
|
i0.ɵɵadvance(2);
|
|
681
563
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(9, 12, query_r14.elapsedMs, "1.0-0"), "ms");
|
|
682
564
|
i0.ɵɵadvance(2);
|
|
683
|
-
i0.ɵɵconditional(
|
|
565
|
+
i0.ɵɵconditional(ctx_r1.isRunViewsOperation(query_r14) ? 10 : -1);
|
|
684
566
|
i0.ɵɵadvance();
|
|
685
|
-
i0.ɵɵconditional(
|
|
567
|
+
i0.ɵɵconditional(ctx_r1.isRunViewOperation(query_r14) && ctx_r1.getRunViewPills(query_r14).length > 0 ? 11 : -1);
|
|
686
568
|
i0.ɵɵadvance();
|
|
687
569
|
i0.ɵɵconditional(query_r14.filter ? 12 : -1);
|
|
688
570
|
i0.ɵɵadvance(2);
|
|
689
|
-
i0.ɵɵtextInterpolate(
|
|
571
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(query_r14.timestamp));
|
|
690
572
|
} }
|
|
691
|
-
function
|
|
692
|
-
i0.ɵɵelementStart(0, "div",
|
|
693
|
-
i0.ɵɵelement(2, "i",
|
|
573
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
574
|
+
i0.ɵɵelementStart(0, "div", 127)(1, "h4");
|
|
575
|
+
i0.ɵɵelement(2, "i", 135);
|
|
694
576
|
i0.ɵɵtext(3);
|
|
695
577
|
i0.ɵɵelementEnd();
|
|
696
|
-
i0.ɵɵelementStart(4, "div",
|
|
697
|
-
i0.ɵɵrepeaterCreate(5,
|
|
578
|
+
i0.ɵɵelementStart(4, "div", 136);
|
|
579
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template, 15, 15, "div", 137, _forTrack3);
|
|
698
580
|
i0.ɵɵelementEnd()();
|
|
699
581
|
} if (rf & 2) {
|
|
700
|
-
const
|
|
582
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
701
583
|
i0.ɵɵadvance(3);
|
|
702
|
-
i0.ɵɵtextInterpolate1(" Slow Operations (>",
|
|
584
|
+
i0.ɵɵtextInterpolate1(" Slow Operations (>", ctx_r1.slowQueryThresholdMs, "ms) ");
|
|
703
585
|
i0.ɵɵadvance(2);
|
|
704
|
-
i0.ɵɵrepeater(
|
|
586
|
+
i0.ɵɵrepeater(ctx_r1.slowQueries.slice(0, 10));
|
|
705
587
|
} }
|
|
706
|
-
function
|
|
707
|
-
i0.ɵɵelementStart(0, "div",
|
|
708
|
-
i0.ɵɵelement(1, "i",
|
|
588
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
+
i0.ɵɵelementStart(0, "div", 128);
|
|
590
|
+
i0.ɵɵelement(1, "i", 51);
|
|
709
591
|
i0.ɵɵelementStart(2, "span");
|
|
710
592
|
i0.ɵɵtext(3);
|
|
711
593
|
i0.ɵɵelementEnd()();
|
|
712
594
|
} if (rf & 2) {
|
|
713
|
-
const
|
|
595
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
714
596
|
i0.ɵɵadvance(3);
|
|
715
|
-
i0.ɵɵtextInterpolate1("No slow operations detected. All operations completed under ",
|
|
597
|
+
i0.ɵɵtextInterpolate1("No slow operations detected. All operations completed under ", ctx_r1.slowQueryThresholdMs, "ms.");
|
|
716
598
|
} }
|
|
717
|
-
function
|
|
718
|
-
i0.ɵɵelementStart(0, "div",
|
|
599
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
600
|
+
i0.ɵɵelementStart(0, "div", 122)(1, "div", 123)(2, "div", 124);
|
|
719
601
|
i0.ɵɵtext(3);
|
|
720
602
|
i0.ɵɵelementEnd();
|
|
721
|
-
i0.ɵɵelementStart(4, "div",
|
|
603
|
+
i0.ɵɵelementStart(4, "div", 125);
|
|
722
604
|
i0.ɵɵtext(5, "Total Events");
|
|
723
605
|
i0.ɵɵelementEnd()();
|
|
724
|
-
i0.ɵɵelementStart(6, "div",
|
|
606
|
+
i0.ɵɵelementStart(6, "div", 123)(7, "div", 124);
|
|
725
607
|
i0.ɵɵtext(8);
|
|
726
608
|
i0.ɵɵelementEnd();
|
|
727
|
-
i0.ɵɵelementStart(9, "div",
|
|
609
|
+
i0.ɵɵelementStart(9, "div", 125);
|
|
728
610
|
i0.ɵɵtext(10, "Unique Patterns");
|
|
729
611
|
i0.ɵɵelementEnd()();
|
|
730
|
-
i0.ɵɵelementStart(11, "div",
|
|
612
|
+
i0.ɵɵelementStart(11, "div", 123)(12, "div", 124);
|
|
731
613
|
i0.ɵɵtext(13);
|
|
732
614
|
i0.ɵɵelementEnd();
|
|
733
|
-
i0.ɵɵelementStart(14, "div",
|
|
615
|
+
i0.ɵɵelementStart(14, "div", 125);
|
|
734
616
|
i0.ɵɵtext(15, "Insights");
|
|
735
617
|
i0.ɵɵelementEnd()();
|
|
736
|
-
i0.ɵɵelementStart(16, "div",
|
|
618
|
+
i0.ɵɵelementStart(16, "div", 123)(17, "div", 124);
|
|
737
619
|
i0.ɵɵtext(18);
|
|
738
620
|
i0.ɵɵelementEnd();
|
|
739
|
-
i0.ɵɵelementStart(19, "div",
|
|
621
|
+
i0.ɵɵelementStart(19, "div", 125);
|
|
740
622
|
i0.ɵɵtext(20, "Active");
|
|
741
623
|
i0.ɵɵelementEnd()()();
|
|
742
|
-
i0.ɵɵconditionalCreate(21,
|
|
743
|
-
i0.ɵɵconditionalCreate(22,
|
|
624
|
+
i0.ɵɵconditionalCreate(21, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_Template, 6, 0, "div", 126);
|
|
625
|
+
i0.ɵɵconditionalCreate(22, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_Template, 7, 1, "div", 127)(23, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_23_Template, 4, 1, "div", 128);
|
|
744
626
|
} if (rf & 2) {
|
|
745
|
-
const
|
|
627
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
746
628
|
i0.ɵɵadvance(3);
|
|
747
|
-
i0.ɵɵtextInterpolate((
|
|
629
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalEvents) || 0);
|
|
748
630
|
i0.ɵɵadvance(5);
|
|
749
|
-
i0.ɵɵtextInterpolate((
|
|
631
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalPatterns) || 0);
|
|
750
632
|
i0.ɵɵadvance(5);
|
|
751
|
-
i0.ɵɵtextInterpolate((
|
|
633
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalInsights) || 0);
|
|
752
634
|
i0.ɵɵadvance(5);
|
|
753
|
-
i0.ɵɵtextInterpolate((
|
|
635
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.activeEvents) || 0);
|
|
754
636
|
i0.ɵɵadvance(3);
|
|
755
|
-
i0.ɵɵconditional(
|
|
637
|
+
i0.ɵɵconditional(ctx_r1.telemetrySummary && ctx_r1.telemetrySummary.totalEvents > 0 ? 21 : -1);
|
|
756
638
|
i0.ɵɵadvance();
|
|
757
|
-
i0.ɵɵconditional(
|
|
639
|
+
i0.ɵɵconditional(ctx_r1.slowQueries.length > 0 ? 22 : ctx_r1.telemetryEnabled && ctx_r1.telemetrySummary && ctx_r1.telemetrySummary.totalEvents > 0 ? 23 : -1);
|
|
758
640
|
} }
|
|
759
|
-
function
|
|
641
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
760
642
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
761
|
-
i0.ɵɵelementStart(0, "button",
|
|
762
|
-
i0.ɵɵlistener("click", function
|
|
763
|
-
i0.ɵɵelement(1, "i",
|
|
643
|
+
i0.ɵɵelementStart(0, "button", 166);
|
|
644
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
645
|
+
i0.ɵɵelement(1, "i", 91);
|
|
764
646
|
i0.ɵɵelementEnd();
|
|
765
647
|
} }
|
|
766
|
-
function
|
|
648
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
767
649
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
768
|
-
i0.ɵɵelementStart(0, "button",
|
|
769
|
-
i0.ɵɵlistener("click", function
|
|
650
|
+
i0.ɵɵelementStart(0, "button", 161);
|
|
651
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template_button_click_0_listener() { const cat_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCategoryFilterByName(cat_r20.name)); });
|
|
770
652
|
i0.ɵɵtext(1);
|
|
771
653
|
i0.ɵɵelementEnd();
|
|
772
654
|
} if (rf & 2) {
|
|
773
655
|
const cat_r20 = ctx.$implicit;
|
|
774
|
-
const
|
|
775
|
-
i0.ɵɵclassProp("active",
|
|
656
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
657
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === cat_r20.name);
|
|
776
658
|
i0.ɵɵadvance();
|
|
777
659
|
i0.ɵɵtextInterpolate1(" ", cat_r20.name, " ");
|
|
778
660
|
} }
|
|
779
|
-
function
|
|
780
|
-
i0.ɵɵelementStart(0, "div",
|
|
781
|
-
i0.ɵɵelement(1, "i",
|
|
661
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
662
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
663
|
+
i0.ɵɵelement(1, "i", 148);
|
|
782
664
|
i0.ɵɵelementEnd();
|
|
783
665
|
} }
|
|
784
|
-
function
|
|
785
|
-
i0.ɵɵelement(0, "div",
|
|
666
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
667
|
+
i0.ɵɵelement(0, "div", 171);
|
|
786
668
|
} }
|
|
787
|
-
function
|
|
788
|
-
i0.ɵɵelementStart(0, "span",
|
|
789
|
-
i0.ɵɵelement(1, "i",
|
|
669
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
670
|
+
i0.ɵɵelementStart(0, "span", 176);
|
|
671
|
+
i0.ɵɵelement(1, "i", 148);
|
|
790
672
|
i0.ɵɵtext(2, " CACHED ");
|
|
791
673
|
i0.ɵɵelementEnd();
|
|
792
674
|
} }
|
|
793
|
-
function
|
|
794
|
-
i0.ɵɵelementStart(0, "span",
|
|
675
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
676
|
+
i0.ɵɵelementStart(0, "span", 184);
|
|
795
677
|
i0.ɵɵtext(1);
|
|
796
678
|
i0.ɵɵpipe(2, "number");
|
|
797
679
|
i0.ɵɵelementEnd();
|
|
798
680
|
} if (rf & 2) {
|
|
799
681
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
800
|
-
const
|
|
801
|
-
i0.ɵɵclassProp("slow", (event_r22.elapsedMs || 0) >=
|
|
682
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
683
|
+
i0.ɵɵclassProp("slow", (event_r22.elapsedMs || 0) >= ctx_r1.slowQueryThresholdMs);
|
|
802
684
|
i0.ɵɵadvance();
|
|
803
685
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 3, event_r22.elapsedMs, "1.0-0"), "ms ");
|
|
804
686
|
} }
|
|
805
|
-
function
|
|
806
|
-
i0.ɵɵelementStart(0, "span",
|
|
687
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelementStart(0, "span", 180);
|
|
807
689
|
i0.ɵɵtext(1);
|
|
808
690
|
i0.ɵɵelementEnd();
|
|
809
691
|
} if (rf & 2) {
|
|
@@ -811,8 +693,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
811
693
|
i0.ɵɵadvance();
|
|
812
694
|
i0.ɵɵtextInterpolate(event_r22.entityName);
|
|
813
695
|
} }
|
|
814
|
-
function
|
|
815
|
-
i0.ɵɵelementStart(0, "span",
|
|
696
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
697
|
+
i0.ɵɵelementStart(0, "span", 185);
|
|
816
698
|
i0.ɵɵtext(1);
|
|
817
699
|
i0.ɵɵelementEnd();
|
|
818
700
|
} if (rf & 2) {
|
|
@@ -820,34 +702,34 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
820
702
|
i0.ɵɵadvance();
|
|
821
703
|
i0.ɵɵtextInterpolate(entity_r23);
|
|
822
704
|
} }
|
|
823
|
-
function
|
|
824
|
-
i0.ɵɵelementStart(0, "span",
|
|
705
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
706
|
+
i0.ɵɵelementStart(0, "span", 186);
|
|
825
707
|
i0.ɵɵtext(1);
|
|
826
708
|
i0.ɵɵelementEnd();
|
|
827
709
|
} if (rf & 2) {
|
|
828
710
|
const event_r22 = i0.ɵɵnextContext(2).$implicit;
|
|
829
|
-
const
|
|
711
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
830
712
|
i0.ɵɵadvance();
|
|
831
|
-
i0.ɵɵtextInterpolate1("+",
|
|
713
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.getRunViewsEntityCount(event_r22) - 3, " more");
|
|
832
714
|
} }
|
|
833
|
-
function
|
|
834
|
-
i0.ɵɵelementStart(0, "div",
|
|
835
|
-
i0.ɵɵrepeaterCreate(1,
|
|
836
|
-
i0.ɵɵconditionalCreate(3,
|
|
715
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
716
|
+
i0.ɵɵelementStart(0, "div", 181);
|
|
717
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template, 2, 1, "span", 185, i0.ɵɵrepeaterTrackByIdentity);
|
|
718
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template, 2, 1, "span", 186);
|
|
837
719
|
i0.ɵɵelementEnd();
|
|
838
720
|
} if (rf & 2) {
|
|
839
721
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
840
|
-
const
|
|
722
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
841
723
|
i0.ɵɵadvance();
|
|
842
|
-
i0.ɵɵrepeater(
|
|
724
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewsEntities(event_r22, 3));
|
|
843
725
|
i0.ɵɵadvance(2);
|
|
844
|
-
i0.ɵɵconditional(
|
|
726
|
+
i0.ɵɵconditional(ctx_r1.hasMoreEntities(event_r22, 3) ? 3 : -1);
|
|
845
727
|
} }
|
|
846
|
-
function
|
|
847
|
-
i0.ɵɵelementStart(0, "span",
|
|
728
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
729
|
+
i0.ɵɵelementStart(0, "span", 188)(1, "span", 153);
|
|
848
730
|
i0.ɵɵtext(2);
|
|
849
731
|
i0.ɵɵelementEnd();
|
|
850
|
-
i0.ɵɵelementStart(3, "span",
|
|
732
|
+
i0.ɵɵelementStart(3, "span", 154);
|
|
851
733
|
i0.ɵɵtext(4);
|
|
852
734
|
i0.ɵɵelementEnd()();
|
|
853
735
|
} if (rf & 2) {
|
|
@@ -859,67 +741,67 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
859
741
|
i0.ɵɵadvance(2);
|
|
860
742
|
i0.ɵɵtextInterpolate(pill_r24.value);
|
|
861
743
|
} }
|
|
862
|
-
function
|
|
863
|
-
i0.ɵɵelementStart(0, "div",
|
|
864
|
-
i0.ɵɵrepeaterCreate(1,
|
|
744
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
745
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
746
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template, 5, 5, "span", 187, _forTrack4);
|
|
865
747
|
i0.ɵɵelementEnd();
|
|
866
748
|
} if (rf & 2) {
|
|
867
749
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
868
|
-
const
|
|
750
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
869
751
|
i0.ɵɵadvance();
|
|
870
|
-
i0.ɵɵrepeater(
|
|
752
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewPills(event_r22));
|
|
871
753
|
} }
|
|
872
|
-
function
|
|
873
|
-
i0.ɵɵelementStart(0, "div",
|
|
754
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
755
|
+
i0.ɵɵelementStart(0, "div", 183);
|
|
874
756
|
i0.ɵɵtext(1);
|
|
875
757
|
i0.ɵɵelementEnd();
|
|
876
758
|
} if (rf & 2) {
|
|
877
759
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
878
|
-
const
|
|
760
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
879
761
|
i0.ɵɵadvance();
|
|
880
|
-
i0.ɵɵtextInterpolate(
|
|
762
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(event_r22.filter, 80));
|
|
881
763
|
} }
|
|
882
|
-
function
|
|
764
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
883
765
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
884
|
-
i0.ɵɵelementStart(0, "div",
|
|
885
|
-
i0.ɵɵlistener("click", function
|
|
886
|
-
i0.ɵɵelementStart(1, "div",
|
|
887
|
-
i0.ɵɵconditionalCreate(2,
|
|
888
|
-
i0.ɵɵelement(4, "div",
|
|
766
|
+
i0.ɵɵelementStart(0, "div", 168);
|
|
767
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template_div_click_0_listener() { const event_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openEventDetailPanel(event_r22)); });
|
|
768
|
+
i0.ɵɵelementStart(1, "div", 169);
|
|
769
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_2_Template, 2, 0, "div", 170)(3, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_3_Template, 1, 0, "div", 171);
|
|
770
|
+
i0.ɵɵelement(4, "div", 172);
|
|
889
771
|
i0.ɵɵelementEnd();
|
|
890
|
-
i0.ɵɵelementStart(5, "div",
|
|
772
|
+
i0.ɵɵelementStart(5, "div", 173)(6, "div", 174)(7, "span", 175);
|
|
891
773
|
i0.ɵɵtext(8);
|
|
892
774
|
i0.ɵɵelementEnd();
|
|
893
|
-
i0.ɵɵelementStart(9, "span",
|
|
775
|
+
i0.ɵɵelementStart(9, "span", 140);
|
|
894
776
|
i0.ɵɵtext(10);
|
|
895
777
|
i0.ɵɵelementEnd();
|
|
896
|
-
i0.ɵɵconditionalCreate(11,
|
|
897
|
-
i0.ɵɵconditionalCreate(12,
|
|
778
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_11_Template, 3, 0, "span", 176);
|
|
779
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_12_Template, 3, 6, "span", 177);
|
|
898
780
|
i0.ɵɵelementEnd();
|
|
899
|
-
i0.ɵɵelementStart(13, "div",
|
|
781
|
+
i0.ɵɵelementStart(13, "div", 178)(14, "span", 179);
|
|
900
782
|
i0.ɵɵtext(15);
|
|
901
783
|
i0.ɵɵelementEnd();
|
|
902
|
-
i0.ɵɵconditionalCreate(16,
|
|
903
|
-
i0.ɵɵconditionalCreate(17,
|
|
784
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_16_Template, 2, 1, "span", 180);
|
|
785
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Template, 4, 1, "div", 181);
|
|
904
786
|
i0.ɵɵelementEnd();
|
|
905
|
-
i0.ɵɵconditionalCreate(18,
|
|
906
|
-
i0.ɵɵconditionalCreate(19,
|
|
787
|
+
i0.ɵɵconditionalCreate(18, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_Template, 3, 0, "div", 182);
|
|
788
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_19_Template, 2, 1, "div", 183);
|
|
907
789
|
i0.ɵɵelementEnd()();
|
|
908
790
|
} if (rf & 2) {
|
|
909
791
|
const event_r22 = ctx.$implicit;
|
|
910
|
-
const
|
|
792
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
911
793
|
i0.ɵɵclassMap("tl-" + event_r22.category.toLowerCase());
|
|
912
|
-
i0.ɵɵclassProp("cache-hit",
|
|
794
|
+
i0.ɵɵclassProp("cache-hit", ctx_r1.isCacheHit(event_r22));
|
|
913
795
|
i0.ɵɵadvance(2);
|
|
914
|
-
i0.ɵɵconditional(
|
|
796
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(event_r22) ? 2 : 3);
|
|
915
797
|
i0.ɵɵadvance(6);
|
|
916
|
-
i0.ɵɵtextInterpolate(
|
|
798
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(event_r22.timestamp));
|
|
917
799
|
i0.ɵɵadvance();
|
|
918
800
|
i0.ɵɵclassMap("cat-" + event_r22.category.toLowerCase());
|
|
919
801
|
i0.ɵɵadvance();
|
|
920
802
|
i0.ɵɵtextInterpolate1(" ", event_r22.category, " ");
|
|
921
803
|
i0.ɵɵadvance();
|
|
922
|
-
i0.ɵɵconditional(
|
|
804
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(event_r22) ? 11 : -1);
|
|
923
805
|
i0.ɵɵadvance();
|
|
924
806
|
i0.ɵɵconditional(event_r22.elapsedMs !== undefined ? 12 : -1);
|
|
925
807
|
i0.ɵɵadvance(3);
|
|
@@ -927,79 +809,79 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
927
809
|
i0.ɵɵadvance();
|
|
928
810
|
i0.ɵɵconditional(event_r22.entityName ? 16 : -1);
|
|
929
811
|
i0.ɵɵadvance();
|
|
930
|
-
i0.ɵɵconditional(
|
|
812
|
+
i0.ɵɵconditional(ctx_r1.isRunViewsOperation(event_r22) ? 17 : -1);
|
|
931
813
|
i0.ɵɵadvance();
|
|
932
|
-
i0.ɵɵconditional(
|
|
814
|
+
i0.ɵɵconditional(ctx_r1.isRunViewOperation(event_r22) && ctx_r1.getRunViewPills(event_r22).length > 0 ? 18 : -1);
|
|
933
815
|
i0.ɵɵadvance();
|
|
934
816
|
i0.ɵɵconditional(event_r22.filter ? 19 : -1);
|
|
935
817
|
} }
|
|
936
|
-
function
|
|
937
|
-
i0.ɵɵrepeaterCreate(0,
|
|
818
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
819
|
+
i0.ɵɵrepeaterCreate(0, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template, 20, 16, "div", 167, _forTrack3);
|
|
938
820
|
} if (rf & 2) {
|
|
939
|
-
const
|
|
940
|
-
i0.ɵɵrepeater(
|
|
821
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
822
|
+
i0.ɵɵrepeater(ctx_r1.filteredEvents.slice(0, 50));
|
|
941
823
|
} }
|
|
942
|
-
function
|
|
943
|
-
i0.ɵɵelementStart(0, "div",
|
|
944
|
-
i0.ɵɵelement(1, "i",
|
|
824
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
825
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
826
|
+
i0.ɵɵelement(1, "i", 189);
|
|
945
827
|
i0.ɵɵelementStart(2, "p");
|
|
946
828
|
i0.ɵɵtext(3, "No events recorded yet");
|
|
947
829
|
i0.ɵɵelementEnd()();
|
|
948
830
|
} }
|
|
949
|
-
function
|
|
831
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template(rf, ctx) { if (rf & 1) {
|
|
950
832
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
951
|
-
i0.ɵɵelementStart(0, "div",
|
|
952
|
-
i0.ɵɵelement(2, "i",
|
|
953
|
-
i0.ɵɵelementStart(3, "input",
|
|
954
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
955
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
833
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "div", 156);
|
|
834
|
+
i0.ɵɵelement(2, "i", 157);
|
|
835
|
+
i0.ɵɵelementStart(3, "input", 158);
|
|
836
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.searchQuery, $event) || (ctx_r1.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
837
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSearchChange()); });
|
|
956
838
|
i0.ɵɵelementEnd();
|
|
957
|
-
i0.ɵɵconditionalCreate(4,
|
|
839
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template, 2, 0, "button", 159);
|
|
958
840
|
i0.ɵɵelementEnd();
|
|
959
|
-
i0.ɵɵelementStart(5, "div",
|
|
960
|
-
i0.ɵɵlistener("click", function
|
|
841
|
+
i0.ɵɵelementStart(5, "div", 160)(6, "button", 161);
|
|
842
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCategoryFilter("all")); });
|
|
961
843
|
i0.ɵɵtext(7, " All ");
|
|
962
844
|
i0.ɵɵelementEnd();
|
|
963
|
-
i0.ɵɵrepeaterCreate(8,
|
|
845
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template, 2, 3, "button", 162, _forTrack2);
|
|
964
846
|
i0.ɵɵelementEnd()();
|
|
965
|
-
i0.ɵɵelementStart(10, "div",
|
|
966
|
-
i0.ɵɵconditionalCreate(12,
|
|
847
|
+
i0.ɵɵelementStart(10, "div", 163)(11, "div", 164);
|
|
848
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_Template, 2, 0)(13, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_13_Template, 4, 0, "div", 165);
|
|
967
849
|
i0.ɵɵelementEnd()();
|
|
968
850
|
} if (rf & 2) {
|
|
969
|
-
const
|
|
851
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
970
852
|
i0.ɵɵadvance(3);
|
|
971
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
853
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.searchQuery);
|
|
972
854
|
i0.ɵɵadvance();
|
|
973
|
-
i0.ɵɵconditional(
|
|
855
|
+
i0.ɵɵconditional(ctx_r1.searchQuery ? 4 : -1);
|
|
974
856
|
i0.ɵɵadvance(2);
|
|
975
|
-
i0.ɵɵclassProp("active",
|
|
857
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === "all");
|
|
976
858
|
i0.ɵɵadvance(2);
|
|
977
|
-
i0.ɵɵrepeater(
|
|
859
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
978
860
|
i0.ɵɵadvance(4);
|
|
979
|
-
i0.ɵɵconditional(
|
|
861
|
+
i0.ɵɵconditional(ctx_r1.filteredEvents.length > 0 ? 12 : 13);
|
|
980
862
|
} }
|
|
981
|
-
function
|
|
863
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
982
864
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
983
|
-
i0.ɵɵelementStart(0, "button",
|
|
984
|
-
i0.ɵɵlistener("click", function
|
|
985
|
-
i0.ɵɵelement(1, "i",
|
|
865
|
+
i0.ɵɵelementStart(0, "button", 166);
|
|
866
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
867
|
+
i0.ɵɵelement(1, "i", 91);
|
|
986
868
|
i0.ɵɵelementEnd();
|
|
987
869
|
} }
|
|
988
|
-
function
|
|
870
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
989
871
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
990
|
-
i0.ɵɵelementStart(0, "button",
|
|
991
|
-
i0.ɵɵlistener("click", function
|
|
872
|
+
i0.ɵɵelementStart(0, "button", 161);
|
|
873
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template_button_click_0_listener() { const cat_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCategoryFilterByName(cat_r28.name)); });
|
|
992
874
|
i0.ɵɵtext(1);
|
|
993
875
|
i0.ɵɵelementEnd();
|
|
994
876
|
} if (rf & 2) {
|
|
995
877
|
const cat_r28 = ctx.$implicit;
|
|
996
|
-
const
|
|
997
|
-
i0.ɵɵclassProp("active",
|
|
878
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
879
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === cat_r28.name);
|
|
998
880
|
i0.ɵɵadvance();
|
|
999
881
|
i0.ɵɵtextInterpolate1(" ", cat_r28.name, " ");
|
|
1000
882
|
} }
|
|
1001
|
-
function
|
|
1002
|
-
i0.ɵɵelementStart(0, "span",
|
|
883
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
+
i0.ɵɵelementStart(0, "span", 201);
|
|
1003
885
|
i0.ɵɵtext(1);
|
|
1004
886
|
i0.ɵɵelementEnd();
|
|
1005
887
|
} if (rf & 2) {
|
|
@@ -1007,40 +889,40 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Conditional_10
|
|
|
1007
889
|
i0.ɵɵadvance();
|
|
1008
890
|
i0.ɵɵtextInterpolate(pattern_r30.count);
|
|
1009
891
|
} }
|
|
1010
|
-
function
|
|
892
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1011
893
|
i0.ɵɵtext(0);
|
|
1012
894
|
} if (rf & 2) {
|
|
1013
895
|
const pattern_r30 = i0.ɵɵnextContext().$implicit;
|
|
1014
896
|
i0.ɵɵtextInterpolate1(" ", pattern_r30.count, " ");
|
|
1015
897
|
} }
|
|
1016
|
-
function
|
|
1017
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
898
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Template(rf, ctx) { if (rf & 1) {
|
|
899
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 197);
|
|
1018
900
|
i0.ɵɵtext(3);
|
|
1019
901
|
i0.ɵɵelementEnd()();
|
|
1020
|
-
i0.ɵɵelementStart(4, "td",
|
|
902
|
+
i0.ɵɵelementStart(4, "td", 198);
|
|
1021
903
|
i0.ɵɵtext(5);
|
|
1022
904
|
i0.ɵɵelementEnd();
|
|
1023
|
-
i0.ɵɵelementStart(6, "td",
|
|
905
|
+
i0.ɵɵelementStart(6, "td", 199);
|
|
1024
906
|
i0.ɵɵtext(7);
|
|
1025
907
|
i0.ɵɵelementEnd();
|
|
1026
|
-
i0.ɵɵelementStart(8, "td",
|
|
908
|
+
i0.ɵɵelementStart(8, "td", 200);
|
|
1027
909
|
i0.ɵɵtext(9);
|
|
1028
910
|
i0.ɵɵelementEnd();
|
|
1029
|
-
i0.ɵɵelementStart(10, "td",
|
|
1030
|
-
i0.ɵɵconditionalCreate(11,
|
|
911
|
+
i0.ɵɵelementStart(10, "td", 54);
|
|
912
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_11_Template, 2, 1, "span", 201)(12, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_12_Template, 1, 1);
|
|
1031
913
|
i0.ɵɵelementEnd();
|
|
1032
|
-
i0.ɵɵelementStart(13, "td",
|
|
914
|
+
i0.ɵɵelementStart(13, "td", 54);
|
|
1033
915
|
i0.ɵɵtext(14);
|
|
1034
916
|
i0.ɵɵpipe(15, "number");
|
|
1035
917
|
i0.ɵɵelementEnd();
|
|
1036
|
-
i0.ɵɵelementStart(16, "td",
|
|
918
|
+
i0.ɵɵelementStart(16, "td", 54);
|
|
1037
919
|
i0.ɵɵtext(17);
|
|
1038
920
|
i0.ɵɵpipe(18, "number");
|
|
1039
921
|
i0.ɵɵelementEnd()();
|
|
1040
922
|
} if (rf & 2) {
|
|
1041
923
|
const pattern_r30 = ctx.$implicit;
|
|
1042
|
-
const
|
|
1043
|
-
i0.ɵɵclassProp("duplicate-row", pattern_r30.count >= 2)("slow-row", pattern_r30.avgElapsedMs >=
|
|
924
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
925
|
+
i0.ɵɵclassProp("duplicate-row", pattern_r30.count >= 2)("slow-row", pattern_r30.avgElapsedMs >= ctx_r1.slowQueryThresholdMs);
|
|
1044
926
|
i0.ɵɵadvance(2);
|
|
1045
927
|
i0.ɵɵclassMap("cat-" + pattern_r30.category.toLowerCase());
|
|
1046
928
|
i0.ɵɵadvance();
|
|
@@ -1052,123 +934,123 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Conditional_10
|
|
|
1052
934
|
i0.ɵɵadvance();
|
|
1053
935
|
i0.ɵɵproperty("title", pattern_r30.filter || "");
|
|
1054
936
|
i0.ɵɵadvance();
|
|
1055
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
937
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.truncateString(pattern_r30.filter, 30), " ");
|
|
1056
938
|
i0.ɵɵadvance(2);
|
|
1057
939
|
i0.ɵɵconditional(pattern_r30.count >= 2 ? 11 : 12);
|
|
1058
940
|
i0.ɵɵadvance(2);
|
|
1059
|
-
i0.ɵɵclassProp("slow-value", pattern_r30.avgElapsedMs >=
|
|
941
|
+
i0.ɵɵclassProp("slow-value", pattern_r30.avgElapsedMs >= ctx_r1.slowQueryThresholdMs);
|
|
1060
942
|
i0.ɵɵadvance();
|
|
1061
943
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(15, 16, pattern_r30.avgElapsedMs, "1.1-1"), " ");
|
|
1062
944
|
i0.ɵɵadvance(3);
|
|
1063
945
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 19, pattern_r30.totalElapsedMs, "1.0-0"));
|
|
1064
946
|
} }
|
|
1065
|
-
function
|
|
947
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1066
948
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1067
|
-
i0.ɵɵelementStart(0, "div",
|
|
1068
|
-
i0.ɵɵlistener("click", function
|
|
949
|
+
i0.ɵɵelementStart(0, "div", 191)(1, "div", 192)(2, "table", 193)(3, "thead")(4, "tr")(5, "th", 194);
|
|
950
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("category")); });
|
|
1069
951
|
i0.ɵɵtext(6, " Category ");
|
|
1070
|
-
i0.ɵɵelement(7, "i",
|
|
952
|
+
i0.ɵɵelement(7, "i", 84);
|
|
1071
953
|
i0.ɵɵelementEnd();
|
|
1072
|
-
i0.ɵɵelementStart(8, "th",
|
|
1073
|
-
i0.ɵɵlistener("click", function
|
|
954
|
+
i0.ɵɵelementStart(8, "th", 194);
|
|
955
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_8_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("operation")); });
|
|
1074
956
|
i0.ɵɵtext(9, " Operation ");
|
|
1075
|
-
i0.ɵɵelement(10, "i",
|
|
957
|
+
i0.ɵɵelement(10, "i", 84);
|
|
1076
958
|
i0.ɵɵelementEnd();
|
|
1077
|
-
i0.ɵɵelementStart(11, "th",
|
|
1078
|
-
i0.ɵɵlistener("click", function
|
|
959
|
+
i0.ɵɵelementStart(11, "th", 194);
|
|
960
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_11_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("entity")); });
|
|
1079
961
|
i0.ɵɵtext(12, " Entity/Query ");
|
|
1080
|
-
i0.ɵɵelement(13, "i",
|
|
962
|
+
i0.ɵɵelement(13, "i", 84);
|
|
1081
963
|
i0.ɵɵelementEnd();
|
|
1082
964
|
i0.ɵɵelementStart(14, "th");
|
|
1083
965
|
i0.ɵɵtext(15, "Filter");
|
|
1084
966
|
i0.ɵɵelementEnd();
|
|
1085
|
-
i0.ɵɵelementStart(16, "th",
|
|
1086
|
-
i0.ɵɵlistener("click", function
|
|
967
|
+
i0.ɵɵelementStart(16, "th", 195);
|
|
968
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("count")); });
|
|
1087
969
|
i0.ɵɵtext(17, " Count ");
|
|
1088
|
-
i0.ɵɵelement(18, "i",
|
|
970
|
+
i0.ɵɵelement(18, "i", 84);
|
|
1089
971
|
i0.ɵɵelementEnd();
|
|
1090
|
-
i0.ɵɵelementStart(19, "th",
|
|
1091
|
-
i0.ɵɵlistener("click", function
|
|
972
|
+
i0.ɵɵelementStart(19, "th", 195);
|
|
973
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("avgMs")); });
|
|
1092
974
|
i0.ɵɵtext(20, " Avg (ms) ");
|
|
1093
|
-
i0.ɵɵelement(21, "i",
|
|
975
|
+
i0.ɵɵelement(21, "i", 84);
|
|
1094
976
|
i0.ɵɵelementEnd();
|
|
1095
|
-
i0.ɵɵelementStart(22, "th",
|
|
1096
|
-
i0.ɵɵlistener("click", function
|
|
977
|
+
i0.ɵɵelementStart(22, "th", 195);
|
|
978
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("totalMs")); });
|
|
1097
979
|
i0.ɵɵtext(23, " Total (ms) ");
|
|
1098
|
-
i0.ɵɵelement(24, "i",
|
|
980
|
+
i0.ɵɵelement(24, "i", 84);
|
|
1099
981
|
i0.ɵɵelementEnd()()();
|
|
1100
982
|
i0.ɵɵelementStart(25, "tbody");
|
|
1101
|
-
i0.ɵɵrepeaterCreate(26,
|
|
983
|
+
i0.ɵɵrepeaterCreate(26, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Template, 19, 22, "tr", 196, _forTrack5);
|
|
1102
984
|
i0.ɵɵelementEnd()()()();
|
|
1103
985
|
} if (rf & 2) {
|
|
1104
|
-
const
|
|
986
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1105
987
|
i0.ɵɵadvance(7);
|
|
1106
|
-
i0.ɵɵclassMap(
|
|
988
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("category"));
|
|
1107
989
|
i0.ɵɵadvance(3);
|
|
1108
|
-
i0.ɵɵclassMap(
|
|
990
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("operation"));
|
|
1109
991
|
i0.ɵɵadvance(3);
|
|
1110
|
-
i0.ɵɵclassMap(
|
|
992
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("entity"));
|
|
1111
993
|
i0.ɵɵadvance(5);
|
|
1112
|
-
i0.ɵɵclassMap(
|
|
994
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("count"));
|
|
1113
995
|
i0.ɵɵadvance(3);
|
|
1114
|
-
i0.ɵɵclassMap(
|
|
996
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("avgMs"));
|
|
1115
997
|
i0.ɵɵadvance(3);
|
|
1116
|
-
i0.ɵɵclassMap(
|
|
998
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("totalMs"));
|
|
1117
999
|
i0.ɵɵadvance(2);
|
|
1118
|
-
i0.ɵɵrepeater(
|
|
1000
|
+
i0.ɵɵrepeater(ctx_r1.filteredPatterns);
|
|
1119
1001
|
} }
|
|
1120
|
-
function
|
|
1121
|
-
i0.ɵɵelementStart(0, "div",
|
|
1122
|
-
i0.ɵɵelement(1, "i",
|
|
1002
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1003
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1004
|
+
i0.ɵɵelement(1, "i", 189);
|
|
1123
1005
|
i0.ɵɵelementStart(2, "p");
|
|
1124
1006
|
i0.ɵɵtext(3, "No telemetry data yet");
|
|
1125
1007
|
i0.ɵɵelementEnd();
|
|
1126
|
-
i0.ɵɵelementStart(4, "span",
|
|
1008
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1127
1009
|
i0.ɵɵtext(5, "Navigate around the app to generate performance data");
|
|
1128
1010
|
i0.ɵɵelementEnd()();
|
|
1129
1011
|
} }
|
|
1130
|
-
function
|
|
1131
|
-
i0.ɵɵelementStart(0, "div",
|
|
1132
|
-
i0.ɵɵelement(1, "i",
|
|
1012
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1013
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
1014
|
+
i0.ɵɵelement(1, "i", 202);
|
|
1133
1015
|
i0.ɵɵelementStart(2, "p");
|
|
1134
1016
|
i0.ɵɵtext(3, "No patterns match your filter");
|
|
1135
1017
|
i0.ɵɵelementEnd()();
|
|
1136
1018
|
} }
|
|
1137
|
-
function
|
|
1019
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template(rf, ctx) { if (rf & 1) {
|
|
1138
1020
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
1139
|
-
i0.ɵɵelementStart(0, "div",
|
|
1140
|
-
i0.ɵɵelement(2, "i",
|
|
1141
|
-
i0.ɵɵelementStart(3, "input",
|
|
1142
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1143
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1021
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "div", 156);
|
|
1022
|
+
i0.ɵɵelement(2, "i", 157);
|
|
1023
|
+
i0.ɵɵelementStart(3, "input", 190);
|
|
1024
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.searchQuery, $event) || (ctx_r1.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
1025
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSearchChange()); });
|
|
1144
1026
|
i0.ɵɵelementEnd();
|
|
1145
|
-
i0.ɵɵconditionalCreate(4,
|
|
1027
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template, 2, 0, "button", 159);
|
|
1146
1028
|
i0.ɵɵelementEnd();
|
|
1147
|
-
i0.ɵɵelementStart(5, "div",
|
|
1148
|
-
i0.ɵɵlistener("click", function
|
|
1029
|
+
i0.ɵɵelementStart(5, "div", 160)(6, "button", 161);
|
|
1030
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCategoryFilter("all")); });
|
|
1149
1031
|
i0.ɵɵtext(7, " All ");
|
|
1150
1032
|
i0.ɵɵelementEnd();
|
|
1151
|
-
i0.ɵɵrepeaterCreate(8,
|
|
1033
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template, 2, 3, "button", 162, _forTrack2);
|
|
1152
1034
|
i0.ɵɵelementEnd()();
|
|
1153
|
-
i0.ɵɵconditionalCreate(10,
|
|
1035
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template, 28, 12, "div", 191)(11, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_11_Template, 6, 0, "div", 28)(12, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_12_Template, 4, 0, "div", 165);
|
|
1154
1036
|
} if (rf & 2) {
|
|
1155
|
-
const
|
|
1037
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1156
1038
|
i0.ɵɵadvance(3);
|
|
1157
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
1039
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.searchQuery);
|
|
1158
1040
|
i0.ɵɵadvance();
|
|
1159
|
-
i0.ɵɵconditional(
|
|
1041
|
+
i0.ɵɵconditional(ctx_r1.searchQuery ? 4 : -1);
|
|
1160
1042
|
i0.ɵɵadvance(2);
|
|
1161
|
-
i0.ɵɵclassProp("active",
|
|
1043
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === "all");
|
|
1162
1044
|
i0.ɵɵadvance(2);
|
|
1163
|
-
i0.ɵɵrepeater(
|
|
1045
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
1164
1046
|
i0.ɵɵadvance(2);
|
|
1165
|
-
i0.ɵɵconditional(
|
|
1047
|
+
i0.ɵɵconditional(ctx_r1.filteredPatterns.length > 0 ? 10 : ctx_r1.telemetryEnabled && ctx_r1.telemetryPatterns.length === 0 ? 11 : ctx_r1.searchQuery || ctx_r1.categoryFilter !== "all" ? 12 : -1);
|
|
1166
1048
|
} }
|
|
1167
|
-
function
|
|
1168
|
-
i0.ɵɵelementStart(0, "div",
|
|
1049
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1050
|
+
i0.ɵɵelementStart(0, "div", 212)(1, "span", 216);
|
|
1169
1051
|
i0.ɵɵtext(2, "Entity:");
|
|
1170
1052
|
i0.ɵɵelementEnd();
|
|
1171
|
-
i0.ɵɵelementStart(3, "span",
|
|
1053
|
+
i0.ɵɵelementStart(3, "span", 217);
|
|
1172
1054
|
i0.ɵɵtext(4);
|
|
1173
1055
|
i0.ɵɵelementEnd()();
|
|
1174
1056
|
} if (rf & 2) {
|
|
@@ -1176,24 +1058,24 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1176
1058
|
i0.ɵɵadvance(4);
|
|
1177
1059
|
i0.ɵɵtextInterpolate(insight_r32.entityName);
|
|
1178
1060
|
} }
|
|
1179
|
-
function
|
|
1180
|
-
i0.ɵɵelementStart(0, "div",
|
|
1061
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1062
|
+
i0.ɵɵelementStart(0, "div", 212)(1, "span", 216);
|
|
1181
1063
|
i0.ɵɵtext(2, "Filter:");
|
|
1182
1064
|
i0.ɵɵelementEnd();
|
|
1183
|
-
i0.ɵɵelementStart(3, "code",
|
|
1065
|
+
i0.ɵɵelementStart(3, "code", 218);
|
|
1184
1066
|
i0.ɵɵtext(4);
|
|
1185
1067
|
i0.ɵɵelementEnd()();
|
|
1186
1068
|
} if (rf & 2) {
|
|
1187
1069
|
const insight_r32 = i0.ɵɵnextContext().$implicit;
|
|
1188
|
-
const
|
|
1070
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1189
1071
|
i0.ɵɵadvance(4);
|
|
1190
|
-
i0.ɵɵtextInterpolate(
|
|
1072
|
+
i0.ɵɵtextInterpolate(ctx_r1.getInsightFilter(insight_r32));
|
|
1191
1073
|
} }
|
|
1192
|
-
function
|
|
1193
|
-
i0.ɵɵelementStart(0, "div",
|
|
1074
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
1075
|
+
i0.ɵɵelementStart(0, "div", 222)(1, "span", 225);
|
|
1194
1076
|
i0.ɵɵtext(2);
|
|
1195
1077
|
i0.ɵɵelementEnd();
|
|
1196
|
-
i0.ɵɵelementStart(3, "span",
|
|
1078
|
+
i0.ɵɵelementStart(3, "span", 226);
|
|
1197
1079
|
i0.ɵɵtext(4);
|
|
1198
1080
|
i0.ɵɵelementEnd()();
|
|
1199
1081
|
} if (rf & 2) {
|
|
@@ -1203,8 +1085,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1203
1085
|
i0.ɵɵadvance(2);
|
|
1204
1086
|
i0.ɵɵtextInterpolate(param_r33.value);
|
|
1205
1087
|
} }
|
|
1206
|
-
function
|
|
1207
|
-
i0.ɵɵelementStart(0, "span",
|
|
1088
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1089
|
+
i0.ɵɵelementStart(0, "span", 229);
|
|
1208
1090
|
i0.ɵɵtext(1);
|
|
1209
1091
|
i0.ɵɵelementEnd();
|
|
1210
1092
|
} if (rf & 2) {
|
|
@@ -1212,32 +1094,32 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1212
1094
|
i0.ɵɵadvance();
|
|
1213
1095
|
i0.ɵɵtextInterpolate(event_r34.entityName);
|
|
1214
1096
|
} }
|
|
1215
|
-
function
|
|
1216
|
-
i0.ɵɵelementStart(0, "span",
|
|
1097
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1098
|
+
i0.ɵɵelementStart(0, "span", 230);
|
|
1217
1099
|
i0.ɵɵtext(1);
|
|
1218
1100
|
i0.ɵɵelementEnd();
|
|
1219
1101
|
} if (rf & 2) {
|
|
1220
1102
|
const event_r34 = i0.ɵɵnextContext().$implicit;
|
|
1221
|
-
const
|
|
1103
|
+
const ctx_r1 = i0.ɵɵnextContext(7);
|
|
1222
1104
|
i0.ɵɵadvance();
|
|
1223
|
-
i0.ɵɵtextInterpolate(
|
|
1105
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(event_r34.filter, 40));
|
|
1224
1106
|
} }
|
|
1225
|
-
function
|
|
1226
|
-
i0.ɵɵelementStart(0, "div",
|
|
1107
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
1108
|
+
i0.ɵɵelementStart(0, "div", 224)(1, "span", 227);
|
|
1227
1109
|
i0.ɵɵtext(2);
|
|
1228
1110
|
i0.ɵɵelementEnd();
|
|
1229
|
-
i0.ɵɵelementStart(3, "span",
|
|
1111
|
+
i0.ɵɵelementStart(3, "span", 228);
|
|
1230
1112
|
i0.ɵɵtext(4);
|
|
1231
1113
|
i0.ɵɵpipe(5, "number");
|
|
1232
1114
|
i0.ɵɵelementEnd();
|
|
1233
|
-
i0.ɵɵconditionalCreate(6,
|
|
1234
|
-
i0.ɵɵconditionalCreate(7,
|
|
1115
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template, 2, 1, "span", 229);
|
|
1116
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template, 2, 1, "span", 230);
|
|
1235
1117
|
i0.ɵɵelementEnd();
|
|
1236
1118
|
} if (rf & 2) {
|
|
1237
1119
|
const event_r34 = ctx.$implicit;
|
|
1238
|
-
const
|
|
1120
|
+
const ctx_r1 = i0.ɵɵnextContext(7);
|
|
1239
1121
|
i0.ɵɵadvance(2);
|
|
1240
|
-
i0.ɵɵtextInterpolate(
|
|
1122
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(event_r34.timestamp));
|
|
1241
1123
|
i0.ɵɵadvance(2);
|
|
1242
1124
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 4, event_r34.elapsedMs, "1.0-0"), "ms");
|
|
1243
1125
|
i0.ɵɵadvance(2);
|
|
@@ -1245,71 +1127,71 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1245
1127
|
i0.ɵɵadvance();
|
|
1246
1128
|
i0.ɵɵconditional(event_r34.filter ? 7 : -1);
|
|
1247
1129
|
} }
|
|
1248
|
-
function
|
|
1249
|
-
i0.ɵɵelementStart(0, "div",
|
|
1130
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1131
|
+
i0.ɵɵelementStart(0, "div", 219)(1, "div", 220);
|
|
1250
1132
|
i0.ɵɵtext(2, "Full Parameters");
|
|
1251
1133
|
i0.ɵɵelementEnd();
|
|
1252
|
-
i0.ɵɵelementStart(3, "div",
|
|
1253
|
-
i0.ɵɵrepeaterCreate(4,
|
|
1134
|
+
i0.ɵɵelementStart(3, "div", 221);
|
|
1135
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template, 5, 2, "div", 222, _forTrack6);
|
|
1254
1136
|
i0.ɵɵelementEnd()();
|
|
1255
|
-
i0.ɵɵelementStart(6, "div",
|
|
1137
|
+
i0.ɵɵelementStart(6, "div", 219)(7, "div", 220);
|
|
1256
1138
|
i0.ɵɵtext(8);
|
|
1257
1139
|
i0.ɵɵelementEnd();
|
|
1258
|
-
i0.ɵɵelementStart(9, "div",
|
|
1259
|
-
i0.ɵɵrepeaterCreate(10,
|
|
1140
|
+
i0.ɵɵelementStart(9, "div", 223);
|
|
1141
|
+
i0.ɵɵrepeaterCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template, 8, 7, "div", 224, _forTrack3);
|
|
1260
1142
|
i0.ɵɵelementEnd()();
|
|
1261
1143
|
} if (rf & 2) {
|
|
1262
1144
|
const insight_r32 = i0.ɵɵnextContext(2).$implicit;
|
|
1263
|
-
const
|
|
1145
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1264
1146
|
i0.ɵɵadvance(4);
|
|
1265
|
-
i0.ɵɵrepeater(
|
|
1147
|
+
i0.ɵɵrepeater(ctx_r1.getEventParams(insight_r32.relatedEvents[0]));
|
|
1266
1148
|
i0.ɵɵadvance(4);
|
|
1267
1149
|
i0.ɵɵtextInterpolate1("Related Calls (", insight_r32.relatedEvents.length, ")");
|
|
1268
1150
|
i0.ɵɵadvance(2);
|
|
1269
1151
|
i0.ɵɵrepeater(insight_r32.relatedEvents);
|
|
1270
1152
|
} }
|
|
1271
|
-
function
|
|
1272
|
-
i0.ɵɵelementStart(0, "div",
|
|
1273
|
-
i0.ɵɵconditionalCreate(1,
|
|
1153
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1154
|
+
i0.ɵɵelementStart(0, "div", 215);
|
|
1155
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template, 12, 1);
|
|
1274
1156
|
i0.ɵɵelementEnd();
|
|
1275
1157
|
} if (rf & 2) {
|
|
1276
1158
|
const insight_r32 = i0.ɵɵnextContext().$implicit;
|
|
1277
1159
|
i0.ɵɵadvance();
|
|
1278
1160
|
i0.ɵɵconditional(insight_r32.relatedEvents.length > 0 ? 1 : -1);
|
|
1279
1161
|
} }
|
|
1280
|
-
function
|
|
1162
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
1281
1163
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1282
|
-
i0.ɵɵelementStart(0, "div",
|
|
1283
|
-
i0.ɵɵlistener("click", function
|
|
1284
|
-
i0.ɵɵelement(2, "i",
|
|
1285
|
-
i0.ɵɵelementStart(3, "span",
|
|
1164
|
+
i0.ɵɵelementStart(0, "div", 206)(1, "div", 207);
|
|
1165
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template_div_click_1_listener() { const insight_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleInsightExpanded(insight_r32)); });
|
|
1166
|
+
i0.ɵɵelement(2, "i", 84);
|
|
1167
|
+
i0.ɵɵelementStart(3, "span", 208);
|
|
1286
1168
|
i0.ɵɵtext(4);
|
|
1287
1169
|
i0.ɵɵelementEnd();
|
|
1288
|
-
i0.ɵɵelementStart(5, "span",
|
|
1170
|
+
i0.ɵɵelementStart(5, "span", 209);
|
|
1289
1171
|
i0.ɵɵtext(6);
|
|
1290
1172
|
i0.ɵɵelementEnd();
|
|
1291
|
-
i0.ɵɵelement(7, "i",
|
|
1173
|
+
i0.ɵɵelement(7, "i", 210);
|
|
1292
1174
|
i0.ɵɵelementEnd();
|
|
1293
|
-
i0.ɵɵelementStart(8, "div",
|
|
1294
|
-
i0.ɵɵconditionalCreate(9,
|
|
1295
|
-
i0.ɵɵconditionalCreate(10,
|
|
1175
|
+
i0.ɵɵelementStart(8, "div", 211);
|
|
1176
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_9_Template, 5, 1, "div", 212);
|
|
1177
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_10_Template, 5, 1, "div", 212);
|
|
1296
1178
|
i0.ɵɵelementEnd();
|
|
1297
|
-
i0.ɵɵelementStart(11, "div",
|
|
1179
|
+
i0.ɵɵelementStart(11, "div", 213);
|
|
1298
1180
|
i0.ɵɵtext(12);
|
|
1299
1181
|
i0.ɵɵelementEnd();
|
|
1300
|
-
i0.ɵɵelementStart(13, "div",
|
|
1301
|
-
i0.ɵɵelement(14, "i",
|
|
1182
|
+
i0.ɵɵelementStart(13, "div", 214);
|
|
1183
|
+
i0.ɵɵelement(14, "i", 46);
|
|
1302
1184
|
i0.ɵɵtext(15);
|
|
1303
1185
|
i0.ɵɵelementEnd();
|
|
1304
|
-
i0.ɵɵconditionalCreate(16,
|
|
1186
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Template, 2, 1, "div", 215);
|
|
1305
1187
|
i0.ɵɵelementEnd();
|
|
1306
1188
|
} if (rf & 2) {
|
|
1307
1189
|
const insight_r32 = ctx.$implicit;
|
|
1308
|
-
const
|
|
1309
|
-
i0.ɵɵclassMap(
|
|
1190
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1191
|
+
i0.ɵɵclassMap(ctx_r1.getSeverityClass(insight_r32.severity));
|
|
1310
1192
|
i0.ɵɵclassProp("expanded", insight_r32.expanded);
|
|
1311
1193
|
i0.ɵɵadvance(2);
|
|
1312
|
-
i0.ɵɵclassMap(
|
|
1194
|
+
i0.ɵɵclassMap(ctx_r1.getSeverityIcon(insight_r32.severity));
|
|
1313
1195
|
i0.ɵɵadvance(2);
|
|
1314
1196
|
i0.ɵɵtextInterpolate(insight_r32.title);
|
|
1315
1197
|
i0.ɵɵadvance(2);
|
|
@@ -1319,7 +1201,7 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1319
1201
|
i0.ɵɵadvance(2);
|
|
1320
1202
|
i0.ɵɵconditional(insight_r32.entityName ? 9 : -1);
|
|
1321
1203
|
i0.ɵɵadvance();
|
|
1322
|
-
i0.ɵɵconditional(
|
|
1204
|
+
i0.ɵɵconditional(ctx_r1.getInsightFilter(insight_r32) ? 10 : -1);
|
|
1323
1205
|
i0.ɵɵadvance(2);
|
|
1324
1206
|
i0.ɵɵtextInterpolate(insight_r32.message);
|
|
1325
1207
|
i0.ɵɵadvance(3);
|
|
@@ -1327,175 +1209,175 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1327
1209
|
i0.ɵɵadvance();
|
|
1328
1210
|
i0.ɵɵconditional(insight_r32.expanded ? 16 : -1);
|
|
1329
1211
|
} }
|
|
1330
|
-
function
|
|
1331
|
-
i0.ɵɵelementStart(0, "div",
|
|
1332
|
-
i0.ɵɵrepeaterCreate(2,
|
|
1212
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1213
|
+
i0.ɵɵelementStart(0, "div", 203)(1, "div", 204);
|
|
1214
|
+
i0.ɵɵrepeaterCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template, 17, 17, "div", 205, _forTrack3);
|
|
1333
1215
|
i0.ɵɵelementEnd()();
|
|
1334
1216
|
} if (rf & 2) {
|
|
1335
|
-
const
|
|
1217
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1336
1218
|
i0.ɵɵadvance(2);
|
|
1337
|
-
i0.ɵɵrepeater(
|
|
1219
|
+
i0.ɵɵrepeater(ctx_r1.telemetryInsights);
|
|
1338
1220
|
} }
|
|
1339
|
-
function
|
|
1340
|
-
i0.ɵɵelementStart(0, "div",
|
|
1341
|
-
i0.ɵɵelement(1, "i",
|
|
1221
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1222
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1223
|
+
i0.ɵɵelement(1, "i", 231);
|
|
1342
1224
|
i0.ɵɵelementStart(2, "p");
|
|
1343
1225
|
i0.ɵɵtext(3, "No optimization insights");
|
|
1344
1226
|
i0.ɵɵelementEnd();
|
|
1345
|
-
i0.ɵɵelementStart(4, "span",
|
|
1227
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1346
1228
|
i0.ɵɵtext(5, "Insights will appear when potential optimizations are detected");
|
|
1347
1229
|
i0.ɵɵelementEnd()();
|
|
1348
1230
|
} }
|
|
1349
|
-
function
|
|
1350
|
-
i0.ɵɵconditionalCreate(0,
|
|
1231
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Template(rf, ctx) { if (rf & 1) {
|
|
1232
|
+
i0.ɵɵconditionalCreate(0, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_Template, 4, 0, "div", 203)(1, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_1_Template, 6, 0, "div", 28);
|
|
1351
1233
|
} if (rf & 2) {
|
|
1352
|
-
const
|
|
1353
|
-
i0.ɵɵconditional(
|
|
1234
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1235
|
+
i0.ɵɵconditional(ctx_r1.telemetryInsights.length > 0 ? 0 : 1);
|
|
1354
1236
|
} }
|
|
1355
|
-
function
|
|
1237
|
+
function SystemDiagnosticsComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1356
1238
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
1357
|
-
i0.ɵɵelementStart(0, "div",
|
|
1358
|
-
i0.ɵɵelement(3, "i",
|
|
1239
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 22)(2, "h3");
|
|
1240
|
+
i0.ɵɵelement(3, "i", 63);
|
|
1359
1241
|
i0.ɵɵtext(4, " Performance Telemetry ");
|
|
1360
1242
|
i0.ɵɵelementEnd();
|
|
1361
|
-
i0.ɵɵelementStart(5, "div",
|
|
1362
|
-
i0.ɵɵlistener("click", function
|
|
1363
|
-
i0.ɵɵelement(8, "i",
|
|
1243
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "div", 64)(7, "button", 65);
|
|
1244
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setTelemetrySource("client")); });
|
|
1245
|
+
i0.ɵɵelement(8, "i", 66);
|
|
1364
1246
|
i0.ɵɵtext(9, " Client ");
|
|
1365
1247
|
i0.ɵɵelementEnd();
|
|
1366
|
-
i0.ɵɵelementStart(10, "button",
|
|
1367
|
-
i0.ɵɵlistener("click", function
|
|
1368
|
-
i0.ɵɵelement(11, "i",
|
|
1248
|
+
i0.ɵɵelementStart(10, "button", 65);
|
|
1249
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setTelemetrySource("server")); });
|
|
1250
|
+
i0.ɵɵelement(11, "i", 67);
|
|
1369
1251
|
i0.ɵɵtext(12, " Server ");
|
|
1370
1252
|
i0.ɵɵelementEnd()();
|
|
1371
|
-
i0.ɵɵelement(13, "span",
|
|
1372
|
-
i0.ɵɵconditionalCreate(14,
|
|
1373
|
-
i0.ɵɵconditionalCreate(16,
|
|
1253
|
+
i0.ɵɵelement(13, "span", 68);
|
|
1254
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template, 6, 8)(15, SystemDiagnosticsComponent_Conditional_17_Conditional_15_Template, 5, 9, "span", 69);
|
|
1255
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_16_Template, 2, 0, "span", 70);
|
|
1374
1256
|
i0.ɵɵelementEnd()();
|
|
1375
|
-
i0.ɵɵconditionalCreate(17,
|
|
1376
|
-
i0.ɵɵelementStart(18, "div",
|
|
1377
|
-
i0.ɵɵlistener("click", function
|
|
1378
|
-
i0.ɵɵelement(20, "i",
|
|
1257
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template, 5, 1, "div", 71);
|
|
1258
|
+
i0.ɵɵelementStart(18, "div", 72)(19, "button", 73);
|
|
1259
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("monitor")); });
|
|
1260
|
+
i0.ɵɵelement(20, "i", 74);
|
|
1379
1261
|
i0.ɵɵelementStart(21, "span");
|
|
1380
1262
|
i0.ɵɵtext(22, "Monitor");
|
|
1381
1263
|
i0.ɵɵelementEnd()();
|
|
1382
|
-
i0.ɵɵelementStart(23, "button",
|
|
1383
|
-
i0.ɵɵlistener("click", function
|
|
1384
|
-
i0.ɵɵelement(24, "i",
|
|
1264
|
+
i0.ɵɵelementStart(23, "button", 73);
|
|
1265
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("overview")); });
|
|
1266
|
+
i0.ɵɵelement(24, "i", 75);
|
|
1385
1267
|
i0.ɵɵelementStart(25, "span");
|
|
1386
1268
|
i0.ɵɵtext(26, "Overview");
|
|
1387
1269
|
i0.ɵɵelementEnd();
|
|
1388
|
-
i0.ɵɵconditionalCreate(27,
|
|
1270
|
+
i0.ɵɵconditionalCreate(27, SystemDiagnosticsComponent_Conditional_17_Conditional_27_Template, 2, 1, "span", 76);
|
|
1389
1271
|
i0.ɵɵelementEnd();
|
|
1390
|
-
i0.ɵɵelementStart(28, "button",
|
|
1391
|
-
i0.ɵɵlistener("click", function
|
|
1392
|
-
i0.ɵɵelement(29, "i",
|
|
1272
|
+
i0.ɵɵelementStart(28, "button", 73);
|
|
1273
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("events")); });
|
|
1274
|
+
i0.ɵɵelement(29, "i", 77);
|
|
1393
1275
|
i0.ɵɵelementStart(30, "span");
|
|
1394
1276
|
i0.ɵɵtext(31, "Events");
|
|
1395
1277
|
i0.ɵɵelementEnd();
|
|
1396
|
-
i0.ɵɵelementStart(32, "span",
|
|
1278
|
+
i0.ɵɵelementStart(32, "span", 78);
|
|
1397
1279
|
i0.ɵɵtext(33);
|
|
1398
1280
|
i0.ɵɵelementEnd()();
|
|
1399
|
-
i0.ɵɵelementStart(34, "button",
|
|
1400
|
-
i0.ɵɵlistener("click", function
|
|
1401
|
-
i0.ɵɵelement(35, "i",
|
|
1281
|
+
i0.ɵɵelementStart(34, "button", 73);
|
|
1282
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("patterns")); });
|
|
1283
|
+
i0.ɵɵelement(35, "i", 79);
|
|
1402
1284
|
i0.ɵɵelementStart(36, "span");
|
|
1403
1285
|
i0.ɵɵtext(37, "Patterns");
|
|
1404
1286
|
i0.ɵɵelementEnd();
|
|
1405
|
-
i0.ɵɵelementStart(38, "span",
|
|
1287
|
+
i0.ɵɵelementStart(38, "span", 78);
|
|
1406
1288
|
i0.ɵɵtext(39);
|
|
1407
1289
|
i0.ɵɵelementEnd()();
|
|
1408
|
-
i0.ɵɵelementStart(40, "button",
|
|
1409
|
-
i0.ɵɵlistener("click", function
|
|
1410
|
-
i0.ɵɵelement(41, "i",
|
|
1290
|
+
i0.ɵɵelementStart(40, "button", 73);
|
|
1291
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_40_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("insights")); });
|
|
1292
|
+
i0.ɵɵelement(41, "i", 56);
|
|
1411
1293
|
i0.ɵɵelementStart(42, "span");
|
|
1412
1294
|
i0.ɵɵtext(43, "Insights");
|
|
1413
1295
|
i0.ɵɵelementEnd();
|
|
1414
|
-
i0.ɵɵconditionalCreate(44,
|
|
1296
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_17_Conditional_44_Template, 2, 1, "span", 80);
|
|
1415
1297
|
i0.ɵɵelementEnd()();
|
|
1416
|
-
i0.ɵɵelementStart(45, "div",
|
|
1417
|
-
i0.ɵɵconditionalCreate(46,
|
|
1418
|
-
i0.ɵɵconditionalCreate(47,
|
|
1419
|
-
i0.ɵɵconditionalCreate(48,
|
|
1420
|
-
i0.ɵɵconditionalCreate(49,
|
|
1421
|
-
i0.ɵɵconditionalCreate(50,
|
|
1422
|
-
i0.ɵɵconditionalCreate(51,
|
|
1298
|
+
i0.ɵɵelementStart(45, "div", 27);
|
|
1299
|
+
i0.ɵɵconditionalCreate(46, SystemDiagnosticsComponent_Conditional_17_Conditional_46_Template, 6, 0, "div", 81);
|
|
1300
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template, 48, 9, "div", 82);
|
|
1301
|
+
i0.ɵɵconditionalCreate(48, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Template, 24, 6);
|
|
1302
|
+
i0.ɵɵconditionalCreate(49, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template, 14, 5);
|
|
1303
|
+
i0.ɵɵconditionalCreate(50, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template, 13, 5);
|
|
1304
|
+
i0.ɵɵconditionalCreate(51, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Template, 2, 1);
|
|
1423
1305
|
i0.ɵɵelementEnd()();
|
|
1424
1306
|
} if (rf & 2) {
|
|
1425
|
-
const
|
|
1307
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1426
1308
|
i0.ɵɵadvance(7);
|
|
1427
|
-
i0.ɵɵclassProp("active",
|
|
1309
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetrySource === "client");
|
|
1428
1310
|
i0.ɵɵadvance(3);
|
|
1429
|
-
i0.ɵɵclassProp("active",
|
|
1311
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetrySource === "server");
|
|
1430
1312
|
i0.ɵɵadvance(4);
|
|
1431
|
-
i0.ɵɵconditional(
|
|
1313
|
+
i0.ɵɵconditional(ctx_r1.telemetrySource === "client" ? 14 : 15);
|
|
1432
1314
|
i0.ɵɵadvance(2);
|
|
1433
|
-
i0.ɵɵconditional(
|
|
1315
|
+
i0.ɵɵconditional(ctx_r1.serverTelemetryLoading ? 16 : -1);
|
|
1434
1316
|
i0.ɵɵadvance();
|
|
1435
|
-
i0.ɵɵconditional(
|
|
1317
|
+
i0.ɵɵconditional(ctx_r1.serverTelemetryError ? 17 : -1);
|
|
1436
1318
|
i0.ɵɵadvance(2);
|
|
1437
|
-
i0.ɵɵclassProp("active",
|
|
1319
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "monitor");
|
|
1438
1320
|
i0.ɵɵadvance(4);
|
|
1439
|
-
i0.ɵɵclassProp("active",
|
|
1321
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "overview");
|
|
1440
1322
|
i0.ɵɵadvance(4);
|
|
1441
|
-
i0.ɵɵconditional(
|
|
1323
|
+
i0.ɵɵconditional(ctx_r1.slowQueries.length > 0 ? 27 : -1);
|
|
1442
1324
|
i0.ɵɵadvance();
|
|
1443
|
-
i0.ɵɵclassProp("active",
|
|
1325
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "events");
|
|
1444
1326
|
i0.ɵɵadvance(5);
|
|
1445
|
-
i0.ɵɵtextInterpolate((
|
|
1327
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalEvents) || 0);
|
|
1446
1328
|
i0.ɵɵadvance();
|
|
1447
|
-
i0.ɵɵclassProp("active",
|
|
1329
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "patterns");
|
|
1448
1330
|
i0.ɵɵadvance(5);
|
|
1449
|
-
i0.ɵɵtextInterpolate((
|
|
1331
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalPatterns) || 0);
|
|
1450
1332
|
i0.ɵɵadvance();
|
|
1451
|
-
i0.ɵɵclassProp("active",
|
|
1333
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "insights");
|
|
1452
1334
|
i0.ɵɵadvance(4);
|
|
1453
|
-
i0.ɵɵconditional(
|
|
1335
|
+
i0.ɵɵconditional(ctx_r1.telemetryInsights.length > 0 ? 44 : -1);
|
|
1454
1336
|
i0.ɵɵadvance(2);
|
|
1455
|
-
i0.ɵɵconditional(!
|
|
1337
|
+
i0.ɵɵconditional(!ctx_r1.telemetryEnabled ? 46 : -1);
|
|
1456
1338
|
i0.ɵɵadvance();
|
|
1457
|
-
i0.ɵɵconditional(
|
|
1339
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "monitor" ? 47 : -1);
|
|
1458
1340
|
i0.ɵɵadvance();
|
|
1459
|
-
i0.ɵɵconditional(
|
|
1341
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "overview" ? 48 : -1);
|
|
1460
1342
|
i0.ɵɵadvance();
|
|
1461
|
-
i0.ɵɵconditional(
|
|
1343
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "events" ? 49 : -1);
|
|
1462
1344
|
i0.ɵɵadvance();
|
|
1463
|
-
i0.ɵɵconditional(
|
|
1345
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "patterns" ? 50 : -1);
|
|
1464
1346
|
i0.ɵɵadvance();
|
|
1465
|
-
i0.ɵɵconditional(
|
|
1347
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "insights" ? 51 : -1);
|
|
1466
1348
|
} }
|
|
1467
|
-
function
|
|
1468
|
-
i0.ɵɵelementStart(0, "div",
|
|
1469
|
-
i0.ɵɵelement(1, "i",
|
|
1349
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1350
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
1351
|
+
i0.ɵɵelement(1, "i", 89);
|
|
1470
1352
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
1471
1353
|
i0.ɵɵtext(4, "Cache not initialized.");
|
|
1472
1354
|
i0.ɵɵelementEnd();
|
|
1473
1355
|
i0.ɵɵtext(5, " The LocalCacheManager requires initialization with a storage provider during app startup. ");
|
|
1474
1356
|
i0.ɵɵelementEnd()();
|
|
1475
1357
|
} }
|
|
1476
|
-
function
|
|
1477
|
-
i0.ɵɵelementStart(0, "code",
|
|
1358
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1359
|
+
i0.ɵɵelementStart(0, "code", 251);
|
|
1478
1360
|
i0.ɵɵtext(1);
|
|
1479
1361
|
i0.ɵɵelementEnd();
|
|
1480
1362
|
} if (rf & 2) {
|
|
1481
1363
|
const entry_r39 = i0.ɵɵnextContext().$implicit;
|
|
1482
|
-
const
|
|
1364
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1483
1365
|
i0.ɵɵadvance();
|
|
1484
|
-
i0.ɵɵtextInterpolate(
|
|
1366
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(entry_r39.fingerprint, 20));
|
|
1485
1367
|
} }
|
|
1486
|
-
function
|
|
1368
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
1487
1369
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1488
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
1370
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 249);
|
|
1489
1371
|
i0.ɵɵtext(3);
|
|
1490
1372
|
i0.ɵɵelementEnd()();
|
|
1491
|
-
i0.ɵɵelementStart(4, "td",
|
|
1373
|
+
i0.ɵɵelementStart(4, "td", 250);
|
|
1492
1374
|
i0.ɵɵtext(5);
|
|
1493
|
-
i0.ɵɵconditionalCreate(6,
|
|
1375
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Conditional_6_Template, 2, 1, "code", 251);
|
|
1494
1376
|
i0.ɵɵelementEnd();
|
|
1495
|
-
i0.ɵɵelementStart(7, "td",
|
|
1377
|
+
i0.ɵɵelementStart(7, "td", 54);
|
|
1496
1378
|
i0.ɵɵtext(8);
|
|
1497
1379
|
i0.ɵɵelementEnd();
|
|
1498
|
-
i0.ɵɵelementStart(9, "td",
|
|
1380
|
+
i0.ɵɵelementStart(9, "td", 54);
|
|
1499
1381
|
i0.ɵɵtext(10);
|
|
1500
1382
|
i0.ɵɵelementEnd();
|
|
1501
1383
|
i0.ɵɵelementStart(11, "td");
|
|
@@ -1504,13 +1386,13 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1504
1386
|
i0.ɵɵelementStart(13, "td");
|
|
1505
1387
|
i0.ɵɵtext(14);
|
|
1506
1388
|
i0.ɵɵelementEnd();
|
|
1507
|
-
i0.ɵɵelementStart(15, "td")(16, "button",
|
|
1508
|
-
i0.ɵɵlistener("click", function
|
|
1509
|
-
i0.ɵɵelement(17, "i",
|
|
1389
|
+
i0.ɵɵelementStart(15, "td")(16, "button", 252);
|
|
1390
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template_button_click_16_listener() { const entry_r39 = i0.ɵɵrestoreView(_r38).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.invalidateCacheEntry(entry_r39)); });
|
|
1391
|
+
i0.ɵɵelement(17, "i", 91);
|
|
1510
1392
|
i0.ɵɵelementEnd()()();
|
|
1511
1393
|
} if (rf & 2) {
|
|
1512
1394
|
const entry_r39 = ctx.$implicit;
|
|
1513
|
-
const
|
|
1395
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1514
1396
|
i0.ɵɵadvance(2);
|
|
1515
1397
|
i0.ɵɵclassMap("type-" + entry_r39.type);
|
|
1516
1398
|
i0.ɵɵadvance();
|
|
@@ -1520,54 +1402,54 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1520
1402
|
i0.ɵɵadvance();
|
|
1521
1403
|
i0.ɵɵconditional(entry_r39.fingerprint ? 6 : -1);
|
|
1522
1404
|
i0.ɵɵadvance(2);
|
|
1523
|
-
i0.ɵɵtextInterpolate(
|
|
1405
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes(entry_r39.sizeBytes));
|
|
1524
1406
|
i0.ɵɵadvance(2);
|
|
1525
1407
|
i0.ɵɵtextInterpolate(entry_r39.accessCount);
|
|
1526
1408
|
i0.ɵɵadvance(2);
|
|
1527
|
-
i0.ɵɵtextInterpolate(
|
|
1409
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatCacheTimestamp(entry_r39.cachedAt));
|
|
1528
1410
|
i0.ɵɵadvance(2);
|
|
1529
|
-
i0.ɵɵtextInterpolate(
|
|
1411
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatCacheTimestamp(entry_r39.lastAccessedAt));
|
|
1530
1412
|
} }
|
|
1531
|
-
function
|
|
1532
|
-
i0.ɵɵelementStart(0, "div",
|
|
1413
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1414
|
+
i0.ɵɵelementStart(0, "div", 248);
|
|
1533
1415
|
i0.ɵɵtext(1);
|
|
1534
1416
|
i0.ɵɵelementEnd();
|
|
1535
1417
|
} if (rf & 2) {
|
|
1536
|
-
const
|
|
1418
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1537
1419
|
i0.ɵɵadvance();
|
|
1538
|
-
i0.ɵɵtextInterpolate1(" Showing 50 of ",
|
|
1420
|
+
i0.ɵɵtextInterpolate1(" Showing 50 of ", ctx_r1.filteredCacheEntries.length, " entries ");
|
|
1539
1421
|
} }
|
|
1540
|
-
function
|
|
1422
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
1541
1423
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
1542
|
-
i0.ɵɵelementStart(0, "div",
|
|
1424
|
+
i0.ɵɵelementStart(0, "div", 243)(1, "div", 244)(2, "h4");
|
|
1543
1425
|
i0.ɵɵtext(3, "Cache Entries");
|
|
1544
1426
|
i0.ɵɵelementEnd();
|
|
1545
|
-
i0.ɵɵelementStart(4, "div",
|
|
1546
|
-
i0.ɵɵlistener("click", function
|
|
1427
|
+
i0.ɵɵelementStart(4, "div", 245)(5, "button", 161);
|
|
1428
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("all")); });
|
|
1547
1429
|
i0.ɵɵtext(6, "All");
|
|
1548
1430
|
i0.ɵɵelementEnd();
|
|
1549
|
-
i0.ɵɵelementStart(7, "button",
|
|
1550
|
-
i0.ɵɵlistener("click", function
|
|
1431
|
+
i0.ɵɵelementStart(7, "button", 161);
|
|
1432
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("dataset")); });
|
|
1551
1433
|
i0.ɵɵtext(8, "Datasets");
|
|
1552
1434
|
i0.ɵɵelementEnd();
|
|
1553
|
-
i0.ɵɵelementStart(9, "button",
|
|
1554
|
-
i0.ɵɵlistener("click", function
|
|
1435
|
+
i0.ɵɵelementStart(9, "button", 161);
|
|
1436
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runview")); });
|
|
1555
1437
|
i0.ɵɵtext(10, "RunViews");
|
|
1556
1438
|
i0.ɵɵelementEnd();
|
|
1557
|
-
i0.ɵɵelementStart(11, "button",
|
|
1558
|
-
i0.ɵɵlistener("click", function
|
|
1439
|
+
i0.ɵɵelementStart(11, "button", 161);
|
|
1440
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runquery")); });
|
|
1559
1441
|
i0.ɵɵtext(12, "RunQueries");
|
|
1560
1442
|
i0.ɵɵelementEnd()()();
|
|
1561
|
-
i0.ɵɵelementStart(13, "div",
|
|
1443
|
+
i0.ɵɵelementStart(13, "div", 246)(14, "table", 247)(15, "thead")(16, "tr")(17, "th");
|
|
1562
1444
|
i0.ɵɵtext(18, "Type");
|
|
1563
1445
|
i0.ɵɵelementEnd();
|
|
1564
1446
|
i0.ɵɵelementStart(19, "th");
|
|
1565
1447
|
i0.ɵɵtext(20, "Name");
|
|
1566
1448
|
i0.ɵɵelementEnd();
|
|
1567
|
-
i0.ɵɵelementStart(21, "th",
|
|
1449
|
+
i0.ɵɵelementStart(21, "th", 54);
|
|
1568
1450
|
i0.ɵɵtext(22, "Size");
|
|
1569
1451
|
i0.ɵɵelementEnd();
|
|
1570
|
-
i0.ɵɵelementStart(23, "th",
|
|
1452
|
+
i0.ɵɵelementStart(23, "th", 54);
|
|
1571
1453
|
i0.ɵɵtext(24, "Hits");
|
|
1572
1454
|
i0.ɵɵelementEnd();
|
|
1573
1455
|
i0.ɵɵelementStart(25, "th");
|
|
@@ -1579,191 +1461,191 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1579
1461
|
i0.ɵɵelement(29, "th");
|
|
1580
1462
|
i0.ɵɵelementEnd()();
|
|
1581
1463
|
i0.ɵɵelementStart(30, "tbody");
|
|
1582
|
-
i0.ɵɵrepeaterCreate(31,
|
|
1464
|
+
i0.ɵɵrepeaterCreate(31, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template, 18, 9, "tr", null, _forTrack6);
|
|
1583
1465
|
i0.ɵɵelementEnd()()();
|
|
1584
|
-
i0.ɵɵconditionalCreate(33,
|
|
1466
|
+
i0.ɵɵconditionalCreate(33, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Conditional_33_Template, 2, 1, "div", 248);
|
|
1585
1467
|
i0.ɵɵelementEnd();
|
|
1586
1468
|
} if (rf & 2) {
|
|
1587
|
-
const
|
|
1469
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1588
1470
|
i0.ɵɵadvance(5);
|
|
1589
|
-
i0.ɵɵclassProp("active",
|
|
1471
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "all");
|
|
1590
1472
|
i0.ɵɵadvance(2);
|
|
1591
|
-
i0.ɵɵclassProp("active",
|
|
1473
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "dataset");
|
|
1592
1474
|
i0.ɵɵadvance(2);
|
|
1593
|
-
i0.ɵɵclassProp("active",
|
|
1475
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "runview");
|
|
1594
1476
|
i0.ɵɵadvance(2);
|
|
1595
|
-
i0.ɵɵclassProp("active",
|
|
1477
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "runquery");
|
|
1596
1478
|
i0.ɵɵadvance(20);
|
|
1597
|
-
i0.ɵɵrepeater(
|
|
1479
|
+
i0.ɵɵrepeater(ctx_r1.filteredCacheEntries.slice(0, 50));
|
|
1598
1480
|
i0.ɵɵadvance(2);
|
|
1599
|
-
i0.ɵɵconditional(
|
|
1481
|
+
i0.ɵɵconditional(ctx_r1.filteredCacheEntries.length > 50 ? 33 : -1);
|
|
1600
1482
|
} }
|
|
1601
|
-
function
|
|
1602
|
-
i0.ɵɵelementStart(0, "div",
|
|
1603
|
-
i0.ɵɵelement(1, "i",
|
|
1483
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
1484
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1485
|
+
i0.ɵɵelement(1, "i", 232);
|
|
1604
1486
|
i0.ɵɵelementStart(2, "p");
|
|
1605
1487
|
i0.ɵɵtext(3, "No cached data");
|
|
1606
1488
|
i0.ɵɵelementEnd();
|
|
1607
|
-
i0.ɵɵelementStart(4, "span",
|
|
1489
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1608
1490
|
i0.ɵɵtext(5, "Data will be cached as you use the application");
|
|
1609
1491
|
i0.ɵɵelementEnd()();
|
|
1610
1492
|
} }
|
|
1611
|
-
function
|
|
1493
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1612
1494
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1613
|
-
i0.ɵɵelementStart(0, "div",
|
|
1495
|
+
i0.ɵɵelementStart(0, "div", 233)(1, "div", 123)(2, "div", 124);
|
|
1614
1496
|
i0.ɵɵtext(3);
|
|
1615
1497
|
i0.ɵɵelementEnd();
|
|
1616
|
-
i0.ɵɵelementStart(4, "div",
|
|
1498
|
+
i0.ɵɵelementStart(4, "div", 125);
|
|
1617
1499
|
i0.ɵɵtext(5, "Total Entries");
|
|
1618
1500
|
i0.ɵɵelementEnd()();
|
|
1619
|
-
i0.ɵɵelementStart(6, "div",
|
|
1501
|
+
i0.ɵɵelementStart(6, "div", 123)(7, "div", 124);
|
|
1620
1502
|
i0.ɵɵtext(8);
|
|
1621
1503
|
i0.ɵɵelementEnd();
|
|
1622
|
-
i0.ɵɵelementStart(9, "div",
|
|
1504
|
+
i0.ɵɵelementStart(9, "div", 125);
|
|
1623
1505
|
i0.ɵɵtext(10, "Total Size");
|
|
1624
1506
|
i0.ɵɵelementEnd()();
|
|
1625
|
-
i0.ɵɵelementStart(11, "div",
|
|
1507
|
+
i0.ɵɵelementStart(11, "div", 123)(12, "div", 124);
|
|
1626
1508
|
i0.ɵɵtext(13);
|
|
1627
1509
|
i0.ɵɵelementEnd();
|
|
1628
|
-
i0.ɵɵelementStart(14, "div",
|
|
1510
|
+
i0.ɵɵelementStart(14, "div", 125);
|
|
1629
1511
|
i0.ɵɵtext(15, "Cache Hits");
|
|
1630
1512
|
i0.ɵɵelementEnd()();
|
|
1631
|
-
i0.ɵɵelementStart(16, "div",
|
|
1513
|
+
i0.ɵɵelementStart(16, "div", 123)(17, "div", 124);
|
|
1632
1514
|
i0.ɵɵtext(18);
|
|
1633
1515
|
i0.ɵɵelementEnd();
|
|
1634
|
-
i0.ɵɵelementStart(19, "div",
|
|
1516
|
+
i0.ɵɵelementStart(19, "div", 125);
|
|
1635
1517
|
i0.ɵɵtext(20, "Cache Misses");
|
|
1636
1518
|
i0.ɵɵelementEnd()();
|
|
1637
|
-
i0.ɵɵelementStart(21, "div",
|
|
1519
|
+
i0.ɵɵelementStart(21, "div", 123)(22, "div", 124);
|
|
1638
1520
|
i0.ɵɵtext(23);
|
|
1639
1521
|
i0.ɵɵpipe(24, "number");
|
|
1640
1522
|
i0.ɵɵelementEnd();
|
|
1641
|
-
i0.ɵɵelementStart(25, "div",
|
|
1523
|
+
i0.ɵɵelementStart(25, "div", 125);
|
|
1642
1524
|
i0.ɵɵtext(26, "Hit Rate");
|
|
1643
1525
|
i0.ɵɵelementEnd()()();
|
|
1644
|
-
i0.ɵɵelementStart(27, "div",
|
|
1526
|
+
i0.ɵɵelementStart(27, "div", 234)(28, "h4");
|
|
1645
1527
|
i0.ɵɵtext(29, "By Type");
|
|
1646
1528
|
i0.ɵɵelementEnd();
|
|
1647
|
-
i0.ɵɵelementStart(30, "div",
|
|
1648
|
-
i0.ɵɵlistener("click", function
|
|
1649
|
-
i0.ɵɵelementStart(32, "span",
|
|
1650
|
-
i0.ɵɵelement(33, "i",
|
|
1529
|
+
i0.ɵɵelementStart(30, "div", 235)(31, "div", 236);
|
|
1530
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_31_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("dataset")); });
|
|
1531
|
+
i0.ɵɵelementStart(32, "span", 237);
|
|
1532
|
+
i0.ɵɵelement(33, "i", 42);
|
|
1651
1533
|
i0.ɵɵelementEnd();
|
|
1652
|
-
i0.ɵɵelementStart(34, "span",
|
|
1534
|
+
i0.ɵɵelementStart(34, "span", 238);
|
|
1653
1535
|
i0.ɵɵtext(35, "Datasets");
|
|
1654
1536
|
i0.ɵɵelementEnd();
|
|
1655
|
-
i0.ɵɵelementStart(36, "span",
|
|
1537
|
+
i0.ɵɵelementStart(36, "span", 239);
|
|
1656
1538
|
i0.ɵɵtext(37);
|
|
1657
1539
|
i0.ɵɵelementEnd();
|
|
1658
|
-
i0.ɵɵelementStart(38, "span",
|
|
1540
|
+
i0.ɵɵelementStart(38, "span", 240);
|
|
1659
1541
|
i0.ɵɵtext(39);
|
|
1660
1542
|
i0.ɵɵelementEnd()();
|
|
1661
|
-
i0.ɵɵelementStart(40, "div",
|
|
1662
|
-
i0.ɵɵlistener("click", function
|
|
1663
|
-
i0.ɵɵelementStart(41, "span",
|
|
1664
|
-
i0.ɵɵelement(42, "i",
|
|
1543
|
+
i0.ɵɵelementStart(40, "div", 236);
|
|
1544
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_40_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runview")); });
|
|
1545
|
+
i0.ɵɵelementStart(41, "span", 237);
|
|
1546
|
+
i0.ɵɵelement(42, "i", 241);
|
|
1665
1547
|
i0.ɵɵelementEnd();
|
|
1666
|
-
i0.ɵɵelementStart(43, "span",
|
|
1548
|
+
i0.ɵɵelementStart(43, "span", 238);
|
|
1667
1549
|
i0.ɵɵtext(44, "RunViews");
|
|
1668
1550
|
i0.ɵɵelementEnd();
|
|
1669
|
-
i0.ɵɵelementStart(45, "span",
|
|
1551
|
+
i0.ɵɵelementStart(45, "span", 239);
|
|
1670
1552
|
i0.ɵɵtext(46);
|
|
1671
1553
|
i0.ɵɵelementEnd();
|
|
1672
|
-
i0.ɵɵelementStart(47, "span",
|
|
1554
|
+
i0.ɵɵelementStart(47, "span", 240);
|
|
1673
1555
|
i0.ɵɵtext(48);
|
|
1674
1556
|
i0.ɵɵelementEnd()();
|
|
1675
|
-
i0.ɵɵelementStart(49, "div",
|
|
1676
|
-
i0.ɵɵlistener("click", function
|
|
1677
|
-
i0.ɵɵelementStart(50, "span",
|
|
1678
|
-
i0.ɵɵelement(51, "i",
|
|
1557
|
+
i0.ɵɵelementStart(49, "div", 236);
|
|
1558
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_49_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runquery")); });
|
|
1559
|
+
i0.ɵɵelementStart(50, "span", 237);
|
|
1560
|
+
i0.ɵɵelement(51, "i", 242);
|
|
1679
1561
|
i0.ɵɵelementEnd();
|
|
1680
|
-
i0.ɵɵelementStart(52, "span",
|
|
1562
|
+
i0.ɵɵelementStart(52, "span", 238);
|
|
1681
1563
|
i0.ɵɵtext(53, "RunQueries");
|
|
1682
1564
|
i0.ɵɵelementEnd();
|
|
1683
|
-
i0.ɵɵelementStart(54, "span",
|
|
1565
|
+
i0.ɵɵelementStart(54, "span", 239);
|
|
1684
1566
|
i0.ɵɵtext(55);
|
|
1685
1567
|
i0.ɵɵelementEnd();
|
|
1686
|
-
i0.ɵɵelementStart(56, "span",
|
|
1568
|
+
i0.ɵɵelementStart(56, "span", 240);
|
|
1687
1569
|
i0.ɵɵtext(57);
|
|
1688
1570
|
i0.ɵɵelementEnd()()()();
|
|
1689
|
-
i0.ɵɵconditionalCreate(58,
|
|
1571
|
+
i0.ɵɵconditionalCreate(58, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template, 34, 9, "div", 243)(59, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_59_Template, 6, 0, "div", 28);
|
|
1690
1572
|
} if (rf & 2) {
|
|
1691
|
-
const
|
|
1573
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1692
1574
|
i0.ɵɵadvance(3);
|
|
1693
|
-
i0.ɵɵtextInterpolate((
|
|
1575
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.totalEntries) || 0);
|
|
1694
1576
|
i0.ɵɵadvance(5);
|
|
1695
|
-
i0.ɵɵtextInterpolate(
|
|
1577
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.totalSizeBytes) || 0));
|
|
1696
1578
|
i0.ɵɵadvance(5);
|
|
1697
|
-
i0.ɵɵtextInterpolate((
|
|
1579
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.hits) || 0);
|
|
1698
1580
|
i0.ɵɵadvance(5);
|
|
1699
|
-
i0.ɵɵtextInterpolate((
|
|
1581
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.misses) || 0);
|
|
1700
1582
|
i0.ɵɵadvance(5);
|
|
1701
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(24, 12,
|
|
1583
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(24, 12, ctx_r1.cacheHitRate, "1.1-1"), "%");
|
|
1702
1584
|
i0.ɵɵadvance(14);
|
|
1703
|
-
i0.ɵɵtextInterpolate((
|
|
1585
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.dataset == null ? null : ctx_r1.cacheStats.byType.dataset.count) || 0);
|
|
1704
1586
|
i0.ɵɵadvance(2);
|
|
1705
|
-
i0.ɵɵtextInterpolate(
|
|
1587
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.dataset == null ? null : ctx_r1.cacheStats.byType.dataset.sizeBytes) || 0));
|
|
1706
1588
|
i0.ɵɵadvance(7);
|
|
1707
|
-
i0.ɵɵtextInterpolate((
|
|
1589
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runview == null ? null : ctx_r1.cacheStats.byType.runview.count) || 0);
|
|
1708
1590
|
i0.ɵɵadvance(2);
|
|
1709
|
-
i0.ɵɵtextInterpolate(
|
|
1591
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runview == null ? null : ctx_r1.cacheStats.byType.runview.sizeBytes) || 0));
|
|
1710
1592
|
i0.ɵɵadvance(7);
|
|
1711
|
-
i0.ɵɵtextInterpolate((
|
|
1593
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runquery == null ? null : ctx_r1.cacheStats.byType.runquery.count) || 0);
|
|
1712
1594
|
i0.ɵɵadvance(2);
|
|
1713
|
-
i0.ɵɵtextInterpolate(
|
|
1595
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runquery == null ? null : ctx_r1.cacheStats.byType.runquery.sizeBytes) || 0));
|
|
1714
1596
|
i0.ɵɵadvance();
|
|
1715
|
-
i0.ɵɵconditional(
|
|
1597
|
+
i0.ɵɵconditional(ctx_r1.filteredCacheEntries.length > 0 ? 58 : ctx_r1.cacheStats && ctx_r1.cacheStats.totalEntries === 0 ? 59 : -1);
|
|
1716
1598
|
} }
|
|
1717
|
-
function
|
|
1599
|
+
function SystemDiagnosticsComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1718
1600
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
1719
|
-
i0.ɵɵelementStart(0, "div",
|
|
1720
|
-
i0.ɵɵelement(3, "i",
|
|
1601
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
1602
|
+
i0.ɵɵelement(3, "i", 232);
|
|
1721
1603
|
i0.ɵɵtext(4, " Local Cache ");
|
|
1722
1604
|
i0.ɵɵelementEnd();
|
|
1723
|
-
i0.ɵɵelementStart(5, "div",
|
|
1724
|
-
i0.ɵɵlistener("click", function
|
|
1725
|
-
i0.ɵɵelement(7, "i",
|
|
1605
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "button", 25);
|
|
1606
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clearAllCache()); });
|
|
1607
|
+
i0.ɵɵelement(7, "i", 85);
|
|
1726
1608
|
i0.ɵɵtext(8, " Clear All ");
|
|
1727
1609
|
i0.ɵɵelementEnd()()();
|
|
1728
|
-
i0.ɵɵelementStart(9, "div",
|
|
1729
|
-
i0.ɵɵconditionalCreate(10,
|
|
1610
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
1611
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_18_Conditional_10_Template, 6, 0, "div", 81)(11, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template, 60, 15);
|
|
1730
1612
|
i0.ɵɵelementEnd()();
|
|
1731
1613
|
} if (rf & 2) {
|
|
1732
|
-
const
|
|
1614
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1733
1615
|
i0.ɵɵadvance(6);
|
|
1734
|
-
i0.ɵɵproperty("disabled", !
|
|
1616
|
+
i0.ɵɵproperty("disabled", !ctx_r1.cacheStats || ctx_r1.cacheStats.totalEntries === 0);
|
|
1735
1617
|
i0.ɵɵadvance(4);
|
|
1736
|
-
i0.ɵɵconditional(!
|
|
1618
|
+
i0.ɵɵconditional(!ctx_r1.cacheInitialized ? 10 : 11);
|
|
1737
1619
|
} }
|
|
1738
|
-
function
|
|
1739
|
-
i0.ɵɵelementStart(0, "div",
|
|
1620
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
1621
|
+
i0.ɵɵelementStart(0, "div", 263)(1, "span", 264);
|
|
1740
1622
|
i0.ɵɵtext(2, "Entity:");
|
|
1741
1623
|
i0.ɵɵelementEnd();
|
|
1742
|
-
i0.ɵɵelementStart(3, "span",
|
|
1624
|
+
i0.ɵɵelementStart(3, "span", 272);
|
|
1743
1625
|
i0.ɵɵtext(4);
|
|
1744
1626
|
i0.ɵɵelementEnd()();
|
|
1745
1627
|
} if (rf & 2) {
|
|
1746
|
-
const
|
|
1628
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1747
1629
|
i0.ɵɵadvance(4);
|
|
1748
|
-
i0.ɵɵtextInterpolate(
|
|
1630
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.entityName);
|
|
1749
1631
|
} }
|
|
1750
|
-
function
|
|
1751
|
-
i0.ɵɵelementStart(0, "div",
|
|
1632
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
1633
|
+
i0.ɵɵelementStart(0, "div", 263)(1, "span", 264);
|
|
1752
1634
|
i0.ɵɵtext(2, "Filter:");
|
|
1753
1635
|
i0.ɵɵelementEnd();
|
|
1754
|
-
i0.ɵɵelementStart(3, "code",
|
|
1636
|
+
i0.ɵɵelementStart(3, "code", 273);
|
|
1755
1637
|
i0.ɵɵtext(4);
|
|
1756
1638
|
i0.ɵɵelementEnd()();
|
|
1757
1639
|
} if (rf & 2) {
|
|
1758
|
-
const
|
|
1640
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1759
1641
|
i0.ɵɵadvance(4);
|
|
1760
|
-
i0.ɵɵtextInterpolate(
|
|
1642
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.filter);
|
|
1761
1643
|
} }
|
|
1762
|
-
function
|
|
1763
|
-
i0.ɵɵelementStart(0, "div",
|
|
1644
|
+
function SystemDiagnosticsComponent_Conditional_27_For_46_Template(rf, ctx) { if (rf & 1) {
|
|
1645
|
+
i0.ɵɵelementStart(0, "div", 268)(1, "span", 274);
|
|
1764
1646
|
i0.ɵɵtext(2);
|
|
1765
1647
|
i0.ɵɵelementEnd();
|
|
1766
|
-
i0.ɵɵelementStart(3, "span",
|
|
1648
|
+
i0.ɵɵelementStart(3, "span", 275);
|
|
1767
1649
|
i0.ɵɵtext(4);
|
|
1768
1650
|
i0.ɵɵelementEnd()();
|
|
1769
1651
|
} if (rf & 2) {
|
|
@@ -1773,178 +1655,178 @@ function SystemDiagnosticsComponent_Conditional_62_For_46_Template(rf, ctx) { if
|
|
|
1773
1655
|
i0.ɵɵadvance(2);
|
|
1774
1656
|
i0.ɵɵtextInterpolate(param_r41.value);
|
|
1775
1657
|
} }
|
|
1776
|
-
function
|
|
1777
|
-
i0.ɵɵelementStart(0, "div",
|
|
1778
|
-
i0.ɵɵelement(1, "i",
|
|
1658
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_47_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1659
|
+
i0.ɵɵelementStart(0, "div", 279);
|
|
1660
|
+
i0.ɵɵelement(1, "i", 89);
|
|
1779
1661
|
i0.ɵɵtext(2);
|
|
1780
1662
|
i0.ɵɵelementEnd();
|
|
1781
1663
|
} if (rf & 2) {
|
|
1782
|
-
const
|
|
1664
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1783
1665
|
i0.ɵɵadvance(2);
|
|
1784
|
-
i0.ɵɵtextInterpolate1(" This pattern has been called ",
|
|
1666
|
+
i0.ɵɵtextInterpolate1(" This pattern has been called ", ctx_r1.eventDetailPanel.relatedPattern.count, " times. Consider caching or batching. ");
|
|
1785
1667
|
} }
|
|
1786
|
-
function
|
|
1787
|
-
i0.ɵɵelementStart(0, "div",
|
|
1788
|
-
i0.ɵɵelement(2, "i",
|
|
1668
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
1669
|
+
i0.ɵɵelementStart(0, "div", 219)(1, "h4");
|
|
1670
|
+
i0.ɵɵelement(2, "i", 79);
|
|
1789
1671
|
i0.ɵɵtext(3, " Related Pattern");
|
|
1790
1672
|
i0.ɵɵelementEnd();
|
|
1791
|
-
i0.ɵɵelementStart(4, "div",
|
|
1673
|
+
i0.ɵɵelementStart(4, "div", 276)(5, "div", 277)(6, "span", 278);
|
|
1792
1674
|
i0.ɵɵtext(7);
|
|
1793
1675
|
i0.ɵɵelementEnd();
|
|
1794
|
-
i0.ɵɵelementStart(8, "span",
|
|
1676
|
+
i0.ɵɵelementStart(8, "span", 40);
|
|
1795
1677
|
i0.ɵɵtext(9, "Total Calls");
|
|
1796
1678
|
i0.ɵɵelementEnd()();
|
|
1797
|
-
i0.ɵɵelementStart(10, "div",
|
|
1679
|
+
i0.ɵɵelementStart(10, "div", 277)(11, "span", 278);
|
|
1798
1680
|
i0.ɵɵtext(12);
|
|
1799
1681
|
i0.ɵɵpipe(13, "number");
|
|
1800
1682
|
i0.ɵɵelementEnd();
|
|
1801
|
-
i0.ɵɵelementStart(14, "span",
|
|
1683
|
+
i0.ɵɵelementStart(14, "span", 40);
|
|
1802
1684
|
i0.ɵɵtext(15, "Avg Duration");
|
|
1803
1685
|
i0.ɵɵelementEnd()();
|
|
1804
|
-
i0.ɵɵelementStart(16, "div",
|
|
1686
|
+
i0.ɵɵelementStart(16, "div", 277)(17, "span", 278);
|
|
1805
1687
|
i0.ɵɵtext(18);
|
|
1806
1688
|
i0.ɵɵpipe(19, "number");
|
|
1807
1689
|
i0.ɵɵpipe(20, "number");
|
|
1808
1690
|
i0.ɵɵelementEnd();
|
|
1809
|
-
i0.ɵɵelementStart(21, "span",
|
|
1691
|
+
i0.ɵɵelementStart(21, "span", 40);
|
|
1810
1692
|
i0.ɵɵtext(22, "Range");
|
|
1811
1693
|
i0.ɵɵelementEnd()()();
|
|
1812
|
-
i0.ɵɵconditionalCreate(23,
|
|
1694
|
+
i0.ɵɵconditionalCreate(23, SystemDiagnosticsComponent_Conditional_27_Conditional_47_Conditional_23_Template, 3, 1, "div", 279);
|
|
1813
1695
|
i0.ɵɵelementEnd();
|
|
1814
1696
|
} if (rf & 2) {
|
|
1815
|
-
const
|
|
1697
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1816
1698
|
i0.ɵɵadvance(7);
|
|
1817
|
-
i0.ɵɵtextInterpolate(
|
|
1699
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.relatedPattern.count);
|
|
1818
1700
|
i0.ɵɵadvance(5);
|
|
1819
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(13, 5,
|
|
1701
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(13, 5, ctx_r1.eventDetailPanel.relatedPattern.avgElapsedMs, "1.1-1"), "ms");
|
|
1820
1702
|
i0.ɵɵadvance(6);
|
|
1821
|
-
i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(19, 8,
|
|
1703
|
+
i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(19, 8, ctx_r1.eventDetailPanel.relatedPattern.minElapsedMs, "1.0-0"), " - ", i0.ɵɵpipeBind2(20, 11, ctx_r1.eventDetailPanel.relatedPattern.maxElapsedMs, "1.0-0"), "ms");
|
|
1822
1704
|
i0.ɵɵadvance(5);
|
|
1823
|
-
i0.ɵɵconditional(
|
|
1705
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.relatedPattern.count >= 2 ? 23 : -1);
|
|
1824
1706
|
} }
|
|
1825
|
-
function
|
|
1707
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
1826
1708
|
const _r42 = i0.ɵɵgetCurrentView();
|
|
1827
|
-
i0.ɵɵelementStart(0, "button",
|
|
1828
|
-
i0.ɵɵlistener("click", function
|
|
1829
|
-
i0.ɵɵelement(1, "i",
|
|
1709
|
+
i0.ɵɵelementStart(0, "button", 270);
|
|
1710
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.filterByEntity(ctx_r1.eventDetailPanel.event.entityName)); });
|
|
1711
|
+
i0.ɵɵelement(1, "i", 202);
|
|
1830
1712
|
i0.ɵɵtext(2, " Filter by Entity ");
|
|
1831
1713
|
i0.ɵɵelementEnd();
|
|
1832
1714
|
} }
|
|
1833
|
-
function
|
|
1715
|
+
function SystemDiagnosticsComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1834
1716
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
1835
|
-
i0.ɵɵelementStart(0, "div",
|
|
1836
|
-
i0.ɵɵlistener("click", function
|
|
1717
|
+
i0.ɵɵelementStart(0, "div", 253);
|
|
1718
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEventDetailPanel()); });
|
|
1837
1719
|
i0.ɵɵelementEnd();
|
|
1838
|
-
i0.ɵɵelementStart(1, "div",
|
|
1720
|
+
i0.ɵɵelementStart(1, "div", 254)(2, "div", 22)(3, "div", 255)(4, "span", 197);
|
|
1839
1721
|
i0.ɵɵtext(5);
|
|
1840
1722
|
i0.ɵɵelementEnd();
|
|
1841
1723
|
i0.ɵɵelementStart(6, "h3");
|
|
1842
1724
|
i0.ɵɵtext(7, "Event Details");
|
|
1843
1725
|
i0.ɵɵelementEnd()();
|
|
1844
|
-
i0.ɵɵelementStart(8, "button",
|
|
1845
|
-
i0.ɵɵlistener("click", function
|
|
1846
|
-
i0.ɵɵelement(9, "i",
|
|
1726
|
+
i0.ɵɵelementStart(8, "button", 256);
|
|
1727
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEventDetailPanel()); });
|
|
1728
|
+
i0.ɵɵelement(9, "i", 91);
|
|
1847
1729
|
i0.ɵɵelementEnd()();
|
|
1848
|
-
i0.ɵɵelementStart(10, "div",
|
|
1730
|
+
i0.ɵɵelementStart(10, "div", 257)(11, "div", 258)(12, "div", 259)(13, "div", 260);
|
|
1849
1731
|
i0.ɵɵtext(14);
|
|
1850
1732
|
i0.ɵɵpipe(15, "number");
|
|
1851
1733
|
i0.ɵɵelementEnd();
|
|
1852
|
-
i0.ɵɵelementStart(16, "div",
|
|
1734
|
+
i0.ɵɵelementStart(16, "div", 261);
|
|
1853
1735
|
i0.ɵɵtext(17, "Duration");
|
|
1854
1736
|
i0.ɵɵelementEnd()();
|
|
1855
|
-
i0.ɵɵelementStart(18, "div",
|
|
1737
|
+
i0.ɵɵelementStart(18, "div", 259)(19, "div", 260);
|
|
1856
1738
|
i0.ɵɵtext(20);
|
|
1857
1739
|
i0.ɵɵelementEnd();
|
|
1858
|
-
i0.ɵɵelementStart(21, "div",
|
|
1740
|
+
i0.ɵɵelementStart(21, "div", 261);
|
|
1859
1741
|
i0.ɵɵtext(22, "Time");
|
|
1860
1742
|
i0.ɵɵelementEnd()();
|
|
1861
|
-
i0.ɵɵelementStart(23, "div",
|
|
1743
|
+
i0.ɵɵelementStart(23, "div", 259)(24, "div", 260);
|
|
1862
1744
|
i0.ɵɵtext(25);
|
|
1863
1745
|
i0.ɵɵelementEnd();
|
|
1864
|
-
i0.ɵɵelementStart(26, "div",
|
|
1746
|
+
i0.ɵɵelementStart(26, "div", 261);
|
|
1865
1747
|
i0.ɵɵtext(27, "Relative");
|
|
1866
1748
|
i0.ɵɵelementEnd()()();
|
|
1867
|
-
i0.ɵɵelementStart(28, "div",
|
|
1868
|
-
i0.ɵɵelement(30, "i",
|
|
1749
|
+
i0.ɵɵelementStart(28, "div", 219)(29, "h4");
|
|
1750
|
+
i0.ɵɵelement(30, "i", 242);
|
|
1869
1751
|
i0.ɵɵtext(31, " Operation");
|
|
1870
1752
|
i0.ɵɵelementEnd();
|
|
1871
|
-
i0.ɵɵelementStart(32, "div",
|
|
1753
|
+
i0.ɵɵelementStart(32, "div", 262)(33, "div", 263)(34, "span", 264);
|
|
1872
1754
|
i0.ɵɵtext(35, "Operation:");
|
|
1873
1755
|
i0.ɵɵelementEnd();
|
|
1874
|
-
i0.ɵɵelementStart(36, "span",
|
|
1756
|
+
i0.ɵɵelementStart(36, "span", 265);
|
|
1875
1757
|
i0.ɵɵtext(37);
|
|
1876
1758
|
i0.ɵɵelementEnd()();
|
|
1877
|
-
i0.ɵɵconditionalCreate(38,
|
|
1878
|
-
i0.ɵɵconditionalCreate(39,
|
|
1759
|
+
i0.ɵɵconditionalCreate(38, SystemDiagnosticsComponent_Conditional_27_Conditional_38_Template, 5, 1, "div", 263);
|
|
1760
|
+
i0.ɵɵconditionalCreate(39, SystemDiagnosticsComponent_Conditional_27_Conditional_39_Template, 5, 1, "div", 263);
|
|
1879
1761
|
i0.ɵɵelementEnd()();
|
|
1880
|
-
i0.ɵɵelementStart(40, "div",
|
|
1881
|
-
i0.ɵɵelement(42, "i",
|
|
1762
|
+
i0.ɵɵelementStart(40, "div", 219)(41, "h4");
|
|
1763
|
+
i0.ɵɵelement(42, "i", 266);
|
|
1882
1764
|
i0.ɵɵtext(43, " Parameters");
|
|
1883
1765
|
i0.ɵɵelementEnd();
|
|
1884
|
-
i0.ɵɵelementStart(44, "div",
|
|
1885
|
-
i0.ɵɵrepeaterCreate(45,
|
|
1766
|
+
i0.ɵɵelementStart(44, "div", 267);
|
|
1767
|
+
i0.ɵɵrepeaterCreate(45, SystemDiagnosticsComponent_Conditional_27_For_46_Template, 5, 2, "div", 268, _forTrack6);
|
|
1886
1768
|
i0.ɵɵelementEnd()();
|
|
1887
|
-
i0.ɵɵconditionalCreate(47,
|
|
1888
|
-
i0.ɵɵelementStart(48, "div",
|
|
1889
|
-
i0.ɵɵlistener("click", function
|
|
1890
|
-
i0.ɵɵelement(50, "i",
|
|
1769
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_27_Conditional_47_Template, 24, 14, "div", 219);
|
|
1770
|
+
i0.ɵɵelementStart(48, "div", 269)(49, "button", 270);
|
|
1771
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyEventToClipboard(ctx_r1.eventDetailPanel.event)); });
|
|
1772
|
+
i0.ɵɵelement(50, "i", 47);
|
|
1891
1773
|
i0.ɵɵtext(51, " Copy JSON ");
|
|
1892
1774
|
i0.ɵɵelementEnd();
|
|
1893
|
-
i0.ɵɵconditionalCreate(52,
|
|
1775
|
+
i0.ɵɵconditionalCreate(52, SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template, 3, 0, "button", 271);
|
|
1894
1776
|
i0.ɵɵelementEnd()()();
|
|
1895
1777
|
} if (rf & 2) {
|
|
1896
|
-
const
|
|
1778
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1897
1779
|
i0.ɵɵadvance();
|
|
1898
|
-
i0.ɵɵclassProp("open",
|
|
1780
|
+
i0.ɵɵclassProp("open", ctx_r1.eventDetailPanel.isOpen);
|
|
1899
1781
|
i0.ɵɵadvance(3);
|
|
1900
|
-
i0.ɵɵclassMap("cat-" +
|
|
1782
|
+
i0.ɵɵclassMap("cat-" + ctx_r1.eventDetailPanel.event.category.toLowerCase());
|
|
1901
1783
|
i0.ɵɵadvance();
|
|
1902
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1784
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.eventDetailPanel.event.category, " ");
|
|
1903
1785
|
i0.ɵɵadvance(8);
|
|
1904
|
-
i0.ɵɵclassProp("slow", (
|
|
1786
|
+
i0.ɵɵclassProp("slow", (ctx_r1.eventDetailPanel.event.elapsedMs || 0) >= ctx_r1.slowQueryThresholdMs);
|
|
1905
1787
|
i0.ɵɵadvance();
|
|
1906
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1788
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.eventDetailPanel.event.elapsedMs !== undefined ? i0.ɵɵpipeBind2(15, 15, ctx_r1.eventDetailPanel.event.elapsedMs, "1.0-0") + "ms" : "In Progress", " ");
|
|
1907
1789
|
i0.ɵɵadvance(6);
|
|
1908
|
-
i0.ɵɵtextInterpolate(
|
|
1790
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(ctx_r1.eventDetailPanel.event.timestamp));
|
|
1909
1791
|
i0.ɵɵadvance(5);
|
|
1910
|
-
i0.ɵɵtextInterpolate1("+",
|
|
1792
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.formatRelativeTime(ctx_r1.eventDetailPanel.event.startTime - ctx_r1.telemetryBootTime));
|
|
1911
1793
|
i0.ɵɵadvance(12);
|
|
1912
|
-
i0.ɵɵtextInterpolate(
|
|
1794
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.operation);
|
|
1913
1795
|
i0.ɵɵadvance();
|
|
1914
|
-
i0.ɵɵconditional(
|
|
1796
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.entityName ? 38 : -1);
|
|
1915
1797
|
i0.ɵɵadvance();
|
|
1916
|
-
i0.ɵɵconditional(
|
|
1798
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.filter ? 39 : -1);
|
|
1917
1799
|
i0.ɵɵadvance(6);
|
|
1918
|
-
i0.ɵɵrepeater(
|
|
1800
|
+
i0.ɵɵrepeater(ctx_r1.getEventParams(ctx_r1.eventDetailPanel.event));
|
|
1919
1801
|
i0.ɵɵadvance(2);
|
|
1920
|
-
i0.ɵɵconditional(
|
|
1802
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.relatedPattern ? 47 : -1);
|
|
1921
1803
|
i0.ɵɵadvance(5);
|
|
1922
|
-
i0.ɵɵconditional(
|
|
1804
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.entityName ? 52 : -1);
|
|
1923
1805
|
} }
|
|
1924
|
-
function
|
|
1925
|
-
i0.ɵɵelementStart(0, "div",
|
|
1806
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
1807
|
+
i0.ɵɵelementStart(0, "div", 285)(1, "span", 125);
|
|
1926
1808
|
i0.ɵɵtext(2, "Last Loaded");
|
|
1927
1809
|
i0.ɵɵelementEnd();
|
|
1928
|
-
i0.ɵɵelementStart(3, "span",
|
|
1810
|
+
i0.ɵɵelementStart(3, "span", 124);
|
|
1929
1811
|
i0.ɵɵtext(4);
|
|
1930
1812
|
i0.ɵɵelementEnd()();
|
|
1931
1813
|
} if (rf & 2) {
|
|
1932
|
-
const
|
|
1814
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1933
1815
|
i0.ɵɵadvance(4);
|
|
1934
|
-
i0.ɵɵtextInterpolate(
|
|
1816
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTime(ctx_r1.engineDetailPanel.engine.lastLoadedAt));
|
|
1935
1817
|
} }
|
|
1936
|
-
function
|
|
1937
|
-
i0.ɵɵelementStart(0, "div",
|
|
1938
|
-
i0.ɵɵelement(1, "i",
|
|
1818
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
1819
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
1820
|
+
i0.ɵɵelement(1, "i", 30);
|
|
1939
1821
|
i0.ɵɵelementStart(2, "p");
|
|
1940
1822
|
i0.ɵɵtext(3, "No config items found");
|
|
1941
1823
|
i0.ɵɵelementEnd()();
|
|
1942
1824
|
} }
|
|
1943
|
-
function
|
|
1944
|
-
i0.ɵɵelementStart(0, "div",
|
|
1825
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1826
|
+
i0.ɵɵelementStart(0, "div", 299)(1, "span", 220);
|
|
1945
1827
|
i0.ɵɵtext(2, "Filter:");
|
|
1946
1828
|
i0.ɵɵelementEnd();
|
|
1947
|
-
i0.ɵɵelementStart(3, "code",
|
|
1829
|
+
i0.ɵɵelementStart(3, "code", 300);
|
|
1948
1830
|
i0.ɵɵtext(4);
|
|
1949
1831
|
i0.ɵɵelementEnd()();
|
|
1950
1832
|
} if (rf & 2) {
|
|
@@ -1952,11 +1834,11 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1952
1834
|
i0.ɵɵadvance(4);
|
|
1953
1835
|
i0.ɵɵtextInterpolate(item_r45.filter);
|
|
1954
1836
|
} }
|
|
1955
|
-
function
|
|
1956
|
-
i0.ɵɵelementStart(0, "div",
|
|
1837
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1838
|
+
i0.ɵɵelementStart(0, "div", 299)(1, "span", 220);
|
|
1957
1839
|
i0.ɵɵtext(2, "Order By:");
|
|
1958
1840
|
i0.ɵɵelementEnd();
|
|
1959
|
-
i0.ɵɵelementStart(3, "code",
|
|
1841
|
+
i0.ɵɵelementStart(3, "code", 300);
|
|
1960
1842
|
i0.ɵɵtext(4);
|
|
1961
1843
|
i0.ɵɵelementEnd()();
|
|
1962
1844
|
} if (rf & 2) {
|
|
@@ -1964,11 +1846,11 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1964
1846
|
i0.ɵɵadvance(4);
|
|
1965
1847
|
i0.ɵɵtextInterpolate(item_r45.orderBy);
|
|
1966
1848
|
} }
|
|
1967
|
-
function
|
|
1968
|
-
i0.ɵɵelementStart(0, "div",
|
|
1849
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1850
|
+
i0.ɵɵelementStart(0, "div", 301)(1, "span", 220);
|
|
1969
1851
|
i0.ɵɵtext(2, "Error:");
|
|
1970
1852
|
i0.ɵɵelementEnd();
|
|
1971
|
-
i0.ɵɵelementStart(3, "span",
|
|
1853
|
+
i0.ɵɵelementStart(3, "span", 303);
|
|
1972
1854
|
i0.ɵɵtext(4);
|
|
1973
1855
|
i0.ɵɵelementEnd()();
|
|
1974
1856
|
} if (rf & 2) {
|
|
@@ -1976,28 +1858,28 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1976
1858
|
i0.ɵɵadvance(4);
|
|
1977
1859
|
i0.ɵɵtextInterpolate(item_r45.errorMessage);
|
|
1978
1860
|
} }
|
|
1979
|
-
function
|
|
1980
|
-
i0.ɵɵelement(0, "i",
|
|
1861
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1862
|
+
i0.ɵɵelement(0, "i", 312);
|
|
1981
1863
|
} }
|
|
1982
|
-
function
|
|
1983
|
-
i0.ɵɵelement(0, "i",
|
|
1864
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1865
|
+
i0.ɵɵelement(0, "i", 313);
|
|
1984
1866
|
} }
|
|
1985
|
-
function
|
|
1986
|
-
i0.ɵɵelement(0, "i",
|
|
1867
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1868
|
+
i0.ɵɵelement(0, "i", 312);
|
|
1987
1869
|
} }
|
|
1988
|
-
function
|
|
1989
|
-
i0.ɵɵelement(0, "i",
|
|
1870
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1871
|
+
i0.ɵɵelement(0, "i", 21);
|
|
1990
1872
|
} }
|
|
1991
|
-
function
|
|
1873
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1992
1874
|
const _r46 = i0.ɵɵgetCurrentView();
|
|
1993
|
-
i0.ɵɵelementStart(0, "button",
|
|
1994
|
-
i0.ɵɵlistener("click", function
|
|
1995
|
-
i0.ɵɵconditionalCreate(1,
|
|
1875
|
+
i0.ɵɵelementStart(0, "button", 311);
|
|
1876
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.loadMoreData(item_r45)); });
|
|
1877
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template, 1, 0, "i", 312)(2, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template, 1, 0, "i", 313);
|
|
1996
1878
|
i0.ɵɵtext(3, " Load More ");
|
|
1997
1879
|
i0.ɵɵelementEnd();
|
|
1998
|
-
i0.ɵɵelementStart(4, "button",
|
|
1999
|
-
i0.ɵɵlistener("click", function
|
|
2000
|
-
i0.ɵɵconditionalCreate(5,
|
|
1880
|
+
i0.ɵɵelementStart(4, "button", 314);
|
|
1881
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r46); const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.loadAllData(item_r45)); });
|
|
1882
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template, 1, 0, "i", 312)(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template, 1, 0, "i", 21);
|
|
2001
1883
|
i0.ɵɵtext(7, " Load All ");
|
|
2002
1884
|
i0.ɵɵelementEnd();
|
|
2003
1885
|
} if (rf & 2) {
|
|
@@ -2010,13 +1892,13 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2010
1892
|
i0.ɵɵadvance();
|
|
2011
1893
|
i0.ɵɵconditional(item_r45.isLoadingMore ? 5 : 6);
|
|
2012
1894
|
} }
|
|
2013
|
-
function
|
|
2014
|
-
i0.ɵɵelementStart(0, "span",
|
|
2015
|
-
i0.ɵɵelement(1, "i",
|
|
1895
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1896
|
+
i0.ɵɵelementStart(0, "span", 307);
|
|
1897
|
+
i0.ɵɵelement(1, "i", 315);
|
|
2016
1898
|
i0.ɵɵtext(2, " All Loaded ");
|
|
2017
1899
|
i0.ɵɵelementEnd();
|
|
2018
1900
|
} }
|
|
2019
|
-
function
|
|
1901
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
2020
1902
|
i0.ɵɵelementStart(0, "th");
|
|
2021
1903
|
i0.ɵɵtext(1);
|
|
2022
1904
|
i0.ɵɵelementEnd();
|
|
@@ -2025,58 +1907,58 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2025
1907
|
i0.ɵɵadvance();
|
|
2026
1908
|
i0.ɵɵtextInterpolate(col_r47);
|
|
2027
1909
|
} }
|
|
2028
|
-
function
|
|
1910
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
2029
1911
|
const _r48 = i0.ɵɵgetCurrentView();
|
|
2030
|
-
i0.ɵɵelementStart(0, "button",
|
|
2031
|
-
i0.ɵɵlistener("click", function
|
|
2032
|
-
i0.ɵɵelement(1, "i",
|
|
1912
|
+
i0.ɵɵelementStart(0, "button", 318);
|
|
1913
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const row_r49 = i0.ɵɵnextContext().$implicit; const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord(item_r45.entityName, row_r49)); });
|
|
1914
|
+
i0.ɵɵelement(1, "i", 319);
|
|
2033
1915
|
i0.ɵɵelementEnd();
|
|
2034
1916
|
} }
|
|
2035
|
-
function
|
|
2036
|
-
i0.ɵɵelementStart(0, "td",
|
|
1917
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
1918
|
+
i0.ɵɵelementStart(0, "td", 317);
|
|
2037
1919
|
i0.ɵɵtext(1);
|
|
2038
1920
|
i0.ɵɵelementEnd();
|
|
2039
1921
|
} if (rf & 2) {
|
|
2040
1922
|
const col_r50 = ctx.$implicit;
|
|
2041
1923
|
const row_r49 = i0.ɵɵnextContext().$implicit;
|
|
2042
|
-
const
|
|
2043
|
-
i0.ɵɵproperty("title",
|
|
1924
|
+
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
1925
|
+
i0.ɵɵproperty("title", ctx_r1.getSampleDataValue(row_r49, col_r50));
|
|
2044
1926
|
i0.ɵɵadvance();
|
|
2045
|
-
i0.ɵɵtextInterpolate(
|
|
1927
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(ctx_r1.getSampleDataValue(row_r49, col_r50), 30));
|
|
2046
1928
|
} }
|
|
2047
|
-
function
|
|
2048
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
2049
|
-
i0.ɵɵconditionalCreate(2,
|
|
1929
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
1930
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 310);
|
|
1931
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template, 2, 0, "button", 316);
|
|
2050
1932
|
i0.ɵɵelementEnd();
|
|
2051
|
-
i0.ɵɵrepeaterCreate(3,
|
|
1933
|
+
i0.ɵɵrepeaterCreate(3, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template, 2, 2, "td", 317, i0.ɵɵrepeaterTrackByIdentity);
|
|
2052
1934
|
i0.ɵɵelementEnd();
|
|
2053
1935
|
} if (rf & 2) {
|
|
2054
1936
|
const row_r49 = ctx.$implicit;
|
|
2055
1937
|
const item_r45 = i0.ɵɵnextContext(3).$implicit;
|
|
2056
|
-
const
|
|
1938
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
2057
1939
|
i0.ɵɵadvance(2);
|
|
2058
|
-
i0.ɵɵconditional(item_r45.entityName &&
|
|
1940
|
+
i0.ɵɵconditional(item_r45.entityName && ctx_r1.getRecordId(row_r49) ? 2 : -1);
|
|
2059
1941
|
i0.ɵɵadvance();
|
|
2060
|
-
i0.ɵɵrepeater(
|
|
1942
|
+
i0.ɵɵrepeater(ctx_r1.getSampleDataColumns(item_r45));
|
|
2061
1943
|
} }
|
|
2062
|
-
function
|
|
2063
|
-
i0.ɵɵelementStart(0, "div",
|
|
1944
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1945
|
+
i0.ɵɵelementStart(0, "div", 302)(1, "div", 304)(2, "span", 305);
|
|
2064
1946
|
i0.ɵɵtext(3);
|
|
2065
1947
|
i0.ɵɵelementEnd();
|
|
2066
|
-
i0.ɵɵelementStart(4, "div",
|
|
2067
|
-
i0.ɵɵconditionalCreate(5,
|
|
2068
|
-
i0.ɵɵconditionalCreate(6,
|
|
1948
|
+
i0.ɵɵelementStart(4, "div", 306);
|
|
1949
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template, 8, 4);
|
|
1950
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template, 3, 0, "span", 307);
|
|
2069
1951
|
i0.ɵɵelementEnd()();
|
|
2070
|
-
i0.ɵɵelementStart(7, "div",
|
|
2071
|
-
i0.ɵɵelement(11, "th",
|
|
2072
|
-
i0.ɵɵrepeaterCreate(12,
|
|
1952
|
+
i0.ɵɵelementStart(7, "div", 308)(8, "table", 309)(9, "thead")(10, "tr");
|
|
1953
|
+
i0.ɵɵelement(11, "th", 310);
|
|
1954
|
+
i0.ɵɵrepeaterCreate(12, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
2073
1955
|
i0.ɵɵelementEnd()();
|
|
2074
1956
|
i0.ɵɵelementStart(14, "tbody");
|
|
2075
|
-
i0.ɵɵrepeaterCreate(15,
|
|
1957
|
+
i0.ɵɵrepeaterCreate(15, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template, 5, 1, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
2076
1958
|
i0.ɵɵelementEnd()()()();
|
|
2077
1959
|
} if (rf & 2) {
|
|
2078
1960
|
const item_r45 = i0.ɵɵnextContext(2).$implicit;
|
|
2079
|
-
const
|
|
1961
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
2080
1962
|
i0.ɵɵadvance(3);
|
|
2081
1963
|
i0.ɵɵtextInterpolate2("Data (", item_r45.displayedData.length, " of ", item_r45.itemCount, ")");
|
|
2082
1964
|
i0.ɵɵadvance(2);
|
|
@@ -2084,21 +1966,21 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2084
1966
|
i0.ɵɵadvance();
|
|
2085
1967
|
i0.ɵɵconditional(item_r45.allDataLoaded ? 6 : -1);
|
|
2086
1968
|
i0.ɵɵadvance(6);
|
|
2087
|
-
i0.ɵɵrepeater(
|
|
1969
|
+
i0.ɵɵrepeater(ctx_r1.getSampleDataColumns(item_r45));
|
|
2088
1970
|
i0.ɵɵadvance(3);
|
|
2089
1971
|
i0.ɵɵrepeater(item_r45.displayedData);
|
|
2090
1972
|
} }
|
|
2091
|
-
function
|
|
2092
|
-
i0.ɵɵelementStart(0, "div",
|
|
1973
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1974
|
+
i0.ɵɵelementStart(0, "div", 298)(1, "div", 299)(2, "span", 220);
|
|
2093
1975
|
i0.ɵɵtext(3, "Property:");
|
|
2094
1976
|
i0.ɵɵelementEnd();
|
|
2095
|
-
i0.ɵɵelementStart(4, "code",
|
|
1977
|
+
i0.ɵɵelementStart(4, "code", 300);
|
|
2096
1978
|
i0.ɵɵtext(5);
|
|
2097
1979
|
i0.ɵɵelementEnd()();
|
|
2098
|
-
i0.ɵɵconditionalCreate(6,
|
|
2099
|
-
i0.ɵɵconditionalCreate(7,
|
|
2100
|
-
i0.ɵɵconditionalCreate(8,
|
|
2101
|
-
i0.ɵɵconditionalCreate(9,
|
|
1980
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_6_Template, 5, 1, "div", 299);
|
|
1981
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_7_Template, 5, 1, "div", 299);
|
|
1982
|
+
i0.ɵɵconditionalCreate(8, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_8_Template, 5, 1, "div", 301);
|
|
1983
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Template, 17, 4, "div", 302);
|
|
2102
1984
|
i0.ɵɵelementEnd();
|
|
2103
1985
|
} if (rf & 2) {
|
|
2104
1986
|
const item_r45 = i0.ɵɵnextContext().$implicit;
|
|
@@ -2113,27 +1995,27 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2113
1995
|
i0.ɵɵadvance();
|
|
2114
1996
|
i0.ɵɵconditional(item_r45.displayedData.length > 0 ? 9 : -1);
|
|
2115
1997
|
} }
|
|
2116
|
-
function
|
|
1998
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
2117
1999
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
2118
|
-
i0.ɵɵelementStart(0, "div",
|
|
2119
|
-
i0.ɵɵlistener("click", function
|
|
2120
|
-
i0.ɵɵelementStart(2, "div",
|
|
2121
|
-
i0.ɵɵelement(3, "i",
|
|
2122
|
-
i0.ɵɵelementStart(4, "span",
|
|
2000
|
+
i0.ɵɵelementStart(0, "div", 290)(1, "div", 291);
|
|
2001
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template_div_click_1_listener() { const item_r45 = i0.ɵɵrestoreView(_r44).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleConfigItemExpanded(item_r45)); });
|
|
2002
|
+
i0.ɵɵelementStart(2, "div", 292);
|
|
2003
|
+
i0.ɵɵelement(3, "i", 293);
|
|
2004
|
+
i0.ɵɵelementStart(4, "span", 294);
|
|
2123
2005
|
i0.ɵɵtext(5);
|
|
2124
2006
|
i0.ɵɵelementEnd();
|
|
2125
|
-
i0.ɵɵelementStart(6, "span",
|
|
2007
|
+
i0.ɵɵelementStart(6, "span", 295);
|
|
2126
2008
|
i0.ɵɵtext(7);
|
|
2127
2009
|
i0.ɵɵelementEnd()();
|
|
2128
|
-
i0.ɵɵelementStart(8, "div",
|
|
2010
|
+
i0.ɵɵelementStart(8, "div", 296)(9, "span", 297);
|
|
2129
2011
|
i0.ɵɵtext(10);
|
|
2130
2012
|
i0.ɵɵelementEnd();
|
|
2131
|
-
i0.ɵɵelementStart(11, "span",
|
|
2013
|
+
i0.ɵɵelementStart(11, "span", 297);
|
|
2132
2014
|
i0.ɵɵtext(12);
|
|
2133
2015
|
i0.ɵɵelementEnd();
|
|
2134
|
-
i0.ɵɵelement(13, "i",
|
|
2016
|
+
i0.ɵɵelement(13, "i", 210);
|
|
2135
2017
|
i0.ɵɵelementEnd()();
|
|
2136
|
-
i0.ɵɵconditionalCreate(14,
|
|
2018
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Template, 10, 5, "div", 298);
|
|
2137
2019
|
i0.ɵɵelementEnd();
|
|
2138
2020
|
} if (rf & 2) {
|
|
2139
2021
|
const item_r45 = ctx.$implicit;
|
|
@@ -2156,84 +2038,84 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Template
|
|
|
2156
2038
|
i0.ɵɵadvance();
|
|
2157
2039
|
i0.ɵɵconditional(item_r45.expanded ? 14 : -1);
|
|
2158
2040
|
} }
|
|
2159
|
-
function
|
|
2160
|
-
i0.ɵɵelementStart(0, "div",
|
|
2161
|
-
i0.ɵɵrepeaterCreate(1,
|
|
2041
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
2042
|
+
i0.ɵɵelementStart(0, "div", 288);
|
|
2043
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template, 15, 22, "div", 289, _forTrack7);
|
|
2162
2044
|
i0.ɵɵelementEnd();
|
|
2163
2045
|
} if (rf & 2) {
|
|
2164
|
-
const
|
|
2046
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
2165
2047
|
i0.ɵɵadvance();
|
|
2166
|
-
i0.ɵɵrepeater(
|
|
2048
|
+
i0.ɵɵrepeater(ctx_r1.engineDetailPanel.configItems);
|
|
2167
2049
|
} }
|
|
2168
|
-
function
|
|
2050
|
+
function SystemDiagnosticsComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
2169
2051
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
2170
|
-
i0.ɵɵelementStart(0, "div",
|
|
2171
|
-
i0.ɵɵlistener("click", function
|
|
2052
|
+
i0.ɵɵelementStart(0, "div", 280);
|
|
2053
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEngineDetailPanel()); });
|
|
2172
2054
|
i0.ɵɵelementEnd();
|
|
2173
|
-
i0.ɵɵelementStart(1, "div",
|
|
2174
|
-
i0.ɵɵelement(4, "i",
|
|
2055
|
+
i0.ɵɵelementStart(1, "div", 281)(2, "div", 22)(3, "div", 255);
|
|
2056
|
+
i0.ɵɵelement(4, "i", 23);
|
|
2175
2057
|
i0.ɵɵelementStart(5, "h3");
|
|
2176
2058
|
i0.ɵɵtext(6);
|
|
2177
2059
|
i0.ɵɵelementEnd()();
|
|
2178
|
-
i0.ɵɵelementStart(7, "div",
|
|
2179
|
-
i0.ɵɵlistener("click", function
|
|
2180
|
-
i0.ɵɵelement(9, "i",
|
|
2060
|
+
i0.ɵɵelementStart(7, "div", 282)(8, "button", 283);
|
|
2061
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshEngineInDetailPanel()); });
|
|
2062
|
+
i0.ɵɵelement(9, "i", 26);
|
|
2181
2063
|
i0.ɵɵelementEnd();
|
|
2182
|
-
i0.ɵɵelementStart(10, "button",
|
|
2183
|
-
i0.ɵɵlistener("click", function
|
|
2184
|
-
i0.ɵɵelement(11, "i",
|
|
2064
|
+
i0.ɵɵelementStart(10, "button", 256);
|
|
2065
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEngineDetailPanel()); });
|
|
2066
|
+
i0.ɵɵelement(11, "i", 91);
|
|
2185
2067
|
i0.ɵɵelementEnd()()();
|
|
2186
|
-
i0.ɵɵelementStart(12, "div",
|
|
2068
|
+
i0.ɵɵelementStart(12, "div", 257)(13, "div", 284)(14, "div", 285)(15, "span", 125);
|
|
2187
2069
|
i0.ɵɵtext(16, "Status");
|
|
2188
2070
|
i0.ɵɵelementEnd();
|
|
2189
|
-
i0.ɵɵelementStart(17, "span",
|
|
2190
|
-
i0.ɵɵelement(18, "span",
|
|
2071
|
+
i0.ɵɵelementStart(17, "span", 124);
|
|
2072
|
+
i0.ɵɵelement(18, "span", 286);
|
|
2191
2073
|
i0.ɵɵtext(19);
|
|
2192
2074
|
i0.ɵɵelementEnd()();
|
|
2193
|
-
i0.ɵɵelementStart(20, "div",
|
|
2075
|
+
i0.ɵɵelementStart(20, "div", 285)(21, "span", 125);
|
|
2194
2076
|
i0.ɵɵtext(22, "Memory");
|
|
2195
2077
|
i0.ɵɵelementEnd();
|
|
2196
|
-
i0.ɵɵelementStart(23, "span",
|
|
2078
|
+
i0.ɵɵelementStart(23, "span", 124);
|
|
2197
2079
|
i0.ɵɵtext(24);
|
|
2198
2080
|
i0.ɵɵelementEnd()();
|
|
2199
|
-
i0.ɵɵelementStart(25, "div",
|
|
2081
|
+
i0.ɵɵelementStart(25, "div", 285)(26, "span", 125);
|
|
2200
2082
|
i0.ɵɵtext(27, "Items");
|
|
2201
2083
|
i0.ɵɵelementEnd();
|
|
2202
|
-
i0.ɵɵelementStart(28, "span",
|
|
2084
|
+
i0.ɵɵelementStart(28, "span", 124);
|
|
2203
2085
|
i0.ɵɵtext(29);
|
|
2204
2086
|
i0.ɵɵelementEnd()();
|
|
2205
|
-
i0.ɵɵconditionalCreate(30,
|
|
2087
|
+
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_28_Conditional_30_Template, 5, 1, "div", 285);
|
|
2206
2088
|
i0.ɵɵelementEnd();
|
|
2207
|
-
i0.ɵɵelementStart(31, "div",
|
|
2208
|
-
i0.ɵɵelement(33, "i",
|
|
2089
|
+
i0.ɵɵelementStart(31, "div", 287)(32, "h4");
|
|
2090
|
+
i0.ɵɵelement(33, "i", 232);
|
|
2209
2091
|
i0.ɵɵtext(34);
|
|
2210
2092
|
i0.ɵɵelementEnd();
|
|
2211
|
-
i0.ɵɵconditionalCreate(35,
|
|
2093
|
+
i0.ɵɵconditionalCreate(35, SystemDiagnosticsComponent_Conditional_28_Conditional_35_Template, 4, 0, "div", 165)(36, SystemDiagnosticsComponent_Conditional_28_Conditional_36_Template, 3, 0, "div", 288);
|
|
2212
2094
|
i0.ɵɵelementEnd()()();
|
|
2213
2095
|
} if (rf & 2) {
|
|
2214
|
-
const
|
|
2096
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
2215
2097
|
i0.ɵɵadvance();
|
|
2216
|
-
i0.ɵɵclassProp("open",
|
|
2098
|
+
i0.ɵɵclassProp("open", ctx_r1.engineDetailPanel.isOpen);
|
|
2217
2099
|
i0.ɵɵadvance(5);
|
|
2218
|
-
i0.ɵɵtextInterpolate(
|
|
2100
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.className);
|
|
2219
2101
|
i0.ɵɵadvance(2);
|
|
2220
|
-
i0.ɵɵproperty("disabled",
|
|
2102
|
+
i0.ɵɵproperty("disabled", ctx_r1.engineDetailPanel.isRefreshing);
|
|
2221
2103
|
i0.ɵɵadvance();
|
|
2222
|
-
i0.ɵɵclassProp("spinning",
|
|
2104
|
+
i0.ɵɵclassProp("spinning", ctx_r1.engineDetailPanel.isRefreshing);
|
|
2223
2105
|
i0.ɵɵadvance(9);
|
|
2224
|
-
i0.ɵɵclassProp("status-loaded",
|
|
2106
|
+
i0.ɵɵclassProp("status-loaded", ctx_r1.engineDetailPanel.engine.isLoaded);
|
|
2225
2107
|
i0.ɵɵadvance();
|
|
2226
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
2108
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.engineDetailPanel.engine.isLoaded ? "Loaded" : "Not Loaded", " ");
|
|
2227
2109
|
i0.ɵɵadvance(5);
|
|
2228
|
-
i0.ɵɵtextInterpolate(
|
|
2110
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.memoryDisplay);
|
|
2229
2111
|
i0.ɵɵadvance(5);
|
|
2230
|
-
i0.ɵɵtextInterpolate(
|
|
2112
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.itemCount.toLocaleString());
|
|
2231
2113
|
i0.ɵɵadvance();
|
|
2232
|
-
i0.ɵɵconditional(
|
|
2114
|
+
i0.ɵɵconditional(ctx_r1.engineDetailPanel.engine.lastLoadedAt ? 30 : -1);
|
|
2233
2115
|
i0.ɵɵadvance(4);
|
|
2234
|
-
i0.ɵɵtextInterpolate1(" Data Configs (",
|
|
2116
|
+
i0.ɵɵtextInterpolate1(" Data Configs (", ctx_r1.engineDetailPanel.configItems.length, ") ");
|
|
2235
2117
|
i0.ɵɵadvance();
|
|
2236
|
-
i0.ɵɵconditional(
|
|
2118
|
+
i0.ɵɵconditional(ctx_r1.engineDetailPanel.configItems.length === 0 ? 35 : 36);
|
|
2237
2119
|
} }
|
|
2238
2120
|
/**
|
|
2239
2121
|
* Settings key for persisting user preferences
|
|
@@ -2264,7 +2146,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2264
2146
|
activeSection = 'engines';
|
|
2265
2147
|
lastUpdated = new Date();
|
|
2266
2148
|
isRefreshingEngines = false;
|
|
2267
|
-
kpiCardsCollapsed = false;
|
|
2268
2149
|
// Data
|
|
2269
2150
|
engineStats = null;
|
|
2270
2151
|
engines = [];
|
|
@@ -2388,6 +2269,50 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2388
2269
|
this.cdr.markForCheck();
|
|
2389
2270
|
this.saveUserPreferencesDebounced();
|
|
2390
2271
|
}
|
|
2272
|
+
/**
|
|
2273
|
+
* Adapter for `<mj-tab-nav>`'s string-typed `(TabChange)` output.
|
|
2274
|
+
* Narrows the emitted key to the typed `activeSection` union before
|
|
2275
|
+
* delegating to `setActiveSection`.
|
|
2276
|
+
*/
|
|
2277
|
+
onSectionTabChange(key) {
|
|
2278
|
+
if (key === 'engines' || key === 'redundant' || key === 'performance' || key === 'cache') {
|
|
2279
|
+
this.setActiveSection(key);
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
/**
|
|
2283
|
+
* L2 section tabs for `<mj-tab-nav>` in the interior chrome's [toolbar] slot.
|
|
2284
|
+
* Badges are dynamic (engine count, redundant-load count w/ warning variant,
|
|
2285
|
+
* telemetry event count, cache entry count).
|
|
2286
|
+
*/
|
|
2287
|
+
get diagnosticsTabs() {
|
|
2288
|
+
return [
|
|
2289
|
+
{
|
|
2290
|
+
key: 'engines',
|
|
2291
|
+
icon: 'fa-solid fa-cogs',
|
|
2292
|
+
label: 'Engine Registry',
|
|
2293
|
+
badge: this.engineStats?.totalEngines ?? 0
|
|
2294
|
+
},
|
|
2295
|
+
{
|
|
2296
|
+
key: 'redundant',
|
|
2297
|
+
icon: 'fa-solid fa-copy',
|
|
2298
|
+
label: 'Redundant Loading',
|
|
2299
|
+
badge: this.redundantLoads.length,
|
|
2300
|
+
badgeVariant: this.redundantLoads.length > 0 ? 'warning' : 'success'
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
key: 'performance',
|
|
2304
|
+
icon: 'fa-solid fa-chart-line',
|
|
2305
|
+
label: 'Performance',
|
|
2306
|
+
badge: this.telemetrySummary?.totalEvents ?? 0
|
|
2307
|
+
},
|
|
2308
|
+
{
|
|
2309
|
+
key: 'cache',
|
|
2310
|
+
icon: 'fa-solid fa-database',
|
|
2311
|
+
label: 'Local Cache',
|
|
2312
|
+
badge: this.cacheStats?.totalEntries ?? 0
|
|
2313
|
+
}
|
|
2314
|
+
];
|
|
2315
|
+
}
|
|
2391
2316
|
toggleAutoRefresh() {
|
|
2392
2317
|
if (this.autoRefresh) {
|
|
2393
2318
|
// Start auto-refresh interval
|
|
@@ -2401,11 +2326,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2401
2326
|
}
|
|
2402
2327
|
this.saveUserPreferencesDebounced();
|
|
2403
2328
|
}
|
|
2404
|
-
toggleKpiCards() {
|
|
2405
|
-
this.kpiCardsCollapsed = !this.kpiCardsCollapsed;
|
|
2406
|
-
this.cdr.markForCheck();
|
|
2407
|
-
this.saveUserPreferencesDebounced();
|
|
2408
|
-
}
|
|
2409
2329
|
async refreshData() {
|
|
2410
2330
|
this.isLoading = true;
|
|
2411
2331
|
this.cdr.markForCheck();
|
|
@@ -4498,9 +4418,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4498
4418
|
this.searchQuery = params['search'];
|
|
4499
4419
|
}
|
|
4500
4420
|
// KPI cards collapsed: ?kpi=collapsed|expanded
|
|
4501
|
-
if (params['kpi']) {
|
|
4502
|
-
this.kpiCardsCollapsed = params['kpi'] === 'collapsed';
|
|
4503
|
-
}
|
|
4504
4421
|
this.cdr.markForCheck();
|
|
4505
4422
|
}
|
|
4506
4423
|
/**
|
|
@@ -4513,8 +4430,7 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4513
4430
|
tab: this.perfTab !== 'monitor' ? this.perfTab : null,
|
|
4514
4431
|
source: this.telemetrySource !== 'client' ? this.telemetrySource : null,
|
|
4515
4432
|
category: this.categoryFilter !== 'all' ? this.categoryFilter : null,
|
|
4516
|
-
search: this.searchQuery.trim() || null
|
|
4517
|
-
kpi: this.kpiCardsCollapsed ? 'collapsed' : null
|
|
4433
|
+
search: this.searchQuery.trim() || null
|
|
4518
4434
|
};
|
|
4519
4435
|
// Use NavigationService to update query params properly
|
|
4520
4436
|
this.navigationService.UpdateActiveTabQueryParams(queryParams);
|
|
@@ -4551,8 +4467,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4551
4467
|
* Apply loaded user preferences to component state
|
|
4552
4468
|
*/
|
|
4553
4469
|
applyUserPreferences(prefs) {
|
|
4554
|
-
if (prefs.kpiCardsCollapsed !== undefined)
|
|
4555
|
-
this.kpiCardsCollapsed = prefs.kpiCardsCollapsed;
|
|
4556
4470
|
if (prefs.activeSection !== undefined)
|
|
4557
4471
|
this.activeSection = prefs.activeSection;
|
|
4558
4472
|
if (prefs.perfTab !== undefined)
|
|
@@ -4574,7 +4488,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4574
4488
|
*/
|
|
4575
4489
|
getCurrentPreferences() {
|
|
4576
4490
|
return {
|
|
4577
|
-
kpiCardsCollapsed: this.kpiCardsCollapsed,
|
|
4578
4491
|
activeSection: this.activeSection,
|
|
4579
4492
|
perfTab: this.perfTab,
|
|
4580
4493
|
telemetrySource: this.telemetrySource,
|
|
@@ -4642,137 +4555,73 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4642
4555
|
} if (rf & 2) {
|
|
4643
4556
|
let _t;
|
|
4644
4557
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.perfChartRef = _t.first);
|
|
4645
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 64, vars: 36, consts: [["perfChart", ""], [1, "system-diagnostics"], [1, "diagnostics-header"], [1, "header-title"], [1, "fa-solid", "fa-stethoscope"], [1, "header-controls"], [1, "auto-refresh-control"], ["type", "checkbox", 3, "ngModelChange", "change", "ngModel"], [1, "refresh-indicator"], [1, "refresh-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "overview-cards-container"], [1, "kpi-toggle-btn", 3, "click", "title"], [1, "fa-solid"], [1, "overview-cards"], [1, "overview-cards-mini"], [1, "main-content"], [1, "left-nav"], [1, "nav-section"], [1, "nav-section-title"], [1, "nav-item", 3, "click"], [1, "fa-solid", "fa-cogs"], [1, "nav-badge"], [1, "fa-solid", "fa-copy"], [1, "nav-badge", "nav-badge--warning"], [1, "nav-badge", "nav-badge--success"], [1, "fa-solid", "fa-chart-line"], [1, "fa-solid", "fa-database"], [1, "content-area"], [1, "section-panel"], [1, "section-panel", "perf-panel"], [1, "footer"], [1, "last-updated"], [1, "fa-solid", "fa-clock"], [1, "export-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "fa-solid", "fa-sync-alt", "spinning"], [1, "overview-card"], [1, "card-icon", "card-icon--engines"], [1, "card-content"], [1, "card-value"], [1, "card-label"], [1, "card-subtitle"], [1, "card-icon", "card-icon--memory"], [1, "fa-solid", "fa-microchip"], [1, "card-icon"], ["title", "Registered Engines", 1, "mini-kpi"], [1, "mini-value"], [1, "mini-label"], [1, "mini-divider"], ["title", "Engine Memory", 1, "mini-kpi"], ["title", "Redundant Loads", 1, "mini-kpi"], [1, "panel-header"], [1, "panel-actions"], [1, "action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-sync"], [1, "section-panel-content"], [1, "empty-state"], [1, "engine-grid"], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "engine-card", 3, "loaded"], [1, "engine-card"], [1, "engine-header"], [1, "engine-name", 3, "title"], [1, "engine-status"], [1, "engine-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-layer-group"], [1, "engine-actions"], ["title", "Refresh this engine", 1, "engine-action-btn", 3, "click", "disabled"], ["title", "View engine details", 1, "engine-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "info-banner"], [1, "fa-solid", "fa-info-circle"], [1, "empty-state", "success-state"], [1, "fa-solid", "fa-check-circle"], [1, "redundant-loads-table-wrapper"], [1, "redundant-loads-table"], [1, "text-right"], [1, "recommendation-banner"], [1, "fa-solid", "fa-lightbulb"], [1, "entity-name"], [1, "engines-cell"], [1, "engine-chips"], [1, "engine-chip"], [1, "text-right", "count-cell"], [1, "count-badge"], [1, "source-toggle"], [1, "source-btn", 3, "click"], [1, "fa-solid", "fa-browser"], [1, "fa-solid", "fa-server"], [1, "action-divider"], [1, "status-indicator", 3, "enabled", "disabled"], [1, "loading-indicator"], [1, "error-banner"], [1, "perf-tabs"], [1, "perf-tab", 3, "click"], [1, "fa-solid", "fa-chart-area"], [1, "fa-solid", "fa-gauge"], [1, "tab-badge", "warning"], [1, "fa-solid", "fa-timeline"], [1, "tab-badge"], [1, "fa-solid", "fa-fingerprint"], [1, "tab-badge", "insight"], [1, "info-banner", "warning-banner"], [1, "perfmon-section"], [1, "action-btn", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "status-indicator"], ["title", "Configure via mj.config.cjs telemetry section", 1, "config-note"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "dismiss-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "perfmon-header"], [1, "perfmon-legend"], [1, "legend-item", "runview"], [1, "legend-dot"], [1, "legend-item", "runquery"], [1, "legend-item", "engine"], [1, "legend-item", "ai"], [1, "perfmon-controls"], ["title", "Chart Interaction Mode", 1, "mode-toggle"], ["title", "Pointer mode - click events to view details", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-arrow-pointer"], ["title", "Select mode - drag to zoom into a time range", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-vector-square"], ["title", "Pan mode - drag to pan the chart", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-hand"], [1, "control-divider"], ["title", "Zoom In", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-plus"], ["title", "Zoom Out", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-minus"], ["title", "Reset Zoom", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Automatically compress gaps with no activity", 1, "compress-toggle"], [1, "perfmon-chart-container"], [1, "perfmon-y-axis"], [1, "axis-label"], [1, "perfmon-chart"], [1, "perfmon-footer"], [1, "footer-note"], [1, "footer-stats"], [1, "telemetry-summary"], [1, "summary-card"], [1, "summary-value"], [1, "summary-label"], [1, "category-breakdown"], [1, "slow-queries-section"], [1, "success-banner"], [1, "category-grid"], [1, "category-item"], [1, "category-item", 3, "click"], [1, "category-name"], [1, "category-events"], [1, "category-avg"], [1, "fa-solid", "fa-turtle"], [1, "slow-queries-list"], [1, "slow-query-item", "clickable", 3, "cache-hit"], [1, "slow-query-item", "clickable", 3, "click"], [1, "slow-query-main"], [1, "category-chip", "small"], [1, "slow-query-entity"], ["title", "Data served from local cache", 1, "cache-hit-badge", "small"], [1, "slow-query-time"], [1, "slow-query-entities"], [1, "slow-query-pills"], [1, "slow-query-filter"], [1, "slow-query-timestamp"], [1, "fa-solid", "fa-bolt"], [1, "entity-pill", "small"], [1, "entity-pill", "small", "more"], [1, "param-pill", "small", 3, "class", "title"], [1, "param-pill", "small", 3, "title"], [1, "pill-label"], [1, "pill-value"], [1, "filter-bar", "compact"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search events...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], [1, "filter-btn", 3, "active"], [1, "timeline-section"], [1, "timeline-container"], [1, "empty-state", "small"], [1, "clear-search", 3, "click"], [1, "timeline-item", "clickable", 3, "class", "cache-hit"], [1, "timeline-item", "clickable", 3, "click"], [1, "timeline-marker"], [1, "marker-bolt"], [1, "marker-dot"], [1, "marker-line"], [1, "timeline-content"], [1, "timeline-header"], [1, "timeline-time"], ["title", "Data served from local cache", 1, "cache-hit-badge"], [1, "timeline-duration", 3, "slow"], [1, "timeline-body"], [1, "timeline-operation"], [1, "timeline-entity"], [1, "timeline-entities"], [1, "timeline-pills"], [1, "timeline-filter"], [1, "timeline-duration"], [1, "entity-pill"], [1, "entity-pill", "more"], [1, "param-pill", 3, "class", "title"], [1, "param-pill", 3, "title"], [1, "fa-solid", "fa-hourglass-start"], ["type", "text", "placeholder", "Search patterns...", 3, "ngModelChange", "ngModel"], [1, "patterns-section"], [1, "patterns-table-wrapper"], [1, "patterns-table", "sortable"], [1, "sortable-header", 3, "click"], [1, "sortable-header", "text-right", 3, "click"], [3, "duplicate-row", "slow-row"], [1, "category-chip"], [1, "operation-cell"], [1, "entity-cell"], [1, "filter-cell", 3, "title"], [1, "count-warning"], [1, "fa-solid", "fa-filter"], [1, "insights-section"], [1, "insights-list"], [1, "insight-card", "expandable", 3, "class", "expanded"], [1, "insight-card", "expandable"], [1, "insight-header", 3, "click"], [1, "insight-title"], [1, "insight-category"], [1, "fa-solid", "expand-icon"], [1, "insight-key-info"], [1, "key-info-item"], [1, "insight-message"], [1, "insight-suggestion"], [1, "insight-details"], [1, "key-label"], [1, "key-value", "entity-name"], [1, "key-value", "filter-code"], [1, "detail-section"], [1, "detail-label"], [1, "params-display"], [1, "param-row"], [1, "related-events"], [1, "related-event"], [1, "param-key"], [1, "param-value"], [1, "event-time"], [1, "event-duration"], [1, "event-entity"], [1, "event-filter"], [1, "fa-solid", "fa-check-circle", 2, "color", "var(--mj-status-success)"], [1, "cache-summary"], [1, "cache-type-breakdown"], [1, "type-grid"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-name"], [1, "type-count"], [1, "type-size"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-code"], [1, "cache-entries-section"], [1, "section-header"], [1, "filter-controls"], [1, "cache-entries-table-wrapper"], [1, "cache-entries-table"], [1, "table-footer"], [1, "cache-type-chip"], [1, "entry-name"], [1, "entry-fingerprint"], ["title", "Invalidate", 1, "icon-btn", 3, "click"], [1, "event-detail-overlay", 3, "click"], [1, "event-detail-panel"], [1, "panel-title"], [1, "close-btn", 3, "click"], [1, "panel-body"], [1, "detail-metrics"], [1, "metric"], [1, "metric-value"], [1, "metric-label"], [1, "detail-content"], [1, "detail-row"], [1, "detail-key"], [1, "detail-val"], [1, "fa-solid", "fa-sliders"], [1, "params-grid"], [1, "param-item"], [1, "detail-actions"], [1, "action-button", 3, "click"], [1, "action-button"], [1, "detail-val", "entity-highlight"], [1, "detail-val", "filter-val"], [1, "param-name"], [1, "param-val"], [1, "pattern-summary"], [1, "pattern-stat"], [1, "stat-val"], [1, "pattern-warning"], [1, "engine-detail-overlay", 3, "click"], [1, "engine-detail-panel"], [1, "panel-header-actions"], ["title", "Refresh engine", 1, "icon-btn", 3, "click", "disabled"], [1, "engine-summary-section"], [1, "summary-stat"], [1, "status-dot"], [1, "config-items-section"], [1, "config-items-list"], [1, "config-item", 3, "expanded"], [1, "config-item"], [1, "config-item-header", 3, "click"], [1, "config-item-info"], [1, "fa-solid", "config-health-icon", 3, "title"], [1, "config-type-chip"], [1, "config-name"], [1, "config-item-stats"], [1, "config-stat"], [1, "config-item-details"], [1, "config-detail-row"], [1, "detail-value"], [1, "config-detail-row", "config-detail-row--error"], [1, "sample-data-section"], [1, "detail-value", "detail-value--error"], [1, "sample-header"], [1, "sample-title"], [1, "sample-header-actions"], [1, "all-loaded-badge"], [1, "sample-data-table-wrapper"], [1, "sample-data-table"], [1, "action-col"], ["title", "Load more records", 1, "load-more-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "spinning"], [1, "fa-solid", "fa-plus"], ["title", "Load all records", 1, "load-all-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-check"], ["title", "Open record", 1, "open-record-btn"], [3, "title"], ["title", "Open record", 1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"]], template: function SystemDiagnosticsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4646
|
-
i0.ɵɵelementStart(0, "
|
|
4647
|
-
i0.ɵɵelement(3, "
|
|
4648
|
-
i0.ɵɵ
|
|
4649
|
-
i0.ɵɵ
|
|
4558
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 29, vars: 21, consts: [["perfChart", ""], ["Role", "region", "AriaLabel", "System diagnostics", "Title", "System Diagnostics", "Subtitle", "Engine registry, cache, and performance telemetry"], ["meta", ""], ["Label", "engines", 3, "Count"], ["Label", "memory", 3, "Count"], ["Label", "redundant", 3, "Count", "Variant"], ["toolbar", ""], [3, "TabChange", "Tabs", "ActiveKey"], ["actions", ""], [1, "auto-refresh-toggle"], ["type", "checkbox", 3, "ngModelChange", "change", "ngModel"], ["Label", "Refresh Now", 3, "Clicked", "Loading", "ShowLabel"], [3, "Padding"], [1, "system-diagnostics"], [1, "content-area"], [1, "section-panel"], [1, "section-panel", "perf-panel"], [1, "footer"], [1, "last-updated"], [1, "fa-solid", "fa-clock"], [1, "export-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "panel-header"], [1, "fa-solid", "fa-cogs"], [1, "panel-actions"], [1, "action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-sync"], [1, "section-panel-content"], [1, "empty-state"], [1, "engine-grid"], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "engine-card", 3, "loaded"], [1, "engine-card"], [1, "engine-header"], [1, "engine-name", 3, "title"], [1, "engine-status"], [1, "engine-stats"], [1, "stat-item"], [1, "fa-solid", "fa-microchip"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-layer-group"], [1, "engine-actions"], ["title", "Refresh this engine", 1, "engine-action-btn", 3, "click", "disabled"], ["title", "View engine details", 1, "engine-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "fa-solid", "fa-copy"], [1, "info-banner"], [1, "fa-solid", "fa-info-circle"], [1, "empty-state", "success-state"], [1, "fa-solid", "fa-check-circle"], [1, "redundant-loads-table-wrapper"], [1, "redundant-loads-table"], [1, "text-right"], [1, "recommendation-banner"], [1, "fa-solid", "fa-lightbulb"], [1, "entity-name"], [1, "engines-cell"], [1, "engine-chips"], [1, "engine-chip"], [1, "text-right", "count-cell"], [1, "count-badge"], [1, "fa-solid", "fa-chart-line"], [1, "source-toggle"], [1, "source-btn", 3, "click"], [1, "fa-solid", "fa-browser"], [1, "fa-solid", "fa-server"], [1, "action-divider"], [1, "status-indicator", 3, "enabled", "disabled"], [1, "loading-indicator"], [1, "error-banner"], [1, "perf-tabs"], [1, "perf-tab", 3, "click"], [1, "fa-solid", "fa-chart-area"], [1, "fa-solid", "fa-gauge"], [1, "tab-badge", "warning"], [1, "fa-solid", "fa-timeline"], [1, "tab-badge"], [1, "fa-solid", "fa-fingerprint"], [1, "tab-badge", "insight"], [1, "info-banner", "warning-banner"], [1, "perfmon-section"], [1, "action-btn", 3, "click"], [1, "fa-solid"], [1, "fa-solid", "fa-trash"], [1, "status-indicator"], ["title", "Configure via mj.config.cjs telemetry section", 1, "config-note"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "dismiss-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "perfmon-header"], [1, "perfmon-legend"], [1, "legend-item", "runview"], [1, "legend-dot"], [1, "legend-item", "runquery"], [1, "legend-item", "engine"], [1, "legend-item", "ai"], [1, "perfmon-controls"], ["title", "Chart Interaction Mode", 1, "mode-toggle"], ["title", "Pointer mode - click events to view details", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-arrow-pointer"], ["title", "Select mode - drag to zoom into a time range", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-vector-square"], ["title", "Pan mode - drag to pan the chart", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-hand"], [1, "control-divider"], ["title", "Zoom In", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-plus"], ["title", "Zoom Out", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-minus"], ["title", "Reset Zoom", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Automatically compress gaps with no activity", 1, "compress-toggle"], [1, "perfmon-chart-container"], [1, "perfmon-y-axis"], [1, "axis-label"], [1, "perfmon-chart"], [1, "perfmon-footer"], [1, "footer-note"], [1, "footer-stats"], [1, "telemetry-summary"], [1, "summary-card"], [1, "summary-value"], [1, "summary-label"], [1, "category-breakdown"], [1, "slow-queries-section"], [1, "success-banner"], [1, "category-grid"], [1, "category-item"], [1, "category-item", 3, "click"], [1, "category-name"], [1, "category-events"], [1, "category-avg"], [1, "fa-solid", "fa-turtle"], [1, "slow-queries-list"], [1, "slow-query-item", "clickable", 3, "cache-hit"], [1, "slow-query-item", "clickable", 3, "click"], [1, "slow-query-main"], [1, "category-chip", "small"], [1, "slow-query-entity"], ["title", "Data served from local cache", 1, "cache-hit-badge", "small"], [1, "slow-query-time"], [1, "slow-query-entities"], [1, "slow-query-pills"], [1, "slow-query-filter"], [1, "slow-query-timestamp"], [1, "fa-solid", "fa-bolt"], [1, "entity-pill", "small"], [1, "entity-pill", "small", "more"], [1, "param-pill", "small", 3, "class", "title"], [1, "param-pill", "small", 3, "title"], [1, "pill-label"], [1, "pill-value"], [1, "filter-bar", "compact"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search events...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], [1, "filter-btn", 3, "active"], [1, "timeline-section"], [1, "timeline-container"], [1, "empty-state", "small"], [1, "clear-search", 3, "click"], [1, "timeline-item", "clickable", 3, "class", "cache-hit"], [1, "timeline-item", "clickable", 3, "click"], [1, "timeline-marker"], [1, "marker-bolt"], [1, "marker-dot"], [1, "marker-line"], [1, "timeline-content"], [1, "timeline-header"], [1, "timeline-time"], ["title", "Data served from local cache", 1, "cache-hit-badge"], [1, "timeline-duration", 3, "slow"], [1, "timeline-body"], [1, "timeline-operation"], [1, "timeline-entity"], [1, "timeline-entities"], [1, "timeline-pills"], [1, "timeline-filter"], [1, "timeline-duration"], [1, "entity-pill"], [1, "entity-pill", "more"], [1, "param-pill", 3, "class", "title"], [1, "param-pill", 3, "title"], [1, "fa-solid", "fa-hourglass-start"], ["type", "text", "placeholder", "Search patterns...", 3, "ngModelChange", "ngModel"], [1, "patterns-section"], [1, "patterns-table-wrapper"], [1, "patterns-table", "sortable"], [1, "sortable-header", 3, "click"], [1, "sortable-header", "text-right", 3, "click"], [3, "duplicate-row", "slow-row"], [1, "category-chip"], [1, "operation-cell"], [1, "entity-cell"], [1, "filter-cell", 3, "title"], [1, "count-warning"], [1, "fa-solid", "fa-filter"], [1, "insights-section"], [1, "insights-list"], [1, "insight-card", "expandable", 3, "class", "expanded"], [1, "insight-card", "expandable"], [1, "insight-header", 3, "click"], [1, "insight-title"], [1, "insight-category"], [1, "fa-solid", "expand-icon"], [1, "insight-key-info"], [1, "key-info-item"], [1, "insight-message"], [1, "insight-suggestion"], [1, "insight-details"], [1, "key-label"], [1, "key-value", "entity-name"], [1, "key-value", "filter-code"], [1, "detail-section"], [1, "detail-label"], [1, "params-display"], [1, "param-row"], [1, "related-events"], [1, "related-event"], [1, "param-key"], [1, "param-value"], [1, "event-time"], [1, "event-duration"], [1, "event-entity"], [1, "event-filter"], [1, "fa-solid", "fa-check-circle", 2, "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-database"], [1, "cache-summary"], [1, "cache-type-breakdown"], [1, "type-grid"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-name"], [1, "type-count"], [1, "type-size"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-code"], [1, "cache-entries-section"], [1, "section-header"], [1, "filter-controls"], [1, "cache-entries-table-wrapper"], [1, "cache-entries-table"], [1, "table-footer"], [1, "cache-type-chip"], [1, "entry-name"], [1, "entry-fingerprint"], ["title", "Invalidate", 1, "icon-btn", 3, "click"], [1, "event-detail-overlay", 3, "click"], [1, "event-detail-panel"], [1, "panel-title"], [1, "close-btn", 3, "click"], [1, "panel-body"], [1, "detail-metrics"], [1, "metric"], [1, "metric-value"], [1, "metric-label"], [1, "detail-content"], [1, "detail-row"], [1, "detail-key"], [1, "detail-val"], [1, "fa-solid", "fa-sliders"], [1, "params-grid"], [1, "param-item"], [1, "detail-actions"], [1, "action-button", 3, "click"], [1, "action-button"], [1, "detail-val", "entity-highlight"], [1, "detail-val", "filter-val"], [1, "param-name"], [1, "param-val"], [1, "pattern-summary"], [1, "pattern-stat"], [1, "stat-val"], [1, "pattern-warning"], [1, "engine-detail-overlay", 3, "click"], [1, "engine-detail-panel"], [1, "panel-header-actions"], ["title", "Refresh engine", 1, "icon-btn", 3, "click", "disabled"], [1, "engine-summary-section"], [1, "summary-stat"], [1, "status-dot"], [1, "config-items-section"], [1, "config-items-list"], [1, "config-item", 3, "expanded"], [1, "config-item"], [1, "config-item-header", 3, "click"], [1, "config-item-info"], [1, "fa-solid", "config-health-icon", 3, "title"], [1, "config-type-chip"], [1, "config-name"], [1, "config-item-stats"], [1, "config-stat"], [1, "config-item-details"], [1, "config-detail-row"], [1, "detail-value"], [1, "config-detail-row", "config-detail-row--error"], [1, "sample-data-section"], [1, "detail-value", "detail-value--error"], [1, "sample-header"], [1, "sample-title"], [1, "sample-header-actions"], [1, "all-loaded-badge"], [1, "sample-data-table-wrapper"], [1, "sample-data-table"], [1, "action-col"], ["title", "Load more records", 1, "load-more-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "spinning"], [1, "fa-solid", "fa-plus"], ["title", "Load all records", 1, "load-all-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-check"], ["title", "Open record", 1, "open-record-btn"], [3, "title"], ["title", "Open record", 1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"]], template: function SystemDiagnosticsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4559
|
+
i0.ɵɵelementStart(0, "mj-page-header-interior", 1)(1, "div", 2);
|
|
4560
|
+
i0.ɵɵelement(2, "mj-stat-badge", 3)(3, "mj-stat-badge", 4)(4, "mj-stat-badge", 5);
|
|
4561
|
+
i0.ɵɵelementEnd();
|
|
4562
|
+
i0.ɵɵelementStart(5, "div", 6)(6, "mj-tab-nav", 7);
|
|
4563
|
+
i0.ɵɵlistener("TabChange", function SystemDiagnosticsComponent_Template_mj_tab_nav_TabChange_6_listener($event) { return ctx.onSectionTabChange($event); });
|
|
4650
4564
|
i0.ɵɵelementEnd()();
|
|
4651
|
-
i0.ɵɵelementStart(
|
|
4565
|
+
i0.ɵɵelementStart(7, "div", 8)(8, "label", 9)(9, "input", 10);
|
|
4652
4566
|
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Template_input_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.autoRefresh, $event) || (ctx.autoRefresh = $event); return $event; });
|
|
4653
4567
|
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Template_input_change_9_listener() { return ctx.toggleAutoRefresh(); });
|
|
4654
4568
|
i0.ɵɵelementEnd();
|
|
4655
4569
|
i0.ɵɵtext(10, " Auto-refresh ");
|
|
4656
4570
|
i0.ɵɵelementEnd();
|
|
4657
|
-
i0.ɵɵ
|
|
4658
|
-
i0.ɵɵ
|
|
4659
|
-
i0.ɵɵelementStart(12, "button", 9);
|
|
4660
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_12_listener() { return ctx.refreshData(); });
|
|
4661
|
-
i0.ɵɵelement(13, "i", 10);
|
|
4662
|
-
i0.ɵɵtext(14, " Refresh Now ");
|
|
4571
|
+
i0.ɵɵelementStart(11, "mj-refresh-button", 11);
|
|
4572
|
+
i0.ɵɵlistener("Clicked", function SystemDiagnosticsComponent_Template_mj_refresh_button_Clicked_11_listener() { return ctx.refreshData(); });
|
|
4663
4573
|
i0.ɵɵelementEnd()()();
|
|
4664
|
-
i0.ɵɵelementStart(
|
|
4665
|
-
i0.ɵɵ
|
|
4666
|
-
i0.ɵɵ
|
|
4574
|
+
i0.ɵɵelementStart(12, "mj-page-body-interior", 12)(13, "div", 13)(14, "div", 14);
|
|
4575
|
+
i0.ɵɵconditionalCreate(15, SystemDiagnosticsComponent_Conditional_15_Template, 12, 4, "div", 15);
|
|
4576
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_16_Template, 14, 1, "div", 15);
|
|
4577
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Template, 52, 27, "div", 16);
|
|
4578
|
+
i0.ɵɵconditionalCreate(18, SystemDiagnosticsComponent_Conditional_18_Template, 12, 2, "div", 15);
|
|
4667
4579
|
i0.ɵɵelementEnd();
|
|
4668
|
-
i0.ɵɵ
|
|
4580
|
+
i0.ɵɵelementStart(19, "div", 17)(20, "span", 18);
|
|
4581
|
+
i0.ɵɵelement(21, "i", 19);
|
|
4582
|
+
i0.ɵɵtext(22);
|
|
4583
|
+
i0.ɵɵpipe(23, "date");
|
|
4669
4584
|
i0.ɵɵelementEnd();
|
|
4670
|
-
i0.ɵɵelementStart(
|
|
4671
|
-
i0.ɵɵ
|
|
4672
|
-
i0.ɵɵ
|
|
4673
|
-
i0.ɵɵ
|
|
4674
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_25_listener() { return ctx.setActiveSection("engines"); });
|
|
4675
|
-
i0.ɵɵelement(26, "i", 21);
|
|
4676
|
-
i0.ɵɵelementStart(27, "span");
|
|
4677
|
-
i0.ɵɵtext(28, "Engine Registry");
|
|
4678
|
-
i0.ɵɵelementEnd();
|
|
4679
|
-
i0.ɵɵelementStart(29, "span", 22);
|
|
4680
|
-
i0.ɵɵtext(30);
|
|
4681
|
-
i0.ɵɵelementEnd()();
|
|
4682
|
-
i0.ɵɵelementStart(31, "div", 20);
|
|
4683
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_31_listener() { return ctx.setActiveSection("redundant"); });
|
|
4684
|
-
i0.ɵɵelement(32, "i", 23);
|
|
4685
|
-
i0.ɵɵelementStart(33, "span");
|
|
4686
|
-
i0.ɵɵtext(34, "Redundant Loading");
|
|
4687
|
-
i0.ɵɵelementEnd();
|
|
4688
|
-
i0.ɵɵconditionalCreate(35, SystemDiagnosticsComponent_Conditional_35_Template, 2, 1, "span", 24)(36, SystemDiagnosticsComponent_Conditional_36_Template, 2, 0, "span", 25);
|
|
4689
|
-
i0.ɵɵelementEnd();
|
|
4690
|
-
i0.ɵɵelementStart(37, "div", 20);
|
|
4691
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_37_listener() { return ctx.setActiveSection("performance"); });
|
|
4692
|
-
i0.ɵɵelement(38, "i", 26);
|
|
4693
|
-
i0.ɵɵelementStart(39, "span");
|
|
4694
|
-
i0.ɵɵtext(40, "Performance");
|
|
4695
|
-
i0.ɵɵelementEnd();
|
|
4696
|
-
i0.ɵɵelementStart(41, "span", 22);
|
|
4697
|
-
i0.ɵɵtext(42);
|
|
4698
|
-
i0.ɵɵelementEnd()();
|
|
4699
|
-
i0.ɵɵelementStart(43, "div", 20);
|
|
4700
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_43_listener() { return ctx.setActiveSection("cache"); });
|
|
4701
|
-
i0.ɵɵelement(44, "i", 27);
|
|
4702
|
-
i0.ɵɵelementStart(45, "span");
|
|
4703
|
-
i0.ɵɵtext(46, "Local Cache");
|
|
4704
|
-
i0.ɵɵelementEnd();
|
|
4705
|
-
i0.ɵɵelementStart(47, "span", 22);
|
|
4706
|
-
i0.ɵɵtext(48);
|
|
4707
|
-
i0.ɵɵelementEnd()()()();
|
|
4708
|
-
i0.ɵɵelementStart(49, "div", 28);
|
|
4709
|
-
i0.ɵɵconditionalCreate(50, SystemDiagnosticsComponent_Conditional_50_Template, 12, 4, "div", 29);
|
|
4710
|
-
i0.ɵɵconditionalCreate(51, SystemDiagnosticsComponent_Conditional_51_Template, 14, 1, "div", 29);
|
|
4711
|
-
i0.ɵɵconditionalCreate(52, SystemDiagnosticsComponent_Conditional_52_Template, 52, 27, "div", 30);
|
|
4712
|
-
i0.ɵɵconditionalCreate(53, SystemDiagnosticsComponent_Conditional_53_Template, 12, 2, "div", 29);
|
|
4713
|
-
i0.ɵɵelementEnd()();
|
|
4714
|
-
i0.ɵɵelementStart(54, "div", 31)(55, "span", 32);
|
|
4715
|
-
i0.ɵɵelement(56, "i", 33);
|
|
4716
|
-
i0.ɵɵtext(57);
|
|
4717
|
-
i0.ɵɵpipe(58, "date");
|
|
4718
|
-
i0.ɵɵelementEnd();
|
|
4719
|
-
i0.ɵɵelementStart(59, "button", 34);
|
|
4720
|
-
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_59_listener() { return ctx.exportTelemetryData(); });
|
|
4721
|
-
i0.ɵɵelement(60, "i", 35);
|
|
4722
|
-
i0.ɵɵtext(61, " Export JSON ");
|
|
4585
|
+
i0.ɵɵelementStart(24, "button", 20);
|
|
4586
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_24_listener() { return ctx.exportTelemetryData(); });
|
|
4587
|
+
i0.ɵɵelement(25, "i", 21);
|
|
4588
|
+
i0.ɵɵtext(26, " Export JSON ");
|
|
4723
4589
|
i0.ɵɵelementEnd()()();
|
|
4724
|
-
i0.ɵɵconditionalCreate(
|
|
4725
|
-
i0.ɵɵconditionalCreate(
|
|
4590
|
+
i0.ɵɵconditionalCreate(27, SystemDiagnosticsComponent_Conditional_27_Template, 53, 18);
|
|
4591
|
+
i0.ɵɵconditionalCreate(28, SystemDiagnosticsComponent_Conditional_28_Template, 37, 14);
|
|
4592
|
+
i0.ɵɵelementEnd();
|
|
4726
4593
|
} if (rf & 2) {
|
|
4727
|
-
i0.ɵɵadvance(9);
|
|
4728
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.autoRefresh);
|
|
4729
4594
|
i0.ɵɵadvance(2);
|
|
4730
|
-
i0.ɵɵ
|
|
4595
|
+
i0.ɵɵproperty("Count", (ctx.engineStats == null ? null : ctx.engineStats.totalEngines) || 0);
|
|
4731
4596
|
i0.ɵɵadvance();
|
|
4732
|
-
i0.ɵɵproperty("
|
|
4597
|
+
i0.ɵɵproperty("Count", ctx.formatBytes((ctx.engineStats == null ? null : ctx.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
4733
4598
|
i0.ɵɵadvance();
|
|
4734
|
-
i0.ɵɵ
|
|
4599
|
+
i0.ɵɵproperty("Count", ctx.redundantLoads.length)("Variant", ctx.redundantLoads.length > 0 ? "warning" : "default");
|
|
4735
4600
|
i0.ɵɵadvance(2);
|
|
4736
|
-
i0.ɵɵ
|
|
4737
|
-
i0.ɵɵadvance();
|
|
4738
|
-
i0.ɵɵ
|
|
4739
|
-
i0.ɵɵadvance();
|
|
4740
|
-
i0.ɵɵclassProp("fa-chevron-up", !ctx.kpiCardsCollapsed)("fa-chevron-down", ctx.kpiCardsCollapsed);
|
|
4741
|
-
i0.ɵɵadvance();
|
|
4742
|
-
i0.ɵɵconditional(!ctx.kpiCardsCollapsed ? 18 : 19);
|
|
4743
|
-
i0.ɵɵadvance(7);
|
|
4744
|
-
i0.ɵɵclassProp("active", ctx.activeSection === "engines");
|
|
4745
|
-
i0.ɵɵadvance(5);
|
|
4746
|
-
i0.ɵɵtextInterpolate((ctx.engineStats == null ? null : ctx.engineStats.totalEngines) || 0);
|
|
4747
|
-
i0.ɵɵadvance();
|
|
4748
|
-
i0.ɵɵclassProp("active", ctx.activeSection === "redundant");
|
|
4749
|
-
i0.ɵɵadvance(4);
|
|
4750
|
-
i0.ɵɵconditional(ctx.redundantLoads.length > 0 ? 35 : 36);
|
|
4601
|
+
i0.ɵɵproperty("Tabs", ctx.diagnosticsTabs)("ActiveKey", ctx.activeSection);
|
|
4602
|
+
i0.ɵɵadvance(3);
|
|
4603
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.autoRefresh);
|
|
4751
4604
|
i0.ɵɵadvance(2);
|
|
4752
|
-
i0.ɵɵ
|
|
4753
|
-
i0.ɵɵadvance(5);
|
|
4754
|
-
i0.ɵɵtextInterpolate((ctx.telemetrySummary == null ? null : ctx.telemetrySummary.totalEvents) || 0);
|
|
4605
|
+
i0.ɵɵproperty("Loading", ctx.isLoading)("ShowLabel", true);
|
|
4755
4606
|
i0.ɵɵadvance();
|
|
4756
|
-
i0.ɵɵ
|
|
4757
|
-
i0.ɵɵadvance(
|
|
4758
|
-
i0.ɵɵ
|
|
4759
|
-
i0.ɵɵadvance(2);
|
|
4760
|
-
i0.ɵɵconditional(ctx.activeSection === "engines" ? 50 : -1);
|
|
4607
|
+
i0.ɵɵproperty("Padding", false);
|
|
4608
|
+
i0.ɵɵadvance(3);
|
|
4609
|
+
i0.ɵɵconditional(ctx.activeSection === "engines" ? 15 : -1);
|
|
4761
4610
|
i0.ɵɵadvance();
|
|
4762
|
-
i0.ɵɵconditional(ctx.activeSection === "redundant" ?
|
|
4611
|
+
i0.ɵɵconditional(ctx.activeSection === "redundant" ? 16 : -1);
|
|
4763
4612
|
i0.ɵɵadvance();
|
|
4764
|
-
i0.ɵɵconditional(ctx.activeSection === "performance" ?
|
|
4613
|
+
i0.ɵɵconditional(ctx.activeSection === "performance" ? 17 : -1);
|
|
4765
4614
|
i0.ɵɵadvance();
|
|
4766
|
-
i0.ɵɵconditional(ctx.activeSection === "cache" ?
|
|
4615
|
+
i0.ɵɵconditional(ctx.activeSection === "cache" ? 18 : -1);
|
|
4767
4616
|
i0.ɵɵadvance(4);
|
|
4768
|
-
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(
|
|
4617
|
+
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(23, 18, ctx.lastUpdated, "medium"), " ");
|
|
4769
4618
|
i0.ɵɵadvance(2);
|
|
4770
4619
|
i0.ɵɵproperty("disabled", !ctx.telemetryEnabled || ctx.telemetryEvents.length === 0);
|
|
4771
4620
|
i0.ɵɵadvance(3);
|
|
4772
|
-
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ?
|
|
4621
|
+
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ? 27 : -1);
|
|
4773
4622
|
i0.ɵɵadvance();
|
|
4774
|
-
i0.ɵɵconditional(ctx.engineDetailPanel.isOpen && ctx.engineDetailPanel.engine ?
|
|
4775
|
-
} }, dependencies: [i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.DecimalPipe, i3.DatePipe], styles: [".system-diagnostics[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface-sunken);\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n\n\n.diagnostics-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n flex-shrink: 0;\n}\n\n.header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.header-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 22px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.auto-refresh-control[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-refresh-control[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n}\n\n.auto-refresh-control[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.refresh-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-status-success);\n font-size: 12px;\n}\n\n.refresh-btn[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n border: none;\n padding: 10px 20px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n\n.refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.overview-cards-container[_ngcontent-%COMP%] {\n position: relative;\n background: var(--mj-bg-page);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n transition: all 0.3s ease;\n}\n\n.overview-cards-container.collapsed[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.kpi-toggle-btn[_ngcontent-%COMP%] {\n position: absolute;\n right: 24px;\n top: 50%;\n transform: translateY(-50%);\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 0.2s ease;\n z-index: 10;\n}\n\n.kpi-toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.overview-cards-container.collapsed[_ngcontent-%COMP%] .kpi-toggle-btn[_ngcontent-%COMP%] {\n top: 50%;\n}\n\n\n\n.overview-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n padding: 20px 24px;\n padding-right: 60px;\n background: var(--mj-bg-page);\n flex-shrink: 0;\n}\n\n\n\n.overview-cards-mini[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 10px 60px 10px 24px;\n background: var(--mj-bg-page);\n}\n\n.mini-kpi[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.mini-kpi[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-color-indigo-500);\n}\n\n.mini-kpi.warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.mini-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mini-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.mini-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 20px;\n background: var(--mj-border-default);\n}\n\n.overview-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-radius: var(--mj-radius-lg);\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-md);\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.card-icon--engines[_ngcontent-%COMP%] {\n background: var(--mj-color-accent-300);\n color: var(--mj-brand-primary);\n}\n\n.card-icon--memory[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.card-icon--warning[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n color: var(--mj-status-error);\n}\n\n.card-icon--success[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-status-success);\n}\n\n.card-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-value[_ngcontent-%COMP%] {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n.card-label[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-top: 0.25rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.card-subtitle[_ngcontent-%COMP%] {\n font-size: 0.6875rem;\n color: var(--mj-text-muted);\n margin-top: 0.125rem;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n\n\n.left-nav[_ngcontent-%COMP%] {\n width: 240px;\n background: var(--mj-bg-page);\n border-right: 1px solid var(--mj-border-default);\n padding: 16px 0;\n flex-shrink: 0;\n}\n\n.nav-section[_ngcontent-%COMP%] {\n padding: 0 12px;\n}\n\n.nav-section-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px;\n margin-bottom: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 14px;\n transition: all 0.2s ease;\n margin-bottom: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 15px;\n}\n\n.nav-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n min-width: 24px;\n text-align: center;\n}\n\n.nav-item.active[_ngcontent-%COMP%] .nav-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.nav-badge--warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-500) !important;\n color: white !important;\n}\n\n.nav-badge--success[_ngcontent-%COMP%] {\n background: var(--mj-status-success) !important;\n color: white !important;\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator[_ngcontent-%COMP%] .config-note[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n margin-top: 8px;\n}\n\n\n\n.engine-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n.info-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n\n\n.recommendation-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.redundant-loads-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] .entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip[_ngcontent-%COMP%] {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n\n\n.footer[_ngcontent-%COMP%] {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.warning-banner[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card[_ngcontent-%COMP%] {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info[_ngcontent-%COMP%] {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.severity-info[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.severity-warning[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-color-warning-500); }\n.severity-optimization[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n\n.insight-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview[_ngcontent-%COMP%] { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery[_ngcontent-%COMP%] { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network[_ngcontent-%COMP%] { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom[_ngcontent-%COMP%] { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.count-warning[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.slow-queries-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.insight-card.expandable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.insight-details[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time[_ngcontent-%COMP%] {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line[_ngcontent-%COMP%] {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .marker-line[_ngcontent-%COMP%] {\n display: none;\n}\n\n.tl-runview[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-info-700); }\n.tl-runquery[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-violet-700); }\n.tl-engine[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-success-700); }\n.tl-ai[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-warning-700); }\n.tl-cache[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n\n\n.marker-bolt[_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n\n\n.tl-runview.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n\n\n.cache-hit-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.timeline-item.cache-hit[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n\n\n.timeline-entities[_ngcontent-%COMP%], \n.slow-query-entities[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n\n\n.timeline-pills[_ngcontent-%COMP%], \n.slow-query-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-label[_ngcontent-%COMP%] {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-value[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.param-pill.pill-filter[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n\n\n.slow-query-item.cache-hit[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.sortable-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header[_ngcontent-%COMP%] i.fa-sort-up[_ngcontent-%COMP%], \n.sortable-header[_ngcontent-%COMP%] i.fa-sort-down[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n\n\n.filter-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n}\n\n.slow-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n\n\n.category-chip.small[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.perf-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel[_ngcontent-%COMP%] .section-panel-content[_ngcontent-%COMP%] {\n padding: 20px 24px;\n}\n\n\n\n.success-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n\n\n.filter-bar.compact[_ngcontent-%COMP%] {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n\n\n.category-item[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n\n\n.insight-key-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n\n\n.params-display[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-key[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.perfmon-section[_ngcontent-%COMP%] {\n \n\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n \n\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runview); }\n.legend-item.runquery[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runquery); }\n.legend-item.engine[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-engine); }\n.legend-item.ai[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] .axis-label[_ngcontent-%COMP%] {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.footer-stats[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n\n\n.perfmon-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn[_ngcontent-%COMP%]:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active[_ngcontent-%COMP%] {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.control-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.zoom-level[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-rect) {\n pointer-events: none;\n}\n\n\n\n.zoom-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info[_ngcontent-%COMP%] .zoom-level[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.zoom-info[_ngcontent-%COMP%] .time-range[_ngcontent-%COMP%] {\n color: var(--perfmon-text-faint);\n}\n\n\n\n@media (max-width: 1024px) {\n .main-content[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .left-nav[_ngcontent-%COMP%] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .diagnostics-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n width: 100%;\n flex-wrap: wrap;\n }\n\n .overview-cards[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .engine-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n\n\n.export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn[_ngcontent-%COMP%]:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n\n\n.event-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.detail-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value.slow[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-key[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n\n\n.params-grid[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n\n\n.pattern-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-val[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover .marker-dot[_ngcontent-%COMP%] {\n transform: scale(1.3);\n}\n\n\n\n\n\n\n.engine-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.engine-summary-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-items-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-item-details[_ngcontent-%COMP%] {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n\n\n.config-health-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n.config-detail-row--error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n\n\n.sample-data-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sample-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn[_ngcontent-%COMP%], \n.load-all-btn[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:hover:not(:disabled), \n.load-all-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:disabled, \n.load-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n.cache-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.cache-type-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview[_ngcontent-%COMP%] {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}"], changeDetection: 0 });
|
|
4623
|
+
i0.ɵɵconditional(ctx.engineDetailPanel.isOpen && ctx.engineDetailPanel.engine ? 28 : -1);
|
|
4624
|
+
} }, dependencies: [i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i3.MJStatBadgeComponent, i3.MJRefreshButtonComponent, i3.MJTabNavComponent, i4.DecimalPipe, i4.DatePipe], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n.system-diagnostics[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n display: flex;\n flex-direction: column;\n}\n\n\n\n.auto-refresh-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.auto-refresh-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n cursor: pointer;\n}\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator[_ngcontent-%COMP%] .config-note[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n margin-top: 8px;\n}\n\n\n\n.engine-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n.info-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n\n\n.recommendation-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.redundant-loads-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] .entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip[_ngcontent-%COMP%] {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n\n\n.footer[_ngcontent-%COMP%] {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.warning-banner[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card[_ngcontent-%COMP%] {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info[_ngcontent-%COMP%] {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.severity-info[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.severity-warning[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-color-warning-500); }\n.severity-optimization[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n\n.insight-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview[_ngcontent-%COMP%] { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery[_ngcontent-%COMP%] { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network[_ngcontent-%COMP%] { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom[_ngcontent-%COMP%] { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.count-warning[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.slow-queries-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.insight-card.expandable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.insight-details[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time[_ngcontent-%COMP%] {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line[_ngcontent-%COMP%] {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .marker-line[_ngcontent-%COMP%] {\n display: none;\n}\n\n.tl-runview[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-info-700); }\n.tl-runquery[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-violet-700); }\n.tl-engine[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-success-700); }\n.tl-ai[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-warning-700); }\n.tl-cache[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n\n\n.marker-bolt[_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n\n\n.tl-runview.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n\n\n.cache-hit-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.timeline-item.cache-hit[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n\n\n.timeline-entities[_ngcontent-%COMP%], \n.slow-query-entities[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n\n\n.timeline-pills[_ngcontent-%COMP%], \n.slow-query-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-label[_ngcontent-%COMP%] {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-value[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.param-pill.pill-filter[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n\n\n.slow-query-item.cache-hit[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.sortable-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header[_ngcontent-%COMP%] i.fa-sort-up[_ngcontent-%COMP%], \n.sortable-header[_ngcontent-%COMP%] i.fa-sort-down[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n\n\n.filter-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n}\n\n.slow-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n\n\n.category-chip.small[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.perf-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel[_ngcontent-%COMP%] .section-panel-content[_ngcontent-%COMP%] {\n padding: 20px 24px;\n}\n\n\n\n.success-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n\n\n.filter-bar.compact[_ngcontent-%COMP%] {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n\n\n.category-item[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n\n\n.insight-key-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n\n\n.params-display[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-key[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.perfmon-section[_ngcontent-%COMP%] {\n \n\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n \n\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runview); }\n.legend-item.runquery[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runquery); }\n.legend-item.engine[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-engine); }\n.legend-item.ai[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] .axis-label[_ngcontent-%COMP%] {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.footer-stats[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n\n\n.perfmon-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn[_ngcontent-%COMP%]:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active[_ngcontent-%COMP%] {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.control-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.zoom-level[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-rect) {\n pointer-events: none;\n}\n\n\n\n.zoom-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info[_ngcontent-%COMP%] .zoom-level[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.zoom-info[_ngcontent-%COMP%] .time-range[_ngcontent-%COMP%] {\n color: var(--perfmon-text-faint);\n}\n\n\n\n@media (max-width: 1024px) {\n .main-content[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .left-nav[_ngcontent-%COMP%] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .engine-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n\n\n.export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn[_ngcontent-%COMP%]:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n\n\n.event-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.detail-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value.slow[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-key[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n\n\n.params-grid[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n\n\n.pattern-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-val[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover .marker-dot[_ngcontent-%COMP%] {\n transform: scale(1.3);\n}\n\n\n\n\n\n\n.engine-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.engine-summary-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-items-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-item-details[_ngcontent-%COMP%] {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n\n\n.config-health-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n.config-detail-row--error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n\n\n.sample-data-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sample-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn[_ngcontent-%COMP%], \n.load-all-btn[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:hover:not(:disabled), \n.load-all-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:disabled, \n.load-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n.cache-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.cache-type-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview[_ngcontent-%COMP%] {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}"], changeDetection: 0 });
|
|
4776
4625
|
};
|
|
4777
4626
|
SystemDiagnosticsComponent = __decorate([
|
|
4778
4627
|
RegisterClass(BaseResourceComponent, 'SystemDiagnosticsResource')
|
|
@@ -4781,156 +4630,52 @@ export { SystemDiagnosticsComponent };
|
|
|
4781
4630
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SystemDiagnosticsComponent, [{
|
|
4782
4631
|
type: Component,
|
|
4783
4632
|
args: [{ standalone: false, selector: 'app-system-diagnostics', changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
Refresh Now
|
|
4807
|
-
</button>
|
|
4808
|
-
</div>
|
|
4633
|
+
<!--
|
|
4634
|
+
SystemDiagnostics renders inside Admin's "Monitoring" left-nav shell.
|
|
4635
|
+
L1 (outer Admin rail) is owned by the parent shell; here we use
|
|
4636
|
+
<mj-page-header-interior> with [toolbar]=<mj-tab-nav> to render the
|
|
4637
|
+
L2 section nav (Engine Registry / Redundant / Performance / Cache),
|
|
4638
|
+
and [actions]=auto-refresh + refresh button. The Performance section
|
|
4639
|
+
carries its own L3 perf-tabs strip inside its panel.
|
|
4640
|
+
See plans/explorer-chrome-conventions.md Section 10.
|
|
4641
|
+
-->
|
|
4642
|
+
<mj-page-header-interior
|
|
4643
|
+
Role="region"
|
|
4644
|
+
AriaLabel="System diagnostics"
|
|
4645
|
+
Title="System Diagnostics"
|
|
4646
|
+
Subtitle="Engine registry, cache, and performance telemetry">
|
|
4647
|
+
<div meta>
|
|
4648
|
+
<mj-stat-badge [Count]="engineStats?.totalEngines || 0" Label="engines"></mj-stat-badge>
|
|
4649
|
+
<mj-stat-badge [Count]="formatBytes(engineStats?.totalEstimatedMemoryBytes || 0)" Label="memory"></mj-stat-badge>
|
|
4650
|
+
<mj-stat-badge
|
|
4651
|
+
[Count]="redundantLoads.length"
|
|
4652
|
+
Label="redundant"
|
|
4653
|
+
[Variant]="redundantLoads.length > 0 ? 'warning' : 'default'">
|
|
4654
|
+
</mj-stat-badge>
|
|
4809
4655
|
</div>
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
</
|
|
4816
|
-
|
|
4817
|
-
@if (!kpiCardsCollapsed) {
|
|
4818
|
-
<!-- Expanded View -->
|
|
4819
|
-
<div class="overview-cards">
|
|
4820
|
-
<div class="overview-card">
|
|
4821
|
-
<div class="card-icon card-icon--engines">
|
|
4822
|
-
<i class="fa-solid fa-cogs"></i>
|
|
4823
|
-
</div>
|
|
4824
|
-
<div class="card-content">
|
|
4825
|
-
<div class="card-value">{{ engineStats?.totalEngines || 0 }}</div>
|
|
4826
|
-
<div class="card-label">Registered Engines</div>
|
|
4827
|
-
<div class="card-subtitle">{{ engineStats?.loadedEngines || 0 }} loaded</div>
|
|
4828
|
-
</div>
|
|
4829
|
-
</div>
|
|
4830
|
-
|
|
4831
|
-
<div class="overview-card">
|
|
4832
|
-
<div class="card-icon card-icon--memory">
|
|
4833
|
-
<i class="fa-solid fa-microchip"></i>
|
|
4834
|
-
</div>
|
|
4835
|
-
<div class="card-content">
|
|
4836
|
-
<div class="card-value">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</div>
|
|
4837
|
-
<div class="card-label">Engine Memory</div>
|
|
4838
|
-
<div class="card-subtitle">Estimated total</div>
|
|
4839
|
-
</div>
|
|
4840
|
-
</div>
|
|
4841
|
-
|
|
4842
|
-
<div class="overview-card">
|
|
4843
|
-
<div class="card-icon" [class.card-icon--warning]="redundantLoads.length > 0" [class.card-icon--success]="redundantLoads.length === 0">
|
|
4844
|
-
<i class="fa-solid fa-copy"></i>
|
|
4845
|
-
</div>
|
|
4846
|
-
<div class="card-content">
|
|
4847
|
-
<div class="card-value">{{ redundantLoads.length }}</div>
|
|
4848
|
-
<div class="card-label">Redundant Loads</div>
|
|
4849
|
-
<div class="card-subtitle">
|
|
4850
|
-
@if (redundantLoads.length === 0) {
|
|
4851
|
-
No redundant loading detected
|
|
4852
|
-
} @else {
|
|
4853
|
-
{{ redundantLoads.length }} entities loaded by multiple engines
|
|
4854
|
-
}
|
|
4855
|
-
</div>
|
|
4856
|
-
</div>
|
|
4857
|
-
</div>
|
|
4858
|
-
</div>
|
|
4859
|
-
} @else {
|
|
4860
|
-
<!-- Collapsed View - Mini KPI bar -->
|
|
4861
|
-
<div class="overview-cards-mini">
|
|
4862
|
-
<div class="mini-kpi" title="Registered Engines">
|
|
4863
|
-
<i class="fa-solid fa-cogs"></i>
|
|
4864
|
-
<span class="mini-value">{{ engineStats?.totalEngines || 0 }}</span>
|
|
4865
|
-
<span class="mini-label">Engines</span>
|
|
4866
|
-
</div>
|
|
4867
|
-
<div class="mini-divider"></div>
|
|
4868
|
-
<div class="mini-kpi" title="Engine Memory">
|
|
4869
|
-
<i class="fa-solid fa-microchip"></i>
|
|
4870
|
-
<span class="mini-value">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</span>
|
|
4871
|
-
<span class="mini-label">Memory</span>
|
|
4872
|
-
</div>
|
|
4873
|
-
<div class="mini-divider"></div>
|
|
4874
|
-
<div class="mini-kpi" [class.warning]="redundantLoads.length > 0" title="Redundant Loads">
|
|
4875
|
-
<i class="fa-solid fa-copy"></i>
|
|
4876
|
-
<span class="mini-value">{{ redundantLoads.length }}</span>
|
|
4877
|
-
<span class="mini-label">Redundant</span>
|
|
4878
|
-
</div>
|
|
4879
|
-
</div>
|
|
4880
|
-
}
|
|
4656
|
+
<div toolbar>
|
|
4657
|
+
<mj-tab-nav
|
|
4658
|
+
[Tabs]="diagnosticsTabs"
|
|
4659
|
+
[ActiveKey]="activeSection"
|
|
4660
|
+
(TabChange)="onSectionTabChange($event)">
|
|
4661
|
+
</mj-tab-nav>
|
|
4881
4662
|
</div>
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
<div
|
|
4899
|
-
class="nav-item"
|
|
4900
|
-
[class.active]="activeSection === 'redundant'"
|
|
4901
|
-
(click)="setActiveSection('redundant')"
|
|
4902
|
-
>
|
|
4903
|
-
<i class="fa-solid fa-copy"></i>
|
|
4904
|
-
<span>Redundant Loading</span>
|
|
4905
|
-
@if (redundantLoads.length > 0) {
|
|
4906
|
-
<span class="nav-badge nav-badge--warning">{{ redundantLoads.length }}</span>
|
|
4907
|
-
} @else {
|
|
4908
|
-
<span class="nav-badge nav-badge--success">0</span>
|
|
4909
|
-
}
|
|
4910
|
-
</div>
|
|
4911
|
-
<div
|
|
4912
|
-
class="nav-item"
|
|
4913
|
-
[class.active]="activeSection === 'performance'"
|
|
4914
|
-
(click)="setActiveSection('performance')"
|
|
4915
|
-
>
|
|
4916
|
-
<i class="fa-solid fa-chart-line"></i>
|
|
4917
|
-
<span>Performance</span>
|
|
4918
|
-
<span class="nav-badge">{{ telemetrySummary?.totalEvents || 0 }}</span>
|
|
4919
|
-
</div>
|
|
4920
|
-
<div
|
|
4921
|
-
class="nav-item"
|
|
4922
|
-
[class.active]="activeSection === 'cache'"
|
|
4923
|
-
(click)="setActiveSection('cache')"
|
|
4924
|
-
>
|
|
4925
|
-
<i class="fa-solid fa-database"></i>
|
|
4926
|
-
<span>Local Cache</span>
|
|
4927
|
-
<span class="nav-badge">{{ cacheStats?.totalEntries || 0 }}</span>
|
|
4928
|
-
</div>
|
|
4929
|
-
</div>
|
|
4930
|
-
</div>
|
|
4931
|
-
|
|
4932
|
-
<!-- Content Area -->
|
|
4933
|
-
<div class="content-area">
|
|
4663
|
+
<div actions>
|
|
4664
|
+
<label class="auto-refresh-toggle">
|
|
4665
|
+
<input type="checkbox" [(ngModel)]="autoRefresh" (change)="toggleAutoRefresh()">
|
|
4666
|
+
Auto-refresh
|
|
4667
|
+
</label>
|
|
4668
|
+
<mj-refresh-button [Loading]="isLoading" Label="Refresh Now" [ShowLabel]="true" (Clicked)="refreshData()"></mj-refresh-button>
|
|
4669
|
+
</div>
|
|
4670
|
+
</mj-page-header-interior>
|
|
4671
|
+
|
|
4672
|
+
<mj-page-body-interior [Padding]="false">
|
|
4673
|
+
<div class="system-diagnostics">
|
|
4674
|
+
|
|
4675
|
+
<!-- KPI overview moved into chrome [meta] slot as <mj-stat-badge>s. -->
|
|
4676
|
+
|
|
4677
|
+
<!-- Section Content (L2 nav is rendered as horizontal tabs in the interior chrome above) -->
|
|
4678
|
+
<div class="content-area">
|
|
4934
4679
|
<!-- Engine Registry Section -->
|
|
4935
4680
|
@if (activeSection === 'engines') {
|
|
4936
4681
|
<div class="section-panel">
|
|
@@ -5791,8 +5536,7 @@ export { SystemDiagnosticsComponent };
|
|
|
5791
5536
|
</div>
|
|
5792
5537
|
}
|
|
5793
5538
|
</div>
|
|
5794
|
-
|
|
5795
|
-
|
|
5539
|
+
|
|
5796
5540
|
<!-- Last Updated -->
|
|
5797
5541
|
<div class="footer">
|
|
5798
5542
|
<span class="last-updated">
|
|
@@ -6097,10 +5841,11 @@ export { SystemDiagnosticsComponent };
|
|
|
6097
5841
|
</div>
|
|
6098
5842
|
</div>
|
|
6099
5843
|
}
|
|
6100
|
-
`, styles: [".system-diagnostics {\n padding: 0;\n background: var(--mj-bg-surface-sunken);\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Header */\n.diagnostics-header {\n background: var(--mj-bg-page);\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n flex-shrink: 0;\n}\n\n.header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-title i {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.header-title h2 {\n margin: 0;\n font-size: 22px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.auto-refresh-control {\n display: flex;\n align-items: center;\n gap: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-refresh-control label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n}\n\n.auto-refresh-control input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.refresh-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-status-success);\n font-size: 12px;\n}\n\n.refresh-btn {\n background: var(--mj-status-success);\n color: white;\n border: none;\n padding: 10px 20px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.refresh-btn:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n\n.refresh-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Overview Cards Container (Collapsible) */\n.overview-cards-container {\n position: relative;\n background: var(--mj-bg-page);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n transition: all 0.3s ease;\n}\n\n.overview-cards-container.collapsed {\n padding: 0;\n}\n\n.kpi-toggle-btn {\n position: absolute;\n right: 24px;\n top: 50%;\n transform: translateY(-50%);\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 0.2s ease;\n z-index: 10;\n}\n\n.kpi-toggle-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.overview-cards-container.collapsed .kpi-toggle-btn {\n top: 50%;\n}\n\n/* Overview Cards */\n.overview-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n padding: 20px 24px;\n padding-right: 60px;\n background: var(--mj-bg-page);\n flex-shrink: 0;\n}\n\n/* Mini KPI Bar (Collapsed State) */\n.overview-cards-mini {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 10px 60px 10px 24px;\n background: var(--mj-bg-page);\n}\n\n.mini-kpi {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.mini-kpi i {\n font-size: 14px;\n color: var(--mj-color-indigo-500);\n}\n\n.mini-kpi.warning i {\n color: var(--mj-color-warning-500);\n}\n\n.mini-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mini-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.mini-divider {\n width: 1px;\n height: 20px;\n background: var(--mj-border-default);\n}\n\n.overview-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-radius: var(--mj-radius-lg);\n border: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-md);\n}\n\n.card-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.card-icon--engines {\n background: var(--mj-color-accent-300);\n color: var(--mj-brand-primary);\n}\n\n.card-icon--memory {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.card-icon--warning {\n background: var(--mj-color-error-100);\n color: var(--mj-status-error);\n}\n\n.card-icon--success {\n background: var(--mj-color-success-100);\n color: var(--mj-status-success);\n}\n\n.card-content {\n flex: 1;\n min-width: 0;\n}\n\n.card-value {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n.card-label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-top: 0.25rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.card-subtitle {\n font-size: 0.6875rem;\n color: var(--mj-text-muted);\n margin-top: 0.125rem;\n}\n\n/* Main Content */\n.main-content {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n/* Left Navigation */\n.left-nav {\n width: 240px;\n background: var(--mj-bg-page);\n border-right: 1px solid var(--mj-border-default);\n padding: 16px 0;\n flex-shrink: 0;\n}\n\n.nav-section {\n padding: 0 12px;\n}\n\n.nav-section-title {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px;\n margin-bottom: 4px;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 14px;\n transition: all 0.2s ease;\n margin-bottom: 4px;\n}\n\n.nav-item:hover {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.nav-item i {\n width: 18px;\n text-align: center;\n font-size: 15px;\n}\n\n.nav-item span:first-of-type {\n flex: 1;\n}\n\n.nav-badge {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n min-width: 24px;\n text-align: center;\n}\n\n.nav-item.active .nav-badge {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.nav-badge--warning {\n background: var(--mj-color-warning-500) !important;\n color: white !important;\n}\n\n.nav-badge--success {\n background: var(--mj-status-success) !important;\n color: white !important;\n}\n\n/* Content Area */\n.content-area {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header h3 i {\n color: var(--mj-status-success);\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn i {\n font-size: 11px;\n}\n\n.loading-indicator {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner i {\n color: var(--mj-status-error);\n}\n\n.error-banner .dismiss-btn {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner .dismiss-btn:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Status indicator for read-only server telemetry status */\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator .config-note {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state i {\n color: var(--mj-status-success);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint {\n font-size: 13px;\n margin-top: 8px;\n}\n\n/* Engine Grid */\n.engine-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item i {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label {\n color: var(--mj-text-muted);\n}\n\n.stat-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* Info Banner */\n.info-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n/* Recommendation Banner */\n.recommendation-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n/* Redundant Loads Table */\n.redundant-loads-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table th.text-right {\n text-align: right;\n}\n\n.redundant-loads-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table td.text-right {\n text-align: right;\n}\n\n.redundant-loads-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.redundant-loads-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table .entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n/* Footer */\n.footer {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Performance Section Styles */\n.warning-banner {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner i {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown {\n margin-bottom: 24px;\n}\n\n.category-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section {\n margin-bottom: 24px;\n}\n\n.insights-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header i {\n font-size: 16px;\n}\n\n.severity-info .insight-header i { color: var(--mj-brand-primary); }\n.severity-warning .insight-header i { color: var(--mj-color-warning-500); }\n.severity-optimization .insight-header i { color: var(--mj-status-success); }\n\n.insight-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion i {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.patterns-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell {\n font-weight: 500;\n}\n\n.count-warning {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Slow Queries Section */\n.slow-queries-section {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable {\n cursor: pointer;\n}\n\n.slow-query-item.clickable:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Expandable Insight Cards */\n.insight-card.expandable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card .expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded {\n border-width: 2px;\n}\n\n.insight-details {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section {\n margin-bottom: 12px;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n/* Timeline Section */\n.timeline-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item:last-child .marker-line {\n display: none;\n}\n\n.tl-runview .marker-dot { background: var(--mj-color-info-700); }\n.tl-runquery .marker-dot { background: var(--mj-color-violet-700); }\n.tl-engine .marker-dot { background: var(--mj-color-success-700); }\n.tl-ai .marker-dot { background: var(--mj-color-warning-700); }\n.tl-cache .marker-dot { background: var(--mj-status-error); }\n\n/* Cache hit bolt marker */\n.marker-bolt {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt i {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n/* Category-specific bolt colors */\n.tl-runview.cache-hit .marker-bolt { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit .marker-bolt { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit .marker-bolt { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit .marker-bolt { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit .marker-bolt { color: var(--mj-status-error); }\n\n/* Cache hit badge */\n.cache-hit-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge i {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n/* Highlighted background for cache hit items */\n.timeline-item.cache-hit .timeline-content {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n/* Entity Pills for RunViews batch operations */\n.timeline-entities,\n.slow-query-entities {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n/* Parameter Pills */\n.timeline-pills,\n.slow-query-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill .pill-label {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill .pill-value {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Pill type colors */\n.param-pill.pill-filter {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n/* Slow query cache hit styling */\n.slow-query-item.cache-hit {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n/* Filter Bar */\n.filter-bar {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box input {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Sortable Table Headers */\n.sortable-header {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header i {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header i.fa-sort-up,\n.sortable-header i.fa-sort-down {\n color: var(--mj-color-indigo-500);\n}\n\n/* Table Enhancements */\n.filter-cell {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row {\n background: var(--mj-color-error-100);\n}\n\n.slow-row:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n/* Small category chips */\n.category-chip.small {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Performance Sub-Tabs */\n.perf-tabs {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab i {\n font-size: 14px;\n}\n\n.tab-badge {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active .tab-badge {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel .section-panel-content {\n padding: 20px 24px;\n}\n\n/* Success Banner */\n.success-banner {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner i {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n/* Compact Filter Bar */\n.filter-bar.compact {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n/* Clickable category items */\n.category-item {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n/* Insight Key Info (always visible) */\n.insight-key-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n/* Params Display */\n.params-display {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row:last-child {\n border-bottom: none;\n}\n\n.param-key {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* PerfMon Chart Styles\n * ====================\n * Chrome (background, borders, text, controls) is mapped to MJ semantic tokens\n * so the panel adapts to the active theme and is white-labelable. Series colors\n * (cyan / magenta / neon-green / orange) are categorical chart data \u2014 they must\n * stay distinct across themes and are exempt by the same rule that exempts\n * other chart-data palettes.\n *\n * The accent (--perfmon-accent) is intentionally kept as the same neon green as\n * the engine series so the \"live signal\" indicators (header icon, footer count,\n * chart strokes) read as part of the chart palette rather than the app's brand.\n *\n * Overlays are derived via color-mix() from --mj-text-primary so they invert\n * automatically: dark tints over light surfaces in light mode, light tints over\n * dark surfaces in dark mode.\n */\n.perfmon-section {\n /* Chrome \u2014 adapts to theme */\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n /* Categorical series colors and live-signal accent \u2014 exempt */\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header h4 i {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview .legend-dot { background: var(--perfmon-series-runview); }\n.legend-item.runquery .legend-dot { background: var(--perfmon-series-runquery); }\n.legend-item.engine .legend-dot { background: var(--perfmon-series-engine); }\n.legend-item.ai .legend-dot { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis .axis-label {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart svg {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note i {\n color: var(--perfmon-accent);\n}\n\n.footer-stats {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n/* D3 Chart Elements */\n.perfmon-chart :deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart :deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart :deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart :deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart :deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart :deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart :deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n/* PerfMon Chart Controls */\n.perfmon-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn i {\n font-size: 14px;\n}\n\n/* Mode Toggle Buttons */\n.mode-toggle {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn i {\n font-size: 12px;\n}\n\n.control-divider {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle span {\n white-space: nowrap;\n}\n\n.zoom-level {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n/* Gap indicators in chart */\n.perfmon-chart :deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart :deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n/* Selection brush overlay */\n.perfmon-chart :deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart :deep(.selection-rect) {\n pointer-events: none;\n}\n\n/* Zoom info display */\n.zoom-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info .zoom-level {\n color: var(--perfmon-accent);\n}\n\n.zoom-info .time-range {\n color: var(--perfmon-text-faint);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .main-content {\n flex-direction: column;\n }\n\n .left-nav {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title {\n display: none;\n }\n\n .nav-item {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .diagnostics-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .header-controls {\n width: 100%;\n flex-wrap: wrap;\n }\n\n .overview-cards {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .engine-grid {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n/* Export Button */\n.export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n/* Event Detail Slide-in Panel */\n.event-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n@keyframes slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .close-btn {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel .close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Detail Metrics */\n.detail-metrics {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics .metric {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics .metric-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics .metric-value.slow {\n color: var(--mj-status-error);\n}\n\n.detail-metrics .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Detail Sections */\n.event-detail-panel .detail-section {\n margin-bottom: 24px;\n}\n\n.event-detail-panel .detail-section h4 {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel .detail-section h4 i {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-key {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n/* Params Grid */\n.params-grid {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item:last-child {\n border-bottom: none;\n}\n\n.param-name {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n/* Pattern Summary */\n.pattern-summary {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat {\n text-align: center;\n}\n\n.pattern-stat .stat-val {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat .stat-label {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning i {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n/* Detail Actions */\n.detail-actions {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button i {\n color: var(--mj-text-secondary);\n}\n\n/* Clickable timeline items */\n.timeline-item.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable:hover .marker-dot {\n transform: scale(1.3);\n}\n\n/* ========================================\n ENGINE DETAIL PANEL STYLES\n ======================================== */\n\n.engine-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n.engine-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n.engine-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel .panel-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel .icon-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel .icon-btn:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .icon-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel .close-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel .close-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Engine Summary */\n.engine-summary-section {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section .summary-stat {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section .summary-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section .summary-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded {\n background: var(--mj-status-success);\n}\n\n/* Config Items Section */\n.config-items-section h4 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section h4 i {\n color: var(--mj-status-success);\n}\n\n.config-items-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded .expand-icon {\n color: var(--mj-status-success);\n}\n\n.config-item-details {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row:last-child {\n border-bottom: none;\n}\n\n.config-detail-row .detail-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row .detail-value {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n/* Health status indicators for config items */\n.config-health-icon {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure {\n color: var(--mj-status-error);\n}\n.config-detail-row--error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n/* Sample Data Section */\n.sample-data-section {\n margin-top: 16px;\n}\n\n.sample-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn,\n.load-all-btn {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn:hover:not(:disabled),\n.load-all-btn:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn:disabled,\n.load-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table td {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.sample-data-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Spinning animation for refresh icon */\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* ========================================\n LOCAL CACHE SECTION STYLES\n ======================================== */\n\n.cache-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section {\n margin-top: 24px;\n}\n\n.cache-entries-section .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section .section-header h4 {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table th {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table td {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.cache-type-chip {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}\n"] }]
|
|
5844
|
+
</mj-page-body-interior>
|
|
5845
|
+
`, styles: ["/*\n SystemDiagnostics renders inside Admin's \"Monitoring\" left-nav shell.\n Host is a flex column so <mj-page-header-interior> sits pinned at the top\n and .scrollable-content fills the rest. See plans/explorer-chrome-conventions.md Section 10.\n*/\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n.system-diagnostics {\n background: var(--mj-bg-surface-sunken);\n display: flex;\n flex-direction: column;\n}\n\n/* Inline auto-refresh toggle in the [actions] slot. */\n.auto-refresh-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.auto-refresh-toggle input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n cursor: pointer;\n}\n\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/*\n Overview KPIs (engines / memory / redundant) now live as <mj-stat-badge>\n instances in the chrome's [meta] slot \u2014 see the header-interior block above.\n The legacy .overview-cards-container / .overview-card / .kpi-toggle-btn /\n .mini-kpi rules were retired with that migration.\n*/\n\n/* Main Content */\n/*\n Content Area \u2014 L2 nav was previously a bespoke left rail (.left-nav). It now\n lives in the interior chrome above as <mj-tab-nav>. Section panels render\n directly inside .content-area, which fills the remaining body width.\n*/\n.content-area {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header h3 i {\n color: var(--mj-status-success);\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn i {\n font-size: 11px;\n}\n\n.loading-indicator {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner i {\n color: var(--mj-status-error);\n}\n\n.error-banner .dismiss-btn {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner .dismiss-btn:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Status indicator for read-only server telemetry status */\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator .config-note {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state i {\n color: var(--mj-status-success);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint {\n font-size: 13px;\n margin-top: 8px;\n}\n\n/* Engine Grid */\n.engine-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item i {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label {\n color: var(--mj-text-muted);\n}\n\n.stat-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* Info Banner */\n.info-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n/* Recommendation Banner */\n.recommendation-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n/* Redundant Loads Table */\n.redundant-loads-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table th.text-right {\n text-align: right;\n}\n\n.redundant-loads-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table td.text-right {\n text-align: right;\n}\n\n.redundant-loads-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.redundant-loads-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table .entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n/* Footer */\n.footer {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Performance Section Styles */\n.warning-banner {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner i {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown {\n margin-bottom: 24px;\n}\n\n.category-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section {\n margin-bottom: 24px;\n}\n\n.insights-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header i {\n font-size: 16px;\n}\n\n.severity-info .insight-header i { color: var(--mj-brand-primary); }\n.severity-warning .insight-header i { color: var(--mj-color-warning-500); }\n.severity-optimization .insight-header i { color: var(--mj-status-success); }\n\n.insight-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion i {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.patterns-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell {\n font-weight: 500;\n}\n\n.count-warning {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Slow Queries Section */\n.slow-queries-section {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable {\n cursor: pointer;\n}\n\n.slow-query-item.clickable:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Expandable Insight Cards */\n.insight-card.expandable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card .expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded {\n border-width: 2px;\n}\n\n.insight-details {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section {\n margin-bottom: 12px;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n/* Timeline Section */\n.timeline-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item:last-child .marker-line {\n display: none;\n}\n\n.tl-runview .marker-dot { background: var(--mj-color-info-700); }\n.tl-runquery .marker-dot { background: var(--mj-color-violet-700); }\n.tl-engine .marker-dot { background: var(--mj-color-success-700); }\n.tl-ai .marker-dot { background: var(--mj-color-warning-700); }\n.tl-cache .marker-dot { background: var(--mj-status-error); }\n\n/* Cache hit bolt marker */\n.marker-bolt {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt i {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n/* Category-specific bolt colors */\n.tl-runview.cache-hit .marker-bolt { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit .marker-bolt { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit .marker-bolt { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit .marker-bolt { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit .marker-bolt { color: var(--mj-status-error); }\n\n/* Cache hit badge */\n.cache-hit-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge i {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n/* Highlighted background for cache hit items */\n.timeline-item.cache-hit .timeline-content {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n/* Entity Pills for RunViews batch operations */\n.timeline-entities,\n.slow-query-entities {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n/* Parameter Pills */\n.timeline-pills,\n.slow-query-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill .pill-label {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill .pill-value {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Pill type colors */\n.param-pill.pill-filter {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n/* Slow query cache hit styling */\n.slow-query-item.cache-hit {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n/* Filter Bar */\n.filter-bar {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box input {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Sortable Table Headers */\n.sortable-header {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header i {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header i.fa-sort-up,\n.sortable-header i.fa-sort-down {\n color: var(--mj-color-indigo-500);\n}\n\n/* Table Enhancements */\n.filter-cell {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row {\n background: var(--mj-color-error-100);\n}\n\n.slow-row:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n/* Small category chips */\n.category-chip.small {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Performance Sub-Tabs */\n.perf-tabs {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab i {\n font-size: 14px;\n}\n\n.tab-badge {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active .tab-badge {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel .section-panel-content {\n padding: 20px 24px;\n}\n\n/* Success Banner */\n.success-banner {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner i {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n/* Compact Filter Bar */\n.filter-bar.compact {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n/* Clickable category items */\n.category-item {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n/* Insight Key Info (always visible) */\n.insight-key-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n/* Params Display */\n.params-display {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row:last-child {\n border-bottom: none;\n}\n\n.param-key {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* PerfMon Chart Styles\n * ====================\n * Chrome (background, borders, text, controls) is mapped to MJ semantic tokens\n * so the panel adapts to the active theme and is white-labelable. Series colors\n * (cyan / magenta / neon-green / orange) are categorical chart data \u2014 they must\n * stay distinct across themes and are exempt by the same rule that exempts\n * other chart-data palettes.\n *\n * The accent (--perfmon-accent) is intentionally kept as the same neon green as\n * the engine series so the \"live signal\" indicators (header icon, footer count,\n * chart strokes) read as part of the chart palette rather than the app's brand.\n *\n * Overlays are derived via color-mix() from --mj-text-primary so they invert\n * automatically: dark tints over light surfaces in light mode, light tints over\n * dark surfaces in dark mode.\n */\n.perfmon-section {\n /* Chrome \u2014 adapts to theme */\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n /* Categorical series colors and live-signal accent \u2014 exempt */\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header h4 i {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview .legend-dot { background: var(--perfmon-series-runview); }\n.legend-item.runquery .legend-dot { background: var(--perfmon-series-runquery); }\n.legend-item.engine .legend-dot { background: var(--perfmon-series-engine); }\n.legend-item.ai .legend-dot { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis .axis-label {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart svg {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note i {\n color: var(--perfmon-accent);\n}\n\n.footer-stats {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n/* D3 Chart Elements */\n.perfmon-chart :deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart :deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart :deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart :deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart :deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart :deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart :deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n/* PerfMon Chart Controls */\n.perfmon-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn i {\n font-size: 14px;\n}\n\n/* Mode Toggle Buttons */\n.mode-toggle {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn i {\n font-size: 12px;\n}\n\n.control-divider {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle span {\n white-space: nowrap;\n}\n\n.zoom-level {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n/* Gap indicators in chart */\n.perfmon-chart :deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart :deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n/* Selection brush overlay */\n.perfmon-chart :deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart :deep(.selection-rect) {\n pointer-events: none;\n}\n\n/* Zoom info display */\n.zoom-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info .zoom-level {\n color: var(--perfmon-accent);\n}\n\n.zoom-info .time-range {\n color: var(--perfmon-text-faint);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .main-content {\n flex-direction: column;\n }\n\n .left-nav {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title {\n display: none;\n }\n\n .nav-item {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .engine-grid {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n/* Export Button */\n.export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n/* Event Detail Slide-in Panel */\n.event-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n@keyframes slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .close-btn {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel .close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Detail Metrics */\n.detail-metrics {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics .metric {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics .metric-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics .metric-value.slow {\n color: var(--mj-status-error);\n}\n\n.detail-metrics .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Detail Sections */\n.event-detail-panel .detail-section {\n margin-bottom: 24px;\n}\n\n.event-detail-panel .detail-section h4 {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel .detail-section h4 i {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-key {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n/* Params Grid */\n.params-grid {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item:last-child {\n border-bottom: none;\n}\n\n.param-name {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n/* Pattern Summary */\n.pattern-summary {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat {\n text-align: center;\n}\n\n.pattern-stat .stat-val {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat .stat-label {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning i {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n/* Detail Actions */\n.detail-actions {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button i {\n color: var(--mj-text-secondary);\n}\n\n/* Clickable timeline items */\n.timeline-item.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable:hover .marker-dot {\n transform: scale(1.3);\n}\n\n/* ========================================\n ENGINE DETAIL PANEL STYLES\n ======================================== */\n\n.engine-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n.engine-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n.engine-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel .panel-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel .icon-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel .icon-btn:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .icon-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel .close-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel .close-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Engine Summary */\n.engine-summary-section {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section .summary-stat {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section .summary-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section .summary-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded {\n background: var(--mj-status-success);\n}\n\n/* Config Items Section */\n.config-items-section h4 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section h4 i {\n color: var(--mj-status-success);\n}\n\n.config-items-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded .expand-icon {\n color: var(--mj-status-success);\n}\n\n.config-item-details {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row:last-child {\n border-bottom: none;\n}\n\n.config-detail-row .detail-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row .detail-value {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n/* Health status indicators for config items */\n.config-health-icon {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure {\n color: var(--mj-status-error);\n}\n.config-detail-row--error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n/* Sample Data Section */\n.sample-data-section {\n margin-top: 16px;\n}\n\n.sample-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn,\n.load-all-btn {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn:hover:not(:disabled),\n.load-all-btn:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn:disabled,\n.load-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table td {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.sample-data-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Spinning animation for refresh icon */\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* ========================================\n LOCAL CACHE SECTION STYLES\n ======================================== */\n\n.cache-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section {\n margin-top: 24px;\n}\n\n.cache-entries-section .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section .section-header h4 {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table th {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table td {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.cache-type-chip {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}\n"] }]
|
|
6101
5846
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ActivatedRoute }], { perfChartRef: [{
|
|
6102
5847
|
type: ViewChild,
|
|
6103
5848
|
args: ['perfChart', { static: false }]
|
|
6104
5849
|
}] }); })();
|
|
6105
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SystemDiagnosticsComponent, { className: "SystemDiagnosticsComponent", filePath: "src/SystemDiagnostics/system-diagnostics.component.ts", lineNumber:
|
|
5850
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SystemDiagnosticsComponent, { className: "SystemDiagnosticsComponent", filePath: "src/SystemDiagnostics/system-diagnostics.component.ts", lineNumber: 1390 }); })();
|
|
6106
5851
|
//# sourceMappingURL=system-diagnostics.component.js.map
|