@memberjunction/ng-dashboards 5.34.1 → 5.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -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,57 +28,54 @@ 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.ɵɵ
|
|
32
|
-
i0.ɵɵelement(1, "i", 36);
|
|
33
|
-
i0.ɵɵtext(2, " Every 5s ");
|
|
34
|
-
i0.ɵɵelementEnd();
|
|
31
|
+
function SystemDiagnosticsComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelement(0, "mj-stat-badge", 4);
|
|
35
33
|
} }
|
|
36
|
-
function
|
|
34
|
+
function SystemDiagnosticsComponent_Conditional_13_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
37
35
|
i0.ɵɵtext(0, " No redundant loading detected ");
|
|
38
36
|
} }
|
|
39
|
-
function
|
|
37
|
+
function SystemDiagnosticsComponent_Conditional_13_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
40
38
|
i0.ɵɵtext(0);
|
|
41
39
|
} if (rf & 2) {
|
|
42
40
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
43
41
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.redundantLoads.length, " entities loaded by multiple engines ");
|
|
44
42
|
} }
|
|
45
|
-
function
|
|
46
|
-
i0.ɵɵelementStart(0, "div",
|
|
47
|
-
i0.ɵɵelement(3, "i",
|
|
43
|
+
function SystemDiagnosticsComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 35)(2, "div", 36);
|
|
45
|
+
i0.ɵɵelement(3, "i", 20);
|
|
48
46
|
i0.ɵɵelementEnd();
|
|
49
|
-
i0.ɵɵelementStart(4, "div",
|
|
47
|
+
i0.ɵɵelementStart(4, "div", 37)(5, "div", 38);
|
|
50
48
|
i0.ɵɵtext(6);
|
|
51
49
|
i0.ɵɵelementEnd();
|
|
52
|
-
i0.ɵɵelementStart(7, "div",
|
|
50
|
+
i0.ɵɵelementStart(7, "div", 39);
|
|
53
51
|
i0.ɵɵtext(8, "Registered Engines");
|
|
54
52
|
i0.ɵɵelementEnd();
|
|
55
|
-
i0.ɵɵelementStart(9, "div",
|
|
53
|
+
i0.ɵɵelementStart(9, "div", 40);
|
|
56
54
|
i0.ɵɵtext(10);
|
|
57
55
|
i0.ɵɵelementEnd()()();
|
|
58
|
-
i0.ɵɵelementStart(11, "div",
|
|
59
|
-
i0.ɵɵelement(13, "i",
|
|
56
|
+
i0.ɵɵelementStart(11, "div", 35)(12, "div", 41);
|
|
57
|
+
i0.ɵɵelement(13, "i", 42);
|
|
60
58
|
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelementStart(14, "div",
|
|
59
|
+
i0.ɵɵelementStart(14, "div", 37)(15, "div", 38);
|
|
62
60
|
i0.ɵɵtext(16);
|
|
63
61
|
i0.ɵɵelementEnd();
|
|
64
|
-
i0.ɵɵelementStart(17, "div",
|
|
62
|
+
i0.ɵɵelementStart(17, "div", 39);
|
|
65
63
|
i0.ɵɵtext(18, "Engine Memory");
|
|
66
64
|
i0.ɵɵelementEnd();
|
|
67
|
-
i0.ɵɵelementStart(19, "div",
|
|
65
|
+
i0.ɵɵelementStart(19, "div", 40);
|
|
68
66
|
i0.ɵɵtext(20, "Estimated total");
|
|
69
67
|
i0.ɵɵelementEnd()()();
|
|
70
|
-
i0.ɵɵelementStart(21, "div",
|
|
71
|
-
i0.ɵɵelement(23, "i",
|
|
68
|
+
i0.ɵɵelementStart(21, "div", 35)(22, "div", 43);
|
|
69
|
+
i0.ɵɵelement(23, "i", 22);
|
|
72
70
|
i0.ɵɵelementEnd();
|
|
73
|
-
i0.ɵɵelementStart(24, "div",
|
|
71
|
+
i0.ɵɵelementStart(24, "div", 37)(25, "div", 38);
|
|
74
72
|
i0.ɵɵtext(26);
|
|
75
73
|
i0.ɵɵelementEnd();
|
|
76
|
-
i0.ɵɵelementStart(27, "div",
|
|
74
|
+
i0.ɵɵelementStart(27, "div", 39);
|
|
77
75
|
i0.ɵɵtext(28, "Redundant Loads");
|
|
78
76
|
i0.ɵɵelementEnd();
|
|
79
|
-
i0.ɵɵelementStart(29, "div",
|
|
80
|
-
i0.ɵɵconditionalCreate(30,
|
|
77
|
+
i0.ɵɵelementStart(29, "div", 40);
|
|
78
|
+
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_13_Conditional_30_Template, 1, 0)(31, SystemDiagnosticsComponent_Conditional_13_Conditional_31_Template, 1, 1);
|
|
81
79
|
i0.ɵɵelementEnd()()()();
|
|
82
80
|
} if (rf & 2) {
|
|
83
81
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -94,31 +92,31 @@ function SystemDiagnosticsComponent_Conditional_18_Template(rf, ctx) { if (rf &
|
|
|
94
92
|
i0.ɵɵadvance(4);
|
|
95
93
|
i0.ɵɵconditional(ctx_r0.redundantLoads.length === 0 ? 30 : 31);
|
|
96
94
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵelement(2, "i",
|
|
100
|
-
i0.ɵɵelementStart(3, "span",
|
|
95
|
+
function SystemDiagnosticsComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 44);
|
|
97
|
+
i0.ɵɵelement(2, "i", 20);
|
|
98
|
+
i0.ɵɵelementStart(3, "span", 45);
|
|
101
99
|
i0.ɵɵtext(4);
|
|
102
100
|
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵelementStart(5, "span",
|
|
101
|
+
i0.ɵɵelementStart(5, "span", 46);
|
|
104
102
|
i0.ɵɵtext(6, "Engines");
|
|
105
103
|
i0.ɵɵelementEnd()();
|
|
106
|
-
i0.ɵɵelement(7, "div",
|
|
107
|
-
i0.ɵɵelementStart(8, "div",
|
|
108
|
-
i0.ɵɵelement(9, "i",
|
|
109
|
-
i0.ɵɵelementStart(10, "span",
|
|
104
|
+
i0.ɵɵelement(7, "div", 47);
|
|
105
|
+
i0.ɵɵelementStart(8, "div", 48);
|
|
106
|
+
i0.ɵɵelement(9, "i", 42);
|
|
107
|
+
i0.ɵɵelementStart(10, "span", 45);
|
|
110
108
|
i0.ɵɵtext(11);
|
|
111
109
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(12, "span",
|
|
110
|
+
i0.ɵɵelementStart(12, "span", 46);
|
|
113
111
|
i0.ɵɵtext(13, "Memory");
|
|
114
112
|
i0.ɵɵelementEnd()();
|
|
115
|
-
i0.ɵɵelement(14, "div",
|
|
116
|
-
i0.ɵɵelementStart(15, "div",
|
|
117
|
-
i0.ɵɵelement(16, "i",
|
|
118
|
-
i0.ɵɵelementStart(17, "span",
|
|
113
|
+
i0.ɵɵelement(14, "div", 47);
|
|
114
|
+
i0.ɵɵelementStart(15, "div", 49);
|
|
115
|
+
i0.ɵɵelement(16, "i", 22);
|
|
116
|
+
i0.ɵɵelementStart(17, "span", 45);
|
|
119
117
|
i0.ɵɵtext(18);
|
|
120
118
|
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵelementStart(19, "span",
|
|
119
|
+
i0.ɵɵelementStart(19, "span", 46);
|
|
122
120
|
i0.ɵɵtext(20, "Redundant");
|
|
123
121
|
i0.ɵɵelementEnd()()();
|
|
124
122
|
} if (rf & 2) {
|
|
@@ -132,8 +130,8 @@ function SystemDiagnosticsComponent_Conditional_19_Template(rf, ctx) { if (rf &
|
|
|
132
130
|
i0.ɵɵadvance(3);
|
|
133
131
|
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
134
132
|
} }
|
|
135
|
-
function
|
|
136
|
-
i0.ɵɵelementStart(0, "span",
|
|
133
|
+
function SystemDiagnosticsComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
+
i0.ɵɵelementStart(0, "span", 23);
|
|
137
135
|
i0.ɵɵtext(1);
|
|
138
136
|
i0.ɵɵelementEnd();
|
|
139
137
|
} if (rf & 2) {
|
|
@@ -141,28 +139,28 @@ function SystemDiagnosticsComponent_Conditional_35_Template(rf, ctx) { if (rf &
|
|
|
141
139
|
i0.ɵɵadvance();
|
|
142
140
|
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
143
141
|
} }
|
|
144
|
-
function
|
|
145
|
-
i0.ɵɵelementStart(0, "span",
|
|
142
|
+
function SystemDiagnosticsComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
+
i0.ɵɵelementStart(0, "span", 24);
|
|
146
144
|
i0.ɵɵtext(1, "0");
|
|
147
145
|
i0.ɵɵelementEnd();
|
|
148
146
|
} }
|
|
149
|
-
function
|
|
150
|
-
i0.ɵɵelementStart(0, "div",
|
|
151
|
-
i0.ɵɵelement(1, "i",
|
|
147
|
+
function SystemDiagnosticsComponent_Conditional_45_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
149
|
+
i0.ɵɵelement(1, "i", 57);
|
|
152
150
|
i0.ɵɵelementStart(2, "p");
|
|
153
151
|
i0.ɵɵtext(3, "No engines registered yet");
|
|
154
152
|
i0.ɵɵelementEnd();
|
|
155
|
-
i0.ɵɵelementStart(4, "span",
|
|
153
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
156
154
|
i0.ɵɵtext(5, "Engines register themselves when they are first configured");
|
|
157
155
|
i0.ɵɵelementEnd()();
|
|
158
156
|
} }
|
|
159
|
-
function
|
|
160
|
-
i0.ɵɵelementStart(0, "div",
|
|
161
|
-
i0.ɵɵelement(1, "i",
|
|
162
|
-
i0.ɵɵelementStart(2, "span",
|
|
157
|
+
function SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
159
|
+
i0.ɵɵelement(1, "i", 32);
|
|
160
|
+
i0.ɵɵelementStart(2, "span", 66);
|
|
163
161
|
i0.ɵɵtext(3, "Loaded:");
|
|
164
162
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵelementStart(4, "span",
|
|
163
|
+
i0.ɵɵelementStart(4, "span", 67);
|
|
166
164
|
i0.ɵɵtext(5);
|
|
167
165
|
i0.ɵɵelementEnd()();
|
|
168
166
|
} if (rf & 2) {
|
|
@@ -171,39 +169,39 @@ function SystemDiagnosticsComponent_Conditional_50_Conditional_11_For_2_Conditio
|
|
|
171
169
|
i0.ɵɵadvance(5);
|
|
172
170
|
i0.ɵɵtextInterpolate(ctx_r0.formatTime(engine_r4.lastLoadedAt));
|
|
173
171
|
} }
|
|
174
|
-
function
|
|
172
|
+
function SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
175
173
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
176
|
-
i0.ɵɵelementStart(0, "div",
|
|
174
|
+
i0.ɵɵelementStart(0, "div", 60)(1, "div", 61)(2, "div", 62);
|
|
177
175
|
i0.ɵɵtext(3);
|
|
178
176
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(4, "div",
|
|
177
|
+
i0.ɵɵelementStart(4, "div", 63);
|
|
180
178
|
i0.ɵɵtext(5);
|
|
181
179
|
i0.ɵɵelementEnd()();
|
|
182
|
-
i0.ɵɵelementStart(6, "div",
|
|
183
|
-
i0.ɵɵelement(8, "i",
|
|
184
|
-
i0.ɵɵelementStart(9, "span",
|
|
180
|
+
i0.ɵɵelementStart(6, "div", 64)(7, "div", 65);
|
|
181
|
+
i0.ɵɵelement(8, "i", 42);
|
|
182
|
+
i0.ɵɵelementStart(9, "span", 66);
|
|
185
183
|
i0.ɵɵtext(10, "Memory:");
|
|
186
184
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(11, "span",
|
|
185
|
+
i0.ɵɵelementStart(11, "span", 67);
|
|
188
186
|
i0.ɵɵtext(12);
|
|
189
187
|
i0.ɵɵelementEnd()();
|
|
190
|
-
i0.ɵɵelementStart(13, "div",
|
|
191
|
-
i0.ɵɵelement(14, "i",
|
|
192
|
-
i0.ɵɵelementStart(15, "span",
|
|
188
|
+
i0.ɵɵelementStart(13, "div", 65);
|
|
189
|
+
i0.ɵɵelement(14, "i", 68);
|
|
190
|
+
i0.ɵɵelementStart(15, "span", 66);
|
|
193
191
|
i0.ɵɵtext(16, "Items:");
|
|
194
192
|
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵelementStart(17, "span",
|
|
193
|
+
i0.ɵɵelementStart(17, "span", 67);
|
|
196
194
|
i0.ɵɵtext(18);
|
|
197
195
|
i0.ɵɵelementEnd()();
|
|
198
|
-
i0.ɵɵconditionalCreate(19,
|
|
196
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Conditional_19_Template, 6, 1, "div", 65);
|
|
199
197
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(20, "div",
|
|
201
|
-
i0.ɵɵlistener("click", function
|
|
202
|
-
i0.ɵɵelement(22, "i",
|
|
198
|
+
i0.ɵɵelementStart(20, "div", 69)(21, "button", 70);
|
|
199
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Template_button_click_21_listener($event) { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.refreshSingleEngine(engine_r4, $event)); });
|
|
200
|
+
i0.ɵɵelement(22, "i", 53);
|
|
203
201
|
i0.ɵɵelementEnd();
|
|
204
|
-
i0.ɵɵelementStart(23, "button",
|
|
205
|
-
i0.ɵɵlistener("click", function
|
|
206
|
-
i0.ɵɵelement(24, "i",
|
|
202
|
+
i0.ɵɵelementStart(23, "button", 71);
|
|
203
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Template_button_click_23_listener() { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEngineDetailPanel(engine_r4)); });
|
|
204
|
+
i0.ɵɵelement(24, "i", 72);
|
|
207
205
|
i0.ɵɵelementEnd()()();
|
|
208
206
|
} if (rf & 2) {
|
|
209
207
|
const engine_r4 = ctx.$implicit;
|
|
@@ -230,28 +228,28 @@ function SystemDiagnosticsComponent_Conditional_50_Conditional_11_For_2_Template
|
|
|
230
228
|
i0.ɵɵadvance();
|
|
231
229
|
i0.ɵɵproperty("disabled", !engine_r4.isLoaded);
|
|
232
230
|
} }
|
|
233
|
-
function
|
|
234
|
-
i0.ɵɵelementStart(0, "div",
|
|
235
|
-
i0.ɵɵrepeaterCreate(1,
|
|
231
|
+
function SystemDiagnosticsComponent_Conditional_45_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
233
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Template, 25, 16, "div", 59, _forTrack0);
|
|
236
234
|
i0.ɵɵelementEnd();
|
|
237
235
|
} if (rf & 2) {
|
|
238
236
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
239
237
|
i0.ɵɵadvance();
|
|
240
238
|
i0.ɵɵrepeater(ctx_r0.engines);
|
|
241
239
|
} }
|
|
242
|
-
function
|
|
240
|
+
function SystemDiagnosticsComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
243
241
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
244
|
-
i0.ɵɵelementStart(0, "div",
|
|
245
|
-
i0.ɵɵelement(3, "i",
|
|
242
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 50)(2, "h3");
|
|
243
|
+
i0.ɵɵelement(3, "i", 20);
|
|
246
244
|
i0.ɵɵtext(4, " Registered Engines ");
|
|
247
245
|
i0.ɵɵelementEnd();
|
|
248
|
-
i0.ɵɵelementStart(5, "div",
|
|
249
|
-
i0.ɵɵlistener("click", function
|
|
250
|
-
i0.ɵɵelement(7, "i",
|
|
246
|
+
i0.ɵɵelementStart(5, "div", 51)(6, "button", 52);
|
|
247
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_45_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.refreshAllEngines()); });
|
|
248
|
+
i0.ɵɵelement(7, "i", 53);
|
|
251
249
|
i0.ɵɵtext(8, " Refresh All Engines ");
|
|
252
250
|
i0.ɵɵelementEnd()()();
|
|
253
|
-
i0.ɵɵelementStart(9, "div",
|
|
254
|
-
i0.ɵɵconditionalCreate(10,
|
|
251
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
252
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_45_Conditional_10_Template, 6, 0, "div", 55)(11, SystemDiagnosticsComponent_Conditional_45_Conditional_11_Template, 3, 0, "div", 56);
|
|
255
253
|
i0.ɵɵelementEnd()();
|
|
256
254
|
} if (rf & 2) {
|
|
257
255
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -262,18 +260,18 @@ function SystemDiagnosticsComponent_Conditional_50_Template(rf, ctx) { if (rf &
|
|
|
262
260
|
i0.ɵɵadvance(3);
|
|
263
261
|
i0.ɵɵconditional(ctx_r0.engines.length === 0 ? 10 : 11);
|
|
264
262
|
} }
|
|
265
|
-
function
|
|
266
|
-
i0.ɵɵelementStart(0, "div",
|
|
267
|
-
i0.ɵɵelement(1, "i",
|
|
263
|
+
function SystemDiagnosticsComponent_Conditional_46_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
264
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
265
|
+
i0.ɵɵelement(1, "i", 76);
|
|
268
266
|
i0.ɵɵelementStart(2, "p");
|
|
269
267
|
i0.ɵɵtext(3, "No redundant entity loading detected");
|
|
270
268
|
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵelementStart(4, "span",
|
|
269
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
272
270
|
i0.ɵɵtext(5, "Each entity is being loaded by only one engine");
|
|
273
271
|
i0.ɵɵelementEnd()();
|
|
274
272
|
} }
|
|
275
|
-
function
|
|
276
|
-
i0.ɵɵelementStart(0, "span",
|
|
273
|
+
function SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
+
i0.ɵɵelementStart(0, "span", 85);
|
|
277
275
|
i0.ɵɵtext(1);
|
|
278
276
|
i0.ɵɵelementEnd();
|
|
279
277
|
} if (rf & 2) {
|
|
@@ -281,14 +279,14 @@ function SystemDiagnosticsComponent_Conditional_51_Conditional_13_For_12_For_6_T
|
|
|
281
279
|
i0.ɵɵadvance();
|
|
282
280
|
i0.ɵɵtextInterpolate(engine_r5);
|
|
283
281
|
} }
|
|
284
|
-
function
|
|
285
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
282
|
+
function SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_Template(rf, ctx) { if (rf & 1) {
|
|
283
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 82);
|
|
286
284
|
i0.ɵɵtext(2);
|
|
287
285
|
i0.ɵɵelementEnd();
|
|
288
|
-
i0.ɵɵelementStart(3, "td",
|
|
289
|
-
i0.ɵɵrepeaterCreate(5,
|
|
286
|
+
i0.ɵɵelementStart(3, "td", 83)(4, "div", 84);
|
|
287
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_For_6_Template, 2, 1, "span", 85, i0.ɵɵrepeaterTrackByIdentity);
|
|
290
288
|
i0.ɵɵelementEnd()();
|
|
291
|
-
i0.ɵɵelementStart(7, "td",
|
|
289
|
+
i0.ɵɵelementStart(7, "td", 86)(8, "span", 87);
|
|
292
290
|
i0.ɵɵtext(9);
|
|
293
291
|
i0.ɵɵelementEnd()()();
|
|
294
292
|
} if (rf & 2) {
|
|
@@ -300,21 +298,21 @@ function SystemDiagnosticsComponent_Conditional_51_Conditional_13_For_12_Templat
|
|
|
300
298
|
i0.ɵɵadvance(4);
|
|
301
299
|
i0.ɵɵtextInterpolate(load_r6.engines.length);
|
|
302
300
|
} }
|
|
303
|
-
function
|
|
304
|
-
i0.ɵɵelementStart(0, "div",
|
|
301
|
+
function SystemDiagnosticsComponent_Conditional_46_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 77)(1, "table", 78)(2, "thead")(3, "tr")(4, "th");
|
|
305
303
|
i0.ɵɵtext(5, "Entity Name");
|
|
306
304
|
i0.ɵɵelementEnd();
|
|
307
305
|
i0.ɵɵelementStart(6, "th");
|
|
308
306
|
i0.ɵɵtext(7, "Loaded By Engines");
|
|
309
307
|
i0.ɵɵelementEnd();
|
|
310
|
-
i0.ɵɵelementStart(8, "th",
|
|
308
|
+
i0.ɵɵelementStart(8, "th", 79);
|
|
311
309
|
i0.ɵɵtext(9, "Engine Count");
|
|
312
310
|
i0.ɵɵelementEnd()()();
|
|
313
311
|
i0.ɵɵelementStart(10, "tbody");
|
|
314
|
-
i0.ɵɵrepeaterCreate(11,
|
|
312
|
+
i0.ɵɵrepeaterCreate(11, SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_Template, 10, 2, "tr", null, _forTrack1);
|
|
315
313
|
i0.ɵɵelementEnd()()();
|
|
316
|
-
i0.ɵɵelementStart(13, "div",
|
|
317
|
-
i0.ɵɵelement(14, "i",
|
|
314
|
+
i0.ɵɵelementStart(13, "div", 80);
|
|
315
|
+
i0.ɵɵelement(14, "i", 81);
|
|
318
316
|
i0.ɵɵelementStart(15, "div")(16, "strong");
|
|
319
317
|
i0.ɵɵtext(17, "Recommendation:");
|
|
320
318
|
i0.ɵɵelementEnd();
|
|
@@ -325,35 +323,35 @@ function SystemDiagnosticsComponent_Conditional_51_Conditional_13_Template(rf, c
|
|
|
325
323
|
i0.ɵɵadvance(11);
|
|
326
324
|
i0.ɵɵrepeater(ctx_r0.redundantLoads);
|
|
327
325
|
} }
|
|
328
|
-
function
|
|
329
|
-
i0.ɵɵelementStart(0, "div",
|
|
330
|
-
i0.ɵɵelement(3, "i",
|
|
326
|
+
function SystemDiagnosticsComponent_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 50)(2, "h3");
|
|
328
|
+
i0.ɵɵelement(3, "i", 22);
|
|
331
329
|
i0.ɵɵtext(4, " Redundant Entity Loading ");
|
|
332
330
|
i0.ɵɵelementEnd()();
|
|
333
|
-
i0.ɵɵelementStart(5, "div",
|
|
334
|
-
i0.ɵɵelement(7, "i",
|
|
331
|
+
i0.ɵɵelementStart(5, "div", 54)(6, "div", 73);
|
|
332
|
+
i0.ɵɵelement(7, "i", 74);
|
|
335
333
|
i0.ɵɵelementStart(8, "div")(9, "strong");
|
|
336
334
|
i0.ɵɵtext(10, "What is this?");
|
|
337
335
|
i0.ɵɵelementEnd();
|
|
338
336
|
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
337
|
i0.ɵɵelementEnd()();
|
|
340
|
-
i0.ɵɵconditionalCreate(12,
|
|
338
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_46_Conditional_12_Template, 6, 0, "div", 75)(13, SystemDiagnosticsComponent_Conditional_46_Conditional_13_Template, 19, 0);
|
|
341
339
|
i0.ɵɵelementEnd()();
|
|
342
340
|
} if (rf & 2) {
|
|
343
341
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
344
342
|
i0.ɵɵadvance(12);
|
|
345
343
|
i0.ɵɵconditional(ctx_r0.redundantLoads.length === 0 ? 12 : 13);
|
|
346
344
|
} }
|
|
347
|
-
function
|
|
345
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
348
346
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
349
|
-
i0.ɵɵelementStart(0, "button",
|
|
350
|
-
i0.ɵɵlistener("click", function
|
|
351
|
-
i0.ɵɵelement(1, "i",
|
|
347
|
+
i0.ɵɵelementStart(0, "button", 107);
|
|
348
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleTelemetry()); });
|
|
349
|
+
i0.ɵɵelement(1, "i", 12);
|
|
352
350
|
i0.ɵɵtext(2);
|
|
353
351
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(3, "button",
|
|
355
|
-
i0.ɵɵlistener("click", function
|
|
356
|
-
i0.ɵɵelement(4, "i",
|
|
352
|
+
i0.ɵɵelementStart(3, "button", 52);
|
|
353
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_14_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.clearTelemetry()); });
|
|
354
|
+
i0.ɵɵelement(4, "i", 108);
|
|
357
355
|
i0.ɵɵtext(5, " Clear ");
|
|
358
356
|
i0.ɵɵelementEnd();
|
|
359
357
|
} if (rf & 2) {
|
|
@@ -366,11 +364,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_14_Template(rf, c
|
|
|
366
364
|
i0.ɵɵadvance();
|
|
367
365
|
i0.ɵɵproperty("disabled", !ctx_r0.telemetryEnabled);
|
|
368
366
|
} }
|
|
369
|
-
function
|
|
370
|
-
i0.ɵɵelementStart(0, "span",
|
|
371
|
-
i0.ɵɵelement(1, "i",
|
|
367
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
369
|
+
i0.ɵɵelement(1, "i", 12);
|
|
372
370
|
i0.ɵɵtext(2);
|
|
373
|
-
i0.ɵɵelementStart(3, "span",
|
|
371
|
+
i0.ɵɵelementStart(3, "span", 110);
|
|
374
372
|
i0.ɵɵtext(4, "(config)");
|
|
375
373
|
i0.ɵɵelementEnd()();
|
|
376
374
|
} if (rf & 2) {
|
|
@@ -381,27 +379,27 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_15_Template(rf, c
|
|
|
381
379
|
i0.ɵɵadvance();
|
|
382
380
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.serverTelemetryEnabled ? "Enabled" : "Disabled", " ");
|
|
383
381
|
} }
|
|
384
|
-
function
|
|
385
|
-
i0.ɵɵelementStart(0, "span",
|
|
386
|
-
i0.ɵɵelement(1, "i",
|
|
382
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
383
|
+
i0.ɵɵelementStart(0, "span", 94);
|
|
384
|
+
i0.ɵɵelement(1, "i", 111);
|
|
387
385
|
i0.ɵɵelementEnd();
|
|
388
386
|
} }
|
|
389
|
-
function
|
|
387
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
390
388
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
391
|
-
i0.ɵɵelementStart(0, "div",
|
|
392
|
-
i0.ɵɵelement(1, "i",
|
|
389
|
+
i0.ɵɵelementStart(0, "div", 95);
|
|
390
|
+
i0.ɵɵelement(1, "i", 112);
|
|
393
391
|
i0.ɵɵtext(2);
|
|
394
|
-
i0.ɵɵelementStart(3, "button",
|
|
395
|
-
i0.ɵɵlistener("click", function
|
|
396
|
-
i0.ɵɵelement(4, "i",
|
|
392
|
+
i0.ɵɵelementStart(3, "button", 113);
|
|
393
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.serverTelemetryError = null); });
|
|
394
|
+
i0.ɵɵelement(4, "i", 114);
|
|
397
395
|
i0.ɵɵelementEnd()();
|
|
398
396
|
} if (rf & 2) {
|
|
399
397
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
400
398
|
i0.ɵɵadvance(2);
|
|
401
399
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.serverTelemetryError, " ");
|
|
402
400
|
} }
|
|
403
|
-
function
|
|
404
|
-
i0.ɵɵelementStart(0, "span",
|
|
401
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
402
|
+
i0.ɵɵelementStart(0, "span", 100);
|
|
405
403
|
i0.ɵɵtext(1);
|
|
406
404
|
i0.ɵɵelementEnd();
|
|
407
405
|
} if (rf & 2) {
|
|
@@ -409,8 +407,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_27_Template(rf, c
|
|
|
409
407
|
i0.ɵɵadvance();
|
|
410
408
|
i0.ɵɵtextInterpolate(ctx_r0.slowQueries.length);
|
|
411
409
|
} }
|
|
412
|
-
function
|
|
413
|
-
i0.ɵɵelementStart(0, "span",
|
|
410
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
411
|
+
i0.ɵɵelementStart(0, "span", 104);
|
|
414
412
|
i0.ɵɵtext(1);
|
|
415
413
|
i0.ɵɵelementEnd();
|
|
416
414
|
} if (rf & 2) {
|
|
@@ -418,38 +416,38 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_44_Template(rf, c
|
|
|
418
416
|
i0.ɵɵadvance();
|
|
419
417
|
i0.ɵɵtextInterpolate(ctx_r0.telemetryInsights.length);
|
|
420
418
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵelementStart(0, "div",
|
|
423
|
-
i0.ɵɵelement(1, "i",
|
|
419
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
420
|
+
i0.ɵɵelementStart(0, "div", 105);
|
|
421
|
+
i0.ɵɵelement(1, "i", 112);
|
|
424
422
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
425
423
|
i0.ɵɵtext(4, "Telemetry is disabled.");
|
|
426
424
|
i0.ɵɵelementEnd();
|
|
427
425
|
i0.ɵɵtext(5, " Enable telemetry to track RunView, RunQuery, and Engine loading performance. ");
|
|
428
426
|
i0.ɵɵelementEnd()();
|
|
429
427
|
} }
|
|
430
|
-
function
|
|
428
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
431
429
|
i0.ɵɵtext(0);
|
|
432
430
|
} if (rf & 2) {
|
|
433
431
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
434
432
|
i0.ɵɵtextInterpolate2(" Viewing ", ctx_r0.formatRelativeTime(ctx_r0.chartTimeRangeStart), " - ", ctx_r0.formatRelativeTime(ctx_r0.chartTimeRangeEnd), ". Click Reset to show all. ");
|
|
435
433
|
} }
|
|
436
|
-
function
|
|
434
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
437
435
|
i0.ɵɵtext(0, " Drag to select a time range. Gaps >5s compressed. ");
|
|
438
436
|
} }
|
|
439
|
-
function
|
|
437
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
440
438
|
i0.ɵɵtext(0, " Drag to select a time range. Hover over points for details. ");
|
|
441
439
|
} }
|
|
442
|
-
function
|
|
440
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_47_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
443
441
|
i0.ɵɵtext(0);
|
|
444
442
|
i0.ɵɵpipe(1, "number");
|
|
445
443
|
} if (rf & 2) {
|
|
446
444
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
447
445
|
i0.ɵɵtextInterpolate1(" \u2022 ", i0.ɵɵpipeBind2(1, 1, ctx_r0.chartZoomLevel * 100, "1.0-0"), "% zoom ");
|
|
448
446
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "span",
|
|
447
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
+
i0.ɵɵelementStart(0, "span", 144);
|
|
451
449
|
i0.ɵɵtext(1);
|
|
452
|
-
i0.ɵɵconditionalCreate(2,
|
|
450
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_47_Conditional_2_Template, 2, 4);
|
|
453
451
|
i0.ɵɵelementEnd();
|
|
454
452
|
} if (rf & 2) {
|
|
455
453
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -458,67 +456,67 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_47_Conditional_47
|
|
|
458
456
|
i0.ɵɵadvance();
|
|
459
457
|
i0.ɵɵconditional(ctx_r0.chartZoomLevel !== 1 ? 2 : -1);
|
|
460
458
|
} }
|
|
461
|
-
function
|
|
459
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
462
460
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
463
|
-
i0.ɵɵelementStart(0, "div",
|
|
464
|
-
i0.ɵɵelement(4, "span",
|
|
461
|
+
i0.ɵɵelementStart(0, "div", 106)(1, "div", 115)(2, "div", 116)(3, "span", 117);
|
|
462
|
+
i0.ɵɵelement(4, "span", 118);
|
|
465
463
|
i0.ɵɵtext(5, " RunView");
|
|
466
464
|
i0.ɵɵelementEnd();
|
|
467
|
-
i0.ɵɵelementStart(6, "span",
|
|
468
|
-
i0.ɵɵelement(7, "span",
|
|
465
|
+
i0.ɵɵelementStart(6, "span", 119);
|
|
466
|
+
i0.ɵɵelement(7, "span", 118);
|
|
469
467
|
i0.ɵɵtext(8, " RunQuery");
|
|
470
468
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵelementStart(9, "span",
|
|
472
|
-
i0.ɵɵelement(10, "span",
|
|
469
|
+
i0.ɵɵelementStart(9, "span", 120);
|
|
470
|
+
i0.ɵɵelement(10, "span", 118);
|
|
473
471
|
i0.ɵɵtext(11, " Engine");
|
|
474
472
|
i0.ɵɵelementEnd();
|
|
475
|
-
i0.ɵɵelementStart(12, "span",
|
|
476
|
-
i0.ɵɵelement(13, "span",
|
|
473
|
+
i0.ɵɵelementStart(12, "span", 121);
|
|
474
|
+
i0.ɵɵelement(13, "span", 118);
|
|
477
475
|
i0.ɵɵtext(14, " AI");
|
|
478
476
|
i0.ɵɵelementEnd()();
|
|
479
|
-
i0.ɵɵelementStart(15, "div",
|
|
480
|
-
i0.ɵɵlistener("click", function
|
|
481
|
-
i0.ɵɵelement(18, "i",
|
|
477
|
+
i0.ɵɵelementStart(15, "div", 122)(16, "div", 123)(17, "button", 124);
|
|
478
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setChartInteractionMode("pointer")); });
|
|
479
|
+
i0.ɵɵelement(18, "i", 125);
|
|
482
480
|
i0.ɵɵelementEnd();
|
|
483
|
-
i0.ɵɵelementStart(19, "button",
|
|
484
|
-
i0.ɵɵlistener("click", function
|
|
485
|
-
i0.ɵɵelement(20, "i",
|
|
481
|
+
i0.ɵɵelementStart(19, "button", 126);
|
|
482
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setChartInteractionMode("select")); });
|
|
483
|
+
i0.ɵɵelement(20, "i", 127);
|
|
486
484
|
i0.ɵɵelementEnd();
|
|
487
|
-
i0.ɵɵelementStart(21, "button",
|
|
488
|
-
i0.ɵɵlistener("click", function
|
|
489
|
-
i0.ɵɵelement(22, "i",
|
|
485
|
+
i0.ɵɵelementStart(21, "button", 128);
|
|
486
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setChartInteractionMode("pan")); });
|
|
487
|
+
i0.ɵɵelement(22, "i", 129);
|
|
490
488
|
i0.ɵɵelementEnd()();
|
|
491
|
-
i0.ɵɵelement(23, "span",
|
|
492
|
-
i0.ɵɵelementStart(24, "button",
|
|
493
|
-
i0.ɵɵlistener("click", function
|
|
494
|
-
i0.ɵɵelement(25, "i",
|
|
489
|
+
i0.ɵɵelement(23, "span", 130);
|
|
490
|
+
i0.ɵɵelementStart(24, "button", 131);
|
|
491
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.zoomPerfChart("in")); });
|
|
492
|
+
i0.ɵɵelement(25, "i", 132);
|
|
495
493
|
i0.ɵɵelementEnd();
|
|
496
|
-
i0.ɵɵelementStart(26, "button",
|
|
497
|
-
i0.ɵɵlistener("click", function
|
|
498
|
-
i0.ɵɵelement(27, "i",
|
|
494
|
+
i0.ɵɵelementStart(26, "button", 133);
|
|
495
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.zoomPerfChart("out")); });
|
|
496
|
+
i0.ɵɵelement(27, "i", 134);
|
|
499
497
|
i0.ɵɵelementEnd();
|
|
500
|
-
i0.ɵɵelementStart(28, "button",
|
|
501
|
-
i0.ɵɵlistener("click", function
|
|
502
|
-
i0.ɵɵelement(29, "i",
|
|
498
|
+
i0.ɵɵelementStart(28, "button", 135);
|
|
499
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.resetPerfChartZoom()); });
|
|
500
|
+
i0.ɵɵelement(29, "i", 136);
|
|
503
501
|
i0.ɵɵelementEnd();
|
|
504
|
-
i0.ɵɵelement(30, "span",
|
|
505
|
-
i0.ɵɵelementStart(31, "label",
|
|
506
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
507
|
-
i0.ɵɵlistener("change", function
|
|
502
|
+
i0.ɵɵelement(30, "span", 130);
|
|
503
|
+
i0.ɵɵelementStart(31, "label", 137)(32, "input", 6);
|
|
504
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_input_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.chartGapCompression, $event) || (ctx_r0.chartGapCompression = $event); return i0.ɵɵresetView($event); });
|
|
505
|
+
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template_input_change_32_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onGapCompressionChange()); });
|
|
508
506
|
i0.ɵɵelementEnd();
|
|
509
507
|
i0.ɵɵelementStart(33, "span");
|
|
510
508
|
i0.ɵɵtext(34, "Compress Gaps");
|
|
511
509
|
i0.ɵɵelementEnd()()()();
|
|
512
|
-
i0.ɵɵelementStart(35, "div",
|
|
510
|
+
i0.ɵɵelementStart(35, "div", 138)(36, "div", 139)(37, "span", 140);
|
|
513
511
|
i0.ɵɵtext(38, "Duration (ms)");
|
|
514
512
|
i0.ɵɵelementEnd()();
|
|
515
|
-
i0.ɵɵelement(39, "div",
|
|
513
|
+
i0.ɵɵelement(39, "div", 141, 0);
|
|
516
514
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(41, "div",
|
|
518
|
-
i0.ɵɵelement(43, "i",
|
|
519
|
-
i0.ɵɵconditionalCreate(44,
|
|
515
|
+
i0.ɵɵelementStart(41, "div", 142)(42, "span", 143);
|
|
516
|
+
i0.ɵɵelement(43, "i", 74);
|
|
517
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_44_Template, 1, 2)(45, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_45_Template, 1, 0)(46, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_46_Template, 1, 0);
|
|
520
518
|
i0.ɵɵelementEnd();
|
|
521
|
-
i0.ɵɵconditionalCreate(47,
|
|
519
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Conditional_47_Template, 3, 2, "span", 144);
|
|
522
520
|
i0.ɵɵelementEnd()();
|
|
523
521
|
} if (rf & 2) {
|
|
524
522
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -535,17 +533,17 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_47_Template(rf, c
|
|
|
535
533
|
i0.ɵɵadvance(3);
|
|
536
534
|
i0.ɵɵconditional(ctx_r0.telemetrySummary ? 47 : -1);
|
|
537
535
|
} }
|
|
538
|
-
function
|
|
536
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
539
537
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
540
|
-
i0.ɵɵelementStart(0, "div",
|
|
541
|
-
i0.ɵɵlistener("click", function
|
|
542
|
-
i0.ɵɵelementStart(1, "span",
|
|
538
|
+
i0.ɵɵelementStart(0, "div", 154);
|
|
539
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21_For_5_Template_div_click_0_listener() { const cat_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.jumpToPatternsByCategory(cat_r12.name)); });
|
|
540
|
+
i0.ɵɵelementStart(1, "span", 155);
|
|
543
541
|
i0.ɵɵtext(2);
|
|
544
542
|
i0.ɵɵelementEnd();
|
|
545
|
-
i0.ɵɵelementStart(3, "span",
|
|
543
|
+
i0.ɵɵelementStart(3, "span", 156);
|
|
546
544
|
i0.ɵɵtext(4);
|
|
547
545
|
i0.ɵɵelementEnd();
|
|
548
|
-
i0.ɵɵelementStart(5, "span",
|
|
546
|
+
i0.ɵɵelementStart(5, "span", 157);
|
|
549
547
|
i0.ɵɵtext(6);
|
|
550
548
|
i0.ɵɵpipe(7, "number");
|
|
551
549
|
i0.ɵɵelementEnd()();
|
|
@@ -558,26 +556,26 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_21
|
|
|
558
556
|
i0.ɵɵadvance(2);
|
|
559
557
|
i0.ɵɵtextInterpolate1("avg ", i0.ɵɵpipeBind2(7, 3, cat_r12.avgMs, "1.0-0"), "ms");
|
|
560
558
|
} }
|
|
561
|
-
function
|
|
562
|
-
i0.ɵɵelementStart(0, "div",
|
|
559
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
560
|
+
i0.ɵɵelementStart(0, "div", 149)(1, "h4");
|
|
563
561
|
i0.ɵɵtext(2, "By Category");
|
|
564
562
|
i0.ɵɵelementEnd();
|
|
565
|
-
i0.ɵɵelementStart(3, "div",
|
|
566
|
-
i0.ɵɵrepeaterCreate(4,
|
|
563
|
+
i0.ɵɵelementStart(3, "div", 152);
|
|
564
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21_For_5_Template, 8, 6, "div", 153, _forTrack2);
|
|
567
565
|
i0.ɵɵelementEnd()();
|
|
568
566
|
} if (rf & 2) {
|
|
569
567
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
570
568
|
i0.ɵɵadvance(4);
|
|
571
569
|
i0.ɵɵrepeater(ctx_r0.categoriesWithData);
|
|
572
570
|
} }
|
|
573
|
-
function
|
|
574
|
-
i0.ɵɵelementStart(0, "span",
|
|
575
|
-
i0.ɵɵelement(1, "i",
|
|
571
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
+
i0.ɵɵelementStart(0, "span", 165);
|
|
573
|
+
i0.ɵɵelement(1, "i", 171);
|
|
576
574
|
i0.ɵɵtext(2, " CACHED ");
|
|
577
575
|
i0.ɵɵelementEnd();
|
|
578
576
|
} }
|
|
579
|
-
function
|
|
580
|
-
i0.ɵɵelementStart(0, "span",
|
|
577
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
578
|
+
i0.ɵɵelementStart(0, "span", 172);
|
|
581
579
|
i0.ɵɵtext(1);
|
|
582
580
|
i0.ɵɵelementEnd();
|
|
583
581
|
} if (rf & 2) {
|
|
@@ -585,8 +583,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
585
583
|
i0.ɵɵadvance();
|
|
586
584
|
i0.ɵɵtextInterpolate(entity_r15);
|
|
587
585
|
} }
|
|
588
|
-
function
|
|
589
|
-
i0.ɵɵelementStart(0, "span",
|
|
586
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
587
|
+
i0.ɵɵelementStart(0, "span", 173);
|
|
590
588
|
i0.ɵɵtext(1);
|
|
591
589
|
i0.ɵɵelementEnd();
|
|
592
590
|
} if (rf & 2) {
|
|
@@ -595,10 +593,10 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
595
593
|
i0.ɵɵadvance();
|
|
596
594
|
i0.ɵɵtextInterpolate1("+", ctx_r0.getRunViewsEntityCount(query_r14) - 4, " more");
|
|
597
595
|
} }
|
|
598
|
-
function
|
|
599
|
-
i0.ɵɵelementStart(0, "div",
|
|
600
|
-
i0.ɵɵrepeaterCreate(1,
|
|
601
|
-
i0.ɵɵconditionalCreate(3,
|
|
596
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
597
|
+
i0.ɵɵelementStart(0, "div", 167);
|
|
598
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template, 2, 1, "span", 172, i0.ɵɵrepeaterTrackByIdentity);
|
|
599
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template, 2, 1, "span", 173);
|
|
602
600
|
i0.ɵɵelementEnd();
|
|
603
601
|
} if (rf & 2) {
|
|
604
602
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
@@ -608,11 +606,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
608
606
|
i0.ɵɵadvance(2);
|
|
609
607
|
i0.ɵɵconditional(ctx_r0.hasMoreEntities(query_r14, 4) ? 3 : -1);
|
|
610
608
|
} }
|
|
611
|
-
function
|
|
612
|
-
i0.ɵɵelementStart(0, "span",
|
|
609
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
610
|
+
i0.ɵɵelementStart(0, "span", 175)(1, "span", 176);
|
|
613
611
|
i0.ɵɵtext(2);
|
|
614
612
|
i0.ɵɵelementEnd();
|
|
615
|
-
i0.ɵɵelementStart(3, "span",
|
|
613
|
+
i0.ɵɵelementStart(3, "span", 177);
|
|
616
614
|
i0.ɵɵtext(4);
|
|
617
615
|
i0.ɵɵelementEnd()();
|
|
618
616
|
} if (rf & 2) {
|
|
@@ -624,9 +622,9 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
624
622
|
i0.ɵɵadvance(2);
|
|
625
623
|
i0.ɵɵtextInterpolate(pill_r16.value);
|
|
626
624
|
} }
|
|
627
|
-
function
|
|
628
|
-
i0.ɵɵelementStart(0, "div",
|
|
629
|
-
i0.ɵɵrepeaterCreate(1,
|
|
625
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
626
|
+
i0.ɵɵelementStart(0, "div", 168);
|
|
627
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template, 5, 5, "span", 174, _forTrack4);
|
|
630
628
|
i0.ɵɵelementEnd();
|
|
631
629
|
} if (rf & 2) {
|
|
632
630
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
@@ -634,8 +632,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
634
632
|
i0.ɵɵadvance();
|
|
635
633
|
i0.ɵɵrepeater(ctx_r0.getRunViewPills(query_r14));
|
|
636
634
|
} }
|
|
637
|
-
function
|
|
638
|
-
i0.ɵɵelementStart(0, "div",
|
|
635
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
636
|
+
i0.ɵɵelementStart(0, "div", 169);
|
|
639
637
|
i0.ɵɵtext(1);
|
|
640
638
|
i0.ɵɵelementEnd();
|
|
641
639
|
} if (rf & 2) {
|
|
@@ -644,25 +642,25 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
644
642
|
i0.ɵɵadvance();
|
|
645
643
|
i0.ɵɵtextInterpolate(ctx_r0.truncateString(query_r14.filter, 60));
|
|
646
644
|
} }
|
|
647
|
-
function
|
|
645
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
648
646
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
649
|
-
i0.ɵɵelementStart(0, "div",
|
|
650
|
-
i0.ɵɵlistener("click", function
|
|
651
|
-
i0.ɵɵelementStart(1, "div",
|
|
647
|
+
i0.ɵɵelementStart(0, "div", 161);
|
|
648
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Template_div_click_0_listener() { const query_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openEventDetailPanel(query_r14)); });
|
|
649
|
+
i0.ɵɵelementStart(1, "div", 162)(2, "span", 163);
|
|
652
650
|
i0.ɵɵtext(3);
|
|
653
651
|
i0.ɵɵelementEnd();
|
|
654
|
-
i0.ɵɵelementStart(4, "span",
|
|
652
|
+
i0.ɵɵelementStart(4, "span", 164);
|
|
655
653
|
i0.ɵɵtext(5);
|
|
656
654
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵconditionalCreate(6,
|
|
658
|
-
i0.ɵɵelementStart(7, "span",
|
|
655
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_6_Template, 3, 0, "span", 165);
|
|
656
|
+
i0.ɵɵelementStart(7, "span", 166);
|
|
659
657
|
i0.ɵɵtext(8);
|
|
660
658
|
i0.ɵɵpipe(9, "number");
|
|
661
659
|
i0.ɵɵelementEnd()();
|
|
662
|
-
i0.ɵɵconditionalCreate(10,
|
|
663
|
-
i0.ɵɵconditionalCreate(11,
|
|
664
|
-
i0.ɵɵconditionalCreate(12,
|
|
665
|
-
i0.ɵɵelementStart(13, "div",
|
|
660
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_10_Template, 4, 1, "div", 167);
|
|
661
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_11_Template, 3, 0, "div", 168);
|
|
662
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Conditional_12_Template, 2, 1, "div", 169);
|
|
663
|
+
i0.ɵɵelementStart(13, "div", 170);
|
|
666
664
|
i0.ɵɵtext(14);
|
|
667
665
|
i0.ɵɵelementEnd()();
|
|
668
666
|
} if (rf & 2) {
|
|
@@ -688,13 +686,13 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
688
686
|
i0.ɵɵadvance(2);
|
|
689
687
|
i0.ɵɵtextInterpolate(ctx_r0.formatTimestamp(query_r14.timestamp));
|
|
690
688
|
} }
|
|
691
|
-
function
|
|
692
|
-
i0.ɵɵelementStart(0, "div",
|
|
693
|
-
i0.ɵɵelement(2, "i",
|
|
689
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
690
|
+
i0.ɵɵelementStart(0, "div", 150)(1, "h4");
|
|
691
|
+
i0.ɵɵelement(2, "i", 158);
|
|
694
692
|
i0.ɵɵtext(3);
|
|
695
693
|
i0.ɵɵelementEnd();
|
|
696
|
-
i0.ɵɵelementStart(4, "div",
|
|
697
|
-
i0.ɵɵrepeaterCreate(5,
|
|
694
|
+
i0.ɵɵelementStart(4, "div", 159);
|
|
695
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_For_6_Template, 15, 15, "div", 160, _forTrack3);
|
|
698
696
|
i0.ɵɵelementEnd()();
|
|
699
697
|
} if (rf & 2) {
|
|
700
698
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -703,9 +701,9 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_22
|
|
|
703
701
|
i0.ɵɵadvance(2);
|
|
704
702
|
i0.ɵɵrepeater(ctx_r0.slowQueries.slice(0, 10));
|
|
705
703
|
} }
|
|
706
|
-
function
|
|
707
|
-
i0.ɵɵelementStart(0, "div",
|
|
708
|
-
i0.ɵɵelement(1, "i",
|
|
704
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
705
|
+
i0.ɵɵelementStart(0, "div", 151);
|
|
706
|
+
i0.ɵɵelement(1, "i", 76);
|
|
709
707
|
i0.ɵɵelementStart(2, "span");
|
|
710
708
|
i0.ɵɵtext(3);
|
|
711
709
|
i0.ɵɵelementEnd()();
|
|
@@ -714,33 +712,33 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Conditional_23
|
|
|
714
712
|
i0.ɵɵadvance(3);
|
|
715
713
|
i0.ɵɵtextInterpolate1("No slow operations detected. All operations completed under ", ctx_r0.slowQueryThresholdMs, "ms.");
|
|
716
714
|
} }
|
|
717
|
-
function
|
|
718
|
-
i0.ɵɵelementStart(0, "div",
|
|
715
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
716
|
+
i0.ɵɵelementStart(0, "div", 145)(1, "div", 146)(2, "div", 147);
|
|
719
717
|
i0.ɵɵtext(3);
|
|
720
718
|
i0.ɵɵelementEnd();
|
|
721
|
-
i0.ɵɵelementStart(4, "div",
|
|
719
|
+
i0.ɵɵelementStart(4, "div", 148);
|
|
722
720
|
i0.ɵɵtext(5, "Total Events");
|
|
723
721
|
i0.ɵɵelementEnd()();
|
|
724
|
-
i0.ɵɵelementStart(6, "div",
|
|
722
|
+
i0.ɵɵelementStart(6, "div", 146)(7, "div", 147);
|
|
725
723
|
i0.ɵɵtext(8);
|
|
726
724
|
i0.ɵɵelementEnd();
|
|
727
|
-
i0.ɵɵelementStart(9, "div",
|
|
725
|
+
i0.ɵɵelementStart(9, "div", 148);
|
|
728
726
|
i0.ɵɵtext(10, "Unique Patterns");
|
|
729
727
|
i0.ɵɵelementEnd()();
|
|
730
|
-
i0.ɵɵelementStart(11, "div",
|
|
728
|
+
i0.ɵɵelementStart(11, "div", 146)(12, "div", 147);
|
|
731
729
|
i0.ɵɵtext(13);
|
|
732
730
|
i0.ɵɵelementEnd();
|
|
733
|
-
i0.ɵɵelementStart(14, "div",
|
|
731
|
+
i0.ɵɵelementStart(14, "div", 148);
|
|
734
732
|
i0.ɵɵtext(15, "Insights");
|
|
735
733
|
i0.ɵɵelementEnd()();
|
|
736
|
-
i0.ɵɵelementStart(16, "div",
|
|
734
|
+
i0.ɵɵelementStart(16, "div", 146)(17, "div", 147);
|
|
737
735
|
i0.ɵɵtext(18);
|
|
738
736
|
i0.ɵɵelementEnd();
|
|
739
|
-
i0.ɵɵelementStart(19, "div",
|
|
737
|
+
i0.ɵɵelementStart(19, "div", 148);
|
|
740
738
|
i0.ɵɵtext(20, "Active");
|
|
741
739
|
i0.ɵɵelementEnd()()();
|
|
742
|
-
i0.ɵɵconditionalCreate(21,
|
|
743
|
-
i0.ɵɵconditionalCreate(22,
|
|
740
|
+
i0.ɵɵconditionalCreate(21, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21_Template, 6, 0, "div", 149);
|
|
741
|
+
i0.ɵɵconditionalCreate(22, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22_Template, 7, 1, "div", 150)(23, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_23_Template, 4, 1, "div", 151);
|
|
744
742
|
} if (rf & 2) {
|
|
745
743
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
746
744
|
i0.ɵɵadvance(3);
|
|
@@ -756,17 +754,17 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_48_Template(rf, c
|
|
|
756
754
|
i0.ɵɵadvance();
|
|
757
755
|
i0.ɵɵconditional(ctx_r0.slowQueries.length > 0 ? 22 : ctx_r0.telemetryEnabled && ctx_r0.telemetrySummary && ctx_r0.telemetrySummary.totalEvents > 0 ? 23 : -1);
|
|
758
756
|
} }
|
|
759
|
-
function
|
|
757
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
760
758
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
761
|
-
i0.ɵɵelementStart(0, "button",
|
|
762
|
-
i0.ɵɵlistener("click", function
|
|
763
|
-
i0.ɵɵelement(1, "i",
|
|
759
|
+
i0.ɵɵelementStart(0, "button", 189);
|
|
760
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.clearSearch()); });
|
|
761
|
+
i0.ɵɵelement(1, "i", 114);
|
|
764
762
|
i0.ɵɵelementEnd();
|
|
765
763
|
} }
|
|
766
|
-
function
|
|
764
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
767
765
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
768
|
-
i0.ɵɵelementStart(0, "button",
|
|
769
|
-
i0.ɵɵlistener("click", function
|
|
766
|
+
i0.ɵɵelementStart(0, "button", 184);
|
|
767
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_For_9_Template_button_click_0_listener() { const cat_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCategoryFilterByName(cat_r20.name)); });
|
|
770
768
|
i0.ɵɵtext(1);
|
|
771
769
|
i0.ɵɵelementEnd();
|
|
772
770
|
} if (rf & 2) {
|
|
@@ -776,22 +774,22 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_For_9_Template
|
|
|
776
774
|
i0.ɵɵadvance();
|
|
777
775
|
i0.ɵɵtextInterpolate1(" ", cat_r20.name, " ");
|
|
778
776
|
} }
|
|
779
|
-
function
|
|
780
|
-
i0.ɵɵelementStart(0, "div",
|
|
781
|
-
i0.ɵɵelement(1, "i",
|
|
777
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
778
|
+
i0.ɵɵelementStart(0, "div", 193);
|
|
779
|
+
i0.ɵɵelement(1, "i", 171);
|
|
782
780
|
i0.ɵɵelementEnd();
|
|
783
781
|
} }
|
|
784
|
-
function
|
|
785
|
-
i0.ɵɵelement(0, "div",
|
|
782
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
783
|
+
i0.ɵɵelement(0, "div", 194);
|
|
786
784
|
} }
|
|
787
|
-
function
|
|
788
|
-
i0.ɵɵelementStart(0, "span",
|
|
789
|
-
i0.ɵɵelement(1, "i",
|
|
785
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
786
|
+
i0.ɵɵelementStart(0, "span", 199);
|
|
787
|
+
i0.ɵɵelement(1, "i", 171);
|
|
790
788
|
i0.ɵɵtext(2, " CACHED ");
|
|
791
789
|
i0.ɵɵelementEnd();
|
|
792
790
|
} }
|
|
793
|
-
function
|
|
794
|
-
i0.ɵɵelementStart(0, "span",
|
|
791
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
792
|
+
i0.ɵɵelementStart(0, "span", 207);
|
|
795
793
|
i0.ɵɵtext(1);
|
|
796
794
|
i0.ɵɵpipe(2, "number");
|
|
797
795
|
i0.ɵɵelementEnd();
|
|
@@ -802,8 +800,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
802
800
|
i0.ɵɵadvance();
|
|
803
801
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 3, event_r22.elapsedMs, "1.0-0"), "ms ");
|
|
804
802
|
} }
|
|
805
|
-
function
|
|
806
|
-
i0.ɵɵelementStart(0, "span",
|
|
803
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
804
|
+
i0.ɵɵelementStart(0, "span", 203);
|
|
807
805
|
i0.ɵɵtext(1);
|
|
808
806
|
i0.ɵɵelementEnd();
|
|
809
807
|
} if (rf & 2) {
|
|
@@ -811,8 +809,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
811
809
|
i0.ɵɵadvance();
|
|
812
810
|
i0.ɵɵtextInterpolate(event_r22.entityName);
|
|
813
811
|
} }
|
|
814
|
-
function
|
|
815
|
-
i0.ɵɵelementStart(0, "span",
|
|
812
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
813
|
+
i0.ɵɵelementStart(0, "span", 208);
|
|
816
814
|
i0.ɵɵtext(1);
|
|
817
815
|
i0.ɵɵelementEnd();
|
|
818
816
|
} if (rf & 2) {
|
|
@@ -820,8 +818,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
820
818
|
i0.ɵɵadvance();
|
|
821
819
|
i0.ɵɵtextInterpolate(entity_r23);
|
|
822
820
|
} }
|
|
823
|
-
function
|
|
824
|
-
i0.ɵɵelementStart(0, "span",
|
|
821
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
822
|
+
i0.ɵɵelementStart(0, "span", 209);
|
|
825
823
|
i0.ɵɵtext(1);
|
|
826
824
|
i0.ɵɵelementEnd();
|
|
827
825
|
} if (rf & 2) {
|
|
@@ -830,10 +828,10 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
830
828
|
i0.ɵɵadvance();
|
|
831
829
|
i0.ɵɵtextInterpolate1("+", ctx_r0.getRunViewsEntityCount(event_r22) - 3, " more");
|
|
832
830
|
} }
|
|
833
|
-
function
|
|
834
|
-
i0.ɵɵelementStart(0, "div",
|
|
835
|
-
i0.ɵɵrepeaterCreate(1,
|
|
836
|
-
i0.ɵɵconditionalCreate(3,
|
|
831
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
+
i0.ɵɵelementStart(0, "div", 204);
|
|
833
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template, 2, 1, "span", 208, i0.ɵɵrepeaterTrackByIdentity);
|
|
834
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template, 2, 1, "span", 209);
|
|
837
835
|
i0.ɵɵelementEnd();
|
|
838
836
|
} if (rf & 2) {
|
|
839
837
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -843,11 +841,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
843
841
|
i0.ɵɵadvance(2);
|
|
844
842
|
i0.ɵɵconditional(ctx_r0.hasMoreEntities(event_r22, 3) ? 3 : -1);
|
|
845
843
|
} }
|
|
846
|
-
function
|
|
847
|
-
i0.ɵɵelementStart(0, "span",
|
|
844
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
845
|
+
i0.ɵɵelementStart(0, "span", 211)(1, "span", 176);
|
|
848
846
|
i0.ɵɵtext(2);
|
|
849
847
|
i0.ɵɵelementEnd();
|
|
850
|
-
i0.ɵɵelementStart(3, "span",
|
|
848
|
+
i0.ɵɵelementStart(3, "span", 177);
|
|
851
849
|
i0.ɵɵtext(4);
|
|
852
850
|
i0.ɵɵelementEnd()();
|
|
853
851
|
} if (rf & 2) {
|
|
@@ -859,9 +857,9 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
859
857
|
i0.ɵɵadvance(2);
|
|
860
858
|
i0.ɵɵtextInterpolate(pill_r24.value);
|
|
861
859
|
} }
|
|
862
|
-
function
|
|
863
|
-
i0.ɵɵelementStart(0, "div",
|
|
864
|
-
i0.ɵɵrepeaterCreate(1,
|
|
860
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
861
|
+
i0.ɵɵelementStart(0, "div", 205);
|
|
862
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template, 5, 5, "span", 210, _forTrack4);
|
|
865
863
|
i0.ɵɵelementEnd();
|
|
866
864
|
} if (rf & 2) {
|
|
867
865
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -869,8 +867,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
869
867
|
i0.ɵɵadvance();
|
|
870
868
|
i0.ɵɵrepeater(ctx_r0.getRunViewPills(event_r22));
|
|
871
869
|
} }
|
|
872
|
-
function
|
|
873
|
-
i0.ɵɵelementStart(0, "div",
|
|
870
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
871
|
+
i0.ɵɵelementStart(0, "div", 206);
|
|
874
872
|
i0.ɵɵtext(1);
|
|
875
873
|
i0.ɵɵelementEnd();
|
|
876
874
|
} if (rf & 2) {
|
|
@@ -879,31 +877,31 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
879
877
|
i0.ɵɵadvance();
|
|
880
878
|
i0.ɵɵtextInterpolate(ctx_r0.truncateString(event_r22.filter, 80));
|
|
881
879
|
} }
|
|
882
|
-
function
|
|
880
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
883
881
|
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",
|
|
882
|
+
i0.ɵɵelementStart(0, "div", 191);
|
|
883
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Template_div_click_0_listener() { const event_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openEventDetailPanel(event_r22)); });
|
|
884
|
+
i0.ɵɵelementStart(1, "div", 192);
|
|
885
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_2_Template, 2, 0, "div", 193)(3, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_3_Template, 1, 0, "div", 194);
|
|
886
|
+
i0.ɵɵelement(4, "div", 195);
|
|
889
887
|
i0.ɵɵelementEnd();
|
|
890
|
-
i0.ɵɵelementStart(5, "div",
|
|
888
|
+
i0.ɵɵelementStart(5, "div", 196)(6, "div", 197)(7, "span", 198);
|
|
891
889
|
i0.ɵɵtext(8);
|
|
892
890
|
i0.ɵɵelementEnd();
|
|
893
|
-
i0.ɵɵelementStart(9, "span",
|
|
891
|
+
i0.ɵɵelementStart(9, "span", 163);
|
|
894
892
|
i0.ɵɵtext(10);
|
|
895
893
|
i0.ɵɵelementEnd();
|
|
896
|
-
i0.ɵɵconditionalCreate(11,
|
|
897
|
-
i0.ɵɵconditionalCreate(12,
|
|
894
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_11_Template, 3, 0, "span", 199);
|
|
895
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_12_Template, 3, 6, "span", 200);
|
|
898
896
|
i0.ɵɵelementEnd();
|
|
899
|
-
i0.ɵɵelementStart(13, "div",
|
|
897
|
+
i0.ɵɵelementStart(13, "div", 201)(14, "span", 202);
|
|
900
898
|
i0.ɵɵtext(15);
|
|
901
899
|
i0.ɵɵelementEnd();
|
|
902
|
-
i0.ɵɵconditionalCreate(16,
|
|
903
|
-
i0.ɵɵconditionalCreate(17,
|
|
900
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_16_Template, 2, 1, "span", 203);
|
|
901
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_17_Template, 4, 1, "div", 204);
|
|
904
902
|
i0.ɵɵelementEnd();
|
|
905
|
-
i0.ɵɵconditionalCreate(18,
|
|
906
|
-
i0.ɵɵconditionalCreate(19,
|
|
903
|
+
i0.ɵɵconditionalCreate(18, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_18_Template, 3, 0, "div", 205);
|
|
904
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Conditional_19_Template, 2, 1, "div", 206);
|
|
907
905
|
i0.ɵɵelementEnd()();
|
|
908
906
|
} if (rf & 2) {
|
|
909
907
|
const event_r22 = ctx.$implicit;
|
|
@@ -933,37 +931,37 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Conditional_12
|
|
|
933
931
|
i0.ɵɵadvance();
|
|
934
932
|
i0.ɵɵconditional(event_r22.filter ? 19 : -1);
|
|
935
933
|
} }
|
|
936
|
-
function
|
|
937
|
-
i0.ɵɵrepeaterCreate(0,
|
|
934
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
935
|
+
i0.ɵɵrepeaterCreate(0, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_For_1_Template, 20, 16, "div", 190, _forTrack3);
|
|
938
936
|
} if (rf & 2) {
|
|
939
937
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
940
938
|
i0.ɵɵrepeater(ctx_r0.filteredEvents.slice(0, 50));
|
|
941
939
|
} }
|
|
942
|
-
function
|
|
943
|
-
i0.ɵɵelementStart(0, "div",
|
|
944
|
-
i0.ɵɵelement(1, "i",
|
|
940
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
941
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
942
|
+
i0.ɵɵelement(1, "i", 212);
|
|
945
943
|
i0.ɵɵelementStart(2, "p");
|
|
946
944
|
i0.ɵɵtext(3, "No events recorded yet");
|
|
947
945
|
i0.ɵɵelementEnd()();
|
|
948
946
|
} }
|
|
949
|
-
function
|
|
947
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Template(rf, ctx) { if (rf & 1) {
|
|
950
948
|
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
|
|
949
|
+
i0.ɵɵelementStart(0, "div", 178)(1, "div", 179);
|
|
950
|
+
i0.ɵɵelement(2, "i", 180);
|
|
951
|
+
i0.ɵɵelementStart(3, "input", 181);
|
|
952
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.searchQuery, $event) || (ctx_r0.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
953
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onSearchChange()); });
|
|
956
954
|
i0.ɵɵelementEnd();
|
|
957
|
-
i0.ɵɵconditionalCreate(4,
|
|
955
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_4_Template, 2, 0, "button", 182);
|
|
958
956
|
i0.ɵɵelementEnd();
|
|
959
|
-
i0.ɵɵelementStart(5, "div",
|
|
960
|
-
i0.ɵɵlistener("click", function
|
|
957
|
+
i0.ɵɵelementStart(5, "div", 183)(6, "button", 184);
|
|
958
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setCategoryFilter("all")); });
|
|
961
959
|
i0.ɵɵtext(7, " All ");
|
|
962
960
|
i0.ɵɵelementEnd();
|
|
963
|
-
i0.ɵɵrepeaterCreate(8,
|
|
961
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_47_Conditional_49_For_9_Template, 2, 3, "button", 185, _forTrack2);
|
|
964
962
|
i0.ɵɵelementEnd()();
|
|
965
|
-
i0.ɵɵelementStart(10, "div",
|
|
966
|
-
i0.ɵɵconditionalCreate(12,
|
|
963
|
+
i0.ɵɵelementStart(10, "div", 186)(11, "div", 187);
|
|
964
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12_Template, 2, 0)(13, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_13_Template, 4, 0, "div", 188);
|
|
967
965
|
i0.ɵɵelementEnd()();
|
|
968
966
|
} if (rf & 2) {
|
|
969
967
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -978,17 +976,17 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_49_Template(rf, c
|
|
|
978
976
|
i0.ɵɵadvance(4);
|
|
979
977
|
i0.ɵɵconditional(ctx_r0.filteredEvents.length > 0 ? 12 : 13);
|
|
980
978
|
} }
|
|
981
|
-
function
|
|
979
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
982
980
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
983
|
-
i0.ɵɵelementStart(0, "button",
|
|
984
|
-
i0.ɵɵlistener("click", function
|
|
985
|
-
i0.ɵɵelement(1, "i",
|
|
981
|
+
i0.ɵɵelementStart(0, "button", 189);
|
|
982
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.clearSearch()); });
|
|
983
|
+
i0.ɵɵelement(1, "i", 114);
|
|
986
984
|
i0.ɵɵelementEnd();
|
|
987
985
|
} }
|
|
988
|
-
function
|
|
986
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
989
987
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
990
|
-
i0.ɵɵelementStart(0, "button",
|
|
991
|
-
i0.ɵɵlistener("click", function
|
|
988
|
+
i0.ɵɵelementStart(0, "button", 184);
|
|
989
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_For_9_Template_button_click_0_listener() { const cat_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCategoryFilterByName(cat_r28.name)); });
|
|
992
990
|
i0.ɵɵtext(1);
|
|
993
991
|
i0.ɵɵelementEnd();
|
|
994
992
|
} if (rf & 2) {
|
|
@@ -998,8 +996,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_For_9_Template
|
|
|
998
996
|
i0.ɵɵadvance();
|
|
999
997
|
i0.ɵɵtextInterpolate1(" ", cat_r28.name, " ");
|
|
1000
998
|
} }
|
|
1001
|
-
function
|
|
1002
|
-
i0.ɵɵelementStart(0, "span",
|
|
999
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1000
|
+
i0.ɵɵelementStart(0, "span", 224);
|
|
1003
1001
|
i0.ɵɵtext(1);
|
|
1004
1002
|
i0.ɵɵelementEnd();
|
|
1005
1003
|
} if (rf & 2) {
|
|
@@ -1007,33 +1005,33 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Conditional_10
|
|
|
1007
1005
|
i0.ɵɵadvance();
|
|
1008
1006
|
i0.ɵɵtextInterpolate(pattern_r30.count);
|
|
1009
1007
|
} }
|
|
1010
|
-
function
|
|
1008
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1011
1009
|
i0.ɵɵtext(0);
|
|
1012
1010
|
} if (rf & 2) {
|
|
1013
1011
|
const pattern_r30 = i0.ɵɵnextContext().$implicit;
|
|
1014
1012
|
i0.ɵɵtextInterpolate1(" ", pattern_r30.count, " ");
|
|
1015
1013
|
} }
|
|
1016
|
-
function
|
|
1017
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
1014
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Template(rf, ctx) { if (rf & 1) {
|
|
1015
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 220);
|
|
1018
1016
|
i0.ɵɵtext(3);
|
|
1019
1017
|
i0.ɵɵelementEnd()();
|
|
1020
|
-
i0.ɵɵelementStart(4, "td",
|
|
1018
|
+
i0.ɵɵelementStart(4, "td", 221);
|
|
1021
1019
|
i0.ɵɵtext(5);
|
|
1022
1020
|
i0.ɵɵelementEnd();
|
|
1023
|
-
i0.ɵɵelementStart(6, "td",
|
|
1021
|
+
i0.ɵɵelementStart(6, "td", 222);
|
|
1024
1022
|
i0.ɵɵtext(7);
|
|
1025
1023
|
i0.ɵɵelementEnd();
|
|
1026
|
-
i0.ɵɵelementStart(8, "td",
|
|
1024
|
+
i0.ɵɵelementStart(8, "td", 223);
|
|
1027
1025
|
i0.ɵɵtext(9);
|
|
1028
1026
|
i0.ɵɵelementEnd();
|
|
1029
|
-
i0.ɵɵelementStart(10, "td",
|
|
1030
|
-
i0.ɵɵconditionalCreate(11,
|
|
1027
|
+
i0.ɵɵelementStart(10, "td", 79);
|
|
1028
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Conditional_11_Template, 2, 1, "span", 224)(12, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Conditional_12_Template, 1, 1);
|
|
1031
1029
|
i0.ɵɵelementEnd();
|
|
1032
|
-
i0.ɵɵelementStart(13, "td",
|
|
1030
|
+
i0.ɵɵelementStart(13, "td", 79);
|
|
1033
1031
|
i0.ɵɵtext(14);
|
|
1034
1032
|
i0.ɵɵpipe(15, "number");
|
|
1035
1033
|
i0.ɵɵelementEnd();
|
|
1036
|
-
i0.ɵɵelementStart(16, "td",
|
|
1034
|
+
i0.ɵɵelementStart(16, "td", 79);
|
|
1037
1035
|
i0.ɵɵtext(17);
|
|
1038
1036
|
i0.ɵɵpipe(18, "number");
|
|
1039
1037
|
i0.ɵɵelementEnd()();
|
|
@@ -1062,43 +1060,43 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Conditional_10
|
|
|
1062
1060
|
i0.ɵɵadvance(3);
|
|
1063
1061
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 19, pattern_r30.totalElapsedMs, "1.0-0"));
|
|
1064
1062
|
} }
|
|
1065
|
-
function
|
|
1063
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1066
1064
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1067
|
-
i0.ɵɵelementStart(0, "div",
|
|
1068
|
-
i0.ɵɵlistener("click", function
|
|
1065
|
+
i0.ɵɵelementStart(0, "div", 214)(1, "div", 215)(2, "table", 216)(3, "thead")(4, "tr")(5, "th", 217);
|
|
1066
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("category")); });
|
|
1069
1067
|
i0.ɵɵtext(6, " Category ");
|
|
1070
|
-
i0.ɵɵelement(7, "i",
|
|
1068
|
+
i0.ɵɵelement(7, "i", 12);
|
|
1071
1069
|
i0.ɵɵelementEnd();
|
|
1072
|
-
i0.ɵɵelementStart(8, "th",
|
|
1073
|
-
i0.ɵɵlistener("click", function
|
|
1070
|
+
i0.ɵɵelementStart(8, "th", 217);
|
|
1071
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_8_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("operation")); });
|
|
1074
1072
|
i0.ɵɵtext(9, " Operation ");
|
|
1075
|
-
i0.ɵɵelement(10, "i",
|
|
1073
|
+
i0.ɵɵelement(10, "i", 12);
|
|
1076
1074
|
i0.ɵɵelementEnd();
|
|
1077
|
-
i0.ɵɵelementStart(11, "th",
|
|
1078
|
-
i0.ɵɵlistener("click", function
|
|
1075
|
+
i0.ɵɵelementStart(11, "th", 217);
|
|
1076
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_11_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("entity")); });
|
|
1079
1077
|
i0.ɵɵtext(12, " Entity/Query ");
|
|
1080
|
-
i0.ɵɵelement(13, "i",
|
|
1078
|
+
i0.ɵɵelement(13, "i", 12);
|
|
1081
1079
|
i0.ɵɵelementEnd();
|
|
1082
1080
|
i0.ɵɵelementStart(14, "th");
|
|
1083
1081
|
i0.ɵɵtext(15, "Filter");
|
|
1084
1082
|
i0.ɵɵelementEnd();
|
|
1085
|
-
i0.ɵɵelementStart(16, "th",
|
|
1086
|
-
i0.ɵɵlistener("click", function
|
|
1083
|
+
i0.ɵɵelementStart(16, "th", 218);
|
|
1084
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("count")); });
|
|
1087
1085
|
i0.ɵɵtext(17, " Count ");
|
|
1088
|
-
i0.ɵɵelement(18, "i",
|
|
1086
|
+
i0.ɵɵelement(18, "i", 12);
|
|
1089
1087
|
i0.ɵɵelementEnd();
|
|
1090
|
-
i0.ɵɵelementStart(19, "th",
|
|
1091
|
-
i0.ɵɵlistener("click", function
|
|
1088
|
+
i0.ɵɵelementStart(19, "th", 218);
|
|
1089
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("avgMs")); });
|
|
1092
1090
|
i0.ɵɵtext(20, " Avg (ms) ");
|
|
1093
|
-
i0.ɵɵelement(21, "i",
|
|
1091
|
+
i0.ɵɵelement(21, "i", 12);
|
|
1094
1092
|
i0.ɵɵelementEnd();
|
|
1095
|
-
i0.ɵɵelementStart(22, "th",
|
|
1096
|
-
i0.ɵɵlistener("click", function
|
|
1093
|
+
i0.ɵɵelementStart(22, "th", 218);
|
|
1094
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r29); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortPatternsBy("totalMs")); });
|
|
1097
1095
|
i0.ɵɵtext(23, " Total (ms) ");
|
|
1098
|
-
i0.ɵɵelement(24, "i",
|
|
1096
|
+
i0.ɵɵelement(24, "i", 12);
|
|
1099
1097
|
i0.ɵɵelementEnd()()();
|
|
1100
1098
|
i0.ɵɵelementStart(25, "tbody");
|
|
1101
|
-
i0.ɵɵrepeaterCreate(26,
|
|
1099
|
+
i0.ɵɵrepeaterCreate(26, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_For_27_Template, 19, 22, "tr", 219, _forTrack5);
|
|
1102
1100
|
i0.ɵɵelementEnd()()()();
|
|
1103
1101
|
} if (rf & 2) {
|
|
1104
1102
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -1117,40 +1115,40 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Conditional_10
|
|
|
1117
1115
|
i0.ɵɵadvance(2);
|
|
1118
1116
|
i0.ɵɵrepeater(ctx_r0.filteredPatterns);
|
|
1119
1117
|
} }
|
|
1120
|
-
function
|
|
1121
|
-
i0.ɵɵelementStart(0, "div",
|
|
1122
|
-
i0.ɵɵelement(1, "i",
|
|
1118
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1119
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
1120
|
+
i0.ɵɵelement(1, "i", 212);
|
|
1123
1121
|
i0.ɵɵelementStart(2, "p");
|
|
1124
1122
|
i0.ɵɵtext(3, "No telemetry data yet");
|
|
1125
1123
|
i0.ɵɵelementEnd();
|
|
1126
|
-
i0.ɵɵelementStart(4, "span",
|
|
1124
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
1127
1125
|
i0.ɵɵtext(5, "Navigate around the app to generate performance data");
|
|
1128
1126
|
i0.ɵɵelementEnd()();
|
|
1129
1127
|
} }
|
|
1130
|
-
function
|
|
1131
|
-
i0.ɵɵelementStart(0, "div",
|
|
1132
|
-
i0.ɵɵelement(1, "i",
|
|
1128
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1129
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
1130
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1133
1131
|
i0.ɵɵelementStart(2, "p");
|
|
1134
1132
|
i0.ɵɵtext(3, "No patterns match your filter");
|
|
1135
1133
|
i0.ɵɵelementEnd()();
|
|
1136
1134
|
} }
|
|
1137
|
-
function
|
|
1135
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Template(rf, ctx) { if (rf & 1) {
|
|
1138
1136
|
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
|
|
1137
|
+
i0.ɵɵelementStart(0, "div", 178)(1, "div", 179);
|
|
1138
|
+
i0.ɵɵelement(2, "i", 180);
|
|
1139
|
+
i0.ɵɵelementStart(3, "input", 213);
|
|
1140
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.searchQuery, $event) || (ctx_r0.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
1141
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onSearchChange()); });
|
|
1144
1142
|
i0.ɵɵelementEnd();
|
|
1145
|
-
i0.ɵɵconditionalCreate(4,
|
|
1143
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_4_Template, 2, 0, "button", 182);
|
|
1146
1144
|
i0.ɵɵelementEnd();
|
|
1147
|
-
i0.ɵɵelementStart(5, "div",
|
|
1148
|
-
i0.ɵɵlistener("click", function
|
|
1145
|
+
i0.ɵɵelementStart(5, "div", 183)(6, "button", 184);
|
|
1146
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setCategoryFilter("all")); });
|
|
1149
1147
|
i0.ɵɵtext(7, " All ");
|
|
1150
1148
|
i0.ɵɵelementEnd();
|
|
1151
|
-
i0.ɵɵrepeaterCreate(8,
|
|
1149
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_47_Conditional_50_For_9_Template, 2, 3, "button", 185, _forTrack2);
|
|
1152
1150
|
i0.ɵɵelementEnd()();
|
|
1153
|
-
i0.ɵɵconditionalCreate(10,
|
|
1151
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10_Template, 28, 12, "div", 214)(11, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_11_Template, 6, 0, "div", 55)(12, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_12_Template, 4, 0, "div", 188);
|
|
1154
1152
|
} if (rf & 2) {
|
|
1155
1153
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1156
1154
|
i0.ɵɵadvance(3);
|
|
@@ -1164,11 +1162,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_50_Template(rf, c
|
|
|
1164
1162
|
i0.ɵɵadvance(2);
|
|
1165
1163
|
i0.ɵɵconditional(ctx_r0.filteredPatterns.length > 0 ? 10 : ctx_r0.telemetryEnabled && ctx_r0.telemetryPatterns.length === 0 ? 11 : ctx_r0.searchQuery || ctx_r0.categoryFilter !== "all" ? 12 : -1);
|
|
1166
1164
|
} }
|
|
1167
|
-
function
|
|
1168
|
-
i0.ɵɵelementStart(0, "div",
|
|
1165
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1166
|
+
i0.ɵɵelementStart(0, "div", 235)(1, "span", 239);
|
|
1169
1167
|
i0.ɵɵtext(2, "Entity:");
|
|
1170
1168
|
i0.ɵɵelementEnd();
|
|
1171
|
-
i0.ɵɵelementStart(3, "span",
|
|
1169
|
+
i0.ɵɵelementStart(3, "span", 240);
|
|
1172
1170
|
i0.ɵɵtext(4);
|
|
1173
1171
|
i0.ɵɵelementEnd()();
|
|
1174
1172
|
} if (rf & 2) {
|
|
@@ -1176,11 +1174,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1176
1174
|
i0.ɵɵadvance(4);
|
|
1177
1175
|
i0.ɵɵtextInterpolate(insight_r32.entityName);
|
|
1178
1176
|
} }
|
|
1179
|
-
function
|
|
1180
|
-
i0.ɵɵelementStart(0, "div",
|
|
1177
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1178
|
+
i0.ɵɵelementStart(0, "div", 235)(1, "span", 239);
|
|
1181
1179
|
i0.ɵɵtext(2, "Filter:");
|
|
1182
1180
|
i0.ɵɵelementEnd();
|
|
1183
|
-
i0.ɵɵelementStart(3, "code",
|
|
1181
|
+
i0.ɵɵelementStart(3, "code", 241);
|
|
1184
1182
|
i0.ɵɵtext(4);
|
|
1185
1183
|
i0.ɵɵelementEnd()();
|
|
1186
1184
|
} if (rf & 2) {
|
|
@@ -1189,11 +1187,11 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1189
1187
|
i0.ɵɵadvance(4);
|
|
1190
1188
|
i0.ɵɵtextInterpolate(ctx_r0.getInsightFilter(insight_r32));
|
|
1191
1189
|
} }
|
|
1192
|
-
function
|
|
1193
|
-
i0.ɵɵelementStart(0, "div",
|
|
1190
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
1191
|
+
i0.ɵɵelementStart(0, "div", 245)(1, "span", 248);
|
|
1194
1192
|
i0.ɵɵtext(2);
|
|
1195
1193
|
i0.ɵɵelementEnd();
|
|
1196
|
-
i0.ɵɵelementStart(3, "span",
|
|
1194
|
+
i0.ɵɵelementStart(3, "span", 249);
|
|
1197
1195
|
i0.ɵɵtext(4);
|
|
1198
1196
|
i0.ɵɵelementEnd()();
|
|
1199
1197
|
} if (rf & 2) {
|
|
@@ -1203,8 +1201,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1203
1201
|
i0.ɵɵadvance(2);
|
|
1204
1202
|
i0.ɵɵtextInterpolate(param_r33.value);
|
|
1205
1203
|
} }
|
|
1206
|
-
function
|
|
1207
|
-
i0.ɵɵelementStart(0, "span",
|
|
1204
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1205
|
+
i0.ɵɵelementStart(0, "span", 252);
|
|
1208
1206
|
i0.ɵɵtext(1);
|
|
1209
1207
|
i0.ɵɵelementEnd();
|
|
1210
1208
|
} if (rf & 2) {
|
|
@@ -1212,8 +1210,8 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1212
1210
|
i0.ɵɵadvance();
|
|
1213
1211
|
i0.ɵɵtextInterpolate(event_r34.entityName);
|
|
1214
1212
|
} }
|
|
1215
|
-
function
|
|
1216
|
-
i0.ɵɵelementStart(0, "span",
|
|
1213
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1214
|
+
i0.ɵɵelementStart(0, "span", 253);
|
|
1217
1215
|
i0.ɵɵtext(1);
|
|
1218
1216
|
i0.ɵɵelementEnd();
|
|
1219
1217
|
} if (rf & 2) {
|
|
@@ -1222,16 +1220,16 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1222
1220
|
i0.ɵɵadvance();
|
|
1223
1221
|
i0.ɵɵtextInterpolate(ctx_r0.truncateString(event_r34.filter, 40));
|
|
1224
1222
|
} }
|
|
1225
|
-
function
|
|
1226
|
-
i0.ɵɵelementStart(0, "div",
|
|
1223
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
1224
|
+
i0.ɵɵelementStart(0, "div", 247)(1, "span", 250);
|
|
1227
1225
|
i0.ɵɵtext(2);
|
|
1228
1226
|
i0.ɵɵelementEnd();
|
|
1229
|
-
i0.ɵɵelementStart(3, "span",
|
|
1227
|
+
i0.ɵɵelementStart(3, "span", 251);
|
|
1230
1228
|
i0.ɵɵtext(4);
|
|
1231
1229
|
i0.ɵɵpipe(5, "number");
|
|
1232
1230
|
i0.ɵɵelementEnd();
|
|
1233
|
-
i0.ɵɵconditionalCreate(6,
|
|
1234
|
-
i0.ɵɵconditionalCreate(7,
|
|
1231
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template, 2, 1, "span", 252);
|
|
1232
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template, 2, 1, "span", 253);
|
|
1235
1233
|
i0.ɵɵelementEnd();
|
|
1236
1234
|
} if (rf & 2) {
|
|
1237
1235
|
const event_r34 = ctx.$implicit;
|
|
@@ -1245,18 +1243,18 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1245
1243
|
i0.ɵɵadvance();
|
|
1246
1244
|
i0.ɵɵconditional(event_r34.filter ? 7 : -1);
|
|
1247
1245
|
} }
|
|
1248
|
-
function
|
|
1249
|
-
i0.ɵɵelementStart(0, "div",
|
|
1246
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1247
|
+
i0.ɵɵelementStart(0, "div", 242)(1, "div", 243);
|
|
1250
1248
|
i0.ɵɵtext(2, "Full Parameters");
|
|
1251
1249
|
i0.ɵɵelementEnd();
|
|
1252
|
-
i0.ɵɵelementStart(3, "div",
|
|
1253
|
-
i0.ɵɵrepeaterCreate(4,
|
|
1250
|
+
i0.ɵɵelementStart(3, "div", 244);
|
|
1251
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template, 5, 2, "div", 245, _forTrack6);
|
|
1254
1252
|
i0.ɵɵelementEnd()();
|
|
1255
|
-
i0.ɵɵelementStart(6, "div",
|
|
1253
|
+
i0.ɵɵelementStart(6, "div", 242)(7, "div", 243);
|
|
1256
1254
|
i0.ɵɵtext(8);
|
|
1257
1255
|
i0.ɵɵelementEnd();
|
|
1258
|
-
i0.ɵɵelementStart(9, "div",
|
|
1259
|
-
i0.ɵɵrepeaterCreate(10,
|
|
1256
|
+
i0.ɵɵelementStart(9, "div", 246);
|
|
1257
|
+
i0.ɵɵrepeaterCreate(10, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template, 8, 7, "div", 247, _forTrack3);
|
|
1260
1258
|
i0.ɵɵelementEnd()();
|
|
1261
1259
|
} if (rf & 2) {
|
|
1262
1260
|
const insight_r32 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -1268,40 +1266,40 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1268
1266
|
i0.ɵɵadvance(2);
|
|
1269
1267
|
i0.ɵɵrepeater(insight_r32.relatedEvents);
|
|
1270
1268
|
} }
|
|
1271
|
-
function
|
|
1272
|
-
i0.ɵɵelementStart(0, "div",
|
|
1273
|
-
i0.ɵɵconditionalCreate(1,
|
|
1269
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1270
|
+
i0.ɵɵelementStart(0, "div", 238);
|
|
1271
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template, 12, 1);
|
|
1274
1272
|
i0.ɵɵelementEnd();
|
|
1275
1273
|
} if (rf & 2) {
|
|
1276
1274
|
const insight_r32 = i0.ɵɵnextContext().$implicit;
|
|
1277
1275
|
i0.ɵɵadvance();
|
|
1278
1276
|
i0.ɵɵconditional(insight_r32.relatedEvents.length > 0 ? 1 : -1);
|
|
1279
1277
|
} }
|
|
1280
|
-
function
|
|
1278
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
1281
1279
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1282
|
-
i0.ɵɵelementStart(0, "div",
|
|
1283
|
-
i0.ɵɵlistener("click", function
|
|
1284
|
-
i0.ɵɵelement(2, "i",
|
|
1285
|
-
i0.ɵɵelementStart(3, "span",
|
|
1280
|
+
i0.ɵɵelementStart(0, "div", 229)(1, "div", 230);
|
|
1281
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Template_div_click_1_listener() { const insight_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleInsightExpanded(insight_r32)); });
|
|
1282
|
+
i0.ɵɵelement(2, "i", 12);
|
|
1283
|
+
i0.ɵɵelementStart(3, "span", 231);
|
|
1286
1284
|
i0.ɵɵtext(4);
|
|
1287
1285
|
i0.ɵɵelementEnd();
|
|
1288
|
-
i0.ɵɵelementStart(5, "span",
|
|
1286
|
+
i0.ɵɵelementStart(5, "span", 232);
|
|
1289
1287
|
i0.ɵɵtext(6);
|
|
1290
1288
|
i0.ɵɵelementEnd();
|
|
1291
|
-
i0.ɵɵelement(7, "i",
|
|
1289
|
+
i0.ɵɵelement(7, "i", 233);
|
|
1292
1290
|
i0.ɵɵelementEnd();
|
|
1293
|
-
i0.ɵɵelementStart(8, "div",
|
|
1294
|
-
i0.ɵɵconditionalCreate(9,
|
|
1295
|
-
i0.ɵɵconditionalCreate(10,
|
|
1291
|
+
i0.ɵɵelementStart(8, "div", 234);
|
|
1292
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_9_Template, 5, 1, "div", 235);
|
|
1293
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_10_Template, 5, 1, "div", 235);
|
|
1296
1294
|
i0.ɵɵelementEnd();
|
|
1297
|
-
i0.ɵɵelementStart(11, "div",
|
|
1295
|
+
i0.ɵɵelementStart(11, "div", 236);
|
|
1298
1296
|
i0.ɵɵtext(12);
|
|
1299
1297
|
i0.ɵɵelementEnd();
|
|
1300
|
-
i0.ɵɵelementStart(13, "div",
|
|
1301
|
-
i0.ɵɵelement(14, "i",
|
|
1298
|
+
i0.ɵɵelementStart(13, "div", 237);
|
|
1299
|
+
i0.ɵɵelement(14, "i", 72);
|
|
1302
1300
|
i0.ɵɵtext(15);
|
|
1303
1301
|
i0.ɵɵelementEnd();
|
|
1304
|
-
i0.ɵɵconditionalCreate(16,
|
|
1302
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Conditional_16_Template, 2, 1, "div", 238);
|
|
1305
1303
|
i0.ɵɵelementEnd();
|
|
1306
1304
|
} if (rf & 2) {
|
|
1307
1305
|
const insight_r32 = ctx.$implicit;
|
|
@@ -1327,99 +1325,99 @@ function SystemDiagnosticsComponent_Conditional_52_Conditional_51_Conditional_0_
|
|
|
1327
1325
|
i0.ɵɵadvance();
|
|
1328
1326
|
i0.ɵɵconditional(insight_r32.expanded ? 16 : -1);
|
|
1329
1327
|
} }
|
|
1330
|
-
function
|
|
1331
|
-
i0.ɵɵelementStart(0, "div",
|
|
1332
|
-
i0.ɵɵrepeaterCreate(2,
|
|
1328
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1329
|
+
i0.ɵɵelementStart(0, "div", 226)(1, "div", 227);
|
|
1330
|
+
i0.ɵɵrepeaterCreate(2, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_For_3_Template, 17, 17, "div", 228, _forTrack3);
|
|
1333
1331
|
i0.ɵɵelementEnd()();
|
|
1334
1332
|
} if (rf & 2) {
|
|
1335
1333
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
1336
1334
|
i0.ɵɵadvance(2);
|
|
1337
1335
|
i0.ɵɵrepeater(ctx_r0.telemetryInsights);
|
|
1338
1336
|
} }
|
|
1339
|
-
function
|
|
1340
|
-
i0.ɵɵelementStart(0, "div",
|
|
1341
|
-
i0.ɵɵelement(1, "i",
|
|
1337
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1338
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
1339
|
+
i0.ɵɵelement(1, "i", 254);
|
|
1342
1340
|
i0.ɵɵelementStart(2, "p");
|
|
1343
1341
|
i0.ɵɵtext(3, "No optimization insights");
|
|
1344
1342
|
i0.ɵɵelementEnd();
|
|
1345
|
-
i0.ɵɵelementStart(4, "span",
|
|
1343
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
1346
1344
|
i0.ɵɵtext(5, "Insights will appear when potential optimizations are detected");
|
|
1347
1345
|
i0.ɵɵelementEnd()();
|
|
1348
1346
|
} }
|
|
1349
|
-
function
|
|
1350
|
-
i0.ɵɵconditionalCreate(0,
|
|
1347
|
+
function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Template(rf, ctx) { if (rf & 1) {
|
|
1348
|
+
i0.ɵɵconditionalCreate(0, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_Template, 4, 0, "div", 226)(1, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_1_Template, 6, 0, "div", 55);
|
|
1351
1349
|
} if (rf & 2) {
|
|
1352
1350
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1353
1351
|
i0.ɵɵconditional(ctx_r0.telemetryInsights.length > 0 ? 0 : 1);
|
|
1354
1352
|
} }
|
|
1355
|
-
function
|
|
1353
|
+
function SystemDiagnosticsComponent_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
1356
1354
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
1357
|
-
i0.ɵɵelementStart(0, "div",
|
|
1358
|
-
i0.ɵɵelement(3, "i",
|
|
1355
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "div", 50)(2, "h3");
|
|
1356
|
+
i0.ɵɵelement(3, "i", 25);
|
|
1359
1357
|
i0.ɵɵtext(4, " Performance Telemetry ");
|
|
1360
1358
|
i0.ɵɵelementEnd();
|
|
1361
|
-
i0.ɵɵelementStart(5, "div",
|
|
1362
|
-
i0.ɵɵlistener("click", function
|
|
1363
|
-
i0.ɵɵelement(8, "i",
|
|
1359
|
+
i0.ɵɵelementStart(5, "div", 51)(6, "div", 88)(7, "button", 89);
|
|
1360
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTelemetrySource("client")); });
|
|
1361
|
+
i0.ɵɵelement(8, "i", 90);
|
|
1364
1362
|
i0.ɵɵtext(9, " Client ");
|
|
1365
1363
|
i0.ɵɵelementEnd();
|
|
1366
|
-
i0.ɵɵelementStart(10, "button",
|
|
1367
|
-
i0.ɵɵlistener("click", function
|
|
1368
|
-
i0.ɵɵelement(11, "i",
|
|
1364
|
+
i0.ɵɵelementStart(10, "button", 89);
|
|
1365
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTelemetrySource("server")); });
|
|
1366
|
+
i0.ɵɵelement(11, "i", 91);
|
|
1369
1367
|
i0.ɵɵtext(12, " Server ");
|
|
1370
1368
|
i0.ɵɵelementEnd()();
|
|
1371
|
-
i0.ɵɵelement(13, "span",
|
|
1372
|
-
i0.ɵɵconditionalCreate(14,
|
|
1373
|
-
i0.ɵɵconditionalCreate(16,
|
|
1369
|
+
i0.ɵɵelement(13, "span", 92);
|
|
1370
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_47_Conditional_14_Template, 6, 8)(15, SystemDiagnosticsComponent_Conditional_47_Conditional_15_Template, 5, 9, "span", 93);
|
|
1371
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_47_Conditional_16_Template, 2, 0, "span", 94);
|
|
1374
1372
|
i0.ɵɵelementEnd()();
|
|
1375
|
-
i0.ɵɵconditionalCreate(17,
|
|
1376
|
-
i0.ɵɵelementStart(18, "div",
|
|
1377
|
-
i0.ɵɵlistener("click", function
|
|
1378
|
-
i0.ɵɵelement(20, "i",
|
|
1373
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_47_Conditional_17_Template, 5, 1, "div", 95);
|
|
1374
|
+
i0.ɵɵelementStart(18, "div", 96)(19, "button", 97);
|
|
1375
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setPerfTab("monitor")); });
|
|
1376
|
+
i0.ɵɵelement(20, "i", 98);
|
|
1379
1377
|
i0.ɵɵelementStart(21, "span");
|
|
1380
1378
|
i0.ɵɵtext(22, "Monitor");
|
|
1381
1379
|
i0.ɵɵelementEnd()();
|
|
1382
|
-
i0.ɵɵelementStart(23, "button",
|
|
1383
|
-
i0.ɵɵlistener("click", function
|
|
1384
|
-
i0.ɵɵelement(24, "i",
|
|
1380
|
+
i0.ɵɵelementStart(23, "button", 97);
|
|
1381
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setPerfTab("overview")); });
|
|
1382
|
+
i0.ɵɵelement(24, "i", 99);
|
|
1385
1383
|
i0.ɵɵelementStart(25, "span");
|
|
1386
1384
|
i0.ɵɵtext(26, "Overview");
|
|
1387
1385
|
i0.ɵɵelementEnd();
|
|
1388
|
-
i0.ɵɵconditionalCreate(27,
|
|
1386
|
+
i0.ɵɵconditionalCreate(27, SystemDiagnosticsComponent_Conditional_47_Conditional_27_Template, 2, 1, "span", 100);
|
|
1389
1387
|
i0.ɵɵelementEnd();
|
|
1390
|
-
i0.ɵɵelementStart(28, "button",
|
|
1391
|
-
i0.ɵɵlistener("click", function
|
|
1392
|
-
i0.ɵɵelement(29, "i",
|
|
1388
|
+
i0.ɵɵelementStart(28, "button", 97);
|
|
1389
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setPerfTab("events")); });
|
|
1390
|
+
i0.ɵɵelement(29, "i", 101);
|
|
1393
1391
|
i0.ɵɵelementStart(30, "span");
|
|
1394
1392
|
i0.ɵɵtext(31, "Events");
|
|
1395
1393
|
i0.ɵɵelementEnd();
|
|
1396
|
-
i0.ɵɵelementStart(32, "span",
|
|
1394
|
+
i0.ɵɵelementStart(32, "span", 102);
|
|
1397
1395
|
i0.ɵɵtext(33);
|
|
1398
1396
|
i0.ɵɵelementEnd()();
|
|
1399
|
-
i0.ɵɵelementStart(34, "button",
|
|
1400
|
-
i0.ɵɵlistener("click", function
|
|
1401
|
-
i0.ɵɵelement(35, "i",
|
|
1397
|
+
i0.ɵɵelementStart(34, "button", 97);
|
|
1398
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setPerfTab("patterns")); });
|
|
1399
|
+
i0.ɵɵelement(35, "i", 103);
|
|
1402
1400
|
i0.ɵɵelementStart(36, "span");
|
|
1403
1401
|
i0.ɵɵtext(37, "Patterns");
|
|
1404
1402
|
i0.ɵɵelementEnd();
|
|
1405
|
-
i0.ɵɵelementStart(38, "span",
|
|
1403
|
+
i0.ɵɵelementStart(38, "span", 102);
|
|
1406
1404
|
i0.ɵɵtext(39);
|
|
1407
1405
|
i0.ɵɵelementEnd()();
|
|
1408
|
-
i0.ɵɵelementStart(40, "button",
|
|
1409
|
-
i0.ɵɵlistener("click", function
|
|
1410
|
-
i0.ɵɵelement(41, "i",
|
|
1406
|
+
i0.ɵɵelementStart(40, "button", 97);
|
|
1407
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_47_Template_button_click_40_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setPerfTab("insights")); });
|
|
1408
|
+
i0.ɵɵelement(41, "i", 81);
|
|
1411
1409
|
i0.ɵɵelementStart(42, "span");
|
|
1412
1410
|
i0.ɵɵtext(43, "Insights");
|
|
1413
1411
|
i0.ɵɵelementEnd();
|
|
1414
|
-
i0.ɵɵconditionalCreate(44,
|
|
1412
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_47_Conditional_44_Template, 2, 1, "span", 104);
|
|
1415
1413
|
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,
|
|
1414
|
+
i0.ɵɵelementStart(45, "div", 54);
|
|
1415
|
+
i0.ɵɵconditionalCreate(46, SystemDiagnosticsComponent_Conditional_47_Conditional_46_Template, 6, 0, "div", 105);
|
|
1416
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_47_Conditional_47_Template, 48, 9, "div", 106);
|
|
1417
|
+
i0.ɵɵconditionalCreate(48, SystemDiagnosticsComponent_Conditional_47_Conditional_48_Template, 24, 6);
|
|
1418
|
+
i0.ɵɵconditionalCreate(49, SystemDiagnosticsComponent_Conditional_47_Conditional_49_Template, 14, 5);
|
|
1419
|
+
i0.ɵɵconditionalCreate(50, SystemDiagnosticsComponent_Conditional_47_Conditional_50_Template, 13, 5);
|
|
1420
|
+
i0.ɵɵconditionalCreate(51, SystemDiagnosticsComponent_Conditional_47_Conditional_51_Template, 2, 1);
|
|
1423
1421
|
i0.ɵɵelementEnd()();
|
|
1424
1422
|
} if (rf & 2) {
|
|
1425
1423
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -1464,17 +1462,17 @@ function SystemDiagnosticsComponent_Conditional_52_Template(rf, ctx) { if (rf &
|
|
|
1464
1462
|
i0.ɵɵadvance();
|
|
1465
1463
|
i0.ɵɵconditional(ctx_r0.perfTab === "insights" ? 51 : -1);
|
|
1466
1464
|
} }
|
|
1467
|
-
function
|
|
1468
|
-
i0.ɵɵelementStart(0, "div",
|
|
1469
|
-
i0.ɵɵelement(1, "i",
|
|
1465
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1466
|
+
i0.ɵɵelementStart(0, "div", 105);
|
|
1467
|
+
i0.ɵɵelement(1, "i", 112);
|
|
1470
1468
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
1471
1469
|
i0.ɵɵtext(4, "Cache not initialized.");
|
|
1472
1470
|
i0.ɵɵelementEnd();
|
|
1473
1471
|
i0.ɵɵtext(5, " The LocalCacheManager requires initialization with a storage provider during app startup. ");
|
|
1474
1472
|
i0.ɵɵelementEnd()();
|
|
1475
1473
|
} }
|
|
1476
|
-
function
|
|
1477
|
-
i0.ɵɵelementStart(0, "code",
|
|
1474
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_For_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1475
|
+
i0.ɵɵelementStart(0, "code", 273);
|
|
1478
1476
|
i0.ɵɵtext(1);
|
|
1479
1477
|
i0.ɵɵelementEnd();
|
|
1480
1478
|
} if (rf & 2) {
|
|
@@ -1483,19 +1481,19 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1483
1481
|
i0.ɵɵadvance();
|
|
1484
1482
|
i0.ɵɵtextInterpolate(ctx_r0.truncateString(entry_r39.fingerprint, 20));
|
|
1485
1483
|
} }
|
|
1486
|
-
function
|
|
1484
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
1487
1485
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1488
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
1486
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 271);
|
|
1489
1487
|
i0.ɵɵtext(3);
|
|
1490
1488
|
i0.ɵɵelementEnd()();
|
|
1491
|
-
i0.ɵɵelementStart(4, "td",
|
|
1489
|
+
i0.ɵɵelementStart(4, "td", 272);
|
|
1492
1490
|
i0.ɵɵtext(5);
|
|
1493
|
-
i0.ɵɵconditionalCreate(6,
|
|
1491
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_For_32_Conditional_6_Template, 2, 1, "code", 273);
|
|
1494
1492
|
i0.ɵɵelementEnd();
|
|
1495
|
-
i0.ɵɵelementStart(7, "td",
|
|
1493
|
+
i0.ɵɵelementStart(7, "td", 79);
|
|
1496
1494
|
i0.ɵɵtext(8);
|
|
1497
1495
|
i0.ɵɵelementEnd();
|
|
1498
|
-
i0.ɵɵelementStart(9, "td",
|
|
1496
|
+
i0.ɵɵelementStart(9, "td", 79);
|
|
1499
1497
|
i0.ɵɵtext(10);
|
|
1500
1498
|
i0.ɵɵelementEnd();
|
|
1501
1499
|
i0.ɵɵelementStart(11, "td");
|
|
@@ -1504,9 +1502,9 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1504
1502
|
i0.ɵɵelementStart(13, "td");
|
|
1505
1503
|
i0.ɵɵtext(14);
|
|
1506
1504
|
i0.ɵɵelementEnd();
|
|
1507
|
-
i0.ɵɵelementStart(15, "td")(16, "button",
|
|
1508
|
-
i0.ɵɵlistener("click", function
|
|
1509
|
-
i0.ɵɵelement(17, "i",
|
|
1505
|
+
i0.ɵɵelementStart(15, "td")(16, "button", 274);
|
|
1506
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_For_32_Template_button_click_16_listener() { const entry_r39 = i0.ɵɵrestoreView(_r38).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.invalidateCacheEntry(entry_r39)); });
|
|
1507
|
+
i0.ɵɵelement(17, "i", 114);
|
|
1510
1508
|
i0.ɵɵelementEnd()()();
|
|
1511
1509
|
} if (rf & 2) {
|
|
1512
1510
|
const entry_r39 = ctx.$implicit;
|
|
@@ -1528,8 +1526,8 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1528
1526
|
i0.ɵɵadvance(2);
|
|
1529
1527
|
i0.ɵɵtextInterpolate(ctx_r0.formatCacheTimestamp(entry_r39.lastAccessedAt));
|
|
1530
1528
|
} }
|
|
1531
|
-
function
|
|
1532
|
-
i0.ɵɵelementStart(0, "div",
|
|
1529
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1530
|
+
i0.ɵɵelementStart(0, "div", 270);
|
|
1533
1531
|
i0.ɵɵtext(1);
|
|
1534
1532
|
i0.ɵɵelementEnd();
|
|
1535
1533
|
} if (rf & 2) {
|
|
@@ -1537,37 +1535,37 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1537
1535
|
i0.ɵɵadvance();
|
|
1538
1536
|
i0.ɵɵtextInterpolate1(" Showing 50 of ", ctx_r0.filteredCacheEntries.length, " entries ");
|
|
1539
1537
|
} }
|
|
1540
|
-
function
|
|
1538
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
1541
1539
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
1542
|
-
i0.ɵɵelementStart(0, "div",
|
|
1540
|
+
i0.ɵɵelementStart(0, "div", 265)(1, "div", 266)(2, "h4");
|
|
1543
1541
|
i0.ɵɵtext(3, "Cache Entries");
|
|
1544
1542
|
i0.ɵɵelementEnd();
|
|
1545
|
-
i0.ɵɵelementStart(4, "div",
|
|
1546
|
-
i0.ɵɵlistener("click", function
|
|
1543
|
+
i0.ɵɵelementStart(4, "div", 267)(5, "button", 184);
|
|
1544
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r37); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("all")); });
|
|
1547
1545
|
i0.ɵɵtext(6, "All");
|
|
1548
1546
|
i0.ɵɵelementEnd();
|
|
1549
|
-
i0.ɵɵelementStart(7, "button",
|
|
1550
|
-
i0.ɵɵlistener("click", function
|
|
1547
|
+
i0.ɵɵelementStart(7, "button", 184);
|
|
1548
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r37); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("dataset")); });
|
|
1551
1549
|
i0.ɵɵtext(8, "Datasets");
|
|
1552
1550
|
i0.ɵɵelementEnd();
|
|
1553
|
-
i0.ɵɵelementStart(9, "button",
|
|
1554
|
-
i0.ɵɵlistener("click", function
|
|
1551
|
+
i0.ɵɵelementStart(9, "button", 184);
|
|
1552
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r37); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("runview")); });
|
|
1555
1553
|
i0.ɵɵtext(10, "RunViews");
|
|
1556
1554
|
i0.ɵɵelementEnd();
|
|
1557
|
-
i0.ɵɵelementStart(11, "button",
|
|
1558
|
-
i0.ɵɵlistener("click", function
|
|
1555
|
+
i0.ɵɵelementStart(11, "button", 184);
|
|
1556
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r37); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("runquery")); });
|
|
1559
1557
|
i0.ɵɵtext(12, "RunQueries");
|
|
1560
1558
|
i0.ɵɵelementEnd()()();
|
|
1561
|
-
i0.ɵɵelementStart(13, "div",
|
|
1559
|
+
i0.ɵɵelementStart(13, "div", 268)(14, "table", 269)(15, "thead")(16, "tr")(17, "th");
|
|
1562
1560
|
i0.ɵɵtext(18, "Type");
|
|
1563
1561
|
i0.ɵɵelementEnd();
|
|
1564
1562
|
i0.ɵɵelementStart(19, "th");
|
|
1565
1563
|
i0.ɵɵtext(20, "Name");
|
|
1566
1564
|
i0.ɵɵelementEnd();
|
|
1567
|
-
i0.ɵɵelementStart(21, "th",
|
|
1565
|
+
i0.ɵɵelementStart(21, "th", 79);
|
|
1568
1566
|
i0.ɵɵtext(22, "Size");
|
|
1569
1567
|
i0.ɵɵelementEnd();
|
|
1570
|
-
i0.ɵɵelementStart(23, "th",
|
|
1568
|
+
i0.ɵɵelementStart(23, "th", 79);
|
|
1571
1569
|
i0.ɵɵtext(24, "Hits");
|
|
1572
1570
|
i0.ɵɵelementEnd();
|
|
1573
1571
|
i0.ɵɵelementStart(25, "th");
|
|
@@ -1579,9 +1577,9 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1579
1577
|
i0.ɵɵelement(29, "th");
|
|
1580
1578
|
i0.ɵɵelementEnd()();
|
|
1581
1579
|
i0.ɵɵelementStart(30, "tbody");
|
|
1582
|
-
i0.ɵɵrepeaterCreate(31,
|
|
1580
|
+
i0.ɵɵrepeaterCreate(31, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_For_32_Template, 18, 9, "tr", null, _forTrack6);
|
|
1583
1581
|
i0.ɵɵelementEnd()()();
|
|
1584
|
-
i0.ɵɵconditionalCreate(33,
|
|
1582
|
+
i0.ɵɵconditionalCreate(33, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Conditional_33_Template, 2, 1, "div", 270);
|
|
1585
1583
|
i0.ɵɵelementEnd();
|
|
1586
1584
|
} if (rf & 2) {
|
|
1587
1585
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -1598,95 +1596,95 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Conditional_58
|
|
|
1598
1596
|
i0.ɵɵadvance(2);
|
|
1599
1597
|
i0.ɵɵconditional(ctx_r0.filteredCacheEntries.length > 50 ? 33 : -1);
|
|
1600
1598
|
} }
|
|
1601
|
-
function
|
|
1602
|
-
i0.ɵɵelementStart(0, "div",
|
|
1603
|
-
i0.ɵɵelement(1, "i",
|
|
1599
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
1600
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
1601
|
+
i0.ɵɵelement(1, "i", 26);
|
|
1604
1602
|
i0.ɵɵelementStart(2, "p");
|
|
1605
1603
|
i0.ɵɵtext(3, "No cached data");
|
|
1606
1604
|
i0.ɵɵelementEnd();
|
|
1607
|
-
i0.ɵɵelementStart(4, "span",
|
|
1605
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
1608
1606
|
i0.ɵɵtext(5, "Data will be cached as you use the application");
|
|
1609
1607
|
i0.ɵɵelementEnd()();
|
|
1610
1608
|
} }
|
|
1611
|
-
function
|
|
1609
|
+
function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1612
1610
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1613
|
-
i0.ɵɵelementStart(0, "div",
|
|
1611
|
+
i0.ɵɵelementStart(0, "div", 255)(1, "div", 146)(2, "div", 147);
|
|
1614
1612
|
i0.ɵɵtext(3);
|
|
1615
1613
|
i0.ɵɵelementEnd();
|
|
1616
|
-
i0.ɵɵelementStart(4, "div",
|
|
1614
|
+
i0.ɵɵelementStart(4, "div", 148);
|
|
1617
1615
|
i0.ɵɵtext(5, "Total Entries");
|
|
1618
1616
|
i0.ɵɵelementEnd()();
|
|
1619
|
-
i0.ɵɵelementStart(6, "div",
|
|
1617
|
+
i0.ɵɵelementStart(6, "div", 146)(7, "div", 147);
|
|
1620
1618
|
i0.ɵɵtext(8);
|
|
1621
1619
|
i0.ɵɵelementEnd();
|
|
1622
|
-
i0.ɵɵelementStart(9, "div",
|
|
1620
|
+
i0.ɵɵelementStart(9, "div", 148);
|
|
1623
1621
|
i0.ɵɵtext(10, "Total Size");
|
|
1624
1622
|
i0.ɵɵelementEnd()();
|
|
1625
|
-
i0.ɵɵelementStart(11, "div",
|
|
1623
|
+
i0.ɵɵelementStart(11, "div", 146)(12, "div", 147);
|
|
1626
1624
|
i0.ɵɵtext(13);
|
|
1627
1625
|
i0.ɵɵelementEnd();
|
|
1628
|
-
i0.ɵɵelementStart(14, "div",
|
|
1626
|
+
i0.ɵɵelementStart(14, "div", 148);
|
|
1629
1627
|
i0.ɵɵtext(15, "Cache Hits");
|
|
1630
1628
|
i0.ɵɵelementEnd()();
|
|
1631
|
-
i0.ɵɵelementStart(16, "div",
|
|
1629
|
+
i0.ɵɵelementStart(16, "div", 146)(17, "div", 147);
|
|
1632
1630
|
i0.ɵɵtext(18);
|
|
1633
1631
|
i0.ɵɵelementEnd();
|
|
1634
|
-
i0.ɵɵelementStart(19, "div",
|
|
1632
|
+
i0.ɵɵelementStart(19, "div", 148);
|
|
1635
1633
|
i0.ɵɵtext(20, "Cache Misses");
|
|
1636
1634
|
i0.ɵɵelementEnd()();
|
|
1637
|
-
i0.ɵɵelementStart(21, "div",
|
|
1635
|
+
i0.ɵɵelementStart(21, "div", 146)(22, "div", 147);
|
|
1638
1636
|
i0.ɵɵtext(23);
|
|
1639
1637
|
i0.ɵɵpipe(24, "number");
|
|
1640
1638
|
i0.ɵɵelementEnd();
|
|
1641
|
-
i0.ɵɵelementStart(25, "div",
|
|
1639
|
+
i0.ɵɵelementStart(25, "div", 148);
|
|
1642
1640
|
i0.ɵɵtext(26, "Hit Rate");
|
|
1643
1641
|
i0.ɵɵelementEnd()()();
|
|
1644
|
-
i0.ɵɵelementStart(27, "div",
|
|
1642
|
+
i0.ɵɵelementStart(27, "div", 256)(28, "h4");
|
|
1645
1643
|
i0.ɵɵtext(29, "By Type");
|
|
1646
1644
|
i0.ɵɵelementEnd();
|
|
1647
|
-
i0.ɵɵelementStart(30, "div",
|
|
1648
|
-
i0.ɵɵlistener("click", function
|
|
1649
|
-
i0.ɵɵelementStart(32, "span",
|
|
1650
|
-
i0.ɵɵelement(33, "i",
|
|
1645
|
+
i0.ɵɵelementStart(30, "div", 257)(31, "div", 258);
|
|
1646
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Template_div_click_31_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("dataset")); });
|
|
1647
|
+
i0.ɵɵelementStart(32, "span", 259);
|
|
1648
|
+
i0.ɵɵelement(33, "i", 68);
|
|
1651
1649
|
i0.ɵɵelementEnd();
|
|
1652
|
-
i0.ɵɵelementStart(34, "span",
|
|
1650
|
+
i0.ɵɵelementStart(34, "span", 260);
|
|
1653
1651
|
i0.ɵɵtext(35, "Datasets");
|
|
1654
1652
|
i0.ɵɵelementEnd();
|
|
1655
|
-
i0.ɵɵelementStart(36, "span",
|
|
1653
|
+
i0.ɵɵelementStart(36, "span", 261);
|
|
1656
1654
|
i0.ɵɵtext(37);
|
|
1657
1655
|
i0.ɵɵelementEnd();
|
|
1658
|
-
i0.ɵɵelementStart(38, "span",
|
|
1656
|
+
i0.ɵɵelementStart(38, "span", 262);
|
|
1659
1657
|
i0.ɵɵtext(39);
|
|
1660
1658
|
i0.ɵɵelementEnd()();
|
|
1661
|
-
i0.ɵɵelementStart(40, "div",
|
|
1662
|
-
i0.ɵɵlistener("click", function
|
|
1663
|
-
i0.ɵɵelementStart(41, "span",
|
|
1664
|
-
i0.ɵɵelement(42, "i",
|
|
1659
|
+
i0.ɵɵelementStart(40, "div", 258);
|
|
1660
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Template_div_click_40_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("runview")); });
|
|
1661
|
+
i0.ɵɵelementStart(41, "span", 259);
|
|
1662
|
+
i0.ɵɵelement(42, "i", 263);
|
|
1665
1663
|
i0.ɵɵelementEnd();
|
|
1666
|
-
i0.ɵɵelementStart(43, "span",
|
|
1664
|
+
i0.ɵɵelementStart(43, "span", 260);
|
|
1667
1665
|
i0.ɵɵtext(44, "RunViews");
|
|
1668
1666
|
i0.ɵɵelementEnd();
|
|
1669
|
-
i0.ɵɵelementStart(45, "span",
|
|
1667
|
+
i0.ɵɵelementStart(45, "span", 261);
|
|
1670
1668
|
i0.ɵɵtext(46);
|
|
1671
1669
|
i0.ɵɵelementEnd();
|
|
1672
|
-
i0.ɵɵelementStart(47, "span",
|
|
1670
|
+
i0.ɵɵelementStart(47, "span", 262);
|
|
1673
1671
|
i0.ɵɵtext(48);
|
|
1674
1672
|
i0.ɵɵelementEnd()();
|
|
1675
|
-
i0.ɵɵelementStart(49, "div",
|
|
1676
|
-
i0.ɵɵlistener("click", function
|
|
1677
|
-
i0.ɵɵelementStart(50, "span",
|
|
1678
|
-
i0.ɵɵelement(51, "i",
|
|
1673
|
+
i0.ɵɵelementStart(49, "div", 258);
|
|
1674
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Template_div_click_49_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setCacheTypeFilter("runquery")); });
|
|
1675
|
+
i0.ɵɵelementStart(50, "span", 259);
|
|
1676
|
+
i0.ɵɵelement(51, "i", 264);
|
|
1679
1677
|
i0.ɵɵelementEnd();
|
|
1680
|
-
i0.ɵɵelementStart(52, "span",
|
|
1678
|
+
i0.ɵɵelementStart(52, "span", 260);
|
|
1681
1679
|
i0.ɵɵtext(53, "RunQueries");
|
|
1682
1680
|
i0.ɵɵelementEnd();
|
|
1683
|
-
i0.ɵɵelementStart(54, "span",
|
|
1681
|
+
i0.ɵɵelementStart(54, "span", 261);
|
|
1684
1682
|
i0.ɵɵtext(55);
|
|
1685
1683
|
i0.ɵɵelementEnd();
|
|
1686
|
-
i0.ɵɵelementStart(56, "span",
|
|
1684
|
+
i0.ɵɵelementStart(56, "span", 262);
|
|
1687
1685
|
i0.ɵɵtext(57);
|
|
1688
1686
|
i0.ɵɵelementEnd()()()();
|
|
1689
|
-
i0.ɵɵconditionalCreate(58,
|
|
1687
|
+
i0.ɵɵconditionalCreate(58, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58_Template, 34, 9, "div", 265)(59, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_59_Template, 6, 0, "div", 55);
|
|
1690
1688
|
} if (rf & 2) {
|
|
1691
1689
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
1692
1690
|
i0.ɵɵadvance(3);
|
|
@@ -1714,19 +1712,19 @@ function SystemDiagnosticsComponent_Conditional_53_Conditional_11_Template(rf, c
|
|
|
1714
1712
|
i0.ɵɵadvance();
|
|
1715
1713
|
i0.ɵɵconditional(ctx_r0.filteredCacheEntries.length > 0 ? 58 : ctx_r0.cacheStats && ctx_r0.cacheStats.totalEntries === 0 ? 59 : -1);
|
|
1716
1714
|
} }
|
|
1717
|
-
function
|
|
1715
|
+
function SystemDiagnosticsComponent_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
1718
1716
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
1719
|
-
i0.ɵɵelementStart(0, "div",
|
|
1720
|
-
i0.ɵɵelement(3, "i",
|
|
1717
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 50)(2, "h3");
|
|
1718
|
+
i0.ɵɵelement(3, "i", 26);
|
|
1721
1719
|
i0.ɵɵtext(4, " Local Cache ");
|
|
1722
1720
|
i0.ɵɵelementEnd();
|
|
1723
|
-
i0.ɵɵelementStart(5, "div",
|
|
1724
|
-
i0.ɵɵlistener("click", function
|
|
1725
|
-
i0.ɵɵelement(7, "i",
|
|
1721
|
+
i0.ɵɵelementStart(5, "div", 51)(6, "button", 52);
|
|
1722
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_48_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.clearAllCache()); });
|
|
1723
|
+
i0.ɵɵelement(7, "i", 108);
|
|
1726
1724
|
i0.ɵɵtext(8, " Clear All ");
|
|
1727
1725
|
i0.ɵɵelementEnd()()();
|
|
1728
|
-
i0.ɵɵelementStart(9, "div",
|
|
1729
|
-
i0.ɵɵconditionalCreate(10,
|
|
1726
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
1727
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_48_Conditional_10_Template, 6, 0, "div", 105)(11, SystemDiagnosticsComponent_Conditional_48_Conditional_11_Template, 60, 15);
|
|
1730
1728
|
i0.ɵɵelementEnd()();
|
|
1731
1729
|
} if (rf & 2) {
|
|
1732
1730
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -1735,11 +1733,11 @@ function SystemDiagnosticsComponent_Conditional_53_Template(rf, ctx) { if (rf &
|
|
|
1735
1733
|
i0.ɵɵadvance(4);
|
|
1736
1734
|
i0.ɵɵconditional(!ctx_r0.cacheInitialized ? 10 : 11);
|
|
1737
1735
|
} }
|
|
1738
|
-
function
|
|
1739
|
-
i0.ɵɵelementStart(0, "div",
|
|
1736
|
+
function SystemDiagnosticsComponent_Conditional_57_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
1737
|
+
i0.ɵɵelementStart(0, "div", 285)(1, "span", 286);
|
|
1740
1738
|
i0.ɵɵtext(2, "Entity:");
|
|
1741
1739
|
i0.ɵɵelementEnd();
|
|
1742
|
-
i0.ɵɵelementStart(3, "span",
|
|
1740
|
+
i0.ɵɵelementStart(3, "span", 294);
|
|
1743
1741
|
i0.ɵɵtext(4);
|
|
1744
1742
|
i0.ɵɵelementEnd()();
|
|
1745
1743
|
} if (rf & 2) {
|
|
@@ -1747,11 +1745,11 @@ function SystemDiagnosticsComponent_Conditional_62_Conditional_38_Template(rf, c
|
|
|
1747
1745
|
i0.ɵɵadvance(4);
|
|
1748
1746
|
i0.ɵɵtextInterpolate(ctx_r0.eventDetailPanel.event.entityName);
|
|
1749
1747
|
} }
|
|
1750
|
-
function
|
|
1751
|
-
i0.ɵɵelementStart(0, "div",
|
|
1748
|
+
function SystemDiagnosticsComponent_Conditional_57_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
1749
|
+
i0.ɵɵelementStart(0, "div", 285)(1, "span", 286);
|
|
1752
1750
|
i0.ɵɵtext(2, "Filter:");
|
|
1753
1751
|
i0.ɵɵelementEnd();
|
|
1754
|
-
i0.ɵɵelementStart(3, "code",
|
|
1752
|
+
i0.ɵɵelementStart(3, "code", 295);
|
|
1755
1753
|
i0.ɵɵtext(4);
|
|
1756
1754
|
i0.ɵɵelementEnd()();
|
|
1757
1755
|
} if (rf & 2) {
|
|
@@ -1759,11 +1757,11 @@ function SystemDiagnosticsComponent_Conditional_62_Conditional_39_Template(rf, c
|
|
|
1759
1757
|
i0.ɵɵadvance(4);
|
|
1760
1758
|
i0.ɵɵtextInterpolate(ctx_r0.eventDetailPanel.event.filter);
|
|
1761
1759
|
} }
|
|
1762
|
-
function
|
|
1763
|
-
i0.ɵɵelementStart(0, "div",
|
|
1760
|
+
function SystemDiagnosticsComponent_Conditional_57_For_46_Template(rf, ctx) { if (rf & 1) {
|
|
1761
|
+
i0.ɵɵelementStart(0, "div", 290)(1, "span", 296);
|
|
1764
1762
|
i0.ɵɵtext(2);
|
|
1765
1763
|
i0.ɵɵelementEnd();
|
|
1766
|
-
i0.ɵɵelementStart(3, "span",
|
|
1764
|
+
i0.ɵɵelementStart(3, "span", 297);
|
|
1767
1765
|
i0.ɵɵtext(4);
|
|
1768
1766
|
i0.ɵɵelementEnd()();
|
|
1769
1767
|
} if (rf & 2) {
|
|
@@ -1773,9 +1771,9 @@ function SystemDiagnosticsComponent_Conditional_62_For_46_Template(rf, ctx) { if
|
|
|
1773
1771
|
i0.ɵɵadvance(2);
|
|
1774
1772
|
i0.ɵɵtextInterpolate(param_r41.value);
|
|
1775
1773
|
} }
|
|
1776
|
-
function
|
|
1777
|
-
i0.ɵɵelementStart(0, "div",
|
|
1778
|
-
i0.ɵɵelement(1, "i",
|
|
1774
|
+
function SystemDiagnosticsComponent_Conditional_57_Conditional_47_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1775
|
+
i0.ɵɵelementStart(0, "div", 301);
|
|
1776
|
+
i0.ɵɵelement(1, "i", 112);
|
|
1779
1777
|
i0.ɵɵtext(2);
|
|
1780
1778
|
i0.ɵɵelementEnd();
|
|
1781
1779
|
} if (rf & 2) {
|
|
@@ -1783,33 +1781,33 @@ function SystemDiagnosticsComponent_Conditional_62_Conditional_47_Conditional_23
|
|
|
1783
1781
|
i0.ɵɵadvance(2);
|
|
1784
1782
|
i0.ɵɵtextInterpolate1(" This pattern has been called ", ctx_r0.eventDetailPanel.relatedPattern.count, " times. Consider caching or batching. ");
|
|
1785
1783
|
} }
|
|
1786
|
-
function
|
|
1787
|
-
i0.ɵɵelementStart(0, "div",
|
|
1788
|
-
i0.ɵɵelement(2, "i",
|
|
1784
|
+
function SystemDiagnosticsComponent_Conditional_57_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
1785
|
+
i0.ɵɵelementStart(0, "div", 242)(1, "h4");
|
|
1786
|
+
i0.ɵɵelement(2, "i", 103);
|
|
1789
1787
|
i0.ɵɵtext(3, " Related Pattern");
|
|
1790
1788
|
i0.ɵɵelementEnd();
|
|
1791
|
-
i0.ɵɵelementStart(4, "div",
|
|
1789
|
+
i0.ɵɵelementStart(4, "div", 298)(5, "div", 299)(6, "span", 300);
|
|
1792
1790
|
i0.ɵɵtext(7);
|
|
1793
1791
|
i0.ɵɵelementEnd();
|
|
1794
|
-
i0.ɵɵelementStart(8, "span",
|
|
1792
|
+
i0.ɵɵelementStart(8, "span", 66);
|
|
1795
1793
|
i0.ɵɵtext(9, "Total Calls");
|
|
1796
1794
|
i0.ɵɵelementEnd()();
|
|
1797
|
-
i0.ɵɵelementStart(10, "div",
|
|
1795
|
+
i0.ɵɵelementStart(10, "div", 299)(11, "span", 300);
|
|
1798
1796
|
i0.ɵɵtext(12);
|
|
1799
1797
|
i0.ɵɵpipe(13, "number");
|
|
1800
1798
|
i0.ɵɵelementEnd();
|
|
1801
|
-
i0.ɵɵelementStart(14, "span",
|
|
1799
|
+
i0.ɵɵelementStart(14, "span", 66);
|
|
1802
1800
|
i0.ɵɵtext(15, "Avg Duration");
|
|
1803
1801
|
i0.ɵɵelementEnd()();
|
|
1804
|
-
i0.ɵɵelementStart(16, "div",
|
|
1802
|
+
i0.ɵɵelementStart(16, "div", 299)(17, "span", 300);
|
|
1805
1803
|
i0.ɵɵtext(18);
|
|
1806
1804
|
i0.ɵɵpipe(19, "number");
|
|
1807
1805
|
i0.ɵɵpipe(20, "number");
|
|
1808
1806
|
i0.ɵɵelementEnd();
|
|
1809
|
-
i0.ɵɵelementStart(21, "span",
|
|
1807
|
+
i0.ɵɵelementStart(21, "span", 66);
|
|
1810
1808
|
i0.ɵɵtext(22, "Range");
|
|
1811
1809
|
i0.ɵɵelementEnd()()();
|
|
1812
|
-
i0.ɵɵconditionalCreate(23,
|
|
1810
|
+
i0.ɵɵconditionalCreate(23, SystemDiagnosticsComponent_Conditional_57_Conditional_47_Conditional_23_Template, 3, 1, "div", 301);
|
|
1813
1811
|
i0.ɵɵelementEnd();
|
|
1814
1812
|
} if (rf & 2) {
|
|
1815
1813
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -1822,75 +1820,75 @@ function SystemDiagnosticsComponent_Conditional_62_Conditional_47_Template(rf, c
|
|
|
1822
1820
|
i0.ɵɵadvance(5);
|
|
1823
1821
|
i0.ɵɵconditional(ctx_r0.eventDetailPanel.relatedPattern.count >= 2 ? 23 : -1);
|
|
1824
1822
|
} }
|
|
1825
|
-
function
|
|
1823
|
+
function SystemDiagnosticsComponent_Conditional_57_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
1826
1824
|
const _r42 = i0.ɵɵgetCurrentView();
|
|
1827
|
-
i0.ɵɵelementStart(0, "button",
|
|
1828
|
-
i0.ɵɵlistener("click", function
|
|
1829
|
-
i0.ɵɵelement(1, "i",
|
|
1825
|
+
i0.ɵɵelementStart(0, "button", 292);
|
|
1826
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_57_Conditional_52_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.filterByEntity(ctx_r0.eventDetailPanel.event.entityName)); });
|
|
1827
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1830
1828
|
i0.ɵɵtext(2, " Filter by Entity ");
|
|
1831
1829
|
i0.ɵɵelementEnd();
|
|
1832
1830
|
} }
|
|
1833
|
-
function
|
|
1831
|
+
function SystemDiagnosticsComponent_Conditional_57_Template(rf, ctx) { if (rf & 1) {
|
|
1834
1832
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
1835
|
-
i0.ɵɵelementStart(0, "div",
|
|
1836
|
-
i0.ɵɵlistener("click", function
|
|
1833
|
+
i0.ɵɵelementStart(0, "div", 275);
|
|
1834
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_57_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeEventDetailPanel()); });
|
|
1837
1835
|
i0.ɵɵelementEnd();
|
|
1838
|
-
i0.ɵɵelementStart(1, "div",
|
|
1836
|
+
i0.ɵɵelementStart(1, "div", 276)(2, "div", 50)(3, "div", 277)(4, "span", 220);
|
|
1839
1837
|
i0.ɵɵtext(5);
|
|
1840
1838
|
i0.ɵɵelementEnd();
|
|
1841
1839
|
i0.ɵɵelementStart(6, "h3");
|
|
1842
1840
|
i0.ɵɵtext(7, "Event Details");
|
|
1843
1841
|
i0.ɵɵelementEnd()();
|
|
1844
|
-
i0.ɵɵelementStart(8, "button",
|
|
1845
|
-
i0.ɵɵlistener("click", function
|
|
1846
|
-
i0.ɵɵelement(9, "i",
|
|
1842
|
+
i0.ɵɵelementStart(8, "button", 278);
|
|
1843
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_57_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r40); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeEventDetailPanel()); });
|
|
1844
|
+
i0.ɵɵelement(9, "i", 114);
|
|
1847
1845
|
i0.ɵɵelementEnd()();
|
|
1848
|
-
i0.ɵɵelementStart(10, "div",
|
|
1846
|
+
i0.ɵɵelementStart(10, "div", 279)(11, "div", 280)(12, "div", 281)(13, "div", 282);
|
|
1849
1847
|
i0.ɵɵtext(14);
|
|
1850
1848
|
i0.ɵɵpipe(15, "number");
|
|
1851
1849
|
i0.ɵɵelementEnd();
|
|
1852
|
-
i0.ɵɵelementStart(16, "div",
|
|
1850
|
+
i0.ɵɵelementStart(16, "div", 283);
|
|
1853
1851
|
i0.ɵɵtext(17, "Duration");
|
|
1854
1852
|
i0.ɵɵelementEnd()();
|
|
1855
|
-
i0.ɵɵelementStart(18, "div",
|
|
1853
|
+
i0.ɵɵelementStart(18, "div", 281)(19, "div", 282);
|
|
1856
1854
|
i0.ɵɵtext(20);
|
|
1857
1855
|
i0.ɵɵelementEnd();
|
|
1858
|
-
i0.ɵɵelementStart(21, "div",
|
|
1856
|
+
i0.ɵɵelementStart(21, "div", 283);
|
|
1859
1857
|
i0.ɵɵtext(22, "Time");
|
|
1860
1858
|
i0.ɵɵelementEnd()();
|
|
1861
|
-
i0.ɵɵelementStart(23, "div",
|
|
1859
|
+
i0.ɵɵelementStart(23, "div", 281)(24, "div", 282);
|
|
1862
1860
|
i0.ɵɵtext(25);
|
|
1863
1861
|
i0.ɵɵelementEnd();
|
|
1864
|
-
i0.ɵɵelementStart(26, "div",
|
|
1862
|
+
i0.ɵɵelementStart(26, "div", 283);
|
|
1865
1863
|
i0.ɵɵtext(27, "Relative");
|
|
1866
1864
|
i0.ɵɵelementEnd()()();
|
|
1867
|
-
i0.ɵɵelementStart(28, "div",
|
|
1868
|
-
i0.ɵɵelement(30, "i",
|
|
1865
|
+
i0.ɵɵelementStart(28, "div", 242)(29, "h4");
|
|
1866
|
+
i0.ɵɵelement(30, "i", 264);
|
|
1869
1867
|
i0.ɵɵtext(31, " Operation");
|
|
1870
1868
|
i0.ɵɵelementEnd();
|
|
1871
|
-
i0.ɵɵelementStart(32, "div",
|
|
1869
|
+
i0.ɵɵelementStart(32, "div", 284)(33, "div", 285)(34, "span", 286);
|
|
1872
1870
|
i0.ɵɵtext(35, "Operation:");
|
|
1873
1871
|
i0.ɵɵelementEnd();
|
|
1874
|
-
i0.ɵɵelementStart(36, "span",
|
|
1872
|
+
i0.ɵɵelementStart(36, "span", 287);
|
|
1875
1873
|
i0.ɵɵtext(37);
|
|
1876
1874
|
i0.ɵɵelementEnd()();
|
|
1877
|
-
i0.ɵɵconditionalCreate(38,
|
|
1878
|
-
i0.ɵɵconditionalCreate(39,
|
|
1875
|
+
i0.ɵɵconditionalCreate(38, SystemDiagnosticsComponent_Conditional_57_Conditional_38_Template, 5, 1, "div", 285);
|
|
1876
|
+
i0.ɵɵconditionalCreate(39, SystemDiagnosticsComponent_Conditional_57_Conditional_39_Template, 5, 1, "div", 285);
|
|
1879
1877
|
i0.ɵɵelementEnd()();
|
|
1880
|
-
i0.ɵɵelementStart(40, "div",
|
|
1881
|
-
i0.ɵɵelement(42, "i",
|
|
1878
|
+
i0.ɵɵelementStart(40, "div", 242)(41, "h4");
|
|
1879
|
+
i0.ɵɵelement(42, "i", 288);
|
|
1882
1880
|
i0.ɵɵtext(43, " Parameters");
|
|
1883
1881
|
i0.ɵɵelementEnd();
|
|
1884
|
-
i0.ɵɵelementStart(44, "div",
|
|
1885
|
-
i0.ɵɵrepeaterCreate(45,
|
|
1882
|
+
i0.ɵɵelementStart(44, "div", 289);
|
|
1883
|
+
i0.ɵɵrepeaterCreate(45, SystemDiagnosticsComponent_Conditional_57_For_46_Template, 5, 2, "div", 290, _forTrack6);
|
|
1886
1884
|
i0.ɵɵelementEnd()();
|
|
1887
|
-
i0.ɵɵconditionalCreate(47,
|
|
1888
|
-
i0.ɵɵelementStart(48, "div",
|
|
1889
|
-
i0.ɵɵlistener("click", function
|
|
1890
|
-
i0.ɵɵelement(50, "i",
|
|
1885
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_57_Conditional_47_Template, 24, 14, "div", 242);
|
|
1886
|
+
i0.ɵɵelementStart(48, "div", 291)(49, "button", 292);
|
|
1887
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_57_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r40); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyEventToClipboard(ctx_r0.eventDetailPanel.event)); });
|
|
1888
|
+
i0.ɵɵelement(50, "i", 22);
|
|
1891
1889
|
i0.ɵɵtext(51, " Copy JSON ");
|
|
1892
1890
|
i0.ɵɵelementEnd();
|
|
1893
|
-
i0.ɵɵconditionalCreate(52,
|
|
1891
|
+
i0.ɵɵconditionalCreate(52, SystemDiagnosticsComponent_Conditional_57_Conditional_52_Template, 3, 0, "button", 293);
|
|
1894
1892
|
i0.ɵɵelementEnd()()();
|
|
1895
1893
|
} if (rf & 2) {
|
|
1896
1894
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -1921,11 +1919,11 @@ function SystemDiagnosticsComponent_Conditional_62_Template(rf, ctx) { if (rf &
|
|
|
1921
1919
|
i0.ɵɵadvance(5);
|
|
1922
1920
|
i0.ɵɵconditional(ctx_r0.eventDetailPanel.event.entityName ? 52 : -1);
|
|
1923
1921
|
} }
|
|
1924
|
-
function
|
|
1925
|
-
i0.ɵɵelementStart(0, "div",
|
|
1922
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
1923
|
+
i0.ɵɵelementStart(0, "div", 307)(1, "span", 148);
|
|
1926
1924
|
i0.ɵɵtext(2, "Last Loaded");
|
|
1927
1925
|
i0.ɵɵelementEnd();
|
|
1928
|
-
i0.ɵɵelementStart(3, "span",
|
|
1926
|
+
i0.ɵɵelementStart(3, "span", 147);
|
|
1929
1927
|
i0.ɵɵtext(4);
|
|
1930
1928
|
i0.ɵɵelementEnd()();
|
|
1931
1929
|
} if (rf & 2) {
|
|
@@ -1933,18 +1931,18 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_30_Template(rf, c
|
|
|
1933
1931
|
i0.ɵɵadvance(4);
|
|
1934
1932
|
i0.ɵɵtextInterpolate(ctx_r0.formatTime(ctx_r0.engineDetailPanel.engine.lastLoadedAt));
|
|
1935
1933
|
} }
|
|
1936
|
-
function
|
|
1937
|
-
i0.ɵɵelementStart(0, "div",
|
|
1938
|
-
i0.ɵɵelement(1, "i",
|
|
1934
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
1935
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
1936
|
+
i0.ɵɵelement(1, "i", 57);
|
|
1939
1937
|
i0.ɵɵelementStart(2, "p");
|
|
1940
1938
|
i0.ɵɵtext(3, "No config items found");
|
|
1941
1939
|
i0.ɵɵelementEnd()();
|
|
1942
1940
|
} }
|
|
1943
|
-
function
|
|
1944
|
-
i0.ɵɵelementStart(0, "div",
|
|
1941
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1942
|
+
i0.ɵɵelementStart(0, "div", 321)(1, "span", 243);
|
|
1945
1943
|
i0.ɵɵtext(2, "Filter:");
|
|
1946
1944
|
i0.ɵɵelementEnd();
|
|
1947
|
-
i0.ɵɵelementStart(3, "code",
|
|
1945
|
+
i0.ɵɵelementStart(3, "code", 322);
|
|
1948
1946
|
i0.ɵɵtext(4);
|
|
1949
1947
|
i0.ɵɵelementEnd()();
|
|
1950
1948
|
} if (rf & 2) {
|
|
@@ -1952,11 +1950,11 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1952
1950
|
i0.ɵɵadvance(4);
|
|
1953
1951
|
i0.ɵɵtextInterpolate(item_r45.filter);
|
|
1954
1952
|
} }
|
|
1955
|
-
function
|
|
1956
|
-
i0.ɵɵelementStart(0, "div",
|
|
1953
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1954
|
+
i0.ɵɵelementStart(0, "div", 321)(1, "span", 243);
|
|
1957
1955
|
i0.ɵɵtext(2, "Order By:");
|
|
1958
1956
|
i0.ɵɵelementEnd();
|
|
1959
|
-
i0.ɵɵelementStart(3, "code",
|
|
1957
|
+
i0.ɵɵelementStart(3, "code", 322);
|
|
1960
1958
|
i0.ɵɵtext(4);
|
|
1961
1959
|
i0.ɵɵelementEnd()();
|
|
1962
1960
|
} if (rf & 2) {
|
|
@@ -1964,11 +1962,11 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1964
1962
|
i0.ɵɵadvance(4);
|
|
1965
1963
|
i0.ɵɵtextInterpolate(item_r45.orderBy);
|
|
1966
1964
|
} }
|
|
1967
|
-
function
|
|
1968
|
-
i0.ɵɵelementStart(0, "div",
|
|
1965
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1966
|
+
i0.ɵɵelementStart(0, "div", 323)(1, "span", 243);
|
|
1969
1967
|
i0.ɵɵtext(2, "Error:");
|
|
1970
1968
|
i0.ɵɵelementEnd();
|
|
1971
|
-
i0.ɵɵelementStart(3, "span",
|
|
1969
|
+
i0.ɵɵelementStart(3, "span", 325);
|
|
1972
1970
|
i0.ɵɵtext(4);
|
|
1973
1971
|
i0.ɵɵelementEnd()();
|
|
1974
1972
|
} if (rf & 2) {
|
|
@@ -1976,28 +1974,28 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
1976
1974
|
i0.ɵɵadvance(4);
|
|
1977
1975
|
i0.ɵɵtextInterpolate(item_r45.errorMessage);
|
|
1978
1976
|
} }
|
|
1979
|
-
function
|
|
1980
|
-
i0.ɵɵelement(0, "i",
|
|
1977
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1978
|
+
i0.ɵɵelement(0, "i", 334);
|
|
1981
1979
|
} }
|
|
1982
|
-
function
|
|
1983
|
-
i0.ɵɵelement(0, "i",
|
|
1980
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1981
|
+
i0.ɵɵelement(0, "i", 335);
|
|
1984
1982
|
} }
|
|
1985
|
-
function
|
|
1986
|
-
i0.ɵɵelement(0, "i",
|
|
1983
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1984
|
+
i0.ɵɵelement(0, "i", 334);
|
|
1987
1985
|
} }
|
|
1988
|
-
function
|
|
1989
|
-
i0.ɵɵelement(0, "i",
|
|
1986
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1987
|
+
i0.ɵɵelement(0, "i", 34);
|
|
1990
1988
|
} }
|
|
1991
|
-
function
|
|
1989
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1992
1990
|
const _r46 = i0.ɵɵgetCurrentView();
|
|
1993
|
-
i0.ɵɵelementStart(0, "button",
|
|
1994
|
-
i0.ɵɵlistener("click", function
|
|
1995
|
-
i0.ɵɵconditionalCreate(1,
|
|
1991
|
+
i0.ɵɵelementStart(0, "button", 333);
|
|
1992
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.loadMoreData(item_r45)); });
|
|
1993
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template, 1, 0, "i", 334)(2, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template, 1, 0, "i", 335);
|
|
1996
1994
|
i0.ɵɵtext(3, " Load More ");
|
|
1997
1995
|
i0.ɵɵelementEnd();
|
|
1998
|
-
i0.ɵɵelementStart(4, "button",
|
|
1999
|
-
i0.ɵɵlistener("click", function
|
|
2000
|
-
i0.ɵɵconditionalCreate(5,
|
|
1996
|
+
i0.ɵɵelementStart(4, "button", 336);
|
|
1997
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.loadAllData(item_r45)); });
|
|
1998
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template, 1, 0, "i", 334)(6, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template, 1, 0, "i", 34);
|
|
2001
1999
|
i0.ɵɵtext(7, " Load All ");
|
|
2002
2000
|
i0.ɵɵelementEnd();
|
|
2003
2001
|
} if (rf & 2) {
|
|
@@ -2010,13 +2008,13 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2010
2008
|
i0.ɵɵadvance();
|
|
2011
2009
|
i0.ɵɵconditional(item_r45.isLoadingMore ? 5 : 6);
|
|
2012
2010
|
} }
|
|
2013
|
-
function
|
|
2014
|
-
i0.ɵɵelementStart(0, "span",
|
|
2015
|
-
i0.ɵɵelement(1, "i",
|
|
2011
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
2012
|
+
i0.ɵɵelementStart(0, "span", 329);
|
|
2013
|
+
i0.ɵɵelement(1, "i", 337);
|
|
2016
2014
|
i0.ɵɵtext(2, " All Loaded ");
|
|
2017
2015
|
i0.ɵɵelementEnd();
|
|
2018
2016
|
} }
|
|
2019
|
-
function
|
|
2017
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
2020
2018
|
i0.ɵɵelementStart(0, "th");
|
|
2021
2019
|
i0.ɵɵtext(1);
|
|
2022
2020
|
i0.ɵɵelementEnd();
|
|
@@ -2025,15 +2023,15 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2025
2023
|
i0.ɵɵadvance();
|
|
2026
2024
|
i0.ɵɵtextInterpolate(col_r47);
|
|
2027
2025
|
} }
|
|
2028
|
-
function
|
|
2026
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
2029
2027
|
const _r48 = i0.ɵɵgetCurrentView();
|
|
2030
|
-
i0.ɵɵelementStart(0, "button",
|
|
2031
|
-
i0.ɵɵlistener("click", function
|
|
2032
|
-
i0.ɵɵelement(1, "i",
|
|
2028
|
+
i0.ɵɵelementStart(0, "button", 340);
|
|
2029
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord(item_r45.entityName, row_r49)); });
|
|
2030
|
+
i0.ɵɵelement(1, "i", 341);
|
|
2033
2031
|
i0.ɵɵelementEnd();
|
|
2034
2032
|
} }
|
|
2035
|
-
function
|
|
2036
|
-
i0.ɵɵelementStart(0, "td",
|
|
2033
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
2034
|
+
i0.ɵɵelementStart(0, "td", 339);
|
|
2037
2035
|
i0.ɵɵtext(1);
|
|
2038
2036
|
i0.ɵɵelementEnd();
|
|
2039
2037
|
} if (rf & 2) {
|
|
@@ -2044,11 +2042,11 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2044
2042
|
i0.ɵɵadvance();
|
|
2045
2043
|
i0.ɵɵtextInterpolate(ctx_r0.truncateString(ctx_r0.getSampleDataValue(row_r49, col_r50), 30));
|
|
2046
2044
|
} }
|
|
2047
|
-
function
|
|
2048
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
2049
|
-
i0.ɵɵconditionalCreate(2,
|
|
2045
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
2046
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 332);
|
|
2047
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template, 2, 0, "button", 338);
|
|
2050
2048
|
i0.ɵɵelementEnd();
|
|
2051
|
-
i0.ɵɵrepeaterCreate(3,
|
|
2049
|
+
i0.ɵɵrepeaterCreate(3, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template, 2, 2, "td", 339, i0.ɵɵrepeaterTrackByIdentity);
|
|
2052
2050
|
i0.ɵɵelementEnd();
|
|
2053
2051
|
} if (rf & 2) {
|
|
2054
2052
|
const row_r49 = ctx.$implicit;
|
|
@@ -2059,20 +2057,20 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2059
2057
|
i0.ɵɵadvance();
|
|
2060
2058
|
i0.ɵɵrepeater(ctx_r0.getSampleDataColumns(item_r45));
|
|
2061
2059
|
} }
|
|
2062
|
-
function
|
|
2063
|
-
i0.ɵɵelementStart(0, "div",
|
|
2060
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
2061
|
+
i0.ɵɵelementStart(0, "div", 324)(1, "div", 326)(2, "span", 327);
|
|
2064
2062
|
i0.ɵɵtext(3);
|
|
2065
2063
|
i0.ɵɵelementEnd();
|
|
2066
|
-
i0.ɵɵelementStart(4, "div",
|
|
2067
|
-
i0.ɵɵconditionalCreate(5,
|
|
2068
|
-
i0.ɵɵconditionalCreate(6,
|
|
2064
|
+
i0.ɵɵelementStart(4, "div", 328);
|
|
2065
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template, 8, 4);
|
|
2066
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template, 3, 0, "span", 329);
|
|
2069
2067
|
i0.ɵɵelementEnd()();
|
|
2070
|
-
i0.ɵɵelementStart(7, "div",
|
|
2071
|
-
i0.ɵɵelement(11, "th",
|
|
2072
|
-
i0.ɵɵrepeaterCreate(12,
|
|
2068
|
+
i0.ɵɵelementStart(7, "div", 330)(8, "table", 331)(9, "thead")(10, "tr");
|
|
2069
|
+
i0.ɵɵelement(11, "th", 332);
|
|
2070
|
+
i0.ɵɵrepeaterCreate(12, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
2073
2071
|
i0.ɵɵelementEnd()();
|
|
2074
2072
|
i0.ɵɵelementStart(14, "tbody");
|
|
2075
|
-
i0.ɵɵrepeaterCreate(15,
|
|
2073
|
+
i0.ɵɵrepeaterCreate(15, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template, 5, 1, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
2076
2074
|
i0.ɵɵelementEnd()()()();
|
|
2077
2075
|
} if (rf & 2) {
|
|
2078
2076
|
const item_r45 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -2088,17 +2086,17 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2088
2086
|
i0.ɵɵadvance(3);
|
|
2089
2087
|
i0.ɵɵrepeater(item_r45.displayedData);
|
|
2090
2088
|
} }
|
|
2091
|
-
function
|
|
2092
|
-
i0.ɵɵelementStart(0, "div",
|
|
2089
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
2090
|
+
i0.ɵɵelementStart(0, "div", 320)(1, "div", 321)(2, "span", 243);
|
|
2093
2091
|
i0.ɵɵtext(3, "Property:");
|
|
2094
2092
|
i0.ɵɵelementEnd();
|
|
2095
|
-
i0.ɵɵelementStart(4, "code",
|
|
2093
|
+
i0.ɵɵelementStart(4, "code", 322);
|
|
2096
2094
|
i0.ɵɵtext(5);
|
|
2097
2095
|
i0.ɵɵelementEnd()();
|
|
2098
|
-
i0.ɵɵconditionalCreate(6,
|
|
2099
|
-
i0.ɵɵconditionalCreate(7,
|
|
2100
|
-
i0.ɵɵconditionalCreate(8,
|
|
2101
|
-
i0.ɵɵconditionalCreate(9,
|
|
2096
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_6_Template, 5, 1, "div", 321);
|
|
2097
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_7_Template, 5, 1, "div", 321);
|
|
2098
|
+
i0.ɵɵconditionalCreate(8, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_8_Template, 5, 1, "div", 323);
|
|
2099
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Conditional_9_Template, 17, 4, "div", 324);
|
|
2102
2100
|
i0.ɵɵelementEnd();
|
|
2103
2101
|
} if (rf & 2) {
|
|
2104
2102
|
const item_r45 = i0.ɵɵnextContext().$implicit;
|
|
@@ -2113,27 +2111,27 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Conditio
|
|
|
2113
2111
|
i0.ɵɵadvance();
|
|
2114
2112
|
i0.ɵɵconditional(item_r45.displayedData.length > 0 ? 9 : -1);
|
|
2115
2113
|
} }
|
|
2116
|
-
function
|
|
2114
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
2117
2115
|
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",
|
|
2116
|
+
i0.ɵɵelementStart(0, "div", 312)(1, "div", 313);
|
|
2117
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Template_div_click_1_listener() { const item_r45 = i0.ɵɵrestoreView(_r44).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleConfigItemExpanded(item_r45)); });
|
|
2118
|
+
i0.ɵɵelementStart(2, "div", 314);
|
|
2119
|
+
i0.ɵɵelement(3, "i", 315);
|
|
2120
|
+
i0.ɵɵelementStart(4, "span", 316);
|
|
2123
2121
|
i0.ɵɵtext(5);
|
|
2124
2122
|
i0.ɵɵelementEnd();
|
|
2125
|
-
i0.ɵɵelementStart(6, "span",
|
|
2123
|
+
i0.ɵɵelementStart(6, "span", 317);
|
|
2126
2124
|
i0.ɵɵtext(7);
|
|
2127
2125
|
i0.ɵɵelementEnd()();
|
|
2128
|
-
i0.ɵɵelementStart(8, "div",
|
|
2126
|
+
i0.ɵɵelementStart(8, "div", 318)(9, "span", 319);
|
|
2129
2127
|
i0.ɵɵtext(10);
|
|
2130
2128
|
i0.ɵɵelementEnd();
|
|
2131
|
-
i0.ɵɵelementStart(11, "span",
|
|
2129
|
+
i0.ɵɵelementStart(11, "span", 319);
|
|
2132
2130
|
i0.ɵɵtext(12);
|
|
2133
2131
|
i0.ɵɵelementEnd();
|
|
2134
|
-
i0.ɵɵelement(13, "i",
|
|
2132
|
+
i0.ɵɵelement(13, "i", 233);
|
|
2135
2133
|
i0.ɵɵelementEnd()();
|
|
2136
|
-
i0.ɵɵconditionalCreate(14,
|
|
2134
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditional_14_Template, 10, 5, "div", 320);
|
|
2137
2135
|
i0.ɵɵelementEnd();
|
|
2138
2136
|
} if (rf & 2) {
|
|
2139
2137
|
const item_r45 = ctx.$implicit;
|
|
@@ -2156,59 +2154,59 @@ function SystemDiagnosticsComponent_Conditional_63_Conditional_36_For_2_Template
|
|
|
2156
2154
|
i0.ɵɵadvance();
|
|
2157
2155
|
i0.ɵɵconditional(item_r45.expanded ? 14 : -1);
|
|
2158
2156
|
} }
|
|
2159
|
-
function
|
|
2160
|
-
i0.ɵɵelementStart(0, "div",
|
|
2161
|
-
i0.ɵɵrepeaterCreate(1,
|
|
2157
|
+
function SystemDiagnosticsComponent_Conditional_58_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
2158
|
+
i0.ɵɵelementStart(0, "div", 310);
|
|
2159
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Template, 15, 22, "div", 311, _forTrack7);
|
|
2162
2160
|
i0.ɵɵelementEnd();
|
|
2163
2161
|
} if (rf & 2) {
|
|
2164
2162
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
2165
2163
|
i0.ɵɵadvance();
|
|
2166
2164
|
i0.ɵɵrepeater(ctx_r0.engineDetailPanel.configItems);
|
|
2167
2165
|
} }
|
|
2168
|
-
function
|
|
2166
|
+
function SystemDiagnosticsComponent_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
2169
2167
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
2170
|
-
i0.ɵɵelementStart(0, "div",
|
|
2171
|
-
i0.ɵɵlistener("click", function
|
|
2168
|
+
i0.ɵɵelementStart(0, "div", 302);
|
|
2169
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeEngineDetailPanel()); });
|
|
2172
2170
|
i0.ɵɵelementEnd();
|
|
2173
|
-
i0.ɵɵelementStart(1, "div",
|
|
2174
|
-
i0.ɵɵelement(4, "i",
|
|
2171
|
+
i0.ɵɵelementStart(1, "div", 303)(2, "div", 50)(3, "div", 277);
|
|
2172
|
+
i0.ɵɵelement(4, "i", 20);
|
|
2175
2173
|
i0.ɵɵelementStart(5, "h3");
|
|
2176
2174
|
i0.ɵɵtext(6);
|
|
2177
2175
|
i0.ɵɵelementEnd()();
|
|
2178
|
-
i0.ɵɵelementStart(7, "div",
|
|
2179
|
-
i0.ɵɵlistener("click", function
|
|
2180
|
-
i0.ɵɵelement(9, "i",
|
|
2176
|
+
i0.ɵɵelementStart(7, "div", 304)(8, "button", 305);
|
|
2177
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r43); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.refreshEngineInDetailPanel()); });
|
|
2178
|
+
i0.ɵɵelement(9, "i", 53);
|
|
2181
2179
|
i0.ɵɵelementEnd();
|
|
2182
|
-
i0.ɵɵelementStart(10, "button",
|
|
2183
|
-
i0.ɵɵlistener("click", function
|
|
2184
|
-
i0.ɵɵelement(11, "i",
|
|
2180
|
+
i0.ɵɵelementStart(10, "button", 278);
|
|
2181
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_58_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r43); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeEngineDetailPanel()); });
|
|
2182
|
+
i0.ɵɵelement(11, "i", 114);
|
|
2185
2183
|
i0.ɵɵelementEnd()()();
|
|
2186
|
-
i0.ɵɵelementStart(12, "div",
|
|
2184
|
+
i0.ɵɵelementStart(12, "div", 279)(13, "div", 306)(14, "div", 307)(15, "span", 148);
|
|
2187
2185
|
i0.ɵɵtext(16, "Status");
|
|
2188
2186
|
i0.ɵɵelementEnd();
|
|
2189
|
-
i0.ɵɵelementStart(17, "span",
|
|
2190
|
-
i0.ɵɵelement(18, "span",
|
|
2187
|
+
i0.ɵɵelementStart(17, "span", 147);
|
|
2188
|
+
i0.ɵɵelement(18, "span", 308);
|
|
2191
2189
|
i0.ɵɵtext(19);
|
|
2192
2190
|
i0.ɵɵelementEnd()();
|
|
2193
|
-
i0.ɵɵelementStart(20, "div",
|
|
2191
|
+
i0.ɵɵelementStart(20, "div", 307)(21, "span", 148);
|
|
2194
2192
|
i0.ɵɵtext(22, "Memory");
|
|
2195
2193
|
i0.ɵɵelementEnd();
|
|
2196
|
-
i0.ɵɵelementStart(23, "span",
|
|
2194
|
+
i0.ɵɵelementStart(23, "span", 147);
|
|
2197
2195
|
i0.ɵɵtext(24);
|
|
2198
2196
|
i0.ɵɵelementEnd()();
|
|
2199
|
-
i0.ɵɵelementStart(25, "div",
|
|
2197
|
+
i0.ɵɵelementStart(25, "div", 307)(26, "span", 148);
|
|
2200
2198
|
i0.ɵɵtext(27, "Items");
|
|
2201
2199
|
i0.ɵɵelementEnd();
|
|
2202
|
-
i0.ɵɵelementStart(28, "span",
|
|
2200
|
+
i0.ɵɵelementStart(28, "span", 147);
|
|
2203
2201
|
i0.ɵɵtext(29);
|
|
2204
2202
|
i0.ɵɵelementEnd()();
|
|
2205
|
-
i0.ɵɵconditionalCreate(30,
|
|
2203
|
+
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_58_Conditional_30_Template, 5, 1, "div", 307);
|
|
2206
2204
|
i0.ɵɵelementEnd();
|
|
2207
|
-
i0.ɵɵelementStart(31, "div",
|
|
2208
|
-
i0.ɵɵelement(33, "i",
|
|
2205
|
+
i0.ɵɵelementStart(31, "div", 309)(32, "h4");
|
|
2206
|
+
i0.ɵɵelement(33, "i", 26);
|
|
2209
2207
|
i0.ɵɵtext(34);
|
|
2210
2208
|
i0.ɵɵelementEnd();
|
|
2211
|
-
i0.ɵɵconditionalCreate(35,
|
|
2209
|
+
i0.ɵɵconditionalCreate(35, SystemDiagnosticsComponent_Conditional_58_Conditional_35_Template, 4, 0, "div", 188)(36, SystemDiagnosticsComponent_Conditional_58_Conditional_36_Template, 3, 0, "div", 310);
|
|
2212
2210
|
i0.ɵɵelementEnd()()();
|
|
2213
2211
|
} if (rf & 2) {
|
|
2214
2212
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -4642,104 +4640,96 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4642
4640
|
} if (rf & 2) {
|
|
4643
4641
|
let _t;
|
|
4644
4642
|
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) {
|
|
4643
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 59, vars: 35, consts: [["perfChart", ""], [1, "sd-container"], [1, "sticky-header"], ["role", "toolbar", "aria-label", "System diagnostics actions", 1, "action-buttons"], ["Icon", "fa-solid fa-sync-alt fa-spin", "Label", "Auto-refresh \u00B7 every 5s", "Variant", "info"], [1, "auto-refresh-toggle"], ["type", "checkbox", 3, "ngModelChange", "change", "ngModel"], ["Label", "Refresh Now", 3, "Clicked", "Loading", "ShowLabel"], [1, "scrollable-content"], [1, "system-diagnostics"], [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, "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
4644
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3);
|
|
4647
|
-
i0.ɵɵ
|
|
4648
|
-
i0.ɵɵelementStart(4, "
|
|
4649
|
-
i0.ɵɵ
|
|
4650
|
-
i0.ɵɵ
|
|
4651
|
-
i0.ɵɵelementStart(6, "div", 5)(7, "div", 6)(8, "label")(9, "input", 7);
|
|
4652
|
-
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Template_input_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.autoRefresh, $event) || (ctx.autoRefresh = $event); return $event; });
|
|
4653
|
-
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Template_input_change_9_listener() { return ctx.toggleAutoRefresh(); });
|
|
4654
|
-
i0.ɵɵelementEnd();
|
|
4655
|
-
i0.ɵɵtext(10, " Auto-refresh ");
|
|
4645
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_3_Template, 1, 0, "mj-stat-badge", 4);
|
|
4646
|
+
i0.ɵɵelementStart(4, "label", 5)(5, "input", 6);
|
|
4647
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Template_input_ngModelChange_5_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.autoRefresh, $event) || (ctx.autoRefresh = $event); return $event; });
|
|
4648
|
+
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Template_input_change_5_listener() { return ctx.toggleAutoRefresh(); });
|
|
4656
4649
|
i0.ɵɵelementEnd();
|
|
4657
|
-
i0.ɵɵ
|
|
4650
|
+
i0.ɵɵtext(6, " Auto-refresh ");
|
|
4658
4651
|
i0.ɵɵelementEnd();
|
|
4659
|
-
i0.ɵɵelementStart(
|
|
4660
|
-
i0.ɵɵlistener("
|
|
4661
|
-
i0.ɵɵelement(13, "i", 10);
|
|
4662
|
-
i0.ɵɵtext(14, " Refresh Now ");
|
|
4652
|
+
i0.ɵɵelementStart(7, "mj-refresh-button", 7);
|
|
4653
|
+
i0.ɵɵlistener("Clicked", function SystemDiagnosticsComponent_Template_mj_refresh_button_Clicked_7_listener() { return ctx.refreshData(); });
|
|
4663
4654
|
i0.ɵɵelementEnd()()();
|
|
4664
|
-
i0.ɵɵelementStart(
|
|
4665
|
-
i0.ɵɵlistener("click", function
|
|
4666
|
-
i0.ɵɵelement(
|
|
4655
|
+
i0.ɵɵelementStart(8, "div", 8)(9, "div", 9)(10, "div", 10)(11, "button", 11);
|
|
4656
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_11_listener() { return ctx.toggleKpiCards(); });
|
|
4657
|
+
i0.ɵɵelement(12, "i", 12);
|
|
4667
4658
|
i0.ɵɵelementEnd();
|
|
4668
|
-
i0.ɵɵconditionalCreate(
|
|
4659
|
+
i0.ɵɵconditionalCreate(13, SystemDiagnosticsComponent_Conditional_13_Template, 32, 9, "div", 13)(14, SystemDiagnosticsComponent_Conditional_14_Template, 21, 5, "div", 14);
|
|
4669
4660
|
i0.ɵɵelementEnd();
|
|
4670
|
-
i0.ɵɵelementStart(
|
|
4671
|
-
i0.ɵɵtext(
|
|
4661
|
+
i0.ɵɵelementStart(15, "div", 15)(16, "div", 16)(17, "div", 17)(18, "div", 18);
|
|
4662
|
+
i0.ɵɵtext(19, "Diagnostics");
|
|
4672
4663
|
i0.ɵɵelementEnd();
|
|
4673
|
-
i0.ɵɵelementStart(
|
|
4674
|
-
i0.ɵɵlistener("click", function
|
|
4675
|
-
i0.ɵɵelement(
|
|
4676
|
-
i0.ɵɵelementStart(
|
|
4677
|
-
i0.ɵɵtext(
|
|
4664
|
+
i0.ɵɵelementStart(20, "div", 19);
|
|
4665
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_20_listener() { return ctx.setActiveSection("engines"); });
|
|
4666
|
+
i0.ɵɵelement(21, "i", 20);
|
|
4667
|
+
i0.ɵɵelementStart(22, "span");
|
|
4668
|
+
i0.ɵɵtext(23, "Engine Registry");
|
|
4678
4669
|
i0.ɵɵelementEnd();
|
|
4679
|
-
i0.ɵɵelementStart(
|
|
4680
|
-
i0.ɵɵtext(
|
|
4670
|
+
i0.ɵɵelementStart(24, "span", 21);
|
|
4671
|
+
i0.ɵɵtext(25);
|
|
4681
4672
|
i0.ɵɵelementEnd()();
|
|
4682
|
-
i0.ɵɵelementStart(
|
|
4683
|
-
i0.ɵɵlistener("click", function
|
|
4684
|
-
i0.ɵɵelement(
|
|
4685
|
-
i0.ɵɵelementStart(
|
|
4686
|
-
i0.ɵɵtext(
|
|
4673
|
+
i0.ɵɵelementStart(26, "div", 19);
|
|
4674
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_26_listener() { return ctx.setActiveSection("redundant"); });
|
|
4675
|
+
i0.ɵɵelement(27, "i", 22);
|
|
4676
|
+
i0.ɵɵelementStart(28, "span");
|
|
4677
|
+
i0.ɵɵtext(29, "Redundant Loading");
|
|
4687
4678
|
i0.ɵɵelementEnd();
|
|
4688
|
-
i0.ɵɵconditionalCreate(
|
|
4679
|
+
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_30_Template, 2, 1, "span", 23)(31, SystemDiagnosticsComponent_Conditional_31_Template, 2, 0, "span", 24);
|
|
4689
4680
|
i0.ɵɵelementEnd();
|
|
4690
|
-
i0.ɵɵelementStart(
|
|
4691
|
-
i0.ɵɵlistener("click", function
|
|
4692
|
-
i0.ɵɵelement(
|
|
4693
|
-
i0.ɵɵelementStart(
|
|
4694
|
-
i0.ɵɵtext(
|
|
4681
|
+
i0.ɵɵelementStart(32, "div", 19);
|
|
4682
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_32_listener() { return ctx.setActiveSection("performance"); });
|
|
4683
|
+
i0.ɵɵelement(33, "i", 25);
|
|
4684
|
+
i0.ɵɵelementStart(34, "span");
|
|
4685
|
+
i0.ɵɵtext(35, "Performance");
|
|
4695
4686
|
i0.ɵɵelementEnd();
|
|
4696
|
-
i0.ɵɵelementStart(
|
|
4697
|
-
i0.ɵɵtext(
|
|
4687
|
+
i0.ɵɵelementStart(36, "span", 21);
|
|
4688
|
+
i0.ɵɵtext(37);
|
|
4698
4689
|
i0.ɵɵelementEnd()();
|
|
4699
|
-
i0.ɵɵelementStart(
|
|
4700
|
-
i0.ɵɵlistener("click", function
|
|
4701
|
-
i0.ɵɵelement(
|
|
4702
|
-
i0.ɵɵelementStart(
|
|
4703
|
-
i0.ɵɵtext(
|
|
4690
|
+
i0.ɵɵelementStart(38, "div", 19);
|
|
4691
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_div_click_38_listener() { return ctx.setActiveSection("cache"); });
|
|
4692
|
+
i0.ɵɵelement(39, "i", 26);
|
|
4693
|
+
i0.ɵɵelementStart(40, "span");
|
|
4694
|
+
i0.ɵɵtext(41, "Local Cache");
|
|
4704
4695
|
i0.ɵɵelementEnd();
|
|
4705
|
-
i0.ɵɵelementStart(
|
|
4706
|
-
i0.ɵɵtext(
|
|
4696
|
+
i0.ɵɵelementStart(42, "span", 21);
|
|
4697
|
+
i0.ɵɵtext(43);
|
|
4707
4698
|
i0.ɵɵelementEnd()()()();
|
|
4708
|
-
i0.ɵɵelementStart(
|
|
4709
|
-
i0.ɵɵconditionalCreate(
|
|
4710
|
-
i0.ɵɵconditionalCreate(
|
|
4711
|
-
i0.ɵɵconditionalCreate(
|
|
4712
|
-
i0.ɵɵconditionalCreate(
|
|
4699
|
+
i0.ɵɵelementStart(44, "div", 27);
|
|
4700
|
+
i0.ɵɵconditionalCreate(45, SystemDiagnosticsComponent_Conditional_45_Template, 12, 4, "div", 28);
|
|
4701
|
+
i0.ɵɵconditionalCreate(46, SystemDiagnosticsComponent_Conditional_46_Template, 14, 1, "div", 28);
|
|
4702
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_47_Template, 52, 27, "div", 29);
|
|
4703
|
+
i0.ɵɵconditionalCreate(48, SystemDiagnosticsComponent_Conditional_48_Template, 12, 2, "div", 28);
|
|
4713
4704
|
i0.ɵɵelementEnd()();
|
|
4714
|
-
i0.ɵɵelementStart(
|
|
4715
|
-
i0.ɵɵelement(
|
|
4716
|
-
i0.ɵɵtext(
|
|
4717
|
-
i0.ɵɵpipe(
|
|
4705
|
+
i0.ɵɵelementStart(49, "div", 30)(50, "span", 31);
|
|
4706
|
+
i0.ɵɵelement(51, "i", 32);
|
|
4707
|
+
i0.ɵɵtext(52);
|
|
4708
|
+
i0.ɵɵpipe(53, "date");
|
|
4718
4709
|
i0.ɵɵelementEnd();
|
|
4719
|
-
i0.ɵɵelementStart(
|
|
4720
|
-
i0.ɵɵlistener("click", function
|
|
4721
|
-
i0.ɵɵelement(
|
|
4722
|
-
i0.ɵɵtext(
|
|
4710
|
+
i0.ɵɵelementStart(54, "button", 33);
|
|
4711
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_54_listener() { return ctx.exportTelemetryData(); });
|
|
4712
|
+
i0.ɵɵelement(55, "i", 34);
|
|
4713
|
+
i0.ɵɵtext(56, " Export JSON ");
|
|
4723
4714
|
i0.ɵɵelementEnd()()();
|
|
4724
|
-
i0.ɵɵconditionalCreate(
|
|
4725
|
-
i0.ɵɵconditionalCreate(
|
|
4715
|
+
i0.ɵɵconditionalCreate(57, SystemDiagnosticsComponent_Conditional_57_Template, 53, 18);
|
|
4716
|
+
i0.ɵɵconditionalCreate(58, SystemDiagnosticsComponent_Conditional_58_Template, 37, 14);
|
|
4717
|
+
i0.ɵɵelementEnd()();
|
|
4726
4718
|
} if (rf & 2) {
|
|
4727
|
-
i0.ɵɵadvance(
|
|
4728
|
-
i0.ɵɵ
|
|
4719
|
+
i0.ɵɵadvance(3);
|
|
4720
|
+
i0.ɵɵconditional(ctx.autoRefresh ? 3 : -1);
|
|
4729
4721
|
i0.ɵɵadvance(2);
|
|
4730
|
-
i0.ɵɵ
|
|
4731
|
-
i0.ɵɵadvance();
|
|
4732
|
-
i0.ɵɵproperty("disabled", ctx.isLoading);
|
|
4733
|
-
i0.ɵɵadvance();
|
|
4734
|
-
i0.ɵɵclassProp("spinning", ctx.isLoading);
|
|
4722
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.autoRefresh);
|
|
4735
4723
|
i0.ɵɵadvance(2);
|
|
4724
|
+
i0.ɵɵproperty("Loading", ctx.isLoading)("ShowLabel", true);
|
|
4725
|
+
i0.ɵɵadvance(3);
|
|
4736
4726
|
i0.ɵɵclassProp("collapsed", ctx.kpiCardsCollapsed);
|
|
4737
4727
|
i0.ɵɵadvance();
|
|
4738
4728
|
i0.ɵɵproperty("title", ctx.kpiCardsCollapsed ? "Expand KPI cards" : "Collapse KPI cards");
|
|
4739
4729
|
i0.ɵɵadvance();
|
|
4740
4730
|
i0.ɵɵclassProp("fa-chevron-up", !ctx.kpiCardsCollapsed)("fa-chevron-down", ctx.kpiCardsCollapsed);
|
|
4741
4731
|
i0.ɵɵadvance();
|
|
4742
|
-
i0.ɵɵconditional(!ctx.kpiCardsCollapsed ?
|
|
4732
|
+
i0.ɵɵconditional(!ctx.kpiCardsCollapsed ? 13 : 14);
|
|
4743
4733
|
i0.ɵɵadvance(7);
|
|
4744
4734
|
i0.ɵɵclassProp("active", ctx.activeSection === "engines");
|
|
4745
4735
|
i0.ɵɵadvance(5);
|
|
@@ -4747,7 +4737,7 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4747
4737
|
i0.ɵɵadvance();
|
|
4748
4738
|
i0.ɵɵclassProp("active", ctx.activeSection === "redundant");
|
|
4749
4739
|
i0.ɵɵadvance(4);
|
|
4750
|
-
i0.ɵɵconditional(ctx.redundantLoads.length > 0 ?
|
|
4740
|
+
i0.ɵɵconditional(ctx.redundantLoads.length > 0 ? 30 : 31);
|
|
4751
4741
|
i0.ɵɵadvance(2);
|
|
4752
4742
|
i0.ɵɵclassProp("active", ctx.activeSection === "performance");
|
|
4753
4743
|
i0.ɵɵadvance(5);
|
|
@@ -4757,22 +4747,22 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4757
4747
|
i0.ɵɵadvance(5);
|
|
4758
4748
|
i0.ɵɵtextInterpolate((ctx.cacheStats == null ? null : ctx.cacheStats.totalEntries) || 0);
|
|
4759
4749
|
i0.ɵɵadvance(2);
|
|
4760
|
-
i0.ɵɵconditional(ctx.activeSection === "engines" ?
|
|
4750
|
+
i0.ɵɵconditional(ctx.activeSection === "engines" ? 45 : -1);
|
|
4761
4751
|
i0.ɵɵadvance();
|
|
4762
|
-
i0.ɵɵconditional(ctx.activeSection === "redundant" ?
|
|
4752
|
+
i0.ɵɵconditional(ctx.activeSection === "redundant" ? 46 : -1);
|
|
4763
4753
|
i0.ɵɵadvance();
|
|
4764
|
-
i0.ɵɵconditional(ctx.activeSection === "performance" ?
|
|
4754
|
+
i0.ɵɵconditional(ctx.activeSection === "performance" ? 47 : -1);
|
|
4765
4755
|
i0.ɵɵadvance();
|
|
4766
|
-
i0.ɵɵconditional(ctx.activeSection === "cache" ?
|
|
4756
|
+
i0.ɵɵconditional(ctx.activeSection === "cache" ? 48 : -1);
|
|
4767
4757
|
i0.ɵɵadvance(4);
|
|
4768
|
-
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(
|
|
4758
|
+
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(53, 32, ctx.lastUpdated, "medium"), " ");
|
|
4769
4759
|
i0.ɵɵadvance(2);
|
|
4770
4760
|
i0.ɵɵproperty("disabled", !ctx.telemetryEnabled || ctx.telemetryEvents.length === 0);
|
|
4771
4761
|
i0.ɵɵadvance(3);
|
|
4772
|
-
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ?
|
|
4762
|
+
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ? 57 : -1);
|
|
4773
4763
|
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 });
|
|
4764
|
+
i0.ɵɵconditional(ctx.engineDetailPanel.isOpen && ctx.engineDetailPanel.engine ? 58 : -1);
|
|
4765
|
+
} }, dependencies: [i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJStatBadgeComponent, i3.MJRefreshButtonComponent, i4.DecimalPipe, i4.DatePipe], styles: ["\n\n.sd-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n\n\n.sd-container[_ngcontent-%COMP%] > .sticky-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n z-index: 10;\n}\n\n.sd-container[_ngcontent-%COMP%] > .sticky-header[_ngcontent-%COMP%] > .action-buttons[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n justify-content: flex-end;\n padding: var(--mj-space-3) var(--mj-space-6);\n}\n\n@media (max-width: 639px) {\n .sd-container[_ngcontent-%COMP%] > .sticky-header[_ngcontent-%COMP%] > .action-buttons[_ngcontent-%COMP%] {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n\n\n.sd-container[_ngcontent-%COMP%] > .scrollable-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: var(--mj-space-6);\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.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 .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 });
|
|
4776
4766
|
};
|
|
4777
4767
|
SystemDiagnosticsComponent = __decorate([
|
|
4778
4768
|
RegisterClass(BaseResourceComponent, 'SystemDiagnosticsResource')
|
|
@@ -4781,33 +4771,31 @@ export { SystemDiagnosticsComponent };
|
|
|
4781
4771
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SystemDiagnosticsComponent, [{
|
|
4782
4772
|
type: Component,
|
|
4783
4773
|
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
|
-
</div>
|
|
4804
|
-
<button class="refresh-btn" (click)="refreshData()" [disabled]="isLoading">
|
|
4805
|
-
<i class="fa-solid fa-refresh" [class.spinning]="isLoading"></i>
|
|
4806
|
-
Refresh Now
|
|
4807
|
-
</button>
|
|
4774
|
+
<!--
|
|
4775
|
+
SystemDiagnostics renders inside Admin's "Monitoring" left-nav shell,
|
|
4776
|
+
which owns its own <mj-page-header>. We deliberately do NOT render a
|
|
4777
|
+
<mj-page-header> here to avoid the doubled-header pattern Section 9b
|
|
4778
|
+
defers. Action chrome (auto-refresh toggle + refresh button) lives
|
|
4779
|
+
inline in the .sticky-header below, matching UserManagement /
|
|
4780
|
+
ApplicationRoles. See plans/explorer-chrome-conventions.md Section 10.
|
|
4781
|
+
-->
|
|
4782
|
+
<div class="sd-container">
|
|
4783
|
+
<div class="sticky-header">
|
|
4784
|
+
<div class="action-buttons" role="toolbar" aria-label="System diagnostics actions">
|
|
4785
|
+
@if (autoRefresh) {
|
|
4786
|
+
<mj-stat-badge Icon="fa-solid fa-sync-alt fa-spin" Label="Auto-refresh · every 5s" Variant="info"></mj-stat-badge>
|
|
4787
|
+
}
|
|
4788
|
+
<label class="auto-refresh-toggle">
|
|
4789
|
+
<input type="checkbox" [(ngModel)]="autoRefresh" (change)="toggleAutoRefresh()">
|
|
4790
|
+
Auto-refresh
|
|
4791
|
+
</label>
|
|
4792
|
+
<mj-refresh-button [Loading]="isLoading" Label="Refresh Now" [ShowLabel]="true" (Clicked)="refreshData()"></mj-refresh-button>
|
|
4808
4793
|
</div>
|
|
4809
4794
|
</div>
|
|
4810
|
-
|
|
4795
|
+
|
|
4796
|
+
<div class="scrollable-content">
|
|
4797
|
+
<div class="system-diagnostics">
|
|
4798
|
+
|
|
4811
4799
|
<!-- Overview Cards (Collapsible) -->
|
|
4812
4800
|
<div class="overview-cards-container" [class.collapsed]="kpiCardsCollapsed">
|
|
4813
4801
|
<button class="kpi-toggle-btn" (click)="toggleKpiCards()" [title]="kpiCardsCollapsed ? 'Expand KPI cards' : 'Collapse KPI cards'">
|
|
@@ -6097,7 +6085,9 @@ export { SystemDiagnosticsComponent };
|
|
|
6097
6085
|
</div>
|
|
6098
6086
|
</div>
|
|
6099
6087
|
}
|
|
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"] }]
|
|
6088
|
+
</div>
|
|
6089
|
+
</div>
|
|
6090
|
+
`, styles: ["/* Container \u2014 flex-column workspace inside Admin's left-nav shell. */\n.sd-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n/* Sticky Header \u2014 action row only (no title; Admin shell provides it). */\n.sd-container > .sticky-header {\n flex-shrink: 0;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n z-index: 10;\n}\n\n.sd-container > .sticky-header > .action-buttons {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n justify-content: flex-end;\n padding: var(--mj-space-3) var(--mj-space-6);\n}\n\n@media (max-width: 639px) {\n .sd-container > .sticky-header > .action-buttons {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n/* Scrollable Content */\n.sd-container > .scrollable-content {\n flex: 1;\n overflow-y: auto;\n padding: var(--mj-space-6);\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/* 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 .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"] }]
|
|
6101
6091
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ActivatedRoute }], { perfChartRef: [{
|
|
6102
6092
|
type: ViewChild,
|
|
6103
6093
|
args: ['perfChart', { static: false }]
|