@memberjunction/ng-dashboards 5.35.0 → 5.37.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.js +3 -3
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +4 -4
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +3 -3
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +329 -371
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +137 -142
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +111 -116
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +13 -65
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +13 -65
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +13 -65
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/Admin/base-admin-container.component.d.ts +9 -7
- package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
- package/dist/Admin/base-admin-container.component.js +26 -17
- package/dist/Admin/base-admin-container.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
- package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-new-message-resource.component.js +661 -0
- package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
- package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
- 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 +7 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
- package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +46 -72
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -100
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +158 -168
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +257 -264
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.d.ts +5 -0
- package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +46 -64
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/DevTools/lazy-module-status.component.js +75 -84
- package/dist/DevTools/lazy-module-status.component.js.map +1 -1
- package/dist/DevTools/settings-explorer.component.js +76 -85
- package/dist/DevTools/settings-explorer.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +97 -99
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +842 -855
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +78 -89
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +1 -0
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +1 -0
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +236 -10
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +19 -19
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +543 -629
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +50 -49
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +1 -1
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +16 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +9 -7
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +13 -4
- 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 +16 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +10 -9
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +13 -2
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +1 -1
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +13 -1
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +53 -52
|
@@ -28,184 +28,68 @@ const _forTrack4 = ($index, $item) => $item.label;
|
|
|
28
28
|
const _forTrack5 = ($index, $item) => $item.fingerprint;
|
|
29
29
|
const _forTrack6 = ($index, $item) => $item.key;
|
|
30
30
|
const _forTrack7 = ($index, $item) => $item.propertyName;
|
|
31
|
-
function
|
|
32
|
-
i0.ɵɵ
|
|
33
|
-
|
|
34
|
-
function SystemDiagnosticsComponent_Conditional_13_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
i0.ɵɵtext(0, " No redundant loading detected ");
|
|
36
|
-
} }
|
|
37
|
-
function SystemDiagnosticsComponent_Conditional_13_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
-
i0.ɵɵtext(0);
|
|
39
|
-
} if (rf & 2) {
|
|
40
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
41
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.redundantLoads.length, " entities loaded by multiple engines ");
|
|
42
|
-
} }
|
|
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);
|
|
46
|
-
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelementStart(4, "div", 37)(5, "div", 38);
|
|
48
|
-
i0.ɵɵtext(6);
|
|
49
|
-
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(7, "div", 39);
|
|
51
|
-
i0.ɵɵtext(8, "Registered Engines");
|
|
52
|
-
i0.ɵɵelementEnd();
|
|
53
|
-
i0.ɵɵelementStart(9, "div", 40);
|
|
54
|
-
i0.ɵɵtext(10);
|
|
55
|
-
i0.ɵɵelementEnd()()();
|
|
56
|
-
i0.ɵɵelementStart(11, "div", 35)(12, "div", 41);
|
|
57
|
-
i0.ɵɵelement(13, "i", 42);
|
|
58
|
-
i0.ɵɵelementEnd();
|
|
59
|
-
i0.ɵɵelementStart(14, "div", 37)(15, "div", 38);
|
|
60
|
-
i0.ɵɵtext(16);
|
|
61
|
-
i0.ɵɵelementEnd();
|
|
62
|
-
i0.ɵɵelementStart(17, "div", 39);
|
|
63
|
-
i0.ɵɵtext(18, "Engine Memory");
|
|
64
|
-
i0.ɵɵelementEnd();
|
|
65
|
-
i0.ɵɵelementStart(19, "div", 40);
|
|
66
|
-
i0.ɵɵtext(20, "Estimated total");
|
|
67
|
-
i0.ɵɵelementEnd()()();
|
|
68
|
-
i0.ɵɵelementStart(21, "div", 35)(22, "div", 43);
|
|
69
|
-
i0.ɵɵelement(23, "i", 22);
|
|
70
|
-
i0.ɵɵelementEnd();
|
|
71
|
-
i0.ɵɵelementStart(24, "div", 37)(25, "div", 38);
|
|
72
|
-
i0.ɵɵtext(26);
|
|
73
|
-
i0.ɵɵelementEnd();
|
|
74
|
-
i0.ɵɵelementStart(27, "div", 39);
|
|
75
|
-
i0.ɵɵtext(28, "Redundant Loads");
|
|
76
|
-
i0.ɵɵelementEnd();
|
|
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);
|
|
79
|
-
i0.ɵɵelementEnd()()()();
|
|
80
|
-
} if (rf & 2) {
|
|
81
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
82
|
-
i0.ɵɵadvance(6);
|
|
83
|
-
i0.ɵɵtextInterpolate((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEngines) || 0);
|
|
84
|
-
i0.ɵɵadvance(4);
|
|
85
|
-
i0.ɵɵtextInterpolate1("", (ctx_r0.engineStats == null ? null : ctx_r0.engineStats.loadedEngines) || 0, " loaded");
|
|
86
|
-
i0.ɵɵadvance(6);
|
|
87
|
-
i0.ɵɵtextInterpolate(ctx_r0.formatBytes((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
88
|
-
i0.ɵɵadvance(6);
|
|
89
|
-
i0.ɵɵclassProp("card-icon--warning", ctx_r0.redundantLoads.length > 0)("card-icon--success", ctx_r0.redundantLoads.length === 0);
|
|
90
|
-
i0.ɵɵadvance(4);
|
|
91
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
92
|
-
i0.ɵɵadvance(4);
|
|
93
|
-
i0.ɵɵconditional(ctx_r0.redundantLoads.length === 0 ? 30 : 31);
|
|
94
|
-
} }
|
|
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);
|
|
99
|
-
i0.ɵɵtext(4);
|
|
100
|
-
i0.ɵɵelementEnd();
|
|
101
|
-
i0.ɵɵelementStart(5, "span", 46);
|
|
102
|
-
i0.ɵɵtext(6, "Engines");
|
|
103
|
-
i0.ɵɵelementEnd()();
|
|
104
|
-
i0.ɵɵelement(7, "div", 47);
|
|
105
|
-
i0.ɵɵelementStart(8, "div", 48);
|
|
106
|
-
i0.ɵɵelement(9, "i", 42);
|
|
107
|
-
i0.ɵɵelementStart(10, "span", 45);
|
|
108
|
-
i0.ɵɵtext(11);
|
|
109
|
-
i0.ɵɵelementEnd();
|
|
110
|
-
i0.ɵɵelementStart(12, "span", 46);
|
|
111
|
-
i0.ɵɵtext(13, "Memory");
|
|
112
|
-
i0.ɵɵelementEnd()();
|
|
113
|
-
i0.ɵɵelement(14, "div", 47);
|
|
114
|
-
i0.ɵɵelementStart(15, "div", 49);
|
|
115
|
-
i0.ɵɵelement(16, "i", 22);
|
|
116
|
-
i0.ɵɵelementStart(17, "span", 45);
|
|
117
|
-
i0.ɵɵtext(18);
|
|
118
|
-
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(19, "span", 46);
|
|
120
|
-
i0.ɵɵtext(20, "Redundant");
|
|
121
|
-
i0.ɵɵelementEnd()()();
|
|
122
|
-
} if (rf & 2) {
|
|
123
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
124
|
-
i0.ɵɵadvance(4);
|
|
125
|
-
i0.ɵɵtextInterpolate((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEngines) || 0);
|
|
126
|
-
i0.ɵɵadvance(7);
|
|
127
|
-
i0.ɵɵtextInterpolate(ctx_r0.formatBytes((ctx_r0.engineStats == null ? null : ctx_r0.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
128
|
-
i0.ɵɵadvance(4);
|
|
129
|
-
i0.ɵɵclassProp("warning", ctx_r0.redundantLoads.length > 0);
|
|
130
|
-
i0.ɵɵadvance(3);
|
|
131
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
132
|
-
} }
|
|
133
|
-
function SystemDiagnosticsComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
-
i0.ɵɵelementStart(0, "span", 23);
|
|
135
|
-
i0.ɵɵtext(1);
|
|
136
|
-
i0.ɵɵelementEnd();
|
|
137
|
-
} if (rf & 2) {
|
|
138
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
139
|
-
i0.ɵɵadvance();
|
|
140
|
-
i0.ɵɵtextInterpolate(ctx_r0.redundantLoads.length);
|
|
141
|
-
} }
|
|
142
|
-
function SystemDiagnosticsComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "span", 24);
|
|
144
|
-
i0.ɵɵtext(1, "0");
|
|
145
|
-
i0.ɵɵelementEnd();
|
|
146
|
-
} }
|
|
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);
|
|
31
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
33
|
+
i0.ɵɵelement(1, "i", 30);
|
|
150
34
|
i0.ɵɵelementStart(2, "p");
|
|
151
35
|
i0.ɵɵtext(3, "No engines registered yet");
|
|
152
36
|
i0.ɵɵelementEnd();
|
|
153
|
-
i0.ɵɵelementStart(4, "span",
|
|
37
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
154
38
|
i0.ɵɵtext(5, "Engines register themselves when they are first configured");
|
|
155
39
|
i0.ɵɵelementEnd()();
|
|
156
40
|
} }
|
|
157
|
-
function
|
|
158
|
-
i0.ɵɵelementStart(0, "div",
|
|
159
|
-
i0.ɵɵelement(1, "i",
|
|
160
|
-
i0.ɵɵelementStart(2, "span",
|
|
41
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
43
|
+
i0.ɵɵelement(1, "i", 19);
|
|
44
|
+
i0.ɵɵelementStart(2, "span", 40);
|
|
161
45
|
i0.ɵɵtext(3, "Loaded:");
|
|
162
46
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(4, "span",
|
|
47
|
+
i0.ɵɵelementStart(4, "span", 41);
|
|
164
48
|
i0.ɵɵtext(5);
|
|
165
49
|
i0.ɵɵelementEnd()();
|
|
166
50
|
} if (rf & 2) {
|
|
167
51
|
const engine_r4 = i0.ɵɵnextContext().$implicit;
|
|
168
|
-
const
|
|
52
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
169
53
|
i0.ɵɵadvance(5);
|
|
170
|
-
i0.ɵɵtextInterpolate(
|
|
54
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTime(engine_r4.lastLoadedAt));
|
|
171
55
|
} }
|
|
172
|
-
function
|
|
56
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
173
57
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
174
|
-
i0.ɵɵelementStart(0, "div",
|
|
58
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 34)(2, "div", 35);
|
|
175
59
|
i0.ɵɵtext(3);
|
|
176
60
|
i0.ɵɵelementEnd();
|
|
177
|
-
i0.ɵɵelementStart(4, "div",
|
|
61
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
178
62
|
i0.ɵɵtext(5);
|
|
179
63
|
i0.ɵɵelementEnd()();
|
|
180
|
-
i0.ɵɵelementStart(6, "div",
|
|
181
|
-
i0.ɵɵelement(8, "i",
|
|
182
|
-
i0.ɵɵelementStart(9, "span",
|
|
64
|
+
i0.ɵɵelementStart(6, "div", 37)(7, "div", 38);
|
|
65
|
+
i0.ɵɵelement(8, "i", 39);
|
|
66
|
+
i0.ɵɵelementStart(9, "span", 40);
|
|
183
67
|
i0.ɵɵtext(10, "Memory:");
|
|
184
68
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(11, "span",
|
|
69
|
+
i0.ɵɵelementStart(11, "span", 41);
|
|
186
70
|
i0.ɵɵtext(12);
|
|
187
71
|
i0.ɵɵelementEnd()();
|
|
188
|
-
i0.ɵɵelementStart(13, "div",
|
|
189
|
-
i0.ɵɵelement(14, "i",
|
|
190
|
-
i0.ɵɵelementStart(15, "span",
|
|
72
|
+
i0.ɵɵelementStart(13, "div", 38);
|
|
73
|
+
i0.ɵɵelement(14, "i", 42);
|
|
74
|
+
i0.ɵɵelementStart(15, "span", 40);
|
|
191
75
|
i0.ɵɵtext(16, "Items:");
|
|
192
76
|
i0.ɵɵelementEnd();
|
|
193
|
-
i0.ɵɵelementStart(17, "span",
|
|
77
|
+
i0.ɵɵelementStart(17, "span", 41);
|
|
194
78
|
i0.ɵɵtext(18);
|
|
195
79
|
i0.ɵɵelementEnd()();
|
|
196
|
-
i0.ɵɵconditionalCreate(19,
|
|
80
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Conditional_19_Template, 6, 1, "div", 38);
|
|
197
81
|
i0.ɵɵelementEnd();
|
|
198
|
-
i0.ɵɵelementStart(20, "div",
|
|
199
|
-
i0.ɵɵlistener("click", function
|
|
200
|
-
i0.ɵɵelement(22, "i",
|
|
82
|
+
i0.ɵɵelementStart(20, "div", 43)(21, "button", 44);
|
|
83
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template_button_click_21_listener($event) { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.refreshSingleEngine(engine_r4, $event)); });
|
|
84
|
+
i0.ɵɵelement(22, "i", 26);
|
|
201
85
|
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(23, "button",
|
|
203
|
-
i0.ɵɵlistener("click", function
|
|
204
|
-
i0.ɵɵelement(24, "i",
|
|
86
|
+
i0.ɵɵelementStart(23, "button", 45);
|
|
87
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template_button_click_23_listener() { const engine_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEngineDetailPanel(engine_r4)); });
|
|
88
|
+
i0.ɵɵelement(24, "i", 46);
|
|
205
89
|
i0.ɵɵelementEnd()()();
|
|
206
90
|
} if (rf & 2) {
|
|
207
91
|
const engine_r4 = ctx.$implicit;
|
|
208
|
-
const
|
|
92
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
209
93
|
i0.ɵɵclassProp("loaded", engine_r4.isLoaded);
|
|
210
94
|
i0.ɵɵadvance(2);
|
|
211
95
|
i0.ɵɵproperty("title", engine_r4.className);
|
|
@@ -222,56 +106,56 @@ function SystemDiagnosticsComponent_Conditional_45_Conditional_11_For_2_Template
|
|
|
222
106
|
i0.ɵɵadvance();
|
|
223
107
|
i0.ɵɵconditional(engine_r4.lastLoadedAt ? 19 : -1);
|
|
224
108
|
i0.ɵɵadvance(2);
|
|
225
|
-
i0.ɵɵproperty("disabled", !engine_r4.isLoaded ||
|
|
109
|
+
i0.ɵɵproperty("disabled", !engine_r4.isLoaded || ctx_r1.isRefreshingSingleEngine === engine_r4.className);
|
|
226
110
|
i0.ɵɵadvance();
|
|
227
|
-
i0.ɵɵclassProp("spinning",
|
|
111
|
+
i0.ɵɵclassProp("spinning", ctx_r1.isRefreshingSingleEngine === engine_r4.className);
|
|
228
112
|
i0.ɵɵadvance();
|
|
229
113
|
i0.ɵɵproperty("disabled", !engine_r4.isLoaded);
|
|
230
114
|
} }
|
|
231
|
-
function
|
|
232
|
-
i0.ɵɵelementStart(0, "div",
|
|
233
|
-
i0.ɵɵrepeaterCreate(1,
|
|
115
|
+
function SystemDiagnosticsComponent_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
117
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_15_Conditional_11_For_2_Template, 25, 16, "div", 32, _forTrack0);
|
|
234
118
|
i0.ɵɵelementEnd();
|
|
235
119
|
} if (rf & 2) {
|
|
236
|
-
const
|
|
120
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
237
121
|
i0.ɵɵadvance();
|
|
238
|
-
i0.ɵɵrepeater(
|
|
122
|
+
i0.ɵɵrepeater(ctx_r1.engines);
|
|
239
123
|
} }
|
|
240
|
-
function
|
|
241
|
-
const
|
|
242
|
-
i0.ɵɵelementStart(0, "div",
|
|
243
|
-
i0.ɵɵelement(3, "i",
|
|
124
|
+
function SystemDiagnosticsComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
127
|
+
i0.ɵɵelement(3, "i", 23);
|
|
244
128
|
i0.ɵɵtext(4, " Registered Engines ");
|
|
245
129
|
i0.ɵɵelementEnd();
|
|
246
|
-
i0.ɵɵelementStart(5, "div",
|
|
247
|
-
i0.ɵɵlistener("click", function
|
|
248
|
-
i0.ɵɵelement(7, "i",
|
|
130
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "button", 25);
|
|
131
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_15_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshAllEngines()); });
|
|
132
|
+
i0.ɵɵelement(7, "i", 26);
|
|
249
133
|
i0.ɵɵtext(8, " Refresh All Engines ");
|
|
250
134
|
i0.ɵɵelementEnd()()();
|
|
251
|
-
i0.ɵɵelementStart(9, "div",
|
|
252
|
-
i0.ɵɵconditionalCreate(10,
|
|
135
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
136
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_15_Conditional_10_Template, 6, 0, "div", 28)(11, SystemDiagnosticsComponent_Conditional_15_Conditional_11_Template, 3, 0, "div", 29);
|
|
253
137
|
i0.ɵɵelementEnd()();
|
|
254
138
|
} if (rf & 2) {
|
|
255
|
-
const
|
|
139
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
256
140
|
i0.ɵɵadvance(6);
|
|
257
|
-
i0.ɵɵproperty("disabled",
|
|
141
|
+
i0.ɵɵproperty("disabled", ctx_r1.isRefreshingEngines);
|
|
258
142
|
i0.ɵɵadvance();
|
|
259
|
-
i0.ɵɵclassProp("spinning",
|
|
143
|
+
i0.ɵɵclassProp("spinning", ctx_r1.isRefreshingEngines);
|
|
260
144
|
i0.ɵɵadvance(3);
|
|
261
|
-
i0.ɵɵconditional(
|
|
145
|
+
i0.ɵɵconditional(ctx_r1.engines.length === 0 ? 10 : 11);
|
|
262
146
|
} }
|
|
263
|
-
function
|
|
264
|
-
i0.ɵɵelementStart(0, "div",
|
|
265
|
-
i0.ɵɵelement(1, "i",
|
|
147
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
149
|
+
i0.ɵɵelement(1, "i", 51);
|
|
266
150
|
i0.ɵɵelementStart(2, "p");
|
|
267
151
|
i0.ɵɵtext(3, "No redundant entity loading detected");
|
|
268
152
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelementStart(4, "span",
|
|
153
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
270
154
|
i0.ɵɵtext(5, "Each entity is being loaded by only one engine");
|
|
271
155
|
i0.ɵɵelementEnd()();
|
|
272
156
|
} }
|
|
273
|
-
function
|
|
274
|
-
i0.ɵɵelementStart(0, "span",
|
|
157
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
i0.ɵɵelementStart(0, "span", 60);
|
|
275
159
|
i0.ɵɵtext(1);
|
|
276
160
|
i0.ɵɵelementEnd();
|
|
277
161
|
} if (rf & 2) {
|
|
@@ -279,14 +163,14 @@ function SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_For_6_T
|
|
|
279
163
|
i0.ɵɵadvance();
|
|
280
164
|
i0.ɵɵtextInterpolate(engine_r5);
|
|
281
165
|
} }
|
|
282
|
-
function
|
|
283
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
166
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 57);
|
|
284
168
|
i0.ɵɵtext(2);
|
|
285
169
|
i0.ɵɵelementEnd();
|
|
286
|
-
i0.ɵɵelementStart(3, "td",
|
|
287
|
-
i0.ɵɵrepeaterCreate(5,
|
|
170
|
+
i0.ɵɵelementStart(3, "td", 58)(4, "div", 59);
|
|
171
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_For_6_Template, 2, 1, "span", 60, i0.ɵɵrepeaterTrackByIdentity);
|
|
288
172
|
i0.ɵɵelementEnd()();
|
|
289
|
-
i0.ɵɵelementStart(7, "td",
|
|
173
|
+
i0.ɵɵelementStart(7, "td", 61)(8, "span", 62);
|
|
290
174
|
i0.ɵɵtext(9);
|
|
291
175
|
i0.ɵɵelementEnd()()();
|
|
292
176
|
} if (rf & 2) {
|
|
@@ -298,252 +182,252 @@ function SystemDiagnosticsComponent_Conditional_46_Conditional_13_For_12_Templat
|
|
|
298
182
|
i0.ɵɵadvance(4);
|
|
299
183
|
i0.ɵɵtextInterpolate(load_r6.engines.length);
|
|
300
184
|
} }
|
|
301
|
-
function
|
|
302
|
-
i0.ɵɵelementStart(0, "div",
|
|
185
|
+
function SystemDiagnosticsComponent_Conditional_16_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
186
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "table", 53)(2, "thead")(3, "tr")(4, "th");
|
|
303
187
|
i0.ɵɵtext(5, "Entity Name");
|
|
304
188
|
i0.ɵɵelementEnd();
|
|
305
189
|
i0.ɵɵelementStart(6, "th");
|
|
306
190
|
i0.ɵɵtext(7, "Loaded By Engines");
|
|
307
191
|
i0.ɵɵelementEnd();
|
|
308
|
-
i0.ɵɵelementStart(8, "th",
|
|
192
|
+
i0.ɵɵelementStart(8, "th", 54);
|
|
309
193
|
i0.ɵɵtext(9, "Engine Count");
|
|
310
194
|
i0.ɵɵelementEnd()()();
|
|
311
195
|
i0.ɵɵelementStart(10, "tbody");
|
|
312
|
-
i0.ɵɵrepeaterCreate(11,
|
|
196
|
+
i0.ɵɵrepeaterCreate(11, SystemDiagnosticsComponent_Conditional_16_Conditional_13_For_12_Template, 10, 2, "tr", null, _forTrack1);
|
|
313
197
|
i0.ɵɵelementEnd()()();
|
|
314
|
-
i0.ɵɵelementStart(13, "div",
|
|
315
|
-
i0.ɵɵelement(14, "i",
|
|
198
|
+
i0.ɵɵelementStart(13, "div", 55);
|
|
199
|
+
i0.ɵɵelement(14, "i", 56);
|
|
316
200
|
i0.ɵɵelementStart(15, "div")(16, "strong");
|
|
317
201
|
i0.ɵɵtext(17, "Recommendation:");
|
|
318
202
|
i0.ɵɵelementEnd();
|
|
319
203
|
i0.ɵɵtext(18, " Consider consolidating data loading by having dependent engines access data from a parent engine, or restructuring the engine hierarchy to avoid duplicate data fetches. ");
|
|
320
204
|
i0.ɵɵelementEnd()();
|
|
321
205
|
} if (rf & 2) {
|
|
322
|
-
const
|
|
206
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
323
207
|
i0.ɵɵadvance(11);
|
|
324
|
-
i0.ɵɵrepeater(
|
|
208
|
+
i0.ɵɵrepeater(ctx_r1.redundantLoads);
|
|
325
209
|
} }
|
|
326
|
-
function
|
|
327
|
-
i0.ɵɵelementStart(0, "div",
|
|
328
|
-
i0.ɵɵelement(3, "i",
|
|
210
|
+
function SystemDiagnosticsComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
211
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
212
|
+
i0.ɵɵelement(3, "i", 47);
|
|
329
213
|
i0.ɵɵtext(4, " Redundant Entity Loading ");
|
|
330
214
|
i0.ɵɵelementEnd()();
|
|
331
|
-
i0.ɵɵelementStart(5, "div",
|
|
332
|
-
i0.ɵɵelement(7, "i",
|
|
215
|
+
i0.ɵɵelementStart(5, "div", 27)(6, "div", 48);
|
|
216
|
+
i0.ɵɵelement(7, "i", 49);
|
|
333
217
|
i0.ɵɵelementStart(8, "div")(9, "strong");
|
|
334
218
|
i0.ɵɵtext(10, "What is this?");
|
|
335
219
|
i0.ɵɵelementEnd();
|
|
336
220
|
i0.ɵɵtext(11, " This section shows entities that are loaded by multiple engines. Redundant loading indicates potential optimization opportunities where engines could share data or consolidate their loading logic. ");
|
|
337
221
|
i0.ɵɵelementEnd()();
|
|
338
|
-
i0.ɵɵconditionalCreate(12,
|
|
222
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_16_Conditional_12_Template, 6, 0, "div", 50)(13, SystemDiagnosticsComponent_Conditional_16_Conditional_13_Template, 19, 0);
|
|
339
223
|
i0.ɵɵelementEnd()();
|
|
340
224
|
} if (rf & 2) {
|
|
341
|
-
const
|
|
225
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
342
226
|
i0.ɵɵadvance(12);
|
|
343
|
-
i0.ɵɵconditional(
|
|
227
|
+
i0.ɵɵconditional(ctx_r1.redundantLoads.length === 0 ? 12 : 13);
|
|
344
228
|
} }
|
|
345
|
-
function
|
|
229
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
346
230
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
347
|
-
i0.ɵɵelementStart(0, "button",
|
|
348
|
-
i0.ɵɵlistener("click", function
|
|
349
|
-
i0.ɵɵelement(1, "i",
|
|
231
|
+
i0.ɵɵelementStart(0, "button", 83);
|
|
232
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleTelemetry()); });
|
|
233
|
+
i0.ɵɵelement(1, "i", 84);
|
|
350
234
|
i0.ɵɵtext(2);
|
|
351
235
|
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵelementStart(3, "button",
|
|
353
|
-
i0.ɵɵlistener("click", function
|
|
354
|
-
i0.ɵɵelement(4, "i",
|
|
236
|
+
i0.ɵɵelementStart(3, "button", 25);
|
|
237
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearTelemetry()); });
|
|
238
|
+
i0.ɵɵelement(4, "i", 85);
|
|
355
239
|
i0.ɵɵtext(5, " Clear ");
|
|
356
240
|
i0.ɵɵelementEnd();
|
|
357
241
|
} if (rf & 2) {
|
|
358
|
-
const
|
|
359
|
-
i0.ɵɵclassProp("active",
|
|
242
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
243
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetryEnabled);
|
|
360
244
|
i0.ɵɵadvance();
|
|
361
|
-
i0.ɵɵclassProp("fa-toggle-on",
|
|
245
|
+
i0.ɵɵclassProp("fa-toggle-on", ctx_r1.telemetryEnabled)("fa-toggle-off", !ctx_r1.telemetryEnabled);
|
|
362
246
|
i0.ɵɵadvance();
|
|
363
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
247
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.telemetryEnabled ? "Enabled" : "Disabled", " ");
|
|
364
248
|
i0.ɵɵadvance();
|
|
365
|
-
i0.ɵɵproperty("disabled", !
|
|
249
|
+
i0.ɵɵproperty("disabled", !ctx_r1.telemetryEnabled);
|
|
366
250
|
} }
|
|
367
|
-
function
|
|
368
|
-
i0.ɵɵelementStart(0, "span",
|
|
369
|
-
i0.ɵɵelement(1, "i",
|
|
251
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelementStart(0, "span", 86);
|
|
253
|
+
i0.ɵɵelement(1, "i", 84);
|
|
370
254
|
i0.ɵɵtext(2);
|
|
371
|
-
i0.ɵɵelementStart(3, "span",
|
|
255
|
+
i0.ɵɵelementStart(3, "span", 87);
|
|
372
256
|
i0.ɵɵtext(4, "(config)");
|
|
373
257
|
i0.ɵɵelementEnd()();
|
|
374
258
|
} if (rf & 2) {
|
|
375
|
-
const
|
|
376
|
-
i0.ɵɵclassProp("enabled",
|
|
259
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
260
|
+
i0.ɵɵclassProp("enabled", ctx_r1.serverTelemetryEnabled)("disabled", !ctx_r1.serverTelemetryEnabled);
|
|
377
261
|
i0.ɵɵadvance();
|
|
378
|
-
i0.ɵɵclassProp("fa-circle-check",
|
|
262
|
+
i0.ɵɵclassProp("fa-circle-check", ctx_r1.serverTelemetryEnabled)("fa-circle-xmark", !ctx_r1.serverTelemetryEnabled);
|
|
379
263
|
i0.ɵɵadvance();
|
|
380
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
264
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.serverTelemetryEnabled ? "Enabled" : "Disabled", " ");
|
|
381
265
|
} }
|
|
382
|
-
function
|
|
383
|
-
i0.ɵɵelementStart(0, "span",
|
|
384
|
-
i0.ɵɵelement(1, "i",
|
|
266
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵelementStart(0, "span", 70);
|
|
268
|
+
i0.ɵɵelement(1, "i", 88);
|
|
385
269
|
i0.ɵɵelementEnd();
|
|
386
270
|
} }
|
|
387
|
-
function
|
|
271
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
388
272
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
389
|
-
i0.ɵɵelementStart(0, "div",
|
|
390
|
-
i0.ɵɵelement(1, "i",
|
|
273
|
+
i0.ɵɵelementStart(0, "div", 71);
|
|
274
|
+
i0.ɵɵelement(1, "i", 89);
|
|
391
275
|
i0.ɵɵtext(2);
|
|
392
|
-
i0.ɵɵelementStart(3, "button",
|
|
393
|
-
i0.ɵɵlistener("click", function
|
|
394
|
-
i0.ɵɵelement(4, "i",
|
|
276
|
+
i0.ɵɵelementStart(3, "button", 90);
|
|
277
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.serverTelemetryError = null); });
|
|
278
|
+
i0.ɵɵelement(4, "i", 91);
|
|
395
279
|
i0.ɵɵelementEnd()();
|
|
396
280
|
} if (rf & 2) {
|
|
397
|
-
const
|
|
281
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
398
282
|
i0.ɵɵadvance(2);
|
|
399
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
283
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.serverTelemetryError, " ");
|
|
400
284
|
} }
|
|
401
|
-
function
|
|
402
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵelementStart(0, "span", 76);
|
|
403
287
|
i0.ɵɵtext(1);
|
|
404
288
|
i0.ɵɵelementEnd();
|
|
405
289
|
} if (rf & 2) {
|
|
406
|
-
const
|
|
290
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
407
291
|
i0.ɵɵadvance();
|
|
408
|
-
i0.ɵɵtextInterpolate(
|
|
292
|
+
i0.ɵɵtextInterpolate(ctx_r1.slowQueries.length);
|
|
409
293
|
} }
|
|
410
|
-
function
|
|
411
|
-
i0.ɵɵelementStart(0, "span",
|
|
294
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
295
|
+
i0.ɵɵelementStart(0, "span", 80);
|
|
412
296
|
i0.ɵɵtext(1);
|
|
413
297
|
i0.ɵɵelementEnd();
|
|
414
298
|
} if (rf & 2) {
|
|
415
|
-
const
|
|
299
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
416
300
|
i0.ɵɵadvance();
|
|
417
|
-
i0.ɵɵtextInterpolate(
|
|
301
|
+
i0.ɵɵtextInterpolate(ctx_r1.telemetryInsights.length);
|
|
418
302
|
} }
|
|
419
|
-
function
|
|
420
|
-
i0.ɵɵelementStart(0, "div",
|
|
421
|
-
i0.ɵɵelement(1, "i",
|
|
303
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
304
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
305
|
+
i0.ɵɵelement(1, "i", 89);
|
|
422
306
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
423
307
|
i0.ɵɵtext(4, "Telemetry is disabled.");
|
|
424
308
|
i0.ɵɵelementEnd();
|
|
425
309
|
i0.ɵɵtext(5, " Enable telemetry to track RunView, RunQuery, and Engine loading performance. ");
|
|
426
310
|
i0.ɵɵelementEnd()();
|
|
427
311
|
} }
|
|
428
|
-
function
|
|
312
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
429
313
|
i0.ɵɵtext(0);
|
|
430
314
|
} if (rf & 2) {
|
|
431
|
-
const
|
|
432
|
-
i0.ɵɵtextInterpolate2(" Viewing ",
|
|
315
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
|
+
i0.ɵɵtextInterpolate2(" Viewing ", ctx_r1.formatRelativeTime(ctx_r1.chartTimeRangeStart), " - ", ctx_r1.formatRelativeTime(ctx_r1.chartTimeRangeEnd), ". Click Reset to show all. ");
|
|
433
317
|
} }
|
|
434
|
-
function
|
|
318
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
435
319
|
i0.ɵɵtext(0, " Drag to select a time range. Gaps >5s compressed. ");
|
|
436
320
|
} }
|
|
437
|
-
function
|
|
321
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
438
322
|
i0.ɵɵtext(0, " Drag to select a time range. Hover over points for details. ");
|
|
439
323
|
} }
|
|
440
|
-
function
|
|
324
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
441
325
|
i0.ɵɵtext(0);
|
|
442
326
|
i0.ɵɵpipe(1, "number");
|
|
443
327
|
} if (rf & 2) {
|
|
444
|
-
const
|
|
445
|
-
i0.ɵɵtextInterpolate1(" \u2022 ", i0.ɵɵpipeBind2(1, 1,
|
|
328
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
329
|
+
i0.ɵɵtextInterpolate1(" \u2022 ", i0.ɵɵpipeBind2(1, 1, ctx_r1.chartZoomLevel * 100, "1.0-0"), "% zoom ");
|
|
446
330
|
} }
|
|
447
|
-
function
|
|
448
|
-
i0.ɵɵelementStart(0, "span",
|
|
331
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
+
i0.ɵɵelementStart(0, "span", 121);
|
|
449
333
|
i0.ɵɵtext(1);
|
|
450
|
-
i0.ɵɵconditionalCreate(2,
|
|
334
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Conditional_2_Template, 2, 4);
|
|
451
335
|
i0.ɵɵelementEnd();
|
|
452
336
|
} if (rf & 2) {
|
|
453
|
-
const
|
|
337
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
454
338
|
i0.ɵɵadvance();
|
|
455
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
339
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.telemetrySummary.totalEvents, " events ");
|
|
456
340
|
i0.ɵɵadvance();
|
|
457
|
-
i0.ɵɵconditional(
|
|
341
|
+
i0.ɵɵconditional(ctx_r1.chartZoomLevel !== 1 ? 2 : -1);
|
|
458
342
|
} }
|
|
459
|
-
function
|
|
343
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
460
344
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
461
|
-
i0.ɵɵelementStart(0, "div",
|
|
462
|
-
i0.ɵɵelement(4, "span",
|
|
345
|
+
i0.ɵɵelementStart(0, "div", 82)(1, "div", 92)(2, "div", 93)(3, "span", 94);
|
|
346
|
+
i0.ɵɵelement(4, "span", 95);
|
|
463
347
|
i0.ɵɵtext(5, " RunView");
|
|
464
348
|
i0.ɵɵelementEnd();
|
|
465
|
-
i0.ɵɵelementStart(6, "span",
|
|
466
|
-
i0.ɵɵelement(7, "span",
|
|
349
|
+
i0.ɵɵelementStart(6, "span", 96);
|
|
350
|
+
i0.ɵɵelement(7, "span", 95);
|
|
467
351
|
i0.ɵɵtext(8, " RunQuery");
|
|
468
352
|
i0.ɵɵelementEnd();
|
|
469
|
-
i0.ɵɵelementStart(9, "span",
|
|
470
|
-
i0.ɵɵelement(10, "span",
|
|
353
|
+
i0.ɵɵelementStart(9, "span", 97);
|
|
354
|
+
i0.ɵɵelement(10, "span", 95);
|
|
471
355
|
i0.ɵɵtext(11, " Engine");
|
|
472
356
|
i0.ɵɵelementEnd();
|
|
473
|
-
i0.ɵɵelementStart(12, "span",
|
|
474
|
-
i0.ɵɵelement(13, "span",
|
|
357
|
+
i0.ɵɵelementStart(12, "span", 98);
|
|
358
|
+
i0.ɵɵelement(13, "span", 95);
|
|
475
359
|
i0.ɵɵtext(14, " AI");
|
|
476
360
|
i0.ɵɵelementEnd()();
|
|
477
|
-
i0.ɵɵelementStart(15, "div",
|
|
478
|
-
i0.ɵɵlistener("click", function
|
|
479
|
-
i0.ɵɵelement(18, "i",
|
|
361
|
+
i0.ɵɵelementStart(15, "div", 99)(16, "div", 100)(17, "button", 101);
|
|
362
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("pointer")); });
|
|
363
|
+
i0.ɵɵelement(18, "i", 102);
|
|
480
364
|
i0.ɵɵelementEnd();
|
|
481
|
-
i0.ɵɵelementStart(19, "button",
|
|
482
|
-
i0.ɵɵlistener("click", function
|
|
483
|
-
i0.ɵɵelement(20, "i",
|
|
365
|
+
i0.ɵɵelementStart(19, "button", 103);
|
|
366
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("select")); });
|
|
367
|
+
i0.ɵɵelement(20, "i", 104);
|
|
484
368
|
i0.ɵɵelementEnd();
|
|
485
|
-
i0.ɵɵelementStart(21, "button",
|
|
486
|
-
i0.ɵɵlistener("click", function
|
|
487
|
-
i0.ɵɵelement(22, "i",
|
|
369
|
+
i0.ɵɵelementStart(21, "button", 105);
|
|
370
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setChartInteractionMode("pan")); });
|
|
371
|
+
i0.ɵɵelement(22, "i", 106);
|
|
488
372
|
i0.ɵɵelementEnd()();
|
|
489
|
-
i0.ɵɵelement(23, "span",
|
|
490
|
-
i0.ɵɵelementStart(24, "button",
|
|
491
|
-
i0.ɵɵlistener("click", function
|
|
492
|
-
i0.ɵɵelement(25, "i",
|
|
373
|
+
i0.ɵɵelement(23, "span", 107);
|
|
374
|
+
i0.ɵɵelementStart(24, "button", 108);
|
|
375
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomPerfChart("in")); });
|
|
376
|
+
i0.ɵɵelement(25, "i", 109);
|
|
493
377
|
i0.ɵɵelementEnd();
|
|
494
|
-
i0.ɵɵelementStart(26, "button",
|
|
495
|
-
i0.ɵɵlistener("click", function
|
|
496
|
-
i0.ɵɵelement(27, "i",
|
|
378
|
+
i0.ɵɵelementStart(26, "button", 110);
|
|
379
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomPerfChart("out")); });
|
|
380
|
+
i0.ɵɵelement(27, "i", 111);
|
|
497
381
|
i0.ɵɵelementEnd();
|
|
498
|
-
i0.ɵɵelementStart(28, "button",
|
|
499
|
-
i0.ɵɵlistener("click", function
|
|
500
|
-
i0.ɵɵelement(29, "i",
|
|
382
|
+
i0.ɵɵelementStart(28, "button", 112);
|
|
383
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.resetPerfChartZoom()); });
|
|
384
|
+
i0.ɵɵelement(29, "i", 113);
|
|
501
385
|
i0.ɵɵelementEnd();
|
|
502
|
-
i0.ɵɵelement(30, "span",
|
|
503
|
-
i0.ɵɵelementStart(31, "label",
|
|
504
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
505
|
-
i0.ɵɵlistener("change", function
|
|
386
|
+
i0.ɵɵelement(30, "span", 107);
|
|
387
|
+
i0.ɵɵelementStart(31, "label", 114)(32, "input", 10);
|
|
388
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_input_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.chartGapCompression, $event) || (ctx_r1.chartGapCompression = $event); return i0.ɵɵresetView($event); });
|
|
389
|
+
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template_input_change_32_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGapCompressionChange()); });
|
|
506
390
|
i0.ɵɵelementEnd();
|
|
507
391
|
i0.ɵɵelementStart(33, "span");
|
|
508
392
|
i0.ɵɵtext(34, "Compress Gaps");
|
|
509
393
|
i0.ɵɵelementEnd()()()();
|
|
510
|
-
i0.ɵɵelementStart(35, "div",
|
|
394
|
+
i0.ɵɵelementStart(35, "div", 115)(36, "div", 116)(37, "span", 117);
|
|
511
395
|
i0.ɵɵtext(38, "Duration (ms)");
|
|
512
396
|
i0.ɵɵelementEnd()();
|
|
513
|
-
i0.ɵɵelement(39, "div",
|
|
397
|
+
i0.ɵɵelement(39, "div", 118, 0);
|
|
514
398
|
i0.ɵɵelementEnd();
|
|
515
|
-
i0.ɵɵelementStart(41, "div",
|
|
516
|
-
i0.ɵɵelement(43, "i",
|
|
517
|
-
i0.ɵɵconditionalCreate(44,
|
|
399
|
+
i0.ɵɵelementStart(41, "div", 119)(42, "span", 120);
|
|
400
|
+
i0.ɵɵelement(43, "i", 49);
|
|
401
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_44_Template, 1, 2)(45, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_45_Template, 1, 0)(46, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_46_Template, 1, 0);
|
|
518
402
|
i0.ɵɵelementEnd();
|
|
519
|
-
i0.ɵɵconditionalCreate(47,
|
|
403
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Conditional_47_Template, 3, 2, "span", 121);
|
|
520
404
|
i0.ɵɵelementEnd()();
|
|
521
405
|
} if (rf & 2) {
|
|
522
|
-
const
|
|
406
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
523
407
|
i0.ɵɵadvance(17);
|
|
524
|
-
i0.ɵɵclassProp("active",
|
|
408
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "pointer");
|
|
525
409
|
i0.ɵɵadvance(2);
|
|
526
|
-
i0.ɵɵclassProp("active",
|
|
410
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "select");
|
|
527
411
|
i0.ɵɵadvance(2);
|
|
528
|
-
i0.ɵɵclassProp("active",
|
|
412
|
+
i0.ɵɵclassProp("active", ctx_r1.chartInteractionMode === "pan");
|
|
529
413
|
i0.ɵɵadvance(11);
|
|
530
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
414
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.chartGapCompression);
|
|
531
415
|
i0.ɵɵadvance(12);
|
|
532
|
-
i0.ɵɵconditional(
|
|
416
|
+
i0.ɵɵconditional(ctx_r1.chartTimeRangeStart !== null && ctx_r1.chartTimeRangeEnd !== null ? 44 : ctx_r1.chartGapCompression ? 45 : 46);
|
|
533
417
|
i0.ɵɵadvance(3);
|
|
534
|
-
i0.ɵɵconditional(
|
|
418
|
+
i0.ɵɵconditional(ctx_r1.telemetrySummary ? 47 : -1);
|
|
535
419
|
} }
|
|
536
|
-
function
|
|
420
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
537
421
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
538
|
-
i0.ɵɵelementStart(0, "div",
|
|
539
|
-
i0.ɵɵlistener("click", function
|
|
540
|
-
i0.ɵɵelementStart(1, "span",
|
|
422
|
+
i0.ɵɵelementStart(0, "div", 131);
|
|
423
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template_div_click_0_listener() { const cat_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.jumpToPatternsByCategory(cat_r12.name)); });
|
|
424
|
+
i0.ɵɵelementStart(1, "span", 132);
|
|
541
425
|
i0.ɵɵtext(2);
|
|
542
426
|
i0.ɵɵelementEnd();
|
|
543
|
-
i0.ɵɵelementStart(3, "span",
|
|
427
|
+
i0.ɵɵelementStart(3, "span", 133);
|
|
544
428
|
i0.ɵɵtext(4);
|
|
545
429
|
i0.ɵɵelementEnd();
|
|
546
|
-
i0.ɵɵelementStart(5, "span",
|
|
430
|
+
i0.ɵɵelementStart(5, "span", 134);
|
|
547
431
|
i0.ɵɵtext(6);
|
|
548
432
|
i0.ɵɵpipe(7, "number");
|
|
549
433
|
i0.ɵɵelementEnd()();
|
|
@@ -556,26 +440,26 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_21
|
|
|
556
440
|
i0.ɵɵadvance(2);
|
|
557
441
|
i0.ɵɵtextInterpolate1("avg ", i0.ɵɵpipeBind2(7, 3, cat_r12.avgMs, "1.0-0"), "ms");
|
|
558
442
|
} }
|
|
559
|
-
function
|
|
560
|
-
i0.ɵɵelementStart(0, "div",
|
|
443
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
444
|
+
i0.ɵɵelementStart(0, "div", 126)(1, "h4");
|
|
561
445
|
i0.ɵɵtext(2, "By Category");
|
|
562
446
|
i0.ɵɵelementEnd();
|
|
563
|
-
i0.ɵɵelementStart(3, "div",
|
|
564
|
-
i0.ɵɵrepeaterCreate(4,
|
|
447
|
+
i0.ɵɵelementStart(3, "div", 129);
|
|
448
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_For_5_Template, 8, 6, "div", 130, _forTrack2);
|
|
565
449
|
i0.ɵɵelementEnd()();
|
|
566
450
|
} if (rf & 2) {
|
|
567
|
-
const
|
|
451
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
568
452
|
i0.ɵɵadvance(4);
|
|
569
|
-
i0.ɵɵrepeater(
|
|
453
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
570
454
|
} }
|
|
571
|
-
function
|
|
572
|
-
i0.ɵɵelementStart(0, "span",
|
|
573
|
-
i0.ɵɵelement(1, "i",
|
|
455
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
457
|
+
i0.ɵɵelement(1, "i", 148);
|
|
574
458
|
i0.ɵɵtext(2, " CACHED ");
|
|
575
459
|
i0.ɵɵelementEnd();
|
|
576
460
|
} }
|
|
577
|
-
function
|
|
578
|
-
i0.ɵɵelementStart(0, "span",
|
|
461
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
579
463
|
i0.ɵɵtext(1);
|
|
580
464
|
i0.ɵɵelementEnd();
|
|
581
465
|
} if (rf & 2) {
|
|
@@ -583,34 +467,34 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22
|
|
|
583
467
|
i0.ɵɵadvance();
|
|
584
468
|
i0.ɵɵtextInterpolate(entity_r15);
|
|
585
469
|
} }
|
|
586
|
-
function
|
|
587
|
-
i0.ɵɵelementStart(0, "span",
|
|
470
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
471
|
+
i0.ɵɵelementStart(0, "span", 150);
|
|
588
472
|
i0.ɵɵtext(1);
|
|
589
473
|
i0.ɵɵelementEnd();
|
|
590
474
|
} if (rf & 2) {
|
|
591
475
|
const query_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
592
|
-
const
|
|
476
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
593
477
|
i0.ɵɵadvance();
|
|
594
|
-
i0.ɵɵtextInterpolate1("+",
|
|
478
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.getRunViewsEntityCount(query_r14) - 4, " more");
|
|
595
479
|
} }
|
|
596
|
-
function
|
|
597
|
-
i0.ɵɵelementStart(0, "div",
|
|
598
|
-
i0.ɵɵrepeaterCreate(1,
|
|
599
|
-
i0.ɵɵconditionalCreate(3,
|
|
480
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
482
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_For_2_Template, 2, 1, "span", 149, i0.ɵɵrepeaterTrackByIdentity);
|
|
483
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Conditional_3_Template, 2, 1, "span", 150);
|
|
600
484
|
i0.ɵɵelementEnd();
|
|
601
485
|
} if (rf & 2) {
|
|
602
486
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
603
|
-
const
|
|
487
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
604
488
|
i0.ɵɵadvance();
|
|
605
|
-
i0.ɵɵrepeater(
|
|
489
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewsEntities(query_r14, 4));
|
|
606
490
|
i0.ɵɵadvance(2);
|
|
607
|
-
i0.ɵɵconditional(
|
|
491
|
+
i0.ɵɵconditional(ctx_r1.hasMoreEntities(query_r14, 4) ? 3 : -1);
|
|
608
492
|
} }
|
|
609
|
-
function
|
|
610
|
-
i0.ɵɵelementStart(0, "span",
|
|
493
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
494
|
+
i0.ɵɵelementStart(0, "span", 152)(1, "span", 153);
|
|
611
495
|
i0.ɵɵtext(2);
|
|
612
496
|
i0.ɵɵelementEnd();
|
|
613
|
-
i0.ɵɵelementStart(3, "span",
|
|
497
|
+
i0.ɵɵelementStart(3, "span", 154);
|
|
614
498
|
i0.ɵɵtext(4);
|
|
615
499
|
i0.ɵɵelementEnd()();
|
|
616
500
|
} if (rf & 2) {
|
|
@@ -622,51 +506,51 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22
|
|
|
622
506
|
i0.ɵɵadvance(2);
|
|
623
507
|
i0.ɵɵtextInterpolate(pill_r16.value);
|
|
624
508
|
} }
|
|
625
|
-
function
|
|
626
|
-
i0.ɵɵelementStart(0, "div",
|
|
627
|
-
i0.ɵɵrepeaterCreate(1,
|
|
509
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
510
|
+
i0.ɵɵelementStart(0, "div", 145);
|
|
511
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_For_2_Template, 5, 5, "span", 151, _forTrack4);
|
|
628
512
|
i0.ɵɵelementEnd();
|
|
629
513
|
} if (rf & 2) {
|
|
630
514
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
631
|
-
const
|
|
515
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
632
516
|
i0.ɵɵadvance();
|
|
633
|
-
i0.ɵɵrepeater(
|
|
517
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewPills(query_r14));
|
|
634
518
|
} }
|
|
635
|
-
function
|
|
636
|
-
i0.ɵɵelementStart(0, "div",
|
|
519
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
+
i0.ɵɵelementStart(0, "div", 146);
|
|
637
521
|
i0.ɵɵtext(1);
|
|
638
522
|
i0.ɵɵelementEnd();
|
|
639
523
|
} if (rf & 2) {
|
|
640
524
|
const query_r14 = i0.ɵɵnextContext().$implicit;
|
|
641
|
-
const
|
|
525
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
642
526
|
i0.ɵɵadvance();
|
|
643
|
-
i0.ɵɵtextInterpolate(
|
|
527
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(query_r14.filter, 60));
|
|
644
528
|
} }
|
|
645
|
-
function
|
|
529
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
646
530
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
647
|
-
i0.ɵɵelementStart(0, "div",
|
|
648
|
-
i0.ɵɵlistener("click", function
|
|
649
|
-
i0.ɵɵelementStart(1, "div",
|
|
531
|
+
i0.ɵɵelementStart(0, "div", 138);
|
|
532
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template_div_click_0_listener() { const query_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openEventDetailPanel(query_r14)); });
|
|
533
|
+
i0.ɵɵelementStart(1, "div", 139)(2, "span", 140);
|
|
650
534
|
i0.ɵɵtext(3);
|
|
651
535
|
i0.ɵɵelementEnd();
|
|
652
|
-
i0.ɵɵelementStart(4, "span",
|
|
536
|
+
i0.ɵɵelementStart(4, "span", 141);
|
|
653
537
|
i0.ɵɵtext(5);
|
|
654
538
|
i0.ɵɵelementEnd();
|
|
655
|
-
i0.ɵɵconditionalCreate(6,
|
|
656
|
-
i0.ɵɵelementStart(7, "span",
|
|
539
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_6_Template, 3, 0, "span", 142);
|
|
540
|
+
i0.ɵɵelementStart(7, "span", 143);
|
|
657
541
|
i0.ɵɵtext(8);
|
|
658
542
|
i0.ɵɵpipe(9, "number");
|
|
659
543
|
i0.ɵɵelementEnd()();
|
|
660
|
-
i0.ɵɵconditionalCreate(10,
|
|
661
|
-
i0.ɵɵconditionalCreate(11,
|
|
662
|
-
i0.ɵɵconditionalCreate(12,
|
|
663
|
-
i0.ɵɵelementStart(13, "div",
|
|
544
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_10_Template, 4, 1, "div", 144);
|
|
545
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_11_Template, 3, 0, "div", 145);
|
|
546
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Conditional_12_Template, 2, 1, "div", 146);
|
|
547
|
+
i0.ɵɵelementStart(13, "div", 147);
|
|
664
548
|
i0.ɵɵtext(14);
|
|
665
549
|
i0.ɵɵelementEnd()();
|
|
666
550
|
} if (rf & 2) {
|
|
667
551
|
const query_r14 = ctx.$implicit;
|
|
668
|
-
const
|
|
669
|
-
i0.ɵɵclassProp("cache-hit",
|
|
552
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
553
|
+
i0.ɵɵclassProp("cache-hit", ctx_r1.isCacheHit(query_r14));
|
|
670
554
|
i0.ɵɵadvance(2);
|
|
671
555
|
i0.ɵɵclassMap("cat-" + query_r14.category.toLowerCase());
|
|
672
556
|
i0.ɵɵadvance();
|
|
@@ -674,134 +558,134 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_48_Conditional_22
|
|
|
674
558
|
i0.ɵɵadvance(2);
|
|
675
559
|
i0.ɵɵtextInterpolate(query_r14.entityName || query_r14.operation);
|
|
676
560
|
i0.ɵɵadvance();
|
|
677
|
-
i0.ɵɵconditional(
|
|
561
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(query_r14) ? 6 : -1);
|
|
678
562
|
i0.ɵɵadvance(2);
|
|
679
563
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(9, 12, query_r14.elapsedMs, "1.0-0"), "ms");
|
|
680
564
|
i0.ɵɵadvance(2);
|
|
681
|
-
i0.ɵɵconditional(
|
|
565
|
+
i0.ɵɵconditional(ctx_r1.isRunViewsOperation(query_r14) ? 10 : -1);
|
|
682
566
|
i0.ɵɵadvance();
|
|
683
|
-
i0.ɵɵconditional(
|
|
567
|
+
i0.ɵɵconditional(ctx_r1.isRunViewOperation(query_r14) && ctx_r1.getRunViewPills(query_r14).length > 0 ? 11 : -1);
|
|
684
568
|
i0.ɵɵadvance();
|
|
685
569
|
i0.ɵɵconditional(query_r14.filter ? 12 : -1);
|
|
686
570
|
i0.ɵɵadvance(2);
|
|
687
|
-
i0.ɵɵtextInterpolate(
|
|
571
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(query_r14.timestamp));
|
|
688
572
|
} }
|
|
689
|
-
function
|
|
690
|
-
i0.ɵɵelementStart(0, "div",
|
|
691
|
-
i0.ɵɵelement(2, "i",
|
|
573
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
574
|
+
i0.ɵɵelementStart(0, "div", 127)(1, "h4");
|
|
575
|
+
i0.ɵɵelement(2, "i", 135);
|
|
692
576
|
i0.ɵɵtext(3);
|
|
693
577
|
i0.ɵɵelementEnd();
|
|
694
|
-
i0.ɵɵelementStart(4, "div",
|
|
695
|
-
i0.ɵɵrepeaterCreate(5,
|
|
578
|
+
i0.ɵɵelementStart(4, "div", 136);
|
|
579
|
+
i0.ɵɵrepeaterCreate(5, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_For_6_Template, 15, 15, "div", 137, _forTrack3);
|
|
696
580
|
i0.ɵɵelementEnd()();
|
|
697
581
|
} if (rf & 2) {
|
|
698
|
-
const
|
|
582
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
699
583
|
i0.ɵɵadvance(3);
|
|
700
|
-
i0.ɵɵtextInterpolate1(" Slow Operations (>",
|
|
584
|
+
i0.ɵɵtextInterpolate1(" Slow Operations (>", ctx_r1.slowQueryThresholdMs, "ms) ");
|
|
701
585
|
i0.ɵɵadvance(2);
|
|
702
|
-
i0.ɵɵrepeater(
|
|
586
|
+
i0.ɵɵrepeater(ctx_r1.slowQueries.slice(0, 10));
|
|
703
587
|
} }
|
|
704
|
-
function
|
|
705
|
-
i0.ɵɵelementStart(0, "div",
|
|
706
|
-
i0.ɵɵelement(1, "i",
|
|
588
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
+
i0.ɵɵelementStart(0, "div", 128);
|
|
590
|
+
i0.ɵɵelement(1, "i", 51);
|
|
707
591
|
i0.ɵɵelementStart(2, "span");
|
|
708
592
|
i0.ɵɵtext(3);
|
|
709
593
|
i0.ɵɵelementEnd()();
|
|
710
594
|
} if (rf & 2) {
|
|
711
|
-
const
|
|
595
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
712
596
|
i0.ɵɵadvance(3);
|
|
713
|
-
i0.ɵɵtextInterpolate1("No slow operations detected. All operations completed under ",
|
|
597
|
+
i0.ɵɵtextInterpolate1("No slow operations detected. All operations completed under ", ctx_r1.slowQueryThresholdMs, "ms.");
|
|
714
598
|
} }
|
|
715
|
-
function
|
|
716
|
-
i0.ɵɵelementStart(0, "div",
|
|
599
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
600
|
+
i0.ɵɵelementStart(0, "div", 122)(1, "div", 123)(2, "div", 124);
|
|
717
601
|
i0.ɵɵtext(3);
|
|
718
602
|
i0.ɵɵelementEnd();
|
|
719
|
-
i0.ɵɵelementStart(4, "div",
|
|
603
|
+
i0.ɵɵelementStart(4, "div", 125);
|
|
720
604
|
i0.ɵɵtext(5, "Total Events");
|
|
721
605
|
i0.ɵɵelementEnd()();
|
|
722
|
-
i0.ɵɵelementStart(6, "div",
|
|
606
|
+
i0.ɵɵelementStart(6, "div", 123)(7, "div", 124);
|
|
723
607
|
i0.ɵɵtext(8);
|
|
724
608
|
i0.ɵɵelementEnd();
|
|
725
|
-
i0.ɵɵelementStart(9, "div",
|
|
609
|
+
i0.ɵɵelementStart(9, "div", 125);
|
|
726
610
|
i0.ɵɵtext(10, "Unique Patterns");
|
|
727
611
|
i0.ɵɵelementEnd()();
|
|
728
|
-
i0.ɵɵelementStart(11, "div",
|
|
612
|
+
i0.ɵɵelementStart(11, "div", 123)(12, "div", 124);
|
|
729
613
|
i0.ɵɵtext(13);
|
|
730
614
|
i0.ɵɵelementEnd();
|
|
731
|
-
i0.ɵɵelementStart(14, "div",
|
|
615
|
+
i0.ɵɵelementStart(14, "div", 125);
|
|
732
616
|
i0.ɵɵtext(15, "Insights");
|
|
733
617
|
i0.ɵɵelementEnd()();
|
|
734
|
-
i0.ɵɵelementStart(16, "div",
|
|
618
|
+
i0.ɵɵelementStart(16, "div", 123)(17, "div", 124);
|
|
735
619
|
i0.ɵɵtext(18);
|
|
736
620
|
i0.ɵɵelementEnd();
|
|
737
|
-
i0.ɵɵelementStart(19, "div",
|
|
621
|
+
i0.ɵɵelementStart(19, "div", 125);
|
|
738
622
|
i0.ɵɵtext(20, "Active");
|
|
739
623
|
i0.ɵɵelementEnd()()();
|
|
740
|
-
i0.ɵɵconditionalCreate(21,
|
|
741
|
-
i0.ɵɵconditionalCreate(22,
|
|
624
|
+
i0.ɵɵconditionalCreate(21, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_21_Template, 6, 0, "div", 126);
|
|
625
|
+
i0.ɵɵconditionalCreate(22, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_22_Template, 7, 1, "div", 127)(23, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Conditional_23_Template, 4, 1, "div", 128);
|
|
742
626
|
} if (rf & 2) {
|
|
743
|
-
const
|
|
627
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
744
628
|
i0.ɵɵadvance(3);
|
|
745
|
-
i0.ɵɵtextInterpolate((
|
|
629
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalEvents) || 0);
|
|
746
630
|
i0.ɵɵadvance(5);
|
|
747
|
-
i0.ɵɵtextInterpolate((
|
|
631
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalPatterns) || 0);
|
|
748
632
|
i0.ɵɵadvance(5);
|
|
749
|
-
i0.ɵɵtextInterpolate((
|
|
633
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalInsights) || 0);
|
|
750
634
|
i0.ɵɵadvance(5);
|
|
751
|
-
i0.ɵɵtextInterpolate((
|
|
635
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.activeEvents) || 0);
|
|
752
636
|
i0.ɵɵadvance(3);
|
|
753
|
-
i0.ɵɵconditional(
|
|
637
|
+
i0.ɵɵconditional(ctx_r1.telemetrySummary && ctx_r1.telemetrySummary.totalEvents > 0 ? 21 : -1);
|
|
754
638
|
i0.ɵɵadvance();
|
|
755
|
-
i0.ɵɵconditional(
|
|
639
|
+
i0.ɵɵconditional(ctx_r1.slowQueries.length > 0 ? 22 : ctx_r1.telemetryEnabled && ctx_r1.telemetrySummary && ctx_r1.telemetrySummary.totalEvents > 0 ? 23 : -1);
|
|
756
640
|
} }
|
|
757
|
-
function
|
|
641
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
758
642
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
759
|
-
i0.ɵɵelementStart(0, "button",
|
|
760
|
-
i0.ɵɵlistener("click", function
|
|
761
|
-
i0.ɵɵelement(1, "i",
|
|
643
|
+
i0.ɵɵelementStart(0, "button", 166);
|
|
644
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
645
|
+
i0.ɵɵelement(1, "i", 91);
|
|
762
646
|
i0.ɵɵelementEnd();
|
|
763
647
|
} }
|
|
764
|
-
function
|
|
648
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
765
649
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
766
|
-
i0.ɵɵelementStart(0, "button",
|
|
767
|
-
i0.ɵɵlistener("click", function
|
|
650
|
+
i0.ɵɵelementStart(0, "button", 161);
|
|
651
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template_button_click_0_listener() { const cat_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCategoryFilterByName(cat_r20.name)); });
|
|
768
652
|
i0.ɵɵtext(1);
|
|
769
653
|
i0.ɵɵelementEnd();
|
|
770
654
|
} if (rf & 2) {
|
|
771
655
|
const cat_r20 = ctx.$implicit;
|
|
772
|
-
const
|
|
773
|
-
i0.ɵɵclassProp("active",
|
|
656
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
657
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === cat_r20.name);
|
|
774
658
|
i0.ɵɵadvance();
|
|
775
659
|
i0.ɵɵtextInterpolate1(" ", cat_r20.name, " ");
|
|
776
660
|
} }
|
|
777
|
-
function
|
|
778
|
-
i0.ɵɵelementStart(0, "div",
|
|
779
|
-
i0.ɵɵelement(1, "i",
|
|
661
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
662
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
663
|
+
i0.ɵɵelement(1, "i", 148);
|
|
780
664
|
i0.ɵɵelementEnd();
|
|
781
665
|
} }
|
|
782
|
-
function
|
|
783
|
-
i0.ɵɵelement(0, "div",
|
|
666
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
667
|
+
i0.ɵɵelement(0, "div", 171);
|
|
784
668
|
} }
|
|
785
|
-
function
|
|
786
|
-
i0.ɵɵelementStart(0, "span",
|
|
787
|
-
i0.ɵɵelement(1, "i",
|
|
669
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
670
|
+
i0.ɵɵelementStart(0, "span", 176);
|
|
671
|
+
i0.ɵɵelement(1, "i", 148);
|
|
788
672
|
i0.ɵɵtext(2, " CACHED ");
|
|
789
673
|
i0.ɵɵelementEnd();
|
|
790
674
|
} }
|
|
791
|
-
function
|
|
792
|
-
i0.ɵɵelementStart(0, "span",
|
|
675
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
676
|
+
i0.ɵɵelementStart(0, "span", 184);
|
|
793
677
|
i0.ɵɵtext(1);
|
|
794
678
|
i0.ɵɵpipe(2, "number");
|
|
795
679
|
i0.ɵɵelementEnd();
|
|
796
680
|
} if (rf & 2) {
|
|
797
681
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
798
|
-
const
|
|
799
|
-
i0.ɵɵclassProp("slow", (event_r22.elapsedMs || 0) >=
|
|
682
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
683
|
+
i0.ɵɵclassProp("slow", (event_r22.elapsedMs || 0) >= ctx_r1.slowQueryThresholdMs);
|
|
800
684
|
i0.ɵɵadvance();
|
|
801
685
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 3, event_r22.elapsedMs, "1.0-0"), "ms ");
|
|
802
686
|
} }
|
|
803
|
-
function
|
|
804
|
-
i0.ɵɵelementStart(0, "span",
|
|
687
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelementStart(0, "span", 180);
|
|
805
689
|
i0.ɵɵtext(1);
|
|
806
690
|
i0.ɵɵelementEnd();
|
|
807
691
|
} if (rf & 2) {
|
|
@@ -809,8 +693,8 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12
|
|
|
809
693
|
i0.ɵɵadvance();
|
|
810
694
|
i0.ɵɵtextInterpolate(event_r22.entityName);
|
|
811
695
|
} }
|
|
812
|
-
function
|
|
813
|
-
i0.ɵɵelementStart(0, "span",
|
|
696
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
697
|
+
i0.ɵɵelementStart(0, "span", 185);
|
|
814
698
|
i0.ɵɵtext(1);
|
|
815
699
|
i0.ɵɵelementEnd();
|
|
816
700
|
} if (rf & 2) {
|
|
@@ -818,34 +702,34 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12
|
|
|
818
702
|
i0.ɵɵadvance();
|
|
819
703
|
i0.ɵɵtextInterpolate(entity_r23);
|
|
820
704
|
} }
|
|
821
|
-
function
|
|
822
|
-
i0.ɵɵelementStart(0, "span",
|
|
705
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
706
|
+
i0.ɵɵelementStart(0, "span", 186);
|
|
823
707
|
i0.ɵɵtext(1);
|
|
824
708
|
i0.ɵɵelementEnd();
|
|
825
709
|
} if (rf & 2) {
|
|
826
710
|
const event_r22 = i0.ɵɵnextContext(2).$implicit;
|
|
827
|
-
const
|
|
711
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
828
712
|
i0.ɵɵadvance();
|
|
829
|
-
i0.ɵɵtextInterpolate1("+",
|
|
713
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.getRunViewsEntityCount(event_r22) - 3, " more");
|
|
830
714
|
} }
|
|
831
|
-
function
|
|
832
|
-
i0.ɵɵelementStart(0, "div",
|
|
833
|
-
i0.ɵɵrepeaterCreate(1,
|
|
834
|
-
i0.ɵɵconditionalCreate(3,
|
|
715
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
716
|
+
i0.ɵɵelementStart(0, "div", 181);
|
|
717
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_For_2_Template, 2, 1, "span", 185, i0.ɵɵrepeaterTrackByIdentity);
|
|
718
|
+
i0.ɵɵconditionalCreate(3, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Conditional_3_Template, 2, 1, "span", 186);
|
|
835
719
|
i0.ɵɵelementEnd();
|
|
836
720
|
} if (rf & 2) {
|
|
837
721
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
838
|
-
const
|
|
722
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
839
723
|
i0.ɵɵadvance();
|
|
840
|
-
i0.ɵɵrepeater(
|
|
724
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewsEntities(event_r22, 3));
|
|
841
725
|
i0.ɵɵadvance(2);
|
|
842
|
-
i0.ɵɵconditional(
|
|
726
|
+
i0.ɵɵconditional(ctx_r1.hasMoreEntities(event_r22, 3) ? 3 : -1);
|
|
843
727
|
} }
|
|
844
|
-
function
|
|
845
|
-
i0.ɵɵelementStart(0, "span",
|
|
728
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
729
|
+
i0.ɵɵelementStart(0, "span", 188)(1, "span", 153);
|
|
846
730
|
i0.ɵɵtext(2);
|
|
847
731
|
i0.ɵɵelementEnd();
|
|
848
|
-
i0.ɵɵelementStart(3, "span",
|
|
732
|
+
i0.ɵɵelementStart(3, "span", 154);
|
|
849
733
|
i0.ɵɵtext(4);
|
|
850
734
|
i0.ɵɵelementEnd()();
|
|
851
735
|
} if (rf & 2) {
|
|
@@ -857,67 +741,67 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12
|
|
|
857
741
|
i0.ɵɵadvance(2);
|
|
858
742
|
i0.ɵɵtextInterpolate(pill_r24.value);
|
|
859
743
|
} }
|
|
860
|
-
function
|
|
861
|
-
i0.ɵɵelementStart(0, "div",
|
|
862
|
-
i0.ɵɵrepeaterCreate(1,
|
|
744
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
745
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
746
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_For_2_Template, 5, 5, "span", 187, _forTrack4);
|
|
863
747
|
i0.ɵɵelementEnd();
|
|
864
748
|
} if (rf & 2) {
|
|
865
749
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
866
|
-
const
|
|
750
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
867
751
|
i0.ɵɵadvance();
|
|
868
|
-
i0.ɵɵrepeater(
|
|
752
|
+
i0.ɵɵrepeater(ctx_r1.getRunViewPills(event_r22));
|
|
869
753
|
} }
|
|
870
|
-
function
|
|
871
|
-
i0.ɵɵelementStart(0, "div",
|
|
754
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
755
|
+
i0.ɵɵelementStart(0, "div", 183);
|
|
872
756
|
i0.ɵɵtext(1);
|
|
873
757
|
i0.ɵɵelementEnd();
|
|
874
758
|
} if (rf & 2) {
|
|
875
759
|
const event_r22 = i0.ɵɵnextContext().$implicit;
|
|
876
|
-
const
|
|
760
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
877
761
|
i0.ɵɵadvance();
|
|
878
|
-
i0.ɵɵtextInterpolate(
|
|
762
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(event_r22.filter, 80));
|
|
879
763
|
} }
|
|
880
|
-
function
|
|
764
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
881
765
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
882
|
-
i0.ɵɵelementStart(0, "div",
|
|
883
|
-
i0.ɵɵlistener("click", function
|
|
884
|
-
i0.ɵɵelementStart(1, "div",
|
|
885
|
-
i0.ɵɵconditionalCreate(2,
|
|
886
|
-
i0.ɵɵelement(4, "div",
|
|
766
|
+
i0.ɵɵelementStart(0, "div", 168);
|
|
767
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template_div_click_0_listener() { const event_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openEventDetailPanel(event_r22)); });
|
|
768
|
+
i0.ɵɵelementStart(1, "div", 169);
|
|
769
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_2_Template, 2, 0, "div", 170)(3, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_3_Template, 1, 0, "div", 171);
|
|
770
|
+
i0.ɵɵelement(4, "div", 172);
|
|
887
771
|
i0.ɵɵelementEnd();
|
|
888
|
-
i0.ɵɵelementStart(5, "div",
|
|
772
|
+
i0.ɵɵelementStart(5, "div", 173)(6, "div", 174)(7, "span", 175);
|
|
889
773
|
i0.ɵɵtext(8);
|
|
890
774
|
i0.ɵɵelementEnd();
|
|
891
|
-
i0.ɵɵelementStart(9, "span",
|
|
775
|
+
i0.ɵɵelementStart(9, "span", 140);
|
|
892
776
|
i0.ɵɵtext(10);
|
|
893
777
|
i0.ɵɵelementEnd();
|
|
894
|
-
i0.ɵɵconditionalCreate(11,
|
|
895
|
-
i0.ɵɵconditionalCreate(12,
|
|
778
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_11_Template, 3, 0, "span", 176);
|
|
779
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_12_Template, 3, 6, "span", 177);
|
|
896
780
|
i0.ɵɵelementEnd();
|
|
897
|
-
i0.ɵɵelementStart(13, "div",
|
|
781
|
+
i0.ɵɵelementStart(13, "div", 178)(14, "span", 179);
|
|
898
782
|
i0.ɵɵtext(15);
|
|
899
783
|
i0.ɵɵelementEnd();
|
|
900
|
-
i0.ɵɵconditionalCreate(16,
|
|
901
|
-
i0.ɵɵconditionalCreate(17,
|
|
784
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_16_Template, 2, 1, "span", 180);
|
|
785
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_17_Template, 4, 1, "div", 181);
|
|
902
786
|
i0.ɵɵelementEnd();
|
|
903
|
-
i0.ɵɵconditionalCreate(18,
|
|
904
|
-
i0.ɵɵconditionalCreate(19,
|
|
787
|
+
i0.ɵɵconditionalCreate(18, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_18_Template, 3, 0, "div", 182);
|
|
788
|
+
i0.ɵɵconditionalCreate(19, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Conditional_19_Template, 2, 1, "div", 183);
|
|
905
789
|
i0.ɵɵelementEnd()();
|
|
906
790
|
} if (rf & 2) {
|
|
907
791
|
const event_r22 = ctx.$implicit;
|
|
908
|
-
const
|
|
792
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
909
793
|
i0.ɵɵclassMap("tl-" + event_r22.category.toLowerCase());
|
|
910
|
-
i0.ɵɵclassProp("cache-hit",
|
|
794
|
+
i0.ɵɵclassProp("cache-hit", ctx_r1.isCacheHit(event_r22));
|
|
911
795
|
i0.ɵɵadvance(2);
|
|
912
|
-
i0.ɵɵconditional(
|
|
796
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(event_r22) ? 2 : 3);
|
|
913
797
|
i0.ɵɵadvance(6);
|
|
914
|
-
i0.ɵɵtextInterpolate(
|
|
798
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(event_r22.timestamp));
|
|
915
799
|
i0.ɵɵadvance();
|
|
916
800
|
i0.ɵɵclassMap("cat-" + event_r22.category.toLowerCase());
|
|
917
801
|
i0.ɵɵadvance();
|
|
918
802
|
i0.ɵɵtextInterpolate1(" ", event_r22.category, " ");
|
|
919
803
|
i0.ɵɵadvance();
|
|
920
|
-
i0.ɵɵconditional(
|
|
804
|
+
i0.ɵɵconditional(ctx_r1.isCacheHit(event_r22) ? 11 : -1);
|
|
921
805
|
i0.ɵɵadvance();
|
|
922
806
|
i0.ɵɵconditional(event_r22.elapsedMs !== undefined ? 12 : -1);
|
|
923
807
|
i0.ɵɵadvance(3);
|
|
@@ -925,79 +809,79 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_49_Conditional_12
|
|
|
925
809
|
i0.ɵɵadvance();
|
|
926
810
|
i0.ɵɵconditional(event_r22.entityName ? 16 : -1);
|
|
927
811
|
i0.ɵɵadvance();
|
|
928
|
-
i0.ɵɵconditional(
|
|
812
|
+
i0.ɵɵconditional(ctx_r1.isRunViewsOperation(event_r22) ? 17 : -1);
|
|
929
813
|
i0.ɵɵadvance();
|
|
930
|
-
i0.ɵɵconditional(
|
|
814
|
+
i0.ɵɵconditional(ctx_r1.isRunViewOperation(event_r22) && ctx_r1.getRunViewPills(event_r22).length > 0 ? 18 : -1);
|
|
931
815
|
i0.ɵɵadvance();
|
|
932
816
|
i0.ɵɵconditional(event_r22.filter ? 19 : -1);
|
|
933
817
|
} }
|
|
934
|
-
function
|
|
935
|
-
i0.ɵɵrepeaterCreate(0,
|
|
818
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
819
|
+
i0.ɵɵrepeaterCreate(0, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_For_1_Template, 20, 16, "div", 167, _forTrack3);
|
|
936
820
|
} if (rf & 2) {
|
|
937
|
-
const
|
|
938
|
-
i0.ɵɵrepeater(
|
|
821
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
822
|
+
i0.ɵɵrepeater(ctx_r1.filteredEvents.slice(0, 50));
|
|
939
823
|
} }
|
|
940
|
-
function
|
|
941
|
-
i0.ɵɵelementStart(0, "div",
|
|
942
|
-
i0.ɵɵelement(1, "i",
|
|
824
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
825
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
826
|
+
i0.ɵɵelement(1, "i", 189);
|
|
943
827
|
i0.ɵɵelementStart(2, "p");
|
|
944
828
|
i0.ɵɵtext(3, "No events recorded yet");
|
|
945
829
|
i0.ɵɵelementEnd()();
|
|
946
830
|
} }
|
|
947
|
-
function
|
|
831
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template(rf, ctx) { if (rf & 1) {
|
|
948
832
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
949
|
-
i0.ɵɵelementStart(0, "div",
|
|
950
|
-
i0.ɵɵelement(2, "i",
|
|
951
|
-
i0.ɵɵelementStart(3, "input",
|
|
952
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
953
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
833
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "div", 156);
|
|
834
|
+
i0.ɵɵelement(2, "i", 157);
|
|
835
|
+
i0.ɵɵelementStart(3, "input", 158);
|
|
836
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.searchQuery, $event) || (ctx_r1.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
837
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSearchChange()); });
|
|
954
838
|
i0.ɵɵelementEnd();
|
|
955
|
-
i0.ɵɵconditionalCreate(4,
|
|
839
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_4_Template, 2, 0, "button", 159);
|
|
956
840
|
i0.ɵɵelementEnd();
|
|
957
|
-
i0.ɵɵelementStart(5, "div",
|
|
958
|
-
i0.ɵɵlistener("click", function
|
|
841
|
+
i0.ɵɵelementStart(5, "div", 160)(6, "button", 161);
|
|
842
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCategoryFilter("all")); });
|
|
959
843
|
i0.ɵɵtext(7, " All ");
|
|
960
844
|
i0.ɵɵelementEnd();
|
|
961
|
-
i0.ɵɵrepeaterCreate(8,
|
|
845
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_17_Conditional_49_For_9_Template, 2, 3, "button", 162, _forTrack2);
|
|
962
846
|
i0.ɵɵelementEnd()();
|
|
963
|
-
i0.ɵɵelementStart(10, "div",
|
|
964
|
-
i0.ɵɵconditionalCreate(12,
|
|
847
|
+
i0.ɵɵelementStart(10, "div", 163)(11, "div", 164);
|
|
848
|
+
i0.ɵɵconditionalCreate(12, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_12_Template, 2, 0)(13, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Conditional_13_Template, 4, 0, "div", 165);
|
|
965
849
|
i0.ɵɵelementEnd()();
|
|
966
850
|
} if (rf & 2) {
|
|
967
|
-
const
|
|
851
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
968
852
|
i0.ɵɵadvance(3);
|
|
969
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
853
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.searchQuery);
|
|
970
854
|
i0.ɵɵadvance();
|
|
971
|
-
i0.ɵɵconditional(
|
|
855
|
+
i0.ɵɵconditional(ctx_r1.searchQuery ? 4 : -1);
|
|
972
856
|
i0.ɵɵadvance(2);
|
|
973
|
-
i0.ɵɵclassProp("active",
|
|
857
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === "all");
|
|
974
858
|
i0.ɵɵadvance(2);
|
|
975
|
-
i0.ɵɵrepeater(
|
|
859
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
976
860
|
i0.ɵɵadvance(4);
|
|
977
|
-
i0.ɵɵconditional(
|
|
861
|
+
i0.ɵɵconditional(ctx_r1.filteredEvents.length > 0 ? 12 : 13);
|
|
978
862
|
} }
|
|
979
|
-
function
|
|
863
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
980
864
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
981
|
-
i0.ɵɵelementStart(0, "button",
|
|
982
|
-
i0.ɵɵlistener("click", function
|
|
983
|
-
i0.ɵɵelement(1, "i",
|
|
865
|
+
i0.ɵɵelementStart(0, "button", 166);
|
|
866
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
867
|
+
i0.ɵɵelement(1, "i", 91);
|
|
984
868
|
i0.ɵɵelementEnd();
|
|
985
869
|
} }
|
|
986
|
-
function
|
|
870
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
987
871
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
988
|
-
i0.ɵɵelementStart(0, "button",
|
|
989
|
-
i0.ɵɵlistener("click", function
|
|
872
|
+
i0.ɵɵelementStart(0, "button", 161);
|
|
873
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template_button_click_0_listener() { const cat_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCategoryFilterByName(cat_r28.name)); });
|
|
990
874
|
i0.ɵɵtext(1);
|
|
991
875
|
i0.ɵɵelementEnd();
|
|
992
876
|
} if (rf & 2) {
|
|
993
877
|
const cat_r28 = ctx.$implicit;
|
|
994
|
-
const
|
|
995
|
-
i0.ɵɵclassProp("active",
|
|
878
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
879
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === cat_r28.name);
|
|
996
880
|
i0.ɵɵadvance();
|
|
997
881
|
i0.ɵɵtextInterpolate1(" ", cat_r28.name, " ");
|
|
998
882
|
} }
|
|
999
|
-
function
|
|
1000
|
-
i0.ɵɵelementStart(0, "span",
|
|
883
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
+
i0.ɵɵelementStart(0, "span", 201);
|
|
1001
885
|
i0.ɵɵtext(1);
|
|
1002
886
|
i0.ɵɵelementEnd();
|
|
1003
887
|
} if (rf & 2) {
|
|
@@ -1005,40 +889,40 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10
|
|
|
1005
889
|
i0.ɵɵadvance();
|
|
1006
890
|
i0.ɵɵtextInterpolate(pattern_r30.count);
|
|
1007
891
|
} }
|
|
1008
|
-
function
|
|
892
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1009
893
|
i0.ɵɵtext(0);
|
|
1010
894
|
} if (rf & 2) {
|
|
1011
895
|
const pattern_r30 = i0.ɵɵnextContext().$implicit;
|
|
1012
896
|
i0.ɵɵtextInterpolate1(" ", pattern_r30.count, " ");
|
|
1013
897
|
} }
|
|
1014
|
-
function
|
|
1015
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
898
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Template(rf, ctx) { if (rf & 1) {
|
|
899
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 197);
|
|
1016
900
|
i0.ɵɵtext(3);
|
|
1017
901
|
i0.ɵɵelementEnd()();
|
|
1018
|
-
i0.ɵɵelementStart(4, "td",
|
|
902
|
+
i0.ɵɵelementStart(4, "td", 198);
|
|
1019
903
|
i0.ɵɵtext(5);
|
|
1020
904
|
i0.ɵɵelementEnd();
|
|
1021
|
-
i0.ɵɵelementStart(6, "td",
|
|
905
|
+
i0.ɵɵelementStart(6, "td", 199);
|
|
1022
906
|
i0.ɵɵtext(7);
|
|
1023
907
|
i0.ɵɵelementEnd();
|
|
1024
|
-
i0.ɵɵelementStart(8, "td",
|
|
908
|
+
i0.ɵɵelementStart(8, "td", 200);
|
|
1025
909
|
i0.ɵɵtext(9);
|
|
1026
910
|
i0.ɵɵelementEnd();
|
|
1027
|
-
i0.ɵɵelementStart(10, "td",
|
|
1028
|
-
i0.ɵɵconditionalCreate(11,
|
|
911
|
+
i0.ɵɵelementStart(10, "td", 54);
|
|
912
|
+
i0.ɵɵconditionalCreate(11, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_11_Template, 2, 1, "span", 201)(12, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Conditional_12_Template, 1, 1);
|
|
1029
913
|
i0.ɵɵelementEnd();
|
|
1030
|
-
i0.ɵɵelementStart(13, "td",
|
|
914
|
+
i0.ɵɵelementStart(13, "td", 54);
|
|
1031
915
|
i0.ɵɵtext(14);
|
|
1032
916
|
i0.ɵɵpipe(15, "number");
|
|
1033
917
|
i0.ɵɵelementEnd();
|
|
1034
|
-
i0.ɵɵelementStart(16, "td",
|
|
918
|
+
i0.ɵɵelementStart(16, "td", 54);
|
|
1035
919
|
i0.ɵɵtext(17);
|
|
1036
920
|
i0.ɵɵpipe(18, "number");
|
|
1037
921
|
i0.ɵɵelementEnd()();
|
|
1038
922
|
} if (rf & 2) {
|
|
1039
923
|
const pattern_r30 = ctx.$implicit;
|
|
1040
|
-
const
|
|
1041
|
-
i0.ɵɵclassProp("duplicate-row", pattern_r30.count >= 2)("slow-row", pattern_r30.avgElapsedMs >=
|
|
924
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
925
|
+
i0.ɵɵclassProp("duplicate-row", pattern_r30.count >= 2)("slow-row", pattern_r30.avgElapsedMs >= ctx_r1.slowQueryThresholdMs);
|
|
1042
926
|
i0.ɵɵadvance(2);
|
|
1043
927
|
i0.ɵɵclassMap("cat-" + pattern_r30.category.toLowerCase());
|
|
1044
928
|
i0.ɵɵadvance();
|
|
@@ -1050,123 +934,123 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_50_Conditional_10
|
|
|
1050
934
|
i0.ɵɵadvance();
|
|
1051
935
|
i0.ɵɵproperty("title", pattern_r30.filter || "");
|
|
1052
936
|
i0.ɵɵadvance();
|
|
1053
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
937
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.truncateString(pattern_r30.filter, 30), " ");
|
|
1054
938
|
i0.ɵɵadvance(2);
|
|
1055
939
|
i0.ɵɵconditional(pattern_r30.count >= 2 ? 11 : 12);
|
|
1056
940
|
i0.ɵɵadvance(2);
|
|
1057
|
-
i0.ɵɵclassProp("slow-value", pattern_r30.avgElapsedMs >=
|
|
941
|
+
i0.ɵɵclassProp("slow-value", pattern_r30.avgElapsedMs >= ctx_r1.slowQueryThresholdMs);
|
|
1058
942
|
i0.ɵɵadvance();
|
|
1059
943
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(15, 16, pattern_r30.avgElapsedMs, "1.1-1"), " ");
|
|
1060
944
|
i0.ɵɵadvance(3);
|
|
1061
945
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 19, pattern_r30.totalElapsedMs, "1.0-0"));
|
|
1062
946
|
} }
|
|
1063
|
-
function
|
|
947
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1064
948
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1065
|
-
i0.ɵɵelementStart(0, "div",
|
|
1066
|
-
i0.ɵɵlistener("click", function
|
|
949
|
+
i0.ɵɵelementStart(0, "div", 191)(1, "div", 192)(2, "table", 193)(3, "thead")(4, "tr")(5, "th", 194);
|
|
950
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("category")); });
|
|
1067
951
|
i0.ɵɵtext(6, " Category ");
|
|
1068
|
-
i0.ɵɵelement(7, "i",
|
|
952
|
+
i0.ɵɵelement(7, "i", 84);
|
|
1069
953
|
i0.ɵɵelementEnd();
|
|
1070
|
-
i0.ɵɵelementStart(8, "th",
|
|
1071
|
-
i0.ɵɵlistener("click", function
|
|
954
|
+
i0.ɵɵelementStart(8, "th", 194);
|
|
955
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_8_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("operation")); });
|
|
1072
956
|
i0.ɵɵtext(9, " Operation ");
|
|
1073
|
-
i0.ɵɵelement(10, "i",
|
|
957
|
+
i0.ɵɵelement(10, "i", 84);
|
|
1074
958
|
i0.ɵɵelementEnd();
|
|
1075
|
-
i0.ɵɵelementStart(11, "th",
|
|
1076
|
-
i0.ɵɵlistener("click", function
|
|
959
|
+
i0.ɵɵelementStart(11, "th", 194);
|
|
960
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_11_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("entity")); });
|
|
1077
961
|
i0.ɵɵtext(12, " Entity/Query ");
|
|
1078
|
-
i0.ɵɵelement(13, "i",
|
|
962
|
+
i0.ɵɵelement(13, "i", 84);
|
|
1079
963
|
i0.ɵɵelementEnd();
|
|
1080
964
|
i0.ɵɵelementStart(14, "th");
|
|
1081
965
|
i0.ɵɵtext(15, "Filter");
|
|
1082
966
|
i0.ɵɵelementEnd();
|
|
1083
|
-
i0.ɵɵelementStart(16, "th",
|
|
1084
|
-
i0.ɵɵlistener("click", function
|
|
967
|
+
i0.ɵɵelementStart(16, "th", 195);
|
|
968
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("count")); });
|
|
1085
969
|
i0.ɵɵtext(17, " Count ");
|
|
1086
|
-
i0.ɵɵelement(18, "i",
|
|
970
|
+
i0.ɵɵelement(18, "i", 84);
|
|
1087
971
|
i0.ɵɵelementEnd();
|
|
1088
|
-
i0.ɵɵelementStart(19, "th",
|
|
1089
|
-
i0.ɵɵlistener("click", function
|
|
972
|
+
i0.ɵɵelementStart(19, "th", 195);
|
|
973
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("avgMs")); });
|
|
1090
974
|
i0.ɵɵtext(20, " Avg (ms) ");
|
|
1091
|
-
i0.ɵɵelement(21, "i",
|
|
975
|
+
i0.ɵɵelement(21, "i", 84);
|
|
1092
976
|
i0.ɵɵelementEnd();
|
|
1093
|
-
i0.ɵɵelementStart(22, "th",
|
|
1094
|
-
i0.ɵɵlistener("click", function
|
|
977
|
+
i0.ɵɵelementStart(22, "th", 195);
|
|
978
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortPatternsBy("totalMs")); });
|
|
1095
979
|
i0.ɵɵtext(23, " Total (ms) ");
|
|
1096
|
-
i0.ɵɵelement(24, "i",
|
|
980
|
+
i0.ɵɵelement(24, "i", 84);
|
|
1097
981
|
i0.ɵɵelementEnd()()();
|
|
1098
982
|
i0.ɵɵelementStart(25, "tbody");
|
|
1099
|
-
i0.ɵɵrepeaterCreate(26,
|
|
983
|
+
i0.ɵɵrepeaterCreate(26, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_For_27_Template, 19, 22, "tr", 196, _forTrack5);
|
|
1100
984
|
i0.ɵɵelementEnd()()()();
|
|
1101
985
|
} if (rf & 2) {
|
|
1102
|
-
const
|
|
986
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1103
987
|
i0.ɵɵadvance(7);
|
|
1104
|
-
i0.ɵɵclassMap(
|
|
988
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("category"));
|
|
1105
989
|
i0.ɵɵadvance(3);
|
|
1106
|
-
i0.ɵɵclassMap(
|
|
990
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("operation"));
|
|
1107
991
|
i0.ɵɵadvance(3);
|
|
1108
|
-
i0.ɵɵclassMap(
|
|
992
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("entity"));
|
|
1109
993
|
i0.ɵɵadvance(5);
|
|
1110
|
-
i0.ɵɵclassMap(
|
|
994
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("count"));
|
|
1111
995
|
i0.ɵɵadvance(3);
|
|
1112
|
-
i0.ɵɵclassMap(
|
|
996
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("avgMs"));
|
|
1113
997
|
i0.ɵɵadvance(3);
|
|
1114
|
-
i0.ɵɵclassMap(
|
|
998
|
+
i0.ɵɵclassMap(ctx_r1.getSortIcon("totalMs"));
|
|
1115
999
|
i0.ɵɵadvance(2);
|
|
1116
|
-
i0.ɵɵrepeater(
|
|
1000
|
+
i0.ɵɵrepeater(ctx_r1.filteredPatterns);
|
|
1117
1001
|
} }
|
|
1118
|
-
function
|
|
1119
|
-
i0.ɵɵelementStart(0, "div",
|
|
1120
|
-
i0.ɵɵelement(1, "i",
|
|
1002
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1003
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1004
|
+
i0.ɵɵelement(1, "i", 189);
|
|
1121
1005
|
i0.ɵɵelementStart(2, "p");
|
|
1122
1006
|
i0.ɵɵtext(3, "No telemetry data yet");
|
|
1123
1007
|
i0.ɵɵelementEnd();
|
|
1124
|
-
i0.ɵɵelementStart(4, "span",
|
|
1008
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1125
1009
|
i0.ɵɵtext(5, "Navigate around the app to generate performance data");
|
|
1126
1010
|
i0.ɵɵelementEnd()();
|
|
1127
1011
|
} }
|
|
1128
|
-
function
|
|
1129
|
-
i0.ɵɵelementStart(0, "div",
|
|
1130
|
-
i0.ɵɵelement(1, "i",
|
|
1012
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1013
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
1014
|
+
i0.ɵɵelement(1, "i", 202);
|
|
1131
1015
|
i0.ɵɵelementStart(2, "p");
|
|
1132
1016
|
i0.ɵɵtext(3, "No patterns match your filter");
|
|
1133
1017
|
i0.ɵɵelementEnd()();
|
|
1134
1018
|
} }
|
|
1135
|
-
function
|
|
1019
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template(rf, ctx) { if (rf & 1) {
|
|
1136
1020
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
1137
|
-
i0.ɵɵelementStart(0, "div",
|
|
1138
|
-
i0.ɵɵelement(2, "i",
|
|
1139
|
-
i0.ɵɵelementStart(3, "input",
|
|
1140
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1141
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1021
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "div", 156);
|
|
1022
|
+
i0.ɵɵelement(2, "i", 157);
|
|
1023
|
+
i0.ɵɵelementStart(3, "input", 190);
|
|
1024
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.searchQuery, $event) || (ctx_r1.searchQuery = $event); return i0.ɵɵresetView($event); });
|
|
1025
|
+
i0.ɵɵlistener("ngModelChange", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSearchChange()); });
|
|
1142
1026
|
i0.ɵɵelementEnd();
|
|
1143
|
-
i0.ɵɵconditionalCreate(4,
|
|
1027
|
+
i0.ɵɵconditionalCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_4_Template, 2, 0, "button", 159);
|
|
1144
1028
|
i0.ɵɵelementEnd();
|
|
1145
|
-
i0.ɵɵelementStart(5, "div",
|
|
1146
|
-
i0.ɵɵlistener("click", function
|
|
1029
|
+
i0.ɵɵelementStart(5, "div", 160)(6, "button", 161);
|
|
1030
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCategoryFilter("all")); });
|
|
1147
1031
|
i0.ɵɵtext(7, " All ");
|
|
1148
1032
|
i0.ɵɵelementEnd();
|
|
1149
|
-
i0.ɵɵrepeaterCreate(8,
|
|
1033
|
+
i0.ɵɵrepeaterCreate(8, SystemDiagnosticsComponent_Conditional_17_Conditional_50_For_9_Template, 2, 3, "button", 162, _forTrack2);
|
|
1150
1034
|
i0.ɵɵelementEnd()();
|
|
1151
|
-
i0.ɵɵconditionalCreate(10,
|
|
1035
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_10_Template, 28, 12, "div", 191)(11, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_11_Template, 6, 0, "div", 28)(12, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Conditional_12_Template, 4, 0, "div", 165);
|
|
1152
1036
|
} if (rf & 2) {
|
|
1153
|
-
const
|
|
1037
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1154
1038
|
i0.ɵɵadvance(3);
|
|
1155
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
1039
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.searchQuery);
|
|
1156
1040
|
i0.ɵɵadvance();
|
|
1157
|
-
i0.ɵɵconditional(
|
|
1041
|
+
i0.ɵɵconditional(ctx_r1.searchQuery ? 4 : -1);
|
|
1158
1042
|
i0.ɵɵadvance(2);
|
|
1159
|
-
i0.ɵɵclassProp("active",
|
|
1043
|
+
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === "all");
|
|
1160
1044
|
i0.ɵɵadvance(2);
|
|
1161
|
-
i0.ɵɵrepeater(
|
|
1045
|
+
i0.ɵɵrepeater(ctx_r1.categoriesWithData);
|
|
1162
1046
|
i0.ɵɵadvance(2);
|
|
1163
|
-
i0.ɵɵconditional(
|
|
1047
|
+
i0.ɵɵconditional(ctx_r1.filteredPatterns.length > 0 ? 10 : ctx_r1.telemetryEnabled && ctx_r1.telemetryPatterns.length === 0 ? 11 : ctx_r1.searchQuery || ctx_r1.categoryFilter !== "all" ? 12 : -1);
|
|
1164
1048
|
} }
|
|
1165
|
-
function
|
|
1166
|
-
i0.ɵɵelementStart(0, "div",
|
|
1049
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1050
|
+
i0.ɵɵelementStart(0, "div", 212)(1, "span", 216);
|
|
1167
1051
|
i0.ɵɵtext(2, "Entity:");
|
|
1168
1052
|
i0.ɵɵelementEnd();
|
|
1169
|
-
i0.ɵɵelementStart(3, "span",
|
|
1053
|
+
i0.ɵɵelementStart(3, "span", 217);
|
|
1170
1054
|
i0.ɵɵtext(4);
|
|
1171
1055
|
i0.ɵɵelementEnd()();
|
|
1172
1056
|
} if (rf & 2) {
|
|
@@ -1174,24 +1058,24 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1174
1058
|
i0.ɵɵadvance(4);
|
|
1175
1059
|
i0.ɵɵtextInterpolate(insight_r32.entityName);
|
|
1176
1060
|
} }
|
|
1177
|
-
function
|
|
1178
|
-
i0.ɵɵelementStart(0, "div",
|
|
1061
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1062
|
+
i0.ɵɵelementStart(0, "div", 212)(1, "span", 216);
|
|
1179
1063
|
i0.ɵɵtext(2, "Filter:");
|
|
1180
1064
|
i0.ɵɵelementEnd();
|
|
1181
|
-
i0.ɵɵelementStart(3, "code",
|
|
1065
|
+
i0.ɵɵelementStart(3, "code", 218);
|
|
1182
1066
|
i0.ɵɵtext(4);
|
|
1183
1067
|
i0.ɵɵelementEnd()();
|
|
1184
1068
|
} if (rf & 2) {
|
|
1185
1069
|
const insight_r32 = i0.ɵɵnextContext().$implicit;
|
|
1186
|
-
const
|
|
1070
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1187
1071
|
i0.ɵɵadvance(4);
|
|
1188
|
-
i0.ɵɵtextInterpolate(
|
|
1072
|
+
i0.ɵɵtextInterpolate(ctx_r1.getInsightFilter(insight_r32));
|
|
1189
1073
|
} }
|
|
1190
|
-
function
|
|
1191
|
-
i0.ɵɵelementStart(0, "div",
|
|
1074
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
1075
|
+
i0.ɵɵelementStart(0, "div", 222)(1, "span", 225);
|
|
1192
1076
|
i0.ɵɵtext(2);
|
|
1193
1077
|
i0.ɵɵelementEnd();
|
|
1194
|
-
i0.ɵɵelementStart(3, "span",
|
|
1078
|
+
i0.ɵɵelementStart(3, "span", 226);
|
|
1195
1079
|
i0.ɵɵtext(4);
|
|
1196
1080
|
i0.ɵɵelementEnd()();
|
|
1197
1081
|
} if (rf & 2) {
|
|
@@ -1201,8 +1085,8 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1201
1085
|
i0.ɵɵadvance(2);
|
|
1202
1086
|
i0.ɵɵtextInterpolate(param_r33.value);
|
|
1203
1087
|
} }
|
|
1204
|
-
function
|
|
1205
|
-
i0.ɵɵelementStart(0, "span",
|
|
1088
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1089
|
+
i0.ɵɵelementStart(0, "span", 229);
|
|
1206
1090
|
i0.ɵɵtext(1);
|
|
1207
1091
|
i0.ɵɵelementEnd();
|
|
1208
1092
|
} if (rf & 2) {
|
|
@@ -1210,32 +1094,32 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1210
1094
|
i0.ɵɵadvance();
|
|
1211
1095
|
i0.ɵɵtextInterpolate(event_r34.entityName);
|
|
1212
1096
|
} }
|
|
1213
|
-
function
|
|
1214
|
-
i0.ɵɵelementStart(0, "span",
|
|
1097
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1098
|
+
i0.ɵɵelementStart(0, "span", 230);
|
|
1215
1099
|
i0.ɵɵtext(1);
|
|
1216
1100
|
i0.ɵɵelementEnd();
|
|
1217
1101
|
} if (rf & 2) {
|
|
1218
1102
|
const event_r34 = i0.ɵɵnextContext().$implicit;
|
|
1219
|
-
const
|
|
1103
|
+
const ctx_r1 = i0.ɵɵnextContext(7);
|
|
1220
1104
|
i0.ɵɵadvance();
|
|
1221
|
-
i0.ɵɵtextInterpolate(
|
|
1105
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(event_r34.filter, 40));
|
|
1222
1106
|
} }
|
|
1223
|
-
function
|
|
1224
|
-
i0.ɵɵelementStart(0, "div",
|
|
1107
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
1108
|
+
i0.ɵɵelementStart(0, "div", 224)(1, "span", 227);
|
|
1225
1109
|
i0.ɵɵtext(2);
|
|
1226
1110
|
i0.ɵɵelementEnd();
|
|
1227
|
-
i0.ɵɵelementStart(3, "span",
|
|
1111
|
+
i0.ɵɵelementStart(3, "span", 228);
|
|
1228
1112
|
i0.ɵɵtext(4);
|
|
1229
1113
|
i0.ɵɵpipe(5, "number");
|
|
1230
1114
|
i0.ɵɵelementEnd();
|
|
1231
|
-
i0.ɵɵconditionalCreate(6,
|
|
1232
|
-
i0.ɵɵconditionalCreate(7,
|
|
1115
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_6_Template, 2, 1, "span", 229);
|
|
1116
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Conditional_7_Template, 2, 1, "span", 230);
|
|
1233
1117
|
i0.ɵɵelementEnd();
|
|
1234
1118
|
} if (rf & 2) {
|
|
1235
1119
|
const event_r34 = ctx.$implicit;
|
|
1236
|
-
const
|
|
1120
|
+
const ctx_r1 = i0.ɵɵnextContext(7);
|
|
1237
1121
|
i0.ɵɵadvance(2);
|
|
1238
|
-
i0.ɵɵtextInterpolate(
|
|
1122
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(event_r34.timestamp));
|
|
1239
1123
|
i0.ɵɵadvance(2);
|
|
1240
1124
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 4, event_r34.elapsedMs, "1.0-0"), "ms");
|
|
1241
1125
|
i0.ɵɵadvance(2);
|
|
@@ -1243,71 +1127,71 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1243
1127
|
i0.ɵɵadvance();
|
|
1244
1128
|
i0.ɵɵconditional(event_r34.filter ? 7 : -1);
|
|
1245
1129
|
} }
|
|
1246
|
-
function
|
|
1247
|
-
i0.ɵɵelementStart(0, "div",
|
|
1130
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1131
|
+
i0.ɵɵelementStart(0, "div", 219)(1, "div", 220);
|
|
1248
1132
|
i0.ɵɵtext(2, "Full Parameters");
|
|
1249
1133
|
i0.ɵɵelementEnd();
|
|
1250
|
-
i0.ɵɵelementStart(3, "div",
|
|
1251
|
-
i0.ɵɵrepeaterCreate(4,
|
|
1134
|
+
i0.ɵɵelementStart(3, "div", 221);
|
|
1135
|
+
i0.ɵɵrepeaterCreate(4, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_5_Template, 5, 2, "div", 222, _forTrack6);
|
|
1252
1136
|
i0.ɵɵelementEnd()();
|
|
1253
|
-
i0.ɵɵelementStart(6, "div",
|
|
1137
|
+
i0.ɵɵelementStart(6, "div", 219)(7, "div", 220);
|
|
1254
1138
|
i0.ɵɵtext(8);
|
|
1255
1139
|
i0.ɵɵelementEnd();
|
|
1256
|
-
i0.ɵɵelementStart(9, "div",
|
|
1257
|
-
i0.ɵɵrepeaterCreate(10,
|
|
1140
|
+
i0.ɵɵelementStart(9, "div", 223);
|
|
1141
|
+
i0.ɵɵrepeaterCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_For_11_Template, 8, 7, "div", 224, _forTrack3);
|
|
1258
1142
|
i0.ɵɵelementEnd()();
|
|
1259
1143
|
} if (rf & 2) {
|
|
1260
1144
|
const insight_r32 = i0.ɵɵnextContext(2).$implicit;
|
|
1261
|
-
const
|
|
1145
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1262
1146
|
i0.ɵɵadvance(4);
|
|
1263
|
-
i0.ɵɵrepeater(
|
|
1147
|
+
i0.ɵɵrepeater(ctx_r1.getEventParams(insight_r32.relatedEvents[0]));
|
|
1264
1148
|
i0.ɵɵadvance(4);
|
|
1265
1149
|
i0.ɵɵtextInterpolate1("Related Calls (", insight_r32.relatedEvents.length, ")");
|
|
1266
1150
|
i0.ɵɵadvance(2);
|
|
1267
1151
|
i0.ɵɵrepeater(insight_r32.relatedEvents);
|
|
1268
1152
|
} }
|
|
1269
|
-
function
|
|
1270
|
-
i0.ɵɵelementStart(0, "div",
|
|
1271
|
-
i0.ɵɵconditionalCreate(1,
|
|
1153
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1154
|
+
i0.ɵɵelementStart(0, "div", 215);
|
|
1155
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Conditional_1_Template, 12, 1);
|
|
1272
1156
|
i0.ɵɵelementEnd();
|
|
1273
1157
|
} if (rf & 2) {
|
|
1274
1158
|
const insight_r32 = i0.ɵɵnextContext().$implicit;
|
|
1275
1159
|
i0.ɵɵadvance();
|
|
1276
1160
|
i0.ɵɵconditional(insight_r32.relatedEvents.length > 0 ? 1 : -1);
|
|
1277
1161
|
} }
|
|
1278
|
-
function
|
|
1162
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
1279
1163
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1280
|
-
i0.ɵɵelementStart(0, "div",
|
|
1281
|
-
i0.ɵɵlistener("click", function
|
|
1282
|
-
i0.ɵɵelement(2, "i",
|
|
1283
|
-
i0.ɵɵelementStart(3, "span",
|
|
1164
|
+
i0.ɵɵelementStart(0, "div", 206)(1, "div", 207);
|
|
1165
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template_div_click_1_listener() { const insight_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleInsightExpanded(insight_r32)); });
|
|
1166
|
+
i0.ɵɵelement(2, "i", 84);
|
|
1167
|
+
i0.ɵɵelementStart(3, "span", 208);
|
|
1284
1168
|
i0.ɵɵtext(4);
|
|
1285
1169
|
i0.ɵɵelementEnd();
|
|
1286
|
-
i0.ɵɵelementStart(5, "span",
|
|
1170
|
+
i0.ɵɵelementStart(5, "span", 209);
|
|
1287
1171
|
i0.ɵɵtext(6);
|
|
1288
1172
|
i0.ɵɵelementEnd();
|
|
1289
|
-
i0.ɵɵelement(7, "i",
|
|
1173
|
+
i0.ɵɵelement(7, "i", 210);
|
|
1290
1174
|
i0.ɵɵelementEnd();
|
|
1291
|
-
i0.ɵɵelementStart(8, "div",
|
|
1292
|
-
i0.ɵɵconditionalCreate(9,
|
|
1293
|
-
i0.ɵɵconditionalCreate(10,
|
|
1175
|
+
i0.ɵɵelementStart(8, "div", 211);
|
|
1176
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_9_Template, 5, 1, "div", 212);
|
|
1177
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_10_Template, 5, 1, "div", 212);
|
|
1294
1178
|
i0.ɵɵelementEnd();
|
|
1295
|
-
i0.ɵɵelementStart(11, "div",
|
|
1179
|
+
i0.ɵɵelementStart(11, "div", 213);
|
|
1296
1180
|
i0.ɵɵtext(12);
|
|
1297
1181
|
i0.ɵɵelementEnd();
|
|
1298
|
-
i0.ɵɵelementStart(13, "div",
|
|
1299
|
-
i0.ɵɵelement(14, "i",
|
|
1182
|
+
i0.ɵɵelementStart(13, "div", 214);
|
|
1183
|
+
i0.ɵɵelement(14, "i", 46);
|
|
1300
1184
|
i0.ɵɵtext(15);
|
|
1301
1185
|
i0.ɵɵelementEnd();
|
|
1302
|
-
i0.ɵɵconditionalCreate(16,
|
|
1186
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Conditional_16_Template, 2, 1, "div", 215);
|
|
1303
1187
|
i0.ɵɵelementEnd();
|
|
1304
1188
|
} if (rf & 2) {
|
|
1305
1189
|
const insight_r32 = ctx.$implicit;
|
|
1306
|
-
const
|
|
1307
|
-
i0.ɵɵclassMap(
|
|
1190
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1191
|
+
i0.ɵɵclassMap(ctx_r1.getSeverityClass(insight_r32.severity));
|
|
1308
1192
|
i0.ɵɵclassProp("expanded", insight_r32.expanded);
|
|
1309
1193
|
i0.ɵɵadvance(2);
|
|
1310
|
-
i0.ɵɵclassMap(
|
|
1194
|
+
i0.ɵɵclassMap(ctx_r1.getSeverityIcon(insight_r32.severity));
|
|
1311
1195
|
i0.ɵɵadvance(2);
|
|
1312
1196
|
i0.ɵɵtextInterpolate(insight_r32.title);
|
|
1313
1197
|
i0.ɵɵadvance(2);
|
|
@@ -1317,7 +1201,7 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1317
1201
|
i0.ɵɵadvance(2);
|
|
1318
1202
|
i0.ɵɵconditional(insight_r32.entityName ? 9 : -1);
|
|
1319
1203
|
i0.ɵɵadvance();
|
|
1320
|
-
i0.ɵɵconditional(
|
|
1204
|
+
i0.ɵɵconditional(ctx_r1.getInsightFilter(insight_r32) ? 10 : -1);
|
|
1321
1205
|
i0.ɵɵadvance(2);
|
|
1322
1206
|
i0.ɵɵtextInterpolate(insight_r32.message);
|
|
1323
1207
|
i0.ɵɵadvance(3);
|
|
@@ -1325,175 +1209,175 @@ function SystemDiagnosticsComponent_Conditional_47_Conditional_51_Conditional_0_
|
|
|
1325
1209
|
i0.ɵɵadvance();
|
|
1326
1210
|
i0.ɵɵconditional(insight_r32.expanded ? 16 : -1);
|
|
1327
1211
|
} }
|
|
1328
|
-
function
|
|
1329
|
-
i0.ɵɵelementStart(0, "div",
|
|
1330
|
-
i0.ɵɵrepeaterCreate(2,
|
|
1212
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1213
|
+
i0.ɵɵelementStart(0, "div", 203)(1, "div", 204);
|
|
1214
|
+
i0.ɵɵrepeaterCreate(2, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_For_3_Template, 17, 17, "div", 205, _forTrack3);
|
|
1331
1215
|
i0.ɵɵelementEnd()();
|
|
1332
1216
|
} if (rf & 2) {
|
|
1333
|
-
const
|
|
1217
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1334
1218
|
i0.ɵɵadvance(2);
|
|
1335
|
-
i0.ɵɵrepeater(
|
|
1219
|
+
i0.ɵɵrepeater(ctx_r1.telemetryInsights);
|
|
1336
1220
|
} }
|
|
1337
|
-
function
|
|
1338
|
-
i0.ɵɵelementStart(0, "div",
|
|
1339
|
-
i0.ɵɵelement(1, "i",
|
|
1221
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1222
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1223
|
+
i0.ɵɵelement(1, "i", 231);
|
|
1340
1224
|
i0.ɵɵelementStart(2, "p");
|
|
1341
1225
|
i0.ɵɵtext(3, "No optimization insights");
|
|
1342
1226
|
i0.ɵɵelementEnd();
|
|
1343
|
-
i0.ɵɵelementStart(4, "span",
|
|
1227
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1344
1228
|
i0.ɵɵtext(5, "Insights will appear when potential optimizations are detected");
|
|
1345
1229
|
i0.ɵɵelementEnd()();
|
|
1346
1230
|
} }
|
|
1347
|
-
function
|
|
1348
|
-
i0.ɵɵconditionalCreate(0,
|
|
1231
|
+
function SystemDiagnosticsComponent_Conditional_17_Conditional_51_Template(rf, ctx) { if (rf & 1) {
|
|
1232
|
+
i0.ɵɵconditionalCreate(0, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_0_Template, 4, 0, "div", 203)(1, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Conditional_1_Template, 6, 0, "div", 28);
|
|
1349
1233
|
} if (rf & 2) {
|
|
1350
|
-
const
|
|
1351
|
-
i0.ɵɵconditional(
|
|
1234
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1235
|
+
i0.ɵɵconditional(ctx_r1.telemetryInsights.length > 0 ? 0 : 1);
|
|
1352
1236
|
} }
|
|
1353
|
-
function
|
|
1237
|
+
function SystemDiagnosticsComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1354
1238
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
1355
|
-
i0.ɵɵelementStart(0, "div",
|
|
1356
|
-
i0.ɵɵelement(3, "i",
|
|
1239
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 22)(2, "h3");
|
|
1240
|
+
i0.ɵɵelement(3, "i", 63);
|
|
1357
1241
|
i0.ɵɵtext(4, " Performance Telemetry ");
|
|
1358
1242
|
i0.ɵɵelementEnd();
|
|
1359
|
-
i0.ɵɵelementStart(5, "div",
|
|
1360
|
-
i0.ɵɵlistener("click", function
|
|
1361
|
-
i0.ɵɵelement(8, "i",
|
|
1243
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "div", 64)(7, "button", 65);
|
|
1244
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setTelemetrySource("client")); });
|
|
1245
|
+
i0.ɵɵelement(8, "i", 66);
|
|
1362
1246
|
i0.ɵɵtext(9, " Client ");
|
|
1363
1247
|
i0.ɵɵelementEnd();
|
|
1364
|
-
i0.ɵɵelementStart(10, "button",
|
|
1365
|
-
i0.ɵɵlistener("click", function
|
|
1366
|
-
i0.ɵɵelement(11, "i",
|
|
1248
|
+
i0.ɵɵelementStart(10, "button", 65);
|
|
1249
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setTelemetrySource("server")); });
|
|
1250
|
+
i0.ɵɵelement(11, "i", 67);
|
|
1367
1251
|
i0.ɵɵtext(12, " Server ");
|
|
1368
1252
|
i0.ɵɵelementEnd()();
|
|
1369
|
-
i0.ɵɵelement(13, "span",
|
|
1370
|
-
i0.ɵɵconditionalCreate(14,
|
|
1371
|
-
i0.ɵɵconditionalCreate(16,
|
|
1253
|
+
i0.ɵɵelement(13, "span", 68);
|
|
1254
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_17_Conditional_14_Template, 6, 8)(15, SystemDiagnosticsComponent_Conditional_17_Conditional_15_Template, 5, 9, "span", 69);
|
|
1255
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_17_Conditional_16_Template, 2, 0, "span", 70);
|
|
1372
1256
|
i0.ɵɵelementEnd()();
|
|
1373
|
-
i0.ɵɵconditionalCreate(17,
|
|
1374
|
-
i0.ɵɵelementStart(18, "div",
|
|
1375
|
-
i0.ɵɵlistener("click", function
|
|
1376
|
-
i0.ɵɵelement(20, "i",
|
|
1257
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Conditional_17_Template, 5, 1, "div", 71);
|
|
1258
|
+
i0.ɵɵelementStart(18, "div", 72)(19, "button", 73);
|
|
1259
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("monitor")); });
|
|
1260
|
+
i0.ɵɵelement(20, "i", 74);
|
|
1377
1261
|
i0.ɵɵelementStart(21, "span");
|
|
1378
1262
|
i0.ɵɵtext(22, "Monitor");
|
|
1379
1263
|
i0.ɵɵelementEnd()();
|
|
1380
|
-
i0.ɵɵelementStart(23, "button",
|
|
1381
|
-
i0.ɵɵlistener("click", function
|
|
1382
|
-
i0.ɵɵelement(24, "i",
|
|
1264
|
+
i0.ɵɵelementStart(23, "button", 73);
|
|
1265
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("overview")); });
|
|
1266
|
+
i0.ɵɵelement(24, "i", 75);
|
|
1383
1267
|
i0.ɵɵelementStart(25, "span");
|
|
1384
1268
|
i0.ɵɵtext(26, "Overview");
|
|
1385
1269
|
i0.ɵɵelementEnd();
|
|
1386
|
-
i0.ɵɵconditionalCreate(27,
|
|
1270
|
+
i0.ɵɵconditionalCreate(27, SystemDiagnosticsComponent_Conditional_17_Conditional_27_Template, 2, 1, "span", 76);
|
|
1387
1271
|
i0.ɵɵelementEnd();
|
|
1388
|
-
i0.ɵɵelementStart(28, "button",
|
|
1389
|
-
i0.ɵɵlistener("click", function
|
|
1390
|
-
i0.ɵɵelement(29, "i",
|
|
1272
|
+
i0.ɵɵelementStart(28, "button", 73);
|
|
1273
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("events")); });
|
|
1274
|
+
i0.ɵɵelement(29, "i", 77);
|
|
1391
1275
|
i0.ɵɵelementStart(30, "span");
|
|
1392
1276
|
i0.ɵɵtext(31, "Events");
|
|
1393
1277
|
i0.ɵɵelementEnd();
|
|
1394
|
-
i0.ɵɵelementStart(32, "span",
|
|
1278
|
+
i0.ɵɵelementStart(32, "span", 78);
|
|
1395
1279
|
i0.ɵɵtext(33);
|
|
1396
1280
|
i0.ɵɵelementEnd()();
|
|
1397
|
-
i0.ɵɵelementStart(34, "button",
|
|
1398
|
-
i0.ɵɵlistener("click", function
|
|
1399
|
-
i0.ɵɵelement(35, "i",
|
|
1281
|
+
i0.ɵɵelementStart(34, "button", 73);
|
|
1282
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("patterns")); });
|
|
1283
|
+
i0.ɵɵelement(35, "i", 79);
|
|
1400
1284
|
i0.ɵɵelementStart(36, "span");
|
|
1401
1285
|
i0.ɵɵtext(37, "Patterns");
|
|
1402
1286
|
i0.ɵɵelementEnd();
|
|
1403
|
-
i0.ɵɵelementStart(38, "span",
|
|
1287
|
+
i0.ɵɵelementStart(38, "span", 78);
|
|
1404
1288
|
i0.ɵɵtext(39);
|
|
1405
1289
|
i0.ɵɵelementEnd()();
|
|
1406
|
-
i0.ɵɵelementStart(40, "button",
|
|
1407
|
-
i0.ɵɵlistener("click", function
|
|
1408
|
-
i0.ɵɵelement(41, "i",
|
|
1290
|
+
i0.ɵɵelementStart(40, "button", 73);
|
|
1291
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_17_Template_button_click_40_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setPerfTab("insights")); });
|
|
1292
|
+
i0.ɵɵelement(41, "i", 56);
|
|
1409
1293
|
i0.ɵɵelementStart(42, "span");
|
|
1410
1294
|
i0.ɵɵtext(43, "Insights");
|
|
1411
1295
|
i0.ɵɵelementEnd();
|
|
1412
|
-
i0.ɵɵconditionalCreate(44,
|
|
1296
|
+
i0.ɵɵconditionalCreate(44, SystemDiagnosticsComponent_Conditional_17_Conditional_44_Template, 2, 1, "span", 80);
|
|
1413
1297
|
i0.ɵɵelementEnd()();
|
|
1414
|
-
i0.ɵɵelementStart(45, "div",
|
|
1415
|
-
i0.ɵɵconditionalCreate(46,
|
|
1416
|
-
i0.ɵɵconditionalCreate(47,
|
|
1417
|
-
i0.ɵɵconditionalCreate(48,
|
|
1418
|
-
i0.ɵɵconditionalCreate(49,
|
|
1419
|
-
i0.ɵɵconditionalCreate(50,
|
|
1420
|
-
i0.ɵɵconditionalCreate(51,
|
|
1298
|
+
i0.ɵɵelementStart(45, "div", 27);
|
|
1299
|
+
i0.ɵɵconditionalCreate(46, SystemDiagnosticsComponent_Conditional_17_Conditional_46_Template, 6, 0, "div", 81);
|
|
1300
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_17_Conditional_47_Template, 48, 9, "div", 82);
|
|
1301
|
+
i0.ɵɵconditionalCreate(48, SystemDiagnosticsComponent_Conditional_17_Conditional_48_Template, 24, 6);
|
|
1302
|
+
i0.ɵɵconditionalCreate(49, SystemDiagnosticsComponent_Conditional_17_Conditional_49_Template, 14, 5);
|
|
1303
|
+
i0.ɵɵconditionalCreate(50, SystemDiagnosticsComponent_Conditional_17_Conditional_50_Template, 13, 5);
|
|
1304
|
+
i0.ɵɵconditionalCreate(51, SystemDiagnosticsComponent_Conditional_17_Conditional_51_Template, 2, 1);
|
|
1421
1305
|
i0.ɵɵelementEnd()();
|
|
1422
1306
|
} if (rf & 2) {
|
|
1423
|
-
const
|
|
1307
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1424
1308
|
i0.ɵɵadvance(7);
|
|
1425
|
-
i0.ɵɵclassProp("active",
|
|
1309
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetrySource === "client");
|
|
1426
1310
|
i0.ɵɵadvance(3);
|
|
1427
|
-
i0.ɵɵclassProp("active",
|
|
1311
|
+
i0.ɵɵclassProp("active", ctx_r1.telemetrySource === "server");
|
|
1428
1312
|
i0.ɵɵadvance(4);
|
|
1429
|
-
i0.ɵɵconditional(
|
|
1313
|
+
i0.ɵɵconditional(ctx_r1.telemetrySource === "client" ? 14 : 15);
|
|
1430
1314
|
i0.ɵɵadvance(2);
|
|
1431
|
-
i0.ɵɵconditional(
|
|
1315
|
+
i0.ɵɵconditional(ctx_r1.serverTelemetryLoading ? 16 : -1);
|
|
1432
1316
|
i0.ɵɵadvance();
|
|
1433
|
-
i0.ɵɵconditional(
|
|
1317
|
+
i0.ɵɵconditional(ctx_r1.serverTelemetryError ? 17 : -1);
|
|
1434
1318
|
i0.ɵɵadvance(2);
|
|
1435
|
-
i0.ɵɵclassProp("active",
|
|
1319
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "monitor");
|
|
1436
1320
|
i0.ɵɵadvance(4);
|
|
1437
|
-
i0.ɵɵclassProp("active",
|
|
1321
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "overview");
|
|
1438
1322
|
i0.ɵɵadvance(4);
|
|
1439
|
-
i0.ɵɵconditional(
|
|
1323
|
+
i0.ɵɵconditional(ctx_r1.slowQueries.length > 0 ? 27 : -1);
|
|
1440
1324
|
i0.ɵɵadvance();
|
|
1441
|
-
i0.ɵɵclassProp("active",
|
|
1325
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "events");
|
|
1442
1326
|
i0.ɵɵadvance(5);
|
|
1443
|
-
i0.ɵɵtextInterpolate((
|
|
1327
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalEvents) || 0);
|
|
1444
1328
|
i0.ɵɵadvance();
|
|
1445
|
-
i0.ɵɵclassProp("active",
|
|
1329
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "patterns");
|
|
1446
1330
|
i0.ɵɵadvance(5);
|
|
1447
|
-
i0.ɵɵtextInterpolate((
|
|
1331
|
+
i0.ɵɵtextInterpolate((ctx_r1.telemetrySummary == null ? null : ctx_r1.telemetrySummary.totalPatterns) || 0);
|
|
1448
1332
|
i0.ɵɵadvance();
|
|
1449
|
-
i0.ɵɵclassProp("active",
|
|
1333
|
+
i0.ɵɵclassProp("active", ctx_r1.perfTab === "insights");
|
|
1450
1334
|
i0.ɵɵadvance(4);
|
|
1451
|
-
i0.ɵɵconditional(
|
|
1335
|
+
i0.ɵɵconditional(ctx_r1.telemetryInsights.length > 0 ? 44 : -1);
|
|
1452
1336
|
i0.ɵɵadvance(2);
|
|
1453
|
-
i0.ɵɵconditional(!
|
|
1337
|
+
i0.ɵɵconditional(!ctx_r1.telemetryEnabled ? 46 : -1);
|
|
1454
1338
|
i0.ɵɵadvance();
|
|
1455
|
-
i0.ɵɵconditional(
|
|
1339
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "monitor" ? 47 : -1);
|
|
1456
1340
|
i0.ɵɵadvance();
|
|
1457
|
-
i0.ɵɵconditional(
|
|
1341
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "overview" ? 48 : -1);
|
|
1458
1342
|
i0.ɵɵadvance();
|
|
1459
|
-
i0.ɵɵconditional(
|
|
1343
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "events" ? 49 : -1);
|
|
1460
1344
|
i0.ɵɵadvance();
|
|
1461
|
-
i0.ɵɵconditional(
|
|
1345
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "patterns" ? 50 : -1);
|
|
1462
1346
|
i0.ɵɵadvance();
|
|
1463
|
-
i0.ɵɵconditional(
|
|
1347
|
+
i0.ɵɵconditional(ctx_r1.perfTab === "insights" ? 51 : -1);
|
|
1464
1348
|
} }
|
|
1465
|
-
function
|
|
1466
|
-
i0.ɵɵelementStart(0, "div",
|
|
1467
|
-
i0.ɵɵelement(1, "i",
|
|
1349
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1350
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
1351
|
+
i0.ɵɵelement(1, "i", 89);
|
|
1468
1352
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
1469
1353
|
i0.ɵɵtext(4, "Cache not initialized.");
|
|
1470
1354
|
i0.ɵɵelementEnd();
|
|
1471
1355
|
i0.ɵɵtext(5, " The LocalCacheManager requires initialization with a storage provider during app startup. ");
|
|
1472
1356
|
i0.ɵɵelementEnd()();
|
|
1473
1357
|
} }
|
|
1474
|
-
function
|
|
1475
|
-
i0.ɵɵelementStart(0, "code",
|
|
1358
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1359
|
+
i0.ɵɵelementStart(0, "code", 251);
|
|
1476
1360
|
i0.ɵɵtext(1);
|
|
1477
1361
|
i0.ɵɵelementEnd();
|
|
1478
1362
|
} if (rf & 2) {
|
|
1479
1363
|
const entry_r39 = i0.ɵɵnextContext().$implicit;
|
|
1480
|
-
const
|
|
1364
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1481
1365
|
i0.ɵɵadvance();
|
|
1482
|
-
i0.ɵɵtextInterpolate(
|
|
1366
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(entry_r39.fingerprint, 20));
|
|
1483
1367
|
} }
|
|
1484
|
-
function
|
|
1368
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
1485
1369
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1486
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span",
|
|
1370
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "span", 249);
|
|
1487
1371
|
i0.ɵɵtext(3);
|
|
1488
1372
|
i0.ɵɵelementEnd()();
|
|
1489
|
-
i0.ɵɵelementStart(4, "td",
|
|
1373
|
+
i0.ɵɵelementStart(4, "td", 250);
|
|
1490
1374
|
i0.ɵɵtext(5);
|
|
1491
|
-
i0.ɵɵconditionalCreate(6,
|
|
1375
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Conditional_6_Template, 2, 1, "code", 251);
|
|
1492
1376
|
i0.ɵɵelementEnd();
|
|
1493
|
-
i0.ɵɵelementStart(7, "td",
|
|
1377
|
+
i0.ɵɵelementStart(7, "td", 54);
|
|
1494
1378
|
i0.ɵɵtext(8);
|
|
1495
1379
|
i0.ɵɵelementEnd();
|
|
1496
|
-
i0.ɵɵelementStart(9, "td",
|
|
1380
|
+
i0.ɵɵelementStart(9, "td", 54);
|
|
1497
1381
|
i0.ɵɵtext(10);
|
|
1498
1382
|
i0.ɵɵelementEnd();
|
|
1499
1383
|
i0.ɵɵelementStart(11, "td");
|
|
@@ -1502,13 +1386,13 @@ function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58
|
|
|
1502
1386
|
i0.ɵɵelementStart(13, "td");
|
|
1503
1387
|
i0.ɵɵtext(14);
|
|
1504
1388
|
i0.ɵɵelementEnd();
|
|
1505
|
-
i0.ɵɵelementStart(15, "td")(16, "button",
|
|
1506
|
-
i0.ɵɵlistener("click", function
|
|
1507
|
-
i0.ɵɵelement(17, "i",
|
|
1389
|
+
i0.ɵɵelementStart(15, "td")(16, "button", 252);
|
|
1390
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template_button_click_16_listener() { const entry_r39 = i0.ɵɵrestoreView(_r38).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.invalidateCacheEntry(entry_r39)); });
|
|
1391
|
+
i0.ɵɵelement(17, "i", 91);
|
|
1508
1392
|
i0.ɵɵelementEnd()()();
|
|
1509
1393
|
} if (rf & 2) {
|
|
1510
1394
|
const entry_r39 = ctx.$implicit;
|
|
1511
|
-
const
|
|
1395
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1512
1396
|
i0.ɵɵadvance(2);
|
|
1513
1397
|
i0.ɵɵclassMap("type-" + entry_r39.type);
|
|
1514
1398
|
i0.ɵɵadvance();
|
|
@@ -1518,54 +1402,54 @@ function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58
|
|
|
1518
1402
|
i0.ɵɵadvance();
|
|
1519
1403
|
i0.ɵɵconditional(entry_r39.fingerprint ? 6 : -1);
|
|
1520
1404
|
i0.ɵɵadvance(2);
|
|
1521
|
-
i0.ɵɵtextInterpolate(
|
|
1405
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes(entry_r39.sizeBytes));
|
|
1522
1406
|
i0.ɵɵadvance(2);
|
|
1523
1407
|
i0.ɵɵtextInterpolate(entry_r39.accessCount);
|
|
1524
1408
|
i0.ɵɵadvance(2);
|
|
1525
|
-
i0.ɵɵtextInterpolate(
|
|
1409
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatCacheTimestamp(entry_r39.cachedAt));
|
|
1526
1410
|
i0.ɵɵadvance(2);
|
|
1527
|
-
i0.ɵɵtextInterpolate(
|
|
1411
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatCacheTimestamp(entry_r39.lastAccessedAt));
|
|
1528
1412
|
} }
|
|
1529
|
-
function
|
|
1530
|
-
i0.ɵɵelementStart(0, "div",
|
|
1413
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1414
|
+
i0.ɵɵelementStart(0, "div", 248);
|
|
1531
1415
|
i0.ɵɵtext(1);
|
|
1532
1416
|
i0.ɵɵelementEnd();
|
|
1533
1417
|
} if (rf & 2) {
|
|
1534
|
-
const
|
|
1418
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1535
1419
|
i0.ɵɵadvance();
|
|
1536
|
-
i0.ɵɵtextInterpolate1(" Showing 50 of ",
|
|
1420
|
+
i0.ɵɵtextInterpolate1(" Showing 50 of ", ctx_r1.filteredCacheEntries.length, " entries ");
|
|
1537
1421
|
} }
|
|
1538
|
-
function
|
|
1422
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
1539
1423
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
1540
|
-
i0.ɵɵelementStart(0, "div",
|
|
1424
|
+
i0.ɵɵelementStart(0, "div", 243)(1, "div", 244)(2, "h4");
|
|
1541
1425
|
i0.ɵɵtext(3, "Cache Entries");
|
|
1542
1426
|
i0.ɵɵelementEnd();
|
|
1543
|
-
i0.ɵɵelementStart(4, "div",
|
|
1544
|
-
i0.ɵɵlistener("click", function
|
|
1427
|
+
i0.ɵɵelementStart(4, "div", 245)(5, "button", 161);
|
|
1428
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("all")); });
|
|
1545
1429
|
i0.ɵɵtext(6, "All");
|
|
1546
1430
|
i0.ɵɵelementEnd();
|
|
1547
|
-
i0.ɵɵelementStart(7, "button",
|
|
1548
|
-
i0.ɵɵlistener("click", function
|
|
1431
|
+
i0.ɵɵelementStart(7, "button", 161);
|
|
1432
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("dataset")); });
|
|
1549
1433
|
i0.ɵɵtext(8, "Datasets");
|
|
1550
1434
|
i0.ɵɵelementEnd();
|
|
1551
|
-
i0.ɵɵelementStart(9, "button",
|
|
1552
|
-
i0.ɵɵlistener("click", function
|
|
1435
|
+
i0.ɵɵelementStart(9, "button", 161);
|
|
1436
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runview")); });
|
|
1553
1437
|
i0.ɵɵtext(10, "RunViews");
|
|
1554
1438
|
i0.ɵɵelementEnd();
|
|
1555
|
-
i0.ɵɵelementStart(11, "button",
|
|
1556
|
-
i0.ɵɵlistener("click", function
|
|
1439
|
+
i0.ɵɵelementStart(11, "button", 161);
|
|
1440
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runquery")); });
|
|
1557
1441
|
i0.ɵɵtext(12, "RunQueries");
|
|
1558
1442
|
i0.ɵɵelementEnd()()();
|
|
1559
|
-
i0.ɵɵelementStart(13, "div",
|
|
1443
|
+
i0.ɵɵelementStart(13, "div", 246)(14, "table", 247)(15, "thead")(16, "tr")(17, "th");
|
|
1560
1444
|
i0.ɵɵtext(18, "Type");
|
|
1561
1445
|
i0.ɵɵelementEnd();
|
|
1562
1446
|
i0.ɵɵelementStart(19, "th");
|
|
1563
1447
|
i0.ɵɵtext(20, "Name");
|
|
1564
1448
|
i0.ɵɵelementEnd();
|
|
1565
|
-
i0.ɵɵelementStart(21, "th",
|
|
1449
|
+
i0.ɵɵelementStart(21, "th", 54);
|
|
1566
1450
|
i0.ɵɵtext(22, "Size");
|
|
1567
1451
|
i0.ɵɵelementEnd();
|
|
1568
|
-
i0.ɵɵelementStart(23, "th",
|
|
1452
|
+
i0.ɵɵelementStart(23, "th", 54);
|
|
1569
1453
|
i0.ɵɵtext(24, "Hits");
|
|
1570
1454
|
i0.ɵɵelementEnd();
|
|
1571
1455
|
i0.ɵɵelementStart(25, "th");
|
|
@@ -1577,191 +1461,191 @@ function SystemDiagnosticsComponent_Conditional_48_Conditional_11_Conditional_58
|
|
|
1577
1461
|
i0.ɵɵelement(29, "th");
|
|
1578
1462
|
i0.ɵɵelementEnd()();
|
|
1579
1463
|
i0.ɵɵelementStart(30, "tbody");
|
|
1580
|
-
i0.ɵɵrepeaterCreate(31,
|
|
1464
|
+
i0.ɵɵrepeaterCreate(31, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_For_32_Template, 18, 9, "tr", null, _forTrack6);
|
|
1581
1465
|
i0.ɵɵelementEnd()()();
|
|
1582
|
-
i0.ɵɵconditionalCreate(33,
|
|
1466
|
+
i0.ɵɵconditionalCreate(33, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Conditional_33_Template, 2, 1, "div", 248);
|
|
1583
1467
|
i0.ɵɵelementEnd();
|
|
1584
1468
|
} if (rf & 2) {
|
|
1585
|
-
const
|
|
1469
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1586
1470
|
i0.ɵɵadvance(5);
|
|
1587
|
-
i0.ɵɵclassProp("active",
|
|
1471
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "all");
|
|
1588
1472
|
i0.ɵɵadvance(2);
|
|
1589
|
-
i0.ɵɵclassProp("active",
|
|
1473
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "dataset");
|
|
1590
1474
|
i0.ɵɵadvance(2);
|
|
1591
|
-
i0.ɵɵclassProp("active",
|
|
1475
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "runview");
|
|
1592
1476
|
i0.ɵɵadvance(2);
|
|
1593
|
-
i0.ɵɵclassProp("active",
|
|
1477
|
+
i0.ɵɵclassProp("active", ctx_r1.cacheTypeFilter === "runquery");
|
|
1594
1478
|
i0.ɵɵadvance(20);
|
|
1595
|
-
i0.ɵɵrepeater(
|
|
1479
|
+
i0.ɵɵrepeater(ctx_r1.filteredCacheEntries.slice(0, 50));
|
|
1596
1480
|
i0.ɵɵadvance(2);
|
|
1597
|
-
i0.ɵɵconditional(
|
|
1481
|
+
i0.ɵɵconditional(ctx_r1.filteredCacheEntries.length > 50 ? 33 : -1);
|
|
1598
1482
|
} }
|
|
1599
|
-
function
|
|
1600
|
-
i0.ɵɵelementStart(0, "div",
|
|
1601
|
-
i0.ɵɵelement(1, "i",
|
|
1483
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
1484
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
1485
|
+
i0.ɵɵelement(1, "i", 232);
|
|
1602
1486
|
i0.ɵɵelementStart(2, "p");
|
|
1603
1487
|
i0.ɵɵtext(3, "No cached data");
|
|
1604
1488
|
i0.ɵɵelementEnd();
|
|
1605
|
-
i0.ɵɵelementStart(4, "span",
|
|
1489
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
1606
1490
|
i0.ɵɵtext(5, "Data will be cached as you use the application");
|
|
1607
1491
|
i0.ɵɵelementEnd()();
|
|
1608
1492
|
} }
|
|
1609
|
-
function
|
|
1493
|
+
function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1610
1494
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1611
|
-
i0.ɵɵelementStart(0, "div",
|
|
1495
|
+
i0.ɵɵelementStart(0, "div", 233)(1, "div", 123)(2, "div", 124);
|
|
1612
1496
|
i0.ɵɵtext(3);
|
|
1613
1497
|
i0.ɵɵelementEnd();
|
|
1614
|
-
i0.ɵɵelementStart(4, "div",
|
|
1498
|
+
i0.ɵɵelementStart(4, "div", 125);
|
|
1615
1499
|
i0.ɵɵtext(5, "Total Entries");
|
|
1616
1500
|
i0.ɵɵelementEnd()();
|
|
1617
|
-
i0.ɵɵelementStart(6, "div",
|
|
1501
|
+
i0.ɵɵelementStart(6, "div", 123)(7, "div", 124);
|
|
1618
1502
|
i0.ɵɵtext(8);
|
|
1619
1503
|
i0.ɵɵelementEnd();
|
|
1620
|
-
i0.ɵɵelementStart(9, "div",
|
|
1504
|
+
i0.ɵɵelementStart(9, "div", 125);
|
|
1621
1505
|
i0.ɵɵtext(10, "Total Size");
|
|
1622
1506
|
i0.ɵɵelementEnd()();
|
|
1623
|
-
i0.ɵɵelementStart(11, "div",
|
|
1507
|
+
i0.ɵɵelementStart(11, "div", 123)(12, "div", 124);
|
|
1624
1508
|
i0.ɵɵtext(13);
|
|
1625
1509
|
i0.ɵɵelementEnd();
|
|
1626
|
-
i0.ɵɵelementStart(14, "div",
|
|
1510
|
+
i0.ɵɵelementStart(14, "div", 125);
|
|
1627
1511
|
i0.ɵɵtext(15, "Cache Hits");
|
|
1628
1512
|
i0.ɵɵelementEnd()();
|
|
1629
|
-
i0.ɵɵelementStart(16, "div",
|
|
1513
|
+
i0.ɵɵelementStart(16, "div", 123)(17, "div", 124);
|
|
1630
1514
|
i0.ɵɵtext(18);
|
|
1631
1515
|
i0.ɵɵelementEnd();
|
|
1632
|
-
i0.ɵɵelementStart(19, "div",
|
|
1516
|
+
i0.ɵɵelementStart(19, "div", 125);
|
|
1633
1517
|
i0.ɵɵtext(20, "Cache Misses");
|
|
1634
1518
|
i0.ɵɵelementEnd()();
|
|
1635
|
-
i0.ɵɵelementStart(21, "div",
|
|
1519
|
+
i0.ɵɵelementStart(21, "div", 123)(22, "div", 124);
|
|
1636
1520
|
i0.ɵɵtext(23);
|
|
1637
1521
|
i0.ɵɵpipe(24, "number");
|
|
1638
1522
|
i0.ɵɵelementEnd();
|
|
1639
|
-
i0.ɵɵelementStart(25, "div",
|
|
1523
|
+
i0.ɵɵelementStart(25, "div", 125);
|
|
1640
1524
|
i0.ɵɵtext(26, "Hit Rate");
|
|
1641
1525
|
i0.ɵɵelementEnd()()();
|
|
1642
|
-
i0.ɵɵelementStart(27, "div",
|
|
1526
|
+
i0.ɵɵelementStart(27, "div", 234)(28, "h4");
|
|
1643
1527
|
i0.ɵɵtext(29, "By Type");
|
|
1644
1528
|
i0.ɵɵelementEnd();
|
|
1645
|
-
i0.ɵɵelementStart(30, "div",
|
|
1646
|
-
i0.ɵɵlistener("click", function
|
|
1647
|
-
i0.ɵɵelementStart(32, "span",
|
|
1648
|
-
i0.ɵɵelement(33, "i",
|
|
1529
|
+
i0.ɵɵelementStart(30, "div", 235)(31, "div", 236);
|
|
1530
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_31_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("dataset")); });
|
|
1531
|
+
i0.ɵɵelementStart(32, "span", 237);
|
|
1532
|
+
i0.ɵɵelement(33, "i", 42);
|
|
1649
1533
|
i0.ɵɵelementEnd();
|
|
1650
|
-
i0.ɵɵelementStart(34, "span",
|
|
1534
|
+
i0.ɵɵelementStart(34, "span", 238);
|
|
1651
1535
|
i0.ɵɵtext(35, "Datasets");
|
|
1652
1536
|
i0.ɵɵelementEnd();
|
|
1653
|
-
i0.ɵɵelementStart(36, "span",
|
|
1537
|
+
i0.ɵɵelementStart(36, "span", 239);
|
|
1654
1538
|
i0.ɵɵtext(37);
|
|
1655
1539
|
i0.ɵɵelementEnd();
|
|
1656
|
-
i0.ɵɵelementStart(38, "span",
|
|
1540
|
+
i0.ɵɵelementStart(38, "span", 240);
|
|
1657
1541
|
i0.ɵɵtext(39);
|
|
1658
1542
|
i0.ɵɵelementEnd()();
|
|
1659
|
-
i0.ɵɵelementStart(40, "div",
|
|
1660
|
-
i0.ɵɵlistener("click", function
|
|
1661
|
-
i0.ɵɵelementStart(41, "span",
|
|
1662
|
-
i0.ɵɵelement(42, "i",
|
|
1543
|
+
i0.ɵɵelementStart(40, "div", 236);
|
|
1544
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_40_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runview")); });
|
|
1545
|
+
i0.ɵɵelementStart(41, "span", 237);
|
|
1546
|
+
i0.ɵɵelement(42, "i", 241);
|
|
1663
1547
|
i0.ɵɵelementEnd();
|
|
1664
|
-
i0.ɵɵelementStart(43, "span",
|
|
1548
|
+
i0.ɵɵelementStart(43, "span", 238);
|
|
1665
1549
|
i0.ɵɵtext(44, "RunViews");
|
|
1666
1550
|
i0.ɵɵelementEnd();
|
|
1667
|
-
i0.ɵɵelementStart(45, "span",
|
|
1551
|
+
i0.ɵɵelementStart(45, "span", 239);
|
|
1668
1552
|
i0.ɵɵtext(46);
|
|
1669
1553
|
i0.ɵɵelementEnd();
|
|
1670
|
-
i0.ɵɵelementStart(47, "span",
|
|
1554
|
+
i0.ɵɵelementStart(47, "span", 240);
|
|
1671
1555
|
i0.ɵɵtext(48);
|
|
1672
1556
|
i0.ɵɵelementEnd()();
|
|
1673
|
-
i0.ɵɵelementStart(49, "div",
|
|
1674
|
-
i0.ɵɵlistener("click", function
|
|
1675
|
-
i0.ɵɵelementStart(50, "span",
|
|
1676
|
-
i0.ɵɵelement(51, "i",
|
|
1557
|
+
i0.ɵɵelementStart(49, "div", 236);
|
|
1558
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template_div_click_49_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setCacheTypeFilter("runquery")); });
|
|
1559
|
+
i0.ɵɵelementStart(50, "span", 237);
|
|
1560
|
+
i0.ɵɵelement(51, "i", 242);
|
|
1677
1561
|
i0.ɵɵelementEnd();
|
|
1678
|
-
i0.ɵɵelementStart(52, "span",
|
|
1562
|
+
i0.ɵɵelementStart(52, "span", 238);
|
|
1679
1563
|
i0.ɵɵtext(53, "RunQueries");
|
|
1680
1564
|
i0.ɵɵelementEnd();
|
|
1681
|
-
i0.ɵɵelementStart(54, "span",
|
|
1565
|
+
i0.ɵɵelementStart(54, "span", 239);
|
|
1682
1566
|
i0.ɵɵtext(55);
|
|
1683
1567
|
i0.ɵɵelementEnd();
|
|
1684
|
-
i0.ɵɵelementStart(56, "span",
|
|
1568
|
+
i0.ɵɵelementStart(56, "span", 240);
|
|
1685
1569
|
i0.ɵɵtext(57);
|
|
1686
1570
|
i0.ɵɵelementEnd()()()();
|
|
1687
|
-
i0.ɵɵconditionalCreate(58,
|
|
1571
|
+
i0.ɵɵconditionalCreate(58, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_58_Template, 34, 9, "div", 243)(59, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Conditional_59_Template, 6, 0, "div", 28);
|
|
1688
1572
|
} if (rf & 2) {
|
|
1689
|
-
const
|
|
1573
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1690
1574
|
i0.ɵɵadvance(3);
|
|
1691
|
-
i0.ɵɵtextInterpolate((
|
|
1575
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.totalEntries) || 0);
|
|
1692
1576
|
i0.ɵɵadvance(5);
|
|
1693
|
-
i0.ɵɵtextInterpolate(
|
|
1577
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.totalSizeBytes) || 0));
|
|
1694
1578
|
i0.ɵɵadvance(5);
|
|
1695
|
-
i0.ɵɵtextInterpolate((
|
|
1579
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.hits) || 0);
|
|
1696
1580
|
i0.ɵɵadvance(5);
|
|
1697
|
-
i0.ɵɵtextInterpolate((
|
|
1581
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.misses) || 0);
|
|
1698
1582
|
i0.ɵɵadvance(5);
|
|
1699
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(24, 12,
|
|
1583
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(24, 12, ctx_r1.cacheHitRate, "1.1-1"), "%");
|
|
1700
1584
|
i0.ɵɵadvance(14);
|
|
1701
|
-
i0.ɵɵtextInterpolate((
|
|
1585
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.dataset == null ? null : ctx_r1.cacheStats.byType.dataset.count) || 0);
|
|
1702
1586
|
i0.ɵɵadvance(2);
|
|
1703
|
-
i0.ɵɵtextInterpolate(
|
|
1587
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.dataset == null ? null : ctx_r1.cacheStats.byType.dataset.sizeBytes) || 0));
|
|
1704
1588
|
i0.ɵɵadvance(7);
|
|
1705
|
-
i0.ɵɵtextInterpolate((
|
|
1589
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runview == null ? null : ctx_r1.cacheStats.byType.runview.count) || 0);
|
|
1706
1590
|
i0.ɵɵadvance(2);
|
|
1707
|
-
i0.ɵɵtextInterpolate(
|
|
1591
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runview == null ? null : ctx_r1.cacheStats.byType.runview.sizeBytes) || 0));
|
|
1708
1592
|
i0.ɵɵadvance(7);
|
|
1709
|
-
i0.ɵɵtextInterpolate((
|
|
1593
|
+
i0.ɵɵtextInterpolate((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runquery == null ? null : ctx_r1.cacheStats.byType.runquery.count) || 0);
|
|
1710
1594
|
i0.ɵɵadvance(2);
|
|
1711
|
-
i0.ɵɵtextInterpolate(
|
|
1595
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatBytes((ctx_r1.cacheStats == null ? null : ctx_r1.cacheStats.byType == null ? null : ctx_r1.cacheStats.byType.runquery == null ? null : ctx_r1.cacheStats.byType.runquery.sizeBytes) || 0));
|
|
1712
1596
|
i0.ɵɵadvance();
|
|
1713
|
-
i0.ɵɵconditional(
|
|
1597
|
+
i0.ɵɵconditional(ctx_r1.filteredCacheEntries.length > 0 ? 58 : ctx_r1.cacheStats && ctx_r1.cacheStats.totalEntries === 0 ? 59 : -1);
|
|
1714
1598
|
} }
|
|
1715
|
-
function
|
|
1599
|
+
function SystemDiagnosticsComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1716
1600
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
1717
|
-
i0.ɵɵelementStart(0, "div",
|
|
1718
|
-
i0.ɵɵelement(3, "i",
|
|
1601
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 22)(2, "h3");
|
|
1602
|
+
i0.ɵɵelement(3, "i", 232);
|
|
1719
1603
|
i0.ɵɵtext(4, " Local Cache ");
|
|
1720
1604
|
i0.ɵɵelementEnd();
|
|
1721
|
-
i0.ɵɵelementStart(5, "div",
|
|
1722
|
-
i0.ɵɵlistener("click", function
|
|
1723
|
-
i0.ɵɵelement(7, "i",
|
|
1605
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "button", 25);
|
|
1606
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_18_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clearAllCache()); });
|
|
1607
|
+
i0.ɵɵelement(7, "i", 85);
|
|
1724
1608
|
i0.ɵɵtext(8, " Clear All ");
|
|
1725
1609
|
i0.ɵɵelementEnd()()();
|
|
1726
|
-
i0.ɵɵelementStart(9, "div",
|
|
1727
|
-
i0.ɵɵconditionalCreate(10,
|
|
1610
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
1611
|
+
i0.ɵɵconditionalCreate(10, SystemDiagnosticsComponent_Conditional_18_Conditional_10_Template, 6, 0, "div", 81)(11, SystemDiagnosticsComponent_Conditional_18_Conditional_11_Template, 60, 15);
|
|
1728
1612
|
i0.ɵɵelementEnd()();
|
|
1729
1613
|
} if (rf & 2) {
|
|
1730
|
-
const
|
|
1614
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1731
1615
|
i0.ɵɵadvance(6);
|
|
1732
|
-
i0.ɵɵproperty("disabled", !
|
|
1616
|
+
i0.ɵɵproperty("disabled", !ctx_r1.cacheStats || ctx_r1.cacheStats.totalEntries === 0);
|
|
1733
1617
|
i0.ɵɵadvance(4);
|
|
1734
|
-
i0.ɵɵconditional(!
|
|
1618
|
+
i0.ɵɵconditional(!ctx_r1.cacheInitialized ? 10 : 11);
|
|
1735
1619
|
} }
|
|
1736
|
-
function
|
|
1737
|
-
i0.ɵɵelementStart(0, "div",
|
|
1620
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
1621
|
+
i0.ɵɵelementStart(0, "div", 263)(1, "span", 264);
|
|
1738
1622
|
i0.ɵɵtext(2, "Entity:");
|
|
1739
1623
|
i0.ɵɵelementEnd();
|
|
1740
|
-
i0.ɵɵelementStart(3, "span",
|
|
1624
|
+
i0.ɵɵelementStart(3, "span", 272);
|
|
1741
1625
|
i0.ɵɵtext(4);
|
|
1742
1626
|
i0.ɵɵelementEnd()();
|
|
1743
1627
|
} if (rf & 2) {
|
|
1744
|
-
const
|
|
1628
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1745
1629
|
i0.ɵɵadvance(4);
|
|
1746
|
-
i0.ɵɵtextInterpolate(
|
|
1630
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.entityName);
|
|
1747
1631
|
} }
|
|
1748
|
-
function
|
|
1749
|
-
i0.ɵɵelementStart(0, "div",
|
|
1632
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
1633
|
+
i0.ɵɵelementStart(0, "div", 263)(1, "span", 264);
|
|
1750
1634
|
i0.ɵɵtext(2, "Filter:");
|
|
1751
1635
|
i0.ɵɵelementEnd();
|
|
1752
|
-
i0.ɵɵelementStart(3, "code",
|
|
1636
|
+
i0.ɵɵelementStart(3, "code", 273);
|
|
1753
1637
|
i0.ɵɵtext(4);
|
|
1754
1638
|
i0.ɵɵelementEnd()();
|
|
1755
1639
|
} if (rf & 2) {
|
|
1756
|
-
const
|
|
1640
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1757
1641
|
i0.ɵɵadvance(4);
|
|
1758
|
-
i0.ɵɵtextInterpolate(
|
|
1642
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.filter);
|
|
1759
1643
|
} }
|
|
1760
|
-
function
|
|
1761
|
-
i0.ɵɵelementStart(0, "div",
|
|
1644
|
+
function SystemDiagnosticsComponent_Conditional_27_For_46_Template(rf, ctx) { if (rf & 1) {
|
|
1645
|
+
i0.ɵɵelementStart(0, "div", 268)(1, "span", 274);
|
|
1762
1646
|
i0.ɵɵtext(2);
|
|
1763
1647
|
i0.ɵɵelementEnd();
|
|
1764
|
-
i0.ɵɵelementStart(3, "span",
|
|
1648
|
+
i0.ɵɵelementStart(3, "span", 275);
|
|
1765
1649
|
i0.ɵɵtext(4);
|
|
1766
1650
|
i0.ɵɵelementEnd()();
|
|
1767
1651
|
} if (rf & 2) {
|
|
@@ -1771,178 +1655,178 @@ function SystemDiagnosticsComponent_Conditional_57_For_46_Template(rf, ctx) { if
|
|
|
1771
1655
|
i0.ɵɵadvance(2);
|
|
1772
1656
|
i0.ɵɵtextInterpolate(param_r41.value);
|
|
1773
1657
|
} }
|
|
1774
|
-
function
|
|
1775
|
-
i0.ɵɵelementStart(0, "div",
|
|
1776
|
-
i0.ɵɵelement(1, "i",
|
|
1658
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_47_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1659
|
+
i0.ɵɵelementStart(0, "div", 279);
|
|
1660
|
+
i0.ɵɵelement(1, "i", 89);
|
|
1777
1661
|
i0.ɵɵtext(2);
|
|
1778
1662
|
i0.ɵɵelementEnd();
|
|
1779
1663
|
} if (rf & 2) {
|
|
1780
|
-
const
|
|
1664
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1781
1665
|
i0.ɵɵadvance(2);
|
|
1782
|
-
i0.ɵɵtextInterpolate1(" This pattern has been called ",
|
|
1666
|
+
i0.ɵɵtextInterpolate1(" This pattern has been called ", ctx_r1.eventDetailPanel.relatedPattern.count, " times. Consider caching or batching. ");
|
|
1783
1667
|
} }
|
|
1784
|
-
function
|
|
1785
|
-
i0.ɵɵelementStart(0, "div",
|
|
1786
|
-
i0.ɵɵelement(2, "i",
|
|
1668
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
1669
|
+
i0.ɵɵelementStart(0, "div", 219)(1, "h4");
|
|
1670
|
+
i0.ɵɵelement(2, "i", 79);
|
|
1787
1671
|
i0.ɵɵtext(3, " Related Pattern");
|
|
1788
1672
|
i0.ɵɵelementEnd();
|
|
1789
|
-
i0.ɵɵelementStart(4, "div",
|
|
1673
|
+
i0.ɵɵelementStart(4, "div", 276)(5, "div", 277)(6, "span", 278);
|
|
1790
1674
|
i0.ɵɵtext(7);
|
|
1791
1675
|
i0.ɵɵelementEnd();
|
|
1792
|
-
i0.ɵɵelementStart(8, "span",
|
|
1676
|
+
i0.ɵɵelementStart(8, "span", 40);
|
|
1793
1677
|
i0.ɵɵtext(9, "Total Calls");
|
|
1794
1678
|
i0.ɵɵelementEnd()();
|
|
1795
|
-
i0.ɵɵelementStart(10, "div",
|
|
1679
|
+
i0.ɵɵelementStart(10, "div", 277)(11, "span", 278);
|
|
1796
1680
|
i0.ɵɵtext(12);
|
|
1797
1681
|
i0.ɵɵpipe(13, "number");
|
|
1798
1682
|
i0.ɵɵelementEnd();
|
|
1799
|
-
i0.ɵɵelementStart(14, "span",
|
|
1683
|
+
i0.ɵɵelementStart(14, "span", 40);
|
|
1800
1684
|
i0.ɵɵtext(15, "Avg Duration");
|
|
1801
1685
|
i0.ɵɵelementEnd()();
|
|
1802
|
-
i0.ɵɵelementStart(16, "div",
|
|
1686
|
+
i0.ɵɵelementStart(16, "div", 277)(17, "span", 278);
|
|
1803
1687
|
i0.ɵɵtext(18);
|
|
1804
1688
|
i0.ɵɵpipe(19, "number");
|
|
1805
1689
|
i0.ɵɵpipe(20, "number");
|
|
1806
1690
|
i0.ɵɵelementEnd();
|
|
1807
|
-
i0.ɵɵelementStart(21, "span",
|
|
1691
|
+
i0.ɵɵelementStart(21, "span", 40);
|
|
1808
1692
|
i0.ɵɵtext(22, "Range");
|
|
1809
1693
|
i0.ɵɵelementEnd()()();
|
|
1810
|
-
i0.ɵɵconditionalCreate(23,
|
|
1694
|
+
i0.ɵɵconditionalCreate(23, SystemDiagnosticsComponent_Conditional_27_Conditional_47_Conditional_23_Template, 3, 1, "div", 279);
|
|
1811
1695
|
i0.ɵɵelementEnd();
|
|
1812
1696
|
} if (rf & 2) {
|
|
1813
|
-
const
|
|
1697
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1814
1698
|
i0.ɵɵadvance(7);
|
|
1815
|
-
i0.ɵɵtextInterpolate(
|
|
1699
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.relatedPattern.count);
|
|
1816
1700
|
i0.ɵɵadvance(5);
|
|
1817
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(13, 5,
|
|
1701
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(13, 5, ctx_r1.eventDetailPanel.relatedPattern.avgElapsedMs, "1.1-1"), "ms");
|
|
1818
1702
|
i0.ɵɵadvance(6);
|
|
1819
|
-
i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(19, 8,
|
|
1703
|
+
i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(19, 8, ctx_r1.eventDetailPanel.relatedPattern.minElapsedMs, "1.0-0"), " - ", i0.ɵɵpipeBind2(20, 11, ctx_r1.eventDetailPanel.relatedPattern.maxElapsedMs, "1.0-0"), "ms");
|
|
1820
1704
|
i0.ɵɵadvance(5);
|
|
1821
|
-
i0.ɵɵconditional(
|
|
1705
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.relatedPattern.count >= 2 ? 23 : -1);
|
|
1822
1706
|
} }
|
|
1823
|
-
function
|
|
1707
|
+
function SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
1824
1708
|
const _r42 = i0.ɵɵgetCurrentView();
|
|
1825
|
-
i0.ɵɵelementStart(0, "button",
|
|
1826
|
-
i0.ɵɵlistener("click", function
|
|
1827
|
-
i0.ɵɵelement(1, "i",
|
|
1709
|
+
i0.ɵɵelementStart(0, "button", 270);
|
|
1710
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.filterByEntity(ctx_r1.eventDetailPanel.event.entityName)); });
|
|
1711
|
+
i0.ɵɵelement(1, "i", 202);
|
|
1828
1712
|
i0.ɵɵtext(2, " Filter by Entity ");
|
|
1829
1713
|
i0.ɵɵelementEnd();
|
|
1830
1714
|
} }
|
|
1831
|
-
function
|
|
1715
|
+
function SystemDiagnosticsComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1832
1716
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
1833
|
-
i0.ɵɵelementStart(0, "div",
|
|
1834
|
-
i0.ɵɵlistener("click", function
|
|
1717
|
+
i0.ɵɵelementStart(0, "div", 253);
|
|
1718
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEventDetailPanel()); });
|
|
1835
1719
|
i0.ɵɵelementEnd();
|
|
1836
|
-
i0.ɵɵelementStart(1, "div",
|
|
1720
|
+
i0.ɵɵelementStart(1, "div", 254)(2, "div", 22)(3, "div", 255)(4, "span", 197);
|
|
1837
1721
|
i0.ɵɵtext(5);
|
|
1838
1722
|
i0.ɵɵelementEnd();
|
|
1839
1723
|
i0.ɵɵelementStart(6, "h3");
|
|
1840
1724
|
i0.ɵɵtext(7, "Event Details");
|
|
1841
1725
|
i0.ɵɵelementEnd()();
|
|
1842
|
-
i0.ɵɵelementStart(8, "button",
|
|
1843
|
-
i0.ɵɵlistener("click", function
|
|
1844
|
-
i0.ɵɵelement(9, "i",
|
|
1726
|
+
i0.ɵɵelementStart(8, "button", 256);
|
|
1727
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEventDetailPanel()); });
|
|
1728
|
+
i0.ɵɵelement(9, "i", 91);
|
|
1845
1729
|
i0.ɵɵelementEnd()();
|
|
1846
|
-
i0.ɵɵelementStart(10, "div",
|
|
1730
|
+
i0.ɵɵelementStart(10, "div", 257)(11, "div", 258)(12, "div", 259)(13, "div", 260);
|
|
1847
1731
|
i0.ɵɵtext(14);
|
|
1848
1732
|
i0.ɵɵpipe(15, "number");
|
|
1849
1733
|
i0.ɵɵelementEnd();
|
|
1850
|
-
i0.ɵɵelementStart(16, "div",
|
|
1734
|
+
i0.ɵɵelementStart(16, "div", 261);
|
|
1851
1735
|
i0.ɵɵtext(17, "Duration");
|
|
1852
1736
|
i0.ɵɵelementEnd()();
|
|
1853
|
-
i0.ɵɵelementStart(18, "div",
|
|
1737
|
+
i0.ɵɵelementStart(18, "div", 259)(19, "div", 260);
|
|
1854
1738
|
i0.ɵɵtext(20);
|
|
1855
1739
|
i0.ɵɵelementEnd();
|
|
1856
|
-
i0.ɵɵelementStart(21, "div",
|
|
1740
|
+
i0.ɵɵelementStart(21, "div", 261);
|
|
1857
1741
|
i0.ɵɵtext(22, "Time");
|
|
1858
1742
|
i0.ɵɵelementEnd()();
|
|
1859
|
-
i0.ɵɵelementStart(23, "div",
|
|
1743
|
+
i0.ɵɵelementStart(23, "div", 259)(24, "div", 260);
|
|
1860
1744
|
i0.ɵɵtext(25);
|
|
1861
1745
|
i0.ɵɵelementEnd();
|
|
1862
|
-
i0.ɵɵelementStart(26, "div",
|
|
1746
|
+
i0.ɵɵelementStart(26, "div", 261);
|
|
1863
1747
|
i0.ɵɵtext(27, "Relative");
|
|
1864
1748
|
i0.ɵɵelementEnd()()();
|
|
1865
|
-
i0.ɵɵelementStart(28, "div",
|
|
1866
|
-
i0.ɵɵelement(30, "i",
|
|
1749
|
+
i0.ɵɵelementStart(28, "div", 219)(29, "h4");
|
|
1750
|
+
i0.ɵɵelement(30, "i", 242);
|
|
1867
1751
|
i0.ɵɵtext(31, " Operation");
|
|
1868
1752
|
i0.ɵɵelementEnd();
|
|
1869
|
-
i0.ɵɵelementStart(32, "div",
|
|
1753
|
+
i0.ɵɵelementStart(32, "div", 262)(33, "div", 263)(34, "span", 264);
|
|
1870
1754
|
i0.ɵɵtext(35, "Operation:");
|
|
1871
1755
|
i0.ɵɵelementEnd();
|
|
1872
|
-
i0.ɵɵelementStart(36, "span",
|
|
1756
|
+
i0.ɵɵelementStart(36, "span", 265);
|
|
1873
1757
|
i0.ɵɵtext(37);
|
|
1874
1758
|
i0.ɵɵelementEnd()();
|
|
1875
|
-
i0.ɵɵconditionalCreate(38,
|
|
1876
|
-
i0.ɵɵconditionalCreate(39,
|
|
1759
|
+
i0.ɵɵconditionalCreate(38, SystemDiagnosticsComponent_Conditional_27_Conditional_38_Template, 5, 1, "div", 263);
|
|
1760
|
+
i0.ɵɵconditionalCreate(39, SystemDiagnosticsComponent_Conditional_27_Conditional_39_Template, 5, 1, "div", 263);
|
|
1877
1761
|
i0.ɵɵelementEnd()();
|
|
1878
|
-
i0.ɵɵelementStart(40, "div",
|
|
1879
|
-
i0.ɵɵelement(42, "i",
|
|
1762
|
+
i0.ɵɵelementStart(40, "div", 219)(41, "h4");
|
|
1763
|
+
i0.ɵɵelement(42, "i", 266);
|
|
1880
1764
|
i0.ɵɵtext(43, " Parameters");
|
|
1881
1765
|
i0.ɵɵelementEnd();
|
|
1882
|
-
i0.ɵɵelementStart(44, "div",
|
|
1883
|
-
i0.ɵɵrepeaterCreate(45,
|
|
1766
|
+
i0.ɵɵelementStart(44, "div", 267);
|
|
1767
|
+
i0.ɵɵrepeaterCreate(45, SystemDiagnosticsComponent_Conditional_27_For_46_Template, 5, 2, "div", 268, _forTrack6);
|
|
1884
1768
|
i0.ɵɵelementEnd()();
|
|
1885
|
-
i0.ɵɵconditionalCreate(47,
|
|
1886
|
-
i0.ɵɵelementStart(48, "div",
|
|
1887
|
-
i0.ɵɵlistener("click", function
|
|
1888
|
-
i0.ɵɵelement(50, "i",
|
|
1769
|
+
i0.ɵɵconditionalCreate(47, SystemDiagnosticsComponent_Conditional_27_Conditional_47_Template, 24, 14, "div", 219);
|
|
1770
|
+
i0.ɵɵelementStart(48, "div", 269)(49, "button", 270);
|
|
1771
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_27_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyEventToClipboard(ctx_r1.eventDetailPanel.event)); });
|
|
1772
|
+
i0.ɵɵelement(50, "i", 47);
|
|
1889
1773
|
i0.ɵɵtext(51, " Copy JSON ");
|
|
1890
1774
|
i0.ɵɵelementEnd();
|
|
1891
|
-
i0.ɵɵconditionalCreate(52,
|
|
1775
|
+
i0.ɵɵconditionalCreate(52, SystemDiagnosticsComponent_Conditional_27_Conditional_52_Template, 3, 0, "button", 271);
|
|
1892
1776
|
i0.ɵɵelementEnd()()();
|
|
1893
1777
|
} if (rf & 2) {
|
|
1894
|
-
const
|
|
1778
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1895
1779
|
i0.ɵɵadvance();
|
|
1896
|
-
i0.ɵɵclassProp("open",
|
|
1780
|
+
i0.ɵɵclassProp("open", ctx_r1.eventDetailPanel.isOpen);
|
|
1897
1781
|
i0.ɵɵadvance(3);
|
|
1898
|
-
i0.ɵɵclassMap("cat-" +
|
|
1782
|
+
i0.ɵɵclassMap("cat-" + ctx_r1.eventDetailPanel.event.category.toLowerCase());
|
|
1899
1783
|
i0.ɵɵadvance();
|
|
1900
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1784
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.eventDetailPanel.event.category, " ");
|
|
1901
1785
|
i0.ɵɵadvance(8);
|
|
1902
|
-
i0.ɵɵclassProp("slow", (
|
|
1786
|
+
i0.ɵɵclassProp("slow", (ctx_r1.eventDetailPanel.event.elapsedMs || 0) >= ctx_r1.slowQueryThresholdMs);
|
|
1903
1787
|
i0.ɵɵadvance();
|
|
1904
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1788
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.eventDetailPanel.event.elapsedMs !== undefined ? i0.ɵɵpipeBind2(15, 15, ctx_r1.eventDetailPanel.event.elapsedMs, "1.0-0") + "ms" : "In Progress", " ");
|
|
1905
1789
|
i0.ɵɵadvance(6);
|
|
1906
|
-
i0.ɵɵtextInterpolate(
|
|
1790
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(ctx_r1.eventDetailPanel.event.timestamp));
|
|
1907
1791
|
i0.ɵɵadvance(5);
|
|
1908
|
-
i0.ɵɵtextInterpolate1("+",
|
|
1792
|
+
i0.ɵɵtextInterpolate1("+", ctx_r1.formatRelativeTime(ctx_r1.eventDetailPanel.event.startTime - ctx_r1.telemetryBootTime));
|
|
1909
1793
|
i0.ɵɵadvance(12);
|
|
1910
|
-
i0.ɵɵtextInterpolate(
|
|
1794
|
+
i0.ɵɵtextInterpolate(ctx_r1.eventDetailPanel.event.operation);
|
|
1911
1795
|
i0.ɵɵadvance();
|
|
1912
|
-
i0.ɵɵconditional(
|
|
1796
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.entityName ? 38 : -1);
|
|
1913
1797
|
i0.ɵɵadvance();
|
|
1914
|
-
i0.ɵɵconditional(
|
|
1798
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.filter ? 39 : -1);
|
|
1915
1799
|
i0.ɵɵadvance(6);
|
|
1916
|
-
i0.ɵɵrepeater(
|
|
1800
|
+
i0.ɵɵrepeater(ctx_r1.getEventParams(ctx_r1.eventDetailPanel.event));
|
|
1917
1801
|
i0.ɵɵadvance(2);
|
|
1918
|
-
i0.ɵɵconditional(
|
|
1802
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.relatedPattern ? 47 : -1);
|
|
1919
1803
|
i0.ɵɵadvance(5);
|
|
1920
|
-
i0.ɵɵconditional(
|
|
1804
|
+
i0.ɵɵconditional(ctx_r1.eventDetailPanel.event.entityName ? 52 : -1);
|
|
1921
1805
|
} }
|
|
1922
|
-
function
|
|
1923
|
-
i0.ɵɵelementStart(0, "div",
|
|
1806
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
1807
|
+
i0.ɵɵelementStart(0, "div", 285)(1, "span", 125);
|
|
1924
1808
|
i0.ɵɵtext(2, "Last Loaded");
|
|
1925
1809
|
i0.ɵɵelementEnd();
|
|
1926
|
-
i0.ɵɵelementStart(3, "span",
|
|
1810
|
+
i0.ɵɵelementStart(3, "span", 124);
|
|
1927
1811
|
i0.ɵɵtext(4);
|
|
1928
1812
|
i0.ɵɵelementEnd()();
|
|
1929
1813
|
} if (rf & 2) {
|
|
1930
|
-
const
|
|
1814
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1931
1815
|
i0.ɵɵadvance(4);
|
|
1932
|
-
i0.ɵɵtextInterpolate(
|
|
1816
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTime(ctx_r1.engineDetailPanel.engine.lastLoadedAt));
|
|
1933
1817
|
} }
|
|
1934
|
-
function
|
|
1935
|
-
i0.ɵɵelementStart(0, "div",
|
|
1936
|
-
i0.ɵɵelement(1, "i",
|
|
1818
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
1819
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
1820
|
+
i0.ɵɵelement(1, "i", 30);
|
|
1937
1821
|
i0.ɵɵelementStart(2, "p");
|
|
1938
1822
|
i0.ɵɵtext(3, "No config items found");
|
|
1939
1823
|
i0.ɵɵelementEnd()();
|
|
1940
1824
|
} }
|
|
1941
|
-
function
|
|
1942
|
-
i0.ɵɵelementStart(0, "div",
|
|
1825
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1826
|
+
i0.ɵɵelementStart(0, "div", 299)(1, "span", 220);
|
|
1943
1827
|
i0.ɵɵtext(2, "Filter:");
|
|
1944
1828
|
i0.ɵɵelementEnd();
|
|
1945
|
-
i0.ɵɵelementStart(3, "code",
|
|
1829
|
+
i0.ɵɵelementStart(3, "code", 300);
|
|
1946
1830
|
i0.ɵɵtext(4);
|
|
1947
1831
|
i0.ɵɵelementEnd()();
|
|
1948
1832
|
} if (rf & 2) {
|
|
@@ -1950,11 +1834,11 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
1950
1834
|
i0.ɵɵadvance(4);
|
|
1951
1835
|
i0.ɵɵtextInterpolate(item_r45.filter);
|
|
1952
1836
|
} }
|
|
1953
|
-
function
|
|
1954
|
-
i0.ɵɵelementStart(0, "div",
|
|
1837
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1838
|
+
i0.ɵɵelementStart(0, "div", 299)(1, "span", 220);
|
|
1955
1839
|
i0.ɵɵtext(2, "Order By:");
|
|
1956
1840
|
i0.ɵɵelementEnd();
|
|
1957
|
-
i0.ɵɵelementStart(3, "code",
|
|
1841
|
+
i0.ɵɵelementStart(3, "code", 300);
|
|
1958
1842
|
i0.ɵɵtext(4);
|
|
1959
1843
|
i0.ɵɵelementEnd()();
|
|
1960
1844
|
} if (rf & 2) {
|
|
@@ -1962,11 +1846,11 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
1962
1846
|
i0.ɵɵadvance(4);
|
|
1963
1847
|
i0.ɵɵtextInterpolate(item_r45.orderBy);
|
|
1964
1848
|
} }
|
|
1965
|
-
function
|
|
1966
|
-
i0.ɵɵelementStart(0, "div",
|
|
1849
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1850
|
+
i0.ɵɵelementStart(0, "div", 301)(1, "span", 220);
|
|
1967
1851
|
i0.ɵɵtext(2, "Error:");
|
|
1968
1852
|
i0.ɵɵelementEnd();
|
|
1969
|
-
i0.ɵɵelementStart(3, "span",
|
|
1853
|
+
i0.ɵɵelementStart(3, "span", 303);
|
|
1970
1854
|
i0.ɵɵtext(4);
|
|
1971
1855
|
i0.ɵɵelementEnd()();
|
|
1972
1856
|
} if (rf & 2) {
|
|
@@ -1974,28 +1858,28 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
1974
1858
|
i0.ɵɵadvance(4);
|
|
1975
1859
|
i0.ɵɵtextInterpolate(item_r45.errorMessage);
|
|
1976
1860
|
} }
|
|
1977
|
-
function
|
|
1978
|
-
i0.ɵɵelement(0, "i",
|
|
1861
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1862
|
+
i0.ɵɵelement(0, "i", 312);
|
|
1979
1863
|
} }
|
|
1980
|
-
function
|
|
1981
|
-
i0.ɵɵelement(0, "i",
|
|
1864
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1865
|
+
i0.ɵɵelement(0, "i", 313);
|
|
1982
1866
|
} }
|
|
1983
|
-
function
|
|
1984
|
-
i0.ɵɵelement(0, "i",
|
|
1867
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1868
|
+
i0.ɵɵelement(0, "i", 312);
|
|
1985
1869
|
} }
|
|
1986
|
-
function
|
|
1987
|
-
i0.ɵɵelement(0, "i",
|
|
1870
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1871
|
+
i0.ɵɵelement(0, "i", 21);
|
|
1988
1872
|
} }
|
|
1989
|
-
function
|
|
1873
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1990
1874
|
const _r46 = i0.ɵɵgetCurrentView();
|
|
1991
|
-
i0.ɵɵelementStart(0, "button",
|
|
1992
|
-
i0.ɵɵlistener("click", function
|
|
1993
|
-
i0.ɵɵconditionalCreate(1,
|
|
1875
|
+
i0.ɵɵelementStart(0, "button", 311);
|
|
1876
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.loadMoreData(item_r45)); });
|
|
1877
|
+
i0.ɵɵconditionalCreate(1, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_1_Template, 1, 0, "i", 312)(2, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_2_Template, 1, 0, "i", 313);
|
|
1994
1878
|
i0.ɵɵtext(3, " Load More ");
|
|
1995
1879
|
i0.ɵɵelementEnd();
|
|
1996
|
-
i0.ɵɵelementStart(4, "button",
|
|
1997
|
-
i0.ɵɵlistener("click", function
|
|
1998
|
-
i0.ɵɵconditionalCreate(5,
|
|
1880
|
+
i0.ɵɵelementStart(4, "button", 314);
|
|
1881
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r46); const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.loadAllData(item_r45)); });
|
|
1882
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_5_Template, 1, 0, "i", 312)(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Conditional_6_Template, 1, 0, "i", 21);
|
|
1999
1883
|
i0.ɵɵtext(7, " Load All ");
|
|
2000
1884
|
i0.ɵɵelementEnd();
|
|
2001
1885
|
} if (rf & 2) {
|
|
@@ -2008,13 +1892,13 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
2008
1892
|
i0.ɵɵadvance();
|
|
2009
1893
|
i0.ɵɵconditional(item_r45.isLoadingMore ? 5 : 6);
|
|
2010
1894
|
} }
|
|
2011
|
-
function
|
|
2012
|
-
i0.ɵɵelementStart(0, "span",
|
|
2013
|
-
i0.ɵɵelement(1, "i",
|
|
1895
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1896
|
+
i0.ɵɵelementStart(0, "span", 307);
|
|
1897
|
+
i0.ɵɵelement(1, "i", 315);
|
|
2014
1898
|
i0.ɵɵtext(2, " All Loaded ");
|
|
2015
1899
|
i0.ɵɵelementEnd();
|
|
2016
1900
|
} }
|
|
2017
|
-
function
|
|
1901
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
2018
1902
|
i0.ɵɵelementStart(0, "th");
|
|
2019
1903
|
i0.ɵɵtext(1);
|
|
2020
1904
|
i0.ɵɵelementEnd();
|
|
@@ -2023,58 +1907,58 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
2023
1907
|
i0.ɵɵadvance();
|
|
2024
1908
|
i0.ɵɵtextInterpolate(col_r47);
|
|
2025
1909
|
} }
|
|
2026
|
-
function
|
|
1910
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
2027
1911
|
const _r48 = i0.ɵɵgetCurrentView();
|
|
2028
|
-
i0.ɵɵelementStart(0, "button",
|
|
2029
|
-
i0.ɵɵlistener("click", function
|
|
2030
|
-
i0.ɵɵelement(1, "i",
|
|
1912
|
+
i0.ɵɵelementStart(0, "button", 318);
|
|
1913
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const row_r49 = i0.ɵɵnextContext().$implicit; const item_r45 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord(item_r45.entityName, row_r49)); });
|
|
1914
|
+
i0.ɵɵelement(1, "i", 319);
|
|
2031
1915
|
i0.ɵɵelementEnd();
|
|
2032
1916
|
} }
|
|
2033
|
-
function
|
|
2034
|
-
i0.ɵɵelementStart(0, "td",
|
|
1917
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
1918
|
+
i0.ɵɵelementStart(0, "td", 317);
|
|
2035
1919
|
i0.ɵɵtext(1);
|
|
2036
1920
|
i0.ɵɵelementEnd();
|
|
2037
1921
|
} if (rf & 2) {
|
|
2038
1922
|
const col_r50 = ctx.$implicit;
|
|
2039
1923
|
const row_r49 = i0.ɵɵnextContext().$implicit;
|
|
2040
|
-
const
|
|
2041
|
-
i0.ɵɵproperty("title",
|
|
1924
|
+
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
1925
|
+
i0.ɵɵproperty("title", ctx_r1.getSampleDataValue(row_r49, col_r50));
|
|
2042
1926
|
i0.ɵɵadvance();
|
|
2043
|
-
i0.ɵɵtextInterpolate(
|
|
1927
|
+
i0.ɵɵtextInterpolate(ctx_r1.truncateString(ctx_r1.getSampleDataValue(row_r49, col_r50), 30));
|
|
2044
1928
|
} }
|
|
2045
|
-
function
|
|
2046
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
2047
|
-
i0.ɵɵconditionalCreate(2,
|
|
1929
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
1930
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 310);
|
|
1931
|
+
i0.ɵɵconditionalCreate(2, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Conditional_2_Template, 2, 0, "button", 316);
|
|
2048
1932
|
i0.ɵɵelementEnd();
|
|
2049
|
-
i0.ɵɵrepeaterCreate(3,
|
|
1933
|
+
i0.ɵɵrepeaterCreate(3, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_For_4_Template, 2, 2, "td", 317, i0.ɵɵrepeaterTrackByIdentity);
|
|
2050
1934
|
i0.ɵɵelementEnd();
|
|
2051
1935
|
} if (rf & 2) {
|
|
2052
1936
|
const row_r49 = ctx.$implicit;
|
|
2053
1937
|
const item_r45 = i0.ɵɵnextContext(3).$implicit;
|
|
2054
|
-
const
|
|
1938
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
2055
1939
|
i0.ɵɵadvance(2);
|
|
2056
|
-
i0.ɵɵconditional(item_r45.entityName &&
|
|
1940
|
+
i0.ɵɵconditional(item_r45.entityName && ctx_r1.getRecordId(row_r49) ? 2 : -1);
|
|
2057
1941
|
i0.ɵɵadvance();
|
|
2058
|
-
i0.ɵɵrepeater(
|
|
1942
|
+
i0.ɵɵrepeater(ctx_r1.getSampleDataColumns(item_r45));
|
|
2059
1943
|
} }
|
|
2060
|
-
function
|
|
2061
|
-
i0.ɵɵelementStart(0, "div",
|
|
1944
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1945
|
+
i0.ɵɵelementStart(0, "div", 302)(1, "div", 304)(2, "span", 305);
|
|
2062
1946
|
i0.ɵɵtext(3);
|
|
2063
1947
|
i0.ɵɵelementEnd();
|
|
2064
|
-
i0.ɵɵelementStart(4, "div",
|
|
2065
|
-
i0.ɵɵconditionalCreate(5,
|
|
2066
|
-
i0.ɵɵconditionalCreate(6,
|
|
1948
|
+
i0.ɵɵelementStart(4, "div", 306);
|
|
1949
|
+
i0.ɵɵconditionalCreate(5, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_5_Template, 8, 4);
|
|
1950
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Conditional_6_Template, 3, 0, "span", 307);
|
|
2067
1951
|
i0.ɵɵelementEnd()();
|
|
2068
|
-
i0.ɵɵelementStart(7, "div",
|
|
2069
|
-
i0.ɵɵelement(11, "th",
|
|
2070
|
-
i0.ɵɵrepeaterCreate(12,
|
|
1952
|
+
i0.ɵɵelementStart(7, "div", 308)(8, "table", 309)(9, "thead")(10, "tr");
|
|
1953
|
+
i0.ɵɵelement(11, "th", 310);
|
|
1954
|
+
i0.ɵɵrepeaterCreate(12, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_13_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
2071
1955
|
i0.ɵɵelementEnd()();
|
|
2072
1956
|
i0.ɵɵelementStart(14, "tbody");
|
|
2073
|
-
i0.ɵɵrepeaterCreate(15,
|
|
1957
|
+
i0.ɵɵrepeaterCreate(15, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_For_16_Template, 5, 1, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
2074
1958
|
i0.ɵɵelementEnd()()()();
|
|
2075
1959
|
} if (rf & 2) {
|
|
2076
1960
|
const item_r45 = i0.ɵɵnextContext(2).$implicit;
|
|
2077
|
-
const
|
|
1961
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
2078
1962
|
i0.ɵɵadvance(3);
|
|
2079
1963
|
i0.ɵɵtextInterpolate2("Data (", item_r45.displayedData.length, " of ", item_r45.itemCount, ")");
|
|
2080
1964
|
i0.ɵɵadvance(2);
|
|
@@ -2082,21 +1966,21 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
2082
1966
|
i0.ɵɵadvance();
|
|
2083
1967
|
i0.ɵɵconditional(item_r45.allDataLoaded ? 6 : -1);
|
|
2084
1968
|
i0.ɵɵadvance(6);
|
|
2085
|
-
i0.ɵɵrepeater(
|
|
1969
|
+
i0.ɵɵrepeater(ctx_r1.getSampleDataColumns(item_r45));
|
|
2086
1970
|
i0.ɵɵadvance(3);
|
|
2087
1971
|
i0.ɵɵrepeater(item_r45.displayedData);
|
|
2088
1972
|
} }
|
|
2089
|
-
function
|
|
2090
|
-
i0.ɵɵelementStart(0, "div",
|
|
1973
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1974
|
+
i0.ɵɵelementStart(0, "div", 298)(1, "div", 299)(2, "span", 220);
|
|
2091
1975
|
i0.ɵɵtext(3, "Property:");
|
|
2092
1976
|
i0.ɵɵelementEnd();
|
|
2093
|
-
i0.ɵɵelementStart(4, "code",
|
|
1977
|
+
i0.ɵɵelementStart(4, "code", 300);
|
|
2094
1978
|
i0.ɵɵtext(5);
|
|
2095
1979
|
i0.ɵɵelementEnd()();
|
|
2096
|
-
i0.ɵɵconditionalCreate(6,
|
|
2097
|
-
i0.ɵɵconditionalCreate(7,
|
|
2098
|
-
i0.ɵɵconditionalCreate(8,
|
|
2099
|
-
i0.ɵɵconditionalCreate(9,
|
|
1980
|
+
i0.ɵɵconditionalCreate(6, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_6_Template, 5, 1, "div", 299);
|
|
1981
|
+
i0.ɵɵconditionalCreate(7, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_7_Template, 5, 1, "div", 299);
|
|
1982
|
+
i0.ɵɵconditionalCreate(8, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_8_Template, 5, 1, "div", 301);
|
|
1983
|
+
i0.ɵɵconditionalCreate(9, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Conditional_9_Template, 17, 4, "div", 302);
|
|
2100
1984
|
i0.ɵɵelementEnd();
|
|
2101
1985
|
} if (rf & 2) {
|
|
2102
1986
|
const item_r45 = i0.ɵɵnextContext().$implicit;
|
|
@@ -2111,27 +1995,27 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Conditio
|
|
|
2111
1995
|
i0.ɵɵadvance();
|
|
2112
1996
|
i0.ɵɵconditional(item_r45.displayedData.length > 0 ? 9 : -1);
|
|
2113
1997
|
} }
|
|
2114
|
-
function
|
|
1998
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
2115
1999
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
2116
|
-
i0.ɵɵelementStart(0, "div",
|
|
2117
|
-
i0.ɵɵlistener("click", function
|
|
2118
|
-
i0.ɵɵelementStart(2, "div",
|
|
2119
|
-
i0.ɵɵelement(3, "i",
|
|
2120
|
-
i0.ɵɵelementStart(4, "span",
|
|
2000
|
+
i0.ɵɵelementStart(0, "div", 290)(1, "div", 291);
|
|
2001
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template_div_click_1_listener() { const item_r45 = i0.ɵɵrestoreView(_r44).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleConfigItemExpanded(item_r45)); });
|
|
2002
|
+
i0.ɵɵelementStart(2, "div", 292);
|
|
2003
|
+
i0.ɵɵelement(3, "i", 293);
|
|
2004
|
+
i0.ɵɵelementStart(4, "span", 294);
|
|
2121
2005
|
i0.ɵɵtext(5);
|
|
2122
2006
|
i0.ɵɵelementEnd();
|
|
2123
|
-
i0.ɵɵelementStart(6, "span",
|
|
2007
|
+
i0.ɵɵelementStart(6, "span", 295);
|
|
2124
2008
|
i0.ɵɵtext(7);
|
|
2125
2009
|
i0.ɵɵelementEnd()();
|
|
2126
|
-
i0.ɵɵelementStart(8, "div",
|
|
2010
|
+
i0.ɵɵelementStart(8, "div", 296)(9, "span", 297);
|
|
2127
2011
|
i0.ɵɵtext(10);
|
|
2128
2012
|
i0.ɵɵelementEnd();
|
|
2129
|
-
i0.ɵɵelementStart(11, "span",
|
|
2013
|
+
i0.ɵɵelementStart(11, "span", 297);
|
|
2130
2014
|
i0.ɵɵtext(12);
|
|
2131
2015
|
i0.ɵɵelementEnd();
|
|
2132
|
-
i0.ɵɵelement(13, "i",
|
|
2016
|
+
i0.ɵɵelement(13, "i", 210);
|
|
2133
2017
|
i0.ɵɵelementEnd()();
|
|
2134
|
-
i0.ɵɵconditionalCreate(14,
|
|
2018
|
+
i0.ɵɵconditionalCreate(14, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Conditional_14_Template, 10, 5, "div", 298);
|
|
2135
2019
|
i0.ɵɵelementEnd();
|
|
2136
2020
|
} if (rf & 2) {
|
|
2137
2021
|
const item_r45 = ctx.$implicit;
|
|
@@ -2154,84 +2038,84 @@ function SystemDiagnosticsComponent_Conditional_58_Conditional_36_For_2_Template
|
|
|
2154
2038
|
i0.ɵɵadvance();
|
|
2155
2039
|
i0.ɵɵconditional(item_r45.expanded ? 14 : -1);
|
|
2156
2040
|
} }
|
|
2157
|
-
function
|
|
2158
|
-
i0.ɵɵelementStart(0, "div",
|
|
2159
|
-
i0.ɵɵrepeaterCreate(1,
|
|
2041
|
+
function SystemDiagnosticsComponent_Conditional_28_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
2042
|
+
i0.ɵɵelementStart(0, "div", 288);
|
|
2043
|
+
i0.ɵɵrepeaterCreate(1, SystemDiagnosticsComponent_Conditional_28_Conditional_36_For_2_Template, 15, 22, "div", 289, _forTrack7);
|
|
2160
2044
|
i0.ɵɵelementEnd();
|
|
2161
2045
|
} if (rf & 2) {
|
|
2162
|
-
const
|
|
2046
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
2163
2047
|
i0.ɵɵadvance();
|
|
2164
|
-
i0.ɵɵrepeater(
|
|
2048
|
+
i0.ɵɵrepeater(ctx_r1.engineDetailPanel.configItems);
|
|
2165
2049
|
} }
|
|
2166
|
-
function
|
|
2050
|
+
function SystemDiagnosticsComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
2167
2051
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
2168
|
-
i0.ɵɵelementStart(0, "div",
|
|
2169
|
-
i0.ɵɵlistener("click", function
|
|
2052
|
+
i0.ɵɵelementStart(0, "div", 280);
|
|
2053
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEngineDetailPanel()); });
|
|
2170
2054
|
i0.ɵɵelementEnd();
|
|
2171
|
-
i0.ɵɵelementStart(1, "div",
|
|
2172
|
-
i0.ɵɵelement(4, "i",
|
|
2055
|
+
i0.ɵɵelementStart(1, "div", 281)(2, "div", 22)(3, "div", 255);
|
|
2056
|
+
i0.ɵɵelement(4, "i", 23);
|
|
2173
2057
|
i0.ɵɵelementStart(5, "h3");
|
|
2174
2058
|
i0.ɵɵtext(6);
|
|
2175
2059
|
i0.ɵɵelementEnd()();
|
|
2176
|
-
i0.ɵɵelementStart(7, "div",
|
|
2177
|
-
i0.ɵɵlistener("click", function
|
|
2178
|
-
i0.ɵɵelement(9, "i",
|
|
2060
|
+
i0.ɵɵelementStart(7, "div", 282)(8, "button", 283);
|
|
2061
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshEngineInDetailPanel()); });
|
|
2062
|
+
i0.ɵɵelement(9, "i", 26);
|
|
2179
2063
|
i0.ɵɵelementEnd();
|
|
2180
|
-
i0.ɵɵelementStart(10, "button",
|
|
2181
|
-
i0.ɵɵlistener("click", function
|
|
2182
|
-
i0.ɵɵelement(11, "i",
|
|
2064
|
+
i0.ɵɵelementStart(10, "button", 256);
|
|
2065
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Conditional_28_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeEngineDetailPanel()); });
|
|
2066
|
+
i0.ɵɵelement(11, "i", 91);
|
|
2183
2067
|
i0.ɵɵelementEnd()()();
|
|
2184
|
-
i0.ɵɵelementStart(12, "div",
|
|
2068
|
+
i0.ɵɵelementStart(12, "div", 257)(13, "div", 284)(14, "div", 285)(15, "span", 125);
|
|
2185
2069
|
i0.ɵɵtext(16, "Status");
|
|
2186
2070
|
i0.ɵɵelementEnd();
|
|
2187
|
-
i0.ɵɵelementStart(17, "span",
|
|
2188
|
-
i0.ɵɵelement(18, "span",
|
|
2071
|
+
i0.ɵɵelementStart(17, "span", 124);
|
|
2072
|
+
i0.ɵɵelement(18, "span", 286);
|
|
2189
2073
|
i0.ɵɵtext(19);
|
|
2190
2074
|
i0.ɵɵelementEnd()();
|
|
2191
|
-
i0.ɵɵelementStart(20, "div",
|
|
2075
|
+
i0.ɵɵelementStart(20, "div", 285)(21, "span", 125);
|
|
2192
2076
|
i0.ɵɵtext(22, "Memory");
|
|
2193
2077
|
i0.ɵɵelementEnd();
|
|
2194
|
-
i0.ɵɵelementStart(23, "span",
|
|
2078
|
+
i0.ɵɵelementStart(23, "span", 124);
|
|
2195
2079
|
i0.ɵɵtext(24);
|
|
2196
2080
|
i0.ɵɵelementEnd()();
|
|
2197
|
-
i0.ɵɵelementStart(25, "div",
|
|
2081
|
+
i0.ɵɵelementStart(25, "div", 285)(26, "span", 125);
|
|
2198
2082
|
i0.ɵɵtext(27, "Items");
|
|
2199
2083
|
i0.ɵɵelementEnd();
|
|
2200
|
-
i0.ɵɵelementStart(28, "span",
|
|
2084
|
+
i0.ɵɵelementStart(28, "span", 124);
|
|
2201
2085
|
i0.ɵɵtext(29);
|
|
2202
2086
|
i0.ɵɵelementEnd()();
|
|
2203
|
-
i0.ɵɵconditionalCreate(30,
|
|
2087
|
+
i0.ɵɵconditionalCreate(30, SystemDiagnosticsComponent_Conditional_28_Conditional_30_Template, 5, 1, "div", 285);
|
|
2204
2088
|
i0.ɵɵelementEnd();
|
|
2205
|
-
i0.ɵɵelementStart(31, "div",
|
|
2206
|
-
i0.ɵɵelement(33, "i",
|
|
2089
|
+
i0.ɵɵelementStart(31, "div", 287)(32, "h4");
|
|
2090
|
+
i0.ɵɵelement(33, "i", 232);
|
|
2207
2091
|
i0.ɵɵtext(34);
|
|
2208
2092
|
i0.ɵɵelementEnd();
|
|
2209
|
-
i0.ɵɵconditionalCreate(35,
|
|
2093
|
+
i0.ɵɵconditionalCreate(35, SystemDiagnosticsComponent_Conditional_28_Conditional_35_Template, 4, 0, "div", 165)(36, SystemDiagnosticsComponent_Conditional_28_Conditional_36_Template, 3, 0, "div", 288);
|
|
2210
2094
|
i0.ɵɵelementEnd()()();
|
|
2211
2095
|
} if (rf & 2) {
|
|
2212
|
-
const
|
|
2096
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
2213
2097
|
i0.ɵɵadvance();
|
|
2214
|
-
i0.ɵɵclassProp("open",
|
|
2098
|
+
i0.ɵɵclassProp("open", ctx_r1.engineDetailPanel.isOpen);
|
|
2215
2099
|
i0.ɵɵadvance(5);
|
|
2216
|
-
i0.ɵɵtextInterpolate(
|
|
2100
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.className);
|
|
2217
2101
|
i0.ɵɵadvance(2);
|
|
2218
|
-
i0.ɵɵproperty("disabled",
|
|
2102
|
+
i0.ɵɵproperty("disabled", ctx_r1.engineDetailPanel.isRefreshing);
|
|
2219
2103
|
i0.ɵɵadvance();
|
|
2220
|
-
i0.ɵɵclassProp("spinning",
|
|
2104
|
+
i0.ɵɵclassProp("spinning", ctx_r1.engineDetailPanel.isRefreshing);
|
|
2221
2105
|
i0.ɵɵadvance(9);
|
|
2222
|
-
i0.ɵɵclassProp("status-loaded",
|
|
2106
|
+
i0.ɵɵclassProp("status-loaded", ctx_r1.engineDetailPanel.engine.isLoaded);
|
|
2223
2107
|
i0.ɵɵadvance();
|
|
2224
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
2108
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.engineDetailPanel.engine.isLoaded ? "Loaded" : "Not Loaded", " ");
|
|
2225
2109
|
i0.ɵɵadvance(5);
|
|
2226
|
-
i0.ɵɵtextInterpolate(
|
|
2110
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.memoryDisplay);
|
|
2227
2111
|
i0.ɵɵadvance(5);
|
|
2228
|
-
i0.ɵɵtextInterpolate(
|
|
2112
|
+
i0.ɵɵtextInterpolate(ctx_r1.engineDetailPanel.engine.itemCount.toLocaleString());
|
|
2229
2113
|
i0.ɵɵadvance();
|
|
2230
|
-
i0.ɵɵconditional(
|
|
2114
|
+
i0.ɵɵconditional(ctx_r1.engineDetailPanel.engine.lastLoadedAt ? 30 : -1);
|
|
2231
2115
|
i0.ɵɵadvance(4);
|
|
2232
|
-
i0.ɵɵtextInterpolate1(" Data Configs (",
|
|
2116
|
+
i0.ɵɵtextInterpolate1(" Data Configs (", ctx_r1.engineDetailPanel.configItems.length, ") ");
|
|
2233
2117
|
i0.ɵɵadvance();
|
|
2234
|
-
i0.ɵɵconditional(
|
|
2118
|
+
i0.ɵɵconditional(ctx_r1.engineDetailPanel.configItems.length === 0 ? 35 : 36);
|
|
2235
2119
|
} }
|
|
2236
2120
|
/**
|
|
2237
2121
|
* Settings key for persisting user preferences
|
|
@@ -2262,7 +2146,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2262
2146
|
activeSection = 'engines';
|
|
2263
2147
|
lastUpdated = new Date();
|
|
2264
2148
|
isRefreshingEngines = false;
|
|
2265
|
-
kpiCardsCollapsed = false;
|
|
2266
2149
|
// Data
|
|
2267
2150
|
engineStats = null;
|
|
2268
2151
|
engines = [];
|
|
@@ -2386,6 +2269,50 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2386
2269
|
this.cdr.markForCheck();
|
|
2387
2270
|
this.saveUserPreferencesDebounced();
|
|
2388
2271
|
}
|
|
2272
|
+
/**
|
|
2273
|
+
* Adapter for `<mj-tab-nav>`'s string-typed `(TabChange)` output.
|
|
2274
|
+
* Narrows the emitted key to the typed `activeSection` union before
|
|
2275
|
+
* delegating to `setActiveSection`.
|
|
2276
|
+
*/
|
|
2277
|
+
onSectionTabChange(key) {
|
|
2278
|
+
if (key === 'engines' || key === 'redundant' || key === 'performance' || key === 'cache') {
|
|
2279
|
+
this.setActiveSection(key);
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
/**
|
|
2283
|
+
* L2 section tabs for `<mj-tab-nav>` in the interior chrome's [toolbar] slot.
|
|
2284
|
+
* Badges are dynamic (engine count, redundant-load count w/ warning variant,
|
|
2285
|
+
* telemetry event count, cache entry count).
|
|
2286
|
+
*/
|
|
2287
|
+
get diagnosticsTabs() {
|
|
2288
|
+
return [
|
|
2289
|
+
{
|
|
2290
|
+
key: 'engines',
|
|
2291
|
+
icon: 'fa-solid fa-cogs',
|
|
2292
|
+
label: 'Engine Registry',
|
|
2293
|
+
badge: this.engineStats?.totalEngines ?? 0
|
|
2294
|
+
},
|
|
2295
|
+
{
|
|
2296
|
+
key: 'redundant',
|
|
2297
|
+
icon: 'fa-solid fa-copy',
|
|
2298
|
+
label: 'Redundant Loading',
|
|
2299
|
+
badge: this.redundantLoads.length,
|
|
2300
|
+
badgeVariant: this.redundantLoads.length > 0 ? 'warning' : 'success'
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
key: 'performance',
|
|
2304
|
+
icon: 'fa-solid fa-chart-line',
|
|
2305
|
+
label: 'Performance',
|
|
2306
|
+
badge: this.telemetrySummary?.totalEvents ?? 0
|
|
2307
|
+
},
|
|
2308
|
+
{
|
|
2309
|
+
key: 'cache',
|
|
2310
|
+
icon: 'fa-solid fa-database',
|
|
2311
|
+
label: 'Local Cache',
|
|
2312
|
+
badge: this.cacheStats?.totalEntries ?? 0
|
|
2313
|
+
}
|
|
2314
|
+
];
|
|
2315
|
+
}
|
|
2389
2316
|
toggleAutoRefresh() {
|
|
2390
2317
|
if (this.autoRefresh) {
|
|
2391
2318
|
// Start auto-refresh interval
|
|
@@ -2399,11 +2326,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
2399
2326
|
}
|
|
2400
2327
|
this.saveUserPreferencesDebounced();
|
|
2401
2328
|
}
|
|
2402
|
-
toggleKpiCards() {
|
|
2403
|
-
this.kpiCardsCollapsed = !this.kpiCardsCollapsed;
|
|
2404
|
-
this.cdr.markForCheck();
|
|
2405
|
-
this.saveUserPreferencesDebounced();
|
|
2406
|
-
}
|
|
2407
2329
|
async refreshData() {
|
|
2408
2330
|
this.isLoading = true;
|
|
2409
2331
|
this.cdr.markForCheck();
|
|
@@ -4496,9 +4418,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4496
4418
|
this.searchQuery = params['search'];
|
|
4497
4419
|
}
|
|
4498
4420
|
// KPI cards collapsed: ?kpi=collapsed|expanded
|
|
4499
|
-
if (params['kpi']) {
|
|
4500
|
-
this.kpiCardsCollapsed = params['kpi'] === 'collapsed';
|
|
4501
|
-
}
|
|
4502
4421
|
this.cdr.markForCheck();
|
|
4503
4422
|
}
|
|
4504
4423
|
/**
|
|
@@ -4511,8 +4430,7 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4511
4430
|
tab: this.perfTab !== 'monitor' ? this.perfTab : null,
|
|
4512
4431
|
source: this.telemetrySource !== 'client' ? this.telemetrySource : null,
|
|
4513
4432
|
category: this.categoryFilter !== 'all' ? this.categoryFilter : null,
|
|
4514
|
-
search: this.searchQuery.trim() || null
|
|
4515
|
-
kpi: this.kpiCardsCollapsed ? 'collapsed' : null
|
|
4433
|
+
search: this.searchQuery.trim() || null
|
|
4516
4434
|
};
|
|
4517
4435
|
// Use NavigationService to update query params properly
|
|
4518
4436
|
this.navigationService.UpdateActiveTabQueryParams(queryParams);
|
|
@@ -4549,8 +4467,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4549
4467
|
* Apply loaded user preferences to component state
|
|
4550
4468
|
*/
|
|
4551
4469
|
applyUserPreferences(prefs) {
|
|
4552
|
-
if (prefs.kpiCardsCollapsed !== undefined)
|
|
4553
|
-
this.kpiCardsCollapsed = prefs.kpiCardsCollapsed;
|
|
4554
4470
|
if (prefs.activeSection !== undefined)
|
|
4555
4471
|
this.activeSection = prefs.activeSection;
|
|
4556
4472
|
if (prefs.perfTab !== undefined)
|
|
@@ -4572,7 +4488,6 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4572
4488
|
*/
|
|
4573
4489
|
getCurrentPreferences() {
|
|
4574
4490
|
return {
|
|
4575
|
-
kpiCardsCollapsed: this.kpiCardsCollapsed,
|
|
4576
4491
|
activeSection: this.activeSection,
|
|
4577
4492
|
perfTab: this.perfTab,
|
|
4578
4493
|
telemetrySource: this.telemetrySource,
|
|
@@ -4640,129 +4555,73 @@ let SystemDiagnosticsComponent = class SystemDiagnosticsComponent extends BaseRe
|
|
|
4640
4555
|
} if (rf & 2) {
|
|
4641
4556
|
let _t;
|
|
4642
4557
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.perfChartRef = _t.first);
|
|
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) {
|
|
4644
|
-
i0.ɵɵelementStart(0, "
|
|
4645
|
-
i0.ɵɵ
|
|
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(); });
|
|
4649
|
-
i0.ɵɵelementEnd();
|
|
4650
|
-
i0.ɵɵtext(6, " Auto-refresh ");
|
|
4651
|
-
i0.ɵɵelementEnd();
|
|
4652
|
-
i0.ɵɵelementStart(7, "mj-refresh-button", 7);
|
|
4653
|
-
i0.ɵɵlistener("Clicked", function SystemDiagnosticsComponent_Template_mj_refresh_button_Clicked_7_listener() { return ctx.refreshData(); });
|
|
4654
|
-
i0.ɵɵelementEnd()()();
|
|
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);
|
|
4658
|
-
i0.ɵɵelementEnd();
|
|
4659
|
-
i0.ɵɵconditionalCreate(13, SystemDiagnosticsComponent_Conditional_13_Template, 32, 9, "div", 13)(14, SystemDiagnosticsComponent_Conditional_14_Template, 21, 5, "div", 14);
|
|
4558
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 29, vars: 21, consts: [["perfChart", ""], ["Role", "region", "AriaLabel", "System diagnostics", "Title", "System Diagnostics", "Subtitle", "Engine registry, cache, and performance telemetry"], ["meta", ""], ["Label", "engines", 3, "Count"], ["Label", "memory", 3, "Count"], ["Label", "redundant", 3, "Count", "Variant"], ["toolbar", ""], [3, "TabChange", "Tabs", "ActiveKey"], ["actions", ""], [1, "auto-refresh-toggle"], ["type", "checkbox", 3, "ngModelChange", "change", "ngModel"], ["Label", "Refresh Now", 3, "Clicked", "Loading", "ShowLabel"], [3, "Padding"], [1, "system-diagnostics"], [1, "content-area"], [1, "section-panel"], [1, "section-panel", "perf-panel"], [1, "footer"], [1, "last-updated"], [1, "fa-solid", "fa-clock"], [1, "export-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "panel-header"], [1, "fa-solid", "fa-cogs"], [1, "panel-actions"], [1, "action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-sync"], [1, "section-panel-content"], [1, "empty-state"], [1, "engine-grid"], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "engine-card", 3, "loaded"], [1, "engine-card"], [1, "engine-header"], [1, "engine-name", 3, "title"], [1, "engine-status"], [1, "engine-stats"], [1, "stat-item"], [1, "fa-solid", "fa-microchip"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-layer-group"], [1, "engine-actions"], ["title", "Refresh this engine", 1, "engine-action-btn", 3, "click", "disabled"], ["title", "View engine details", 1, "engine-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "fa-solid", "fa-copy"], [1, "info-banner"], [1, "fa-solid", "fa-info-circle"], [1, "empty-state", "success-state"], [1, "fa-solid", "fa-check-circle"], [1, "redundant-loads-table-wrapper"], [1, "redundant-loads-table"], [1, "text-right"], [1, "recommendation-banner"], [1, "fa-solid", "fa-lightbulb"], [1, "entity-name"], [1, "engines-cell"], [1, "engine-chips"], [1, "engine-chip"], [1, "text-right", "count-cell"], [1, "count-badge"], [1, "fa-solid", "fa-chart-line"], [1, "source-toggle"], [1, "source-btn", 3, "click"], [1, "fa-solid", "fa-browser"], [1, "fa-solid", "fa-server"], [1, "action-divider"], [1, "status-indicator", 3, "enabled", "disabled"], [1, "loading-indicator"], [1, "error-banner"], [1, "perf-tabs"], [1, "perf-tab", 3, "click"], [1, "fa-solid", "fa-chart-area"], [1, "fa-solid", "fa-gauge"], [1, "tab-badge", "warning"], [1, "fa-solid", "fa-timeline"], [1, "tab-badge"], [1, "fa-solid", "fa-fingerprint"], [1, "tab-badge", "insight"], [1, "info-banner", "warning-banner"], [1, "perfmon-section"], [1, "action-btn", 3, "click"], [1, "fa-solid"], [1, "fa-solid", "fa-trash"], [1, "status-indicator"], ["title", "Configure via mj.config.cjs telemetry section", 1, "config-note"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "dismiss-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "perfmon-header"], [1, "perfmon-legend"], [1, "legend-item", "runview"], [1, "legend-dot"], [1, "legend-item", "runquery"], [1, "legend-item", "engine"], [1, "legend-item", "ai"], [1, "perfmon-controls"], ["title", "Chart Interaction Mode", 1, "mode-toggle"], ["title", "Pointer mode - click events to view details", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-arrow-pointer"], ["title", "Select mode - drag to zoom into a time range", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-vector-square"], ["title", "Pan mode - drag to pan the chart", 1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-hand"], [1, "control-divider"], ["title", "Zoom In", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-plus"], ["title", "Zoom Out", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-search-minus"], ["title", "Reset Zoom", 1, "chart-control-btn", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Automatically compress gaps with no activity", 1, "compress-toggle"], [1, "perfmon-chart-container"], [1, "perfmon-y-axis"], [1, "axis-label"], [1, "perfmon-chart"], [1, "perfmon-footer"], [1, "footer-note"], [1, "footer-stats"], [1, "telemetry-summary"], [1, "summary-card"], [1, "summary-value"], [1, "summary-label"], [1, "category-breakdown"], [1, "slow-queries-section"], [1, "success-banner"], [1, "category-grid"], [1, "category-item"], [1, "category-item", 3, "click"], [1, "category-name"], [1, "category-events"], [1, "category-avg"], [1, "fa-solid", "fa-turtle"], [1, "slow-queries-list"], [1, "slow-query-item", "clickable", 3, "cache-hit"], [1, "slow-query-item", "clickable", 3, "click"], [1, "slow-query-main"], [1, "category-chip", "small"], [1, "slow-query-entity"], ["title", "Data served from local cache", 1, "cache-hit-badge", "small"], [1, "slow-query-time"], [1, "slow-query-entities"], [1, "slow-query-pills"], [1, "slow-query-filter"], [1, "slow-query-timestamp"], [1, "fa-solid", "fa-bolt"], [1, "entity-pill", "small"], [1, "entity-pill", "small", "more"], [1, "param-pill", "small", 3, "class", "title"], [1, "param-pill", "small", 3, "title"], [1, "pill-label"], [1, "pill-value"], [1, "filter-bar", "compact"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search events...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], [1, "filter-btn", 3, "active"], [1, "timeline-section"], [1, "timeline-container"], [1, "empty-state", "small"], [1, "clear-search", 3, "click"], [1, "timeline-item", "clickable", 3, "class", "cache-hit"], [1, "timeline-item", "clickable", 3, "click"], [1, "timeline-marker"], [1, "marker-bolt"], [1, "marker-dot"], [1, "marker-line"], [1, "timeline-content"], [1, "timeline-header"], [1, "timeline-time"], ["title", "Data served from local cache", 1, "cache-hit-badge"], [1, "timeline-duration", 3, "slow"], [1, "timeline-body"], [1, "timeline-operation"], [1, "timeline-entity"], [1, "timeline-entities"], [1, "timeline-pills"], [1, "timeline-filter"], [1, "timeline-duration"], [1, "entity-pill"], [1, "entity-pill", "more"], [1, "param-pill", 3, "class", "title"], [1, "param-pill", 3, "title"], [1, "fa-solid", "fa-hourglass-start"], ["type", "text", "placeholder", "Search patterns...", 3, "ngModelChange", "ngModel"], [1, "patterns-section"], [1, "patterns-table-wrapper"], [1, "patterns-table", "sortable"], [1, "sortable-header", 3, "click"], [1, "sortable-header", "text-right", 3, "click"], [3, "duplicate-row", "slow-row"], [1, "category-chip"], [1, "operation-cell"], [1, "entity-cell"], [1, "filter-cell", 3, "title"], [1, "count-warning"], [1, "fa-solid", "fa-filter"], [1, "insights-section"], [1, "insights-list"], [1, "insight-card", "expandable", 3, "class", "expanded"], [1, "insight-card", "expandable"], [1, "insight-header", 3, "click"], [1, "insight-title"], [1, "insight-category"], [1, "fa-solid", "expand-icon"], [1, "insight-key-info"], [1, "key-info-item"], [1, "insight-message"], [1, "insight-suggestion"], [1, "insight-details"], [1, "key-label"], [1, "key-value", "entity-name"], [1, "key-value", "filter-code"], [1, "detail-section"], [1, "detail-label"], [1, "params-display"], [1, "param-row"], [1, "related-events"], [1, "related-event"], [1, "param-key"], [1, "param-value"], [1, "event-time"], [1, "event-duration"], [1, "event-entity"], [1, "event-filter"], [1, "fa-solid", "fa-check-circle", 2, "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-database"], [1, "cache-summary"], [1, "cache-type-breakdown"], [1, "type-grid"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-name"], [1, "type-count"], [1, "type-size"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-code"], [1, "cache-entries-section"], [1, "section-header"], [1, "filter-controls"], [1, "cache-entries-table-wrapper"], [1, "cache-entries-table"], [1, "table-footer"], [1, "cache-type-chip"], [1, "entry-name"], [1, "entry-fingerprint"], ["title", "Invalidate", 1, "icon-btn", 3, "click"], [1, "event-detail-overlay", 3, "click"], [1, "event-detail-panel"], [1, "panel-title"], [1, "close-btn", 3, "click"], [1, "panel-body"], [1, "detail-metrics"], [1, "metric"], [1, "metric-value"], [1, "metric-label"], [1, "detail-content"], [1, "detail-row"], [1, "detail-key"], [1, "detail-val"], [1, "fa-solid", "fa-sliders"], [1, "params-grid"], [1, "param-item"], [1, "detail-actions"], [1, "action-button", 3, "click"], [1, "action-button"], [1, "detail-val", "entity-highlight"], [1, "detail-val", "filter-val"], [1, "param-name"], [1, "param-val"], [1, "pattern-summary"], [1, "pattern-stat"], [1, "stat-val"], [1, "pattern-warning"], [1, "engine-detail-overlay", 3, "click"], [1, "engine-detail-panel"], [1, "panel-header-actions"], ["title", "Refresh engine", 1, "icon-btn", 3, "click", "disabled"], [1, "engine-summary-section"], [1, "summary-stat"], [1, "status-dot"], [1, "config-items-section"], [1, "config-items-list"], [1, "config-item", 3, "expanded"], [1, "config-item"], [1, "config-item-header", 3, "click"], [1, "config-item-info"], [1, "fa-solid", "config-health-icon", 3, "title"], [1, "config-type-chip"], [1, "config-name"], [1, "config-item-stats"], [1, "config-stat"], [1, "config-item-details"], [1, "config-detail-row"], [1, "detail-value"], [1, "config-detail-row", "config-detail-row--error"], [1, "sample-data-section"], [1, "detail-value", "detail-value--error"], [1, "sample-header"], [1, "sample-title"], [1, "sample-header-actions"], [1, "all-loaded-badge"], [1, "sample-data-table-wrapper"], [1, "sample-data-table"], [1, "action-col"], ["title", "Load more records", 1, "load-more-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "spinning"], [1, "fa-solid", "fa-plus"], ["title", "Load all records", 1, "load-all-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-check"], ["title", "Open record", 1, "open-record-btn"], [3, "title"], ["title", "Open record", 1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"]], template: function SystemDiagnosticsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4559
|
+
i0.ɵɵelementStart(0, "mj-page-header-interior", 1)(1, "div", 2);
|
|
4560
|
+
i0.ɵɵelement(2, "mj-stat-badge", 3)(3, "mj-stat-badge", 4)(4, "mj-stat-badge", 5);
|
|
4660
4561
|
i0.ɵɵelementEnd();
|
|
4661
|
-
i0.ɵɵelementStart(
|
|
4662
|
-
i0.ɵɵ
|
|
4663
|
-
i0.ɵɵelementEnd();
|
|
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");
|
|
4669
|
-
i0.ɵɵelementEnd();
|
|
4670
|
-
i0.ɵɵelementStart(24, "span", 21);
|
|
4671
|
-
i0.ɵɵtext(25);
|
|
4562
|
+
i0.ɵɵelementStart(5, "div", 6)(6, "mj-tab-nav", 7);
|
|
4563
|
+
i0.ɵɵlistener("TabChange", function SystemDiagnosticsComponent_Template_mj_tab_nav_TabChange_6_listener($event) { return ctx.onSectionTabChange($event); });
|
|
4672
4564
|
i0.ɵɵelementEnd()();
|
|
4673
|
-
i0.ɵɵelementStart(
|
|
4674
|
-
i0.ɵɵ
|
|
4675
|
-
i0.ɵɵ
|
|
4676
|
-
i0.ɵɵelementStart(28, "span");
|
|
4677
|
-
i0.ɵɵtext(29, "Redundant Loading");
|
|
4565
|
+
i0.ɵɵelementStart(7, "div", 8)(8, "label", 9)(9, "input", 10);
|
|
4566
|
+
i0.ɵɵtwoWayListener("ngModelChange", function SystemDiagnosticsComponent_Template_input_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.autoRefresh, $event) || (ctx.autoRefresh = $event); return $event; });
|
|
4567
|
+
i0.ɵɵlistener("change", function SystemDiagnosticsComponent_Template_input_change_9_listener() { return ctx.toggleAutoRefresh(); });
|
|
4678
4568
|
i0.ɵɵelementEnd();
|
|
4679
|
-
i0.ɵɵ
|
|
4569
|
+
i0.ɵɵtext(10, " Auto-refresh ");
|
|
4680
4570
|
i0.ɵɵelementEnd();
|
|
4681
|
-
i0.ɵɵelementStart(
|
|
4682
|
-
i0.ɵɵlistener("
|
|
4683
|
-
i0.ɵɵ
|
|
4684
|
-
i0.ɵɵelementStart(
|
|
4685
|
-
i0.ɵɵ
|
|
4571
|
+
i0.ɵɵelementStart(11, "mj-refresh-button", 11);
|
|
4572
|
+
i0.ɵɵlistener("Clicked", function SystemDiagnosticsComponent_Template_mj_refresh_button_Clicked_11_listener() { return ctx.refreshData(); });
|
|
4573
|
+
i0.ɵɵelementEnd()()();
|
|
4574
|
+
i0.ɵɵelementStart(12, "mj-page-body-interior", 12)(13, "div", 13)(14, "div", 14);
|
|
4575
|
+
i0.ɵɵconditionalCreate(15, SystemDiagnosticsComponent_Conditional_15_Template, 12, 4, "div", 15);
|
|
4576
|
+
i0.ɵɵconditionalCreate(16, SystemDiagnosticsComponent_Conditional_16_Template, 14, 1, "div", 15);
|
|
4577
|
+
i0.ɵɵconditionalCreate(17, SystemDiagnosticsComponent_Conditional_17_Template, 52, 27, "div", 16);
|
|
4578
|
+
i0.ɵɵconditionalCreate(18, SystemDiagnosticsComponent_Conditional_18_Template, 12, 2, "div", 15);
|
|
4686
4579
|
i0.ɵɵelementEnd();
|
|
4687
|
-
i0.ɵɵelementStart(
|
|
4688
|
-
i0.ɵɵ
|
|
4689
|
-
i0.ɵɵ
|
|
4690
|
-
i0.ɵɵ
|
|
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");
|
|
4580
|
+
i0.ɵɵelementStart(19, "div", 17)(20, "span", 18);
|
|
4581
|
+
i0.ɵɵelement(21, "i", 19);
|
|
4582
|
+
i0.ɵɵtext(22);
|
|
4583
|
+
i0.ɵɵpipe(23, "date");
|
|
4695
4584
|
i0.ɵɵelementEnd();
|
|
4696
|
-
i0.ɵɵelementStart(
|
|
4697
|
-
i0.ɵɵ
|
|
4698
|
-
i0.ɵɵ
|
|
4699
|
-
i0.ɵɵ
|
|
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);
|
|
4704
|
-
i0.ɵɵelementEnd()();
|
|
4705
|
-
i0.ɵɵelementStart(49, "div", 30)(50, "span", 31);
|
|
4706
|
-
i0.ɵɵelement(51, "i", 32);
|
|
4707
|
-
i0.ɵɵtext(52);
|
|
4708
|
-
i0.ɵɵpipe(53, "date");
|
|
4709
|
-
i0.ɵɵelementEnd();
|
|
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 ");
|
|
4585
|
+
i0.ɵɵelementStart(24, "button", 20);
|
|
4586
|
+
i0.ɵɵlistener("click", function SystemDiagnosticsComponent_Template_button_click_24_listener() { return ctx.exportTelemetryData(); });
|
|
4587
|
+
i0.ɵɵelement(25, "i", 21);
|
|
4588
|
+
i0.ɵɵtext(26, " Export JSON ");
|
|
4714
4589
|
i0.ɵɵelementEnd()()();
|
|
4715
|
-
i0.ɵɵconditionalCreate(
|
|
4716
|
-
i0.ɵɵconditionalCreate(
|
|
4717
|
-
i0.ɵɵelementEnd()
|
|
4590
|
+
i0.ɵɵconditionalCreate(27, SystemDiagnosticsComponent_Conditional_27_Template, 53, 18);
|
|
4591
|
+
i0.ɵɵconditionalCreate(28, SystemDiagnosticsComponent_Conditional_28_Template, 37, 14);
|
|
4592
|
+
i0.ɵɵelementEnd();
|
|
4718
4593
|
} if (rf & 2) {
|
|
4719
|
-
i0.ɵɵadvance(3);
|
|
4720
|
-
i0.ɵɵconditional(ctx.autoRefresh ? 3 : -1);
|
|
4721
4594
|
i0.ɵɵadvance(2);
|
|
4722
|
-
i0.ɵɵ
|
|
4723
|
-
i0.ɵɵadvance(2);
|
|
4724
|
-
i0.ɵɵproperty("Loading", ctx.isLoading)("ShowLabel", true);
|
|
4725
|
-
i0.ɵɵadvance(3);
|
|
4726
|
-
i0.ɵɵclassProp("collapsed", ctx.kpiCardsCollapsed);
|
|
4595
|
+
i0.ɵɵproperty("Count", (ctx.engineStats == null ? null : ctx.engineStats.totalEngines) || 0);
|
|
4727
4596
|
i0.ɵɵadvance();
|
|
4728
|
-
i0.ɵɵproperty("
|
|
4597
|
+
i0.ɵɵproperty("Count", ctx.formatBytes((ctx.engineStats == null ? null : ctx.engineStats.totalEstimatedMemoryBytes) || 0));
|
|
4729
4598
|
i0.ɵɵadvance();
|
|
4730
|
-
i0.ɵɵ
|
|
4731
|
-
i0.ɵɵadvance();
|
|
4732
|
-
i0.ɵɵconditional(!ctx.kpiCardsCollapsed ? 13 : 14);
|
|
4733
|
-
i0.ɵɵadvance(7);
|
|
4734
|
-
i0.ɵɵclassProp("active", ctx.activeSection === "engines");
|
|
4735
|
-
i0.ɵɵadvance(5);
|
|
4736
|
-
i0.ɵɵtextInterpolate((ctx.engineStats == null ? null : ctx.engineStats.totalEngines) || 0);
|
|
4737
|
-
i0.ɵɵadvance();
|
|
4738
|
-
i0.ɵɵclassProp("active", ctx.activeSection === "redundant");
|
|
4739
|
-
i0.ɵɵadvance(4);
|
|
4740
|
-
i0.ɵɵconditional(ctx.redundantLoads.length > 0 ? 30 : 31);
|
|
4599
|
+
i0.ɵɵproperty("Count", ctx.redundantLoads.length)("Variant", ctx.redundantLoads.length > 0 ? "warning" : "default");
|
|
4741
4600
|
i0.ɵɵadvance(2);
|
|
4742
|
-
i0.ɵɵ
|
|
4743
|
-
i0.ɵɵadvance(
|
|
4744
|
-
i0.ɵɵ
|
|
4745
|
-
i0.ɵɵadvance();
|
|
4746
|
-
i0.ɵɵclassProp("active", ctx.activeSection === "cache");
|
|
4747
|
-
i0.ɵɵadvance(5);
|
|
4748
|
-
i0.ɵɵtextInterpolate((ctx.cacheStats == null ? null : ctx.cacheStats.totalEntries) || 0);
|
|
4601
|
+
i0.ɵɵproperty("Tabs", ctx.diagnosticsTabs)("ActiveKey", ctx.activeSection);
|
|
4602
|
+
i0.ɵɵadvance(3);
|
|
4603
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.autoRefresh);
|
|
4749
4604
|
i0.ɵɵadvance(2);
|
|
4750
|
-
i0.ɵɵ
|
|
4605
|
+
i0.ɵɵproperty("Loading", ctx.isLoading)("ShowLabel", true);
|
|
4606
|
+
i0.ɵɵadvance();
|
|
4607
|
+
i0.ɵɵproperty("Padding", false);
|
|
4608
|
+
i0.ɵɵadvance(3);
|
|
4609
|
+
i0.ɵɵconditional(ctx.activeSection === "engines" ? 15 : -1);
|
|
4751
4610
|
i0.ɵɵadvance();
|
|
4752
|
-
i0.ɵɵconditional(ctx.activeSection === "redundant" ?
|
|
4611
|
+
i0.ɵɵconditional(ctx.activeSection === "redundant" ? 16 : -1);
|
|
4753
4612
|
i0.ɵɵadvance();
|
|
4754
|
-
i0.ɵɵconditional(ctx.activeSection === "performance" ?
|
|
4613
|
+
i0.ɵɵconditional(ctx.activeSection === "performance" ? 17 : -1);
|
|
4755
4614
|
i0.ɵɵadvance();
|
|
4756
|
-
i0.ɵɵconditional(ctx.activeSection === "cache" ?
|
|
4615
|
+
i0.ɵɵconditional(ctx.activeSection === "cache" ? 18 : -1);
|
|
4757
4616
|
i0.ɵɵadvance(4);
|
|
4758
|
-
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(
|
|
4617
|
+
i0.ɵɵtextInterpolate1(" Last updated: ", i0.ɵɵpipeBind2(23, 18, ctx.lastUpdated, "medium"), " ");
|
|
4759
4618
|
i0.ɵɵadvance(2);
|
|
4760
4619
|
i0.ɵɵproperty("disabled", !ctx.telemetryEnabled || ctx.telemetryEvents.length === 0);
|
|
4761
4620
|
i0.ɵɵadvance(3);
|
|
4762
|
-
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ?
|
|
4621
|
+
i0.ɵɵconditional(ctx.eventDetailPanel.isOpen && ctx.eventDetailPanel.event ? 27 : -1);
|
|
4763
4622
|
i0.ɵɵadvance();
|
|
4764
|
-
i0.ɵɵconditional(ctx.engineDetailPanel.isOpen && ctx.engineDetailPanel.engine ?
|
|
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 });
|
|
4623
|
+
i0.ɵɵconditional(ctx.engineDetailPanel.isOpen && ctx.engineDetailPanel.engine ? 28 : -1);
|
|
4624
|
+
} }, dependencies: [i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i3.MJStatBadgeComponent, i3.MJRefreshButtonComponent, i3.MJTabNavComponent, i4.DecimalPipe, i4.DatePipe], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n.system-diagnostics[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n display: flex;\n flex-direction: column;\n}\n\n\n\n.auto-refresh-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.auto-refresh-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n cursor: pointer;\n}\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner[_ngcontent-%COMP%] .dismiss-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator[_ngcontent-%COMP%] .config-note[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n margin-top: 8px;\n}\n\n\n\n.engine-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n.info-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n\n\n.recommendation-banner[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.redundant-loads-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] th.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] td.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table[_ngcontent-%COMP%] .entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip[_ngcontent-%COMP%] {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n\n\n.footer[_ngcontent-%COMP%] {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.warning-banner[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.category-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card[_ngcontent-%COMP%] {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info[_ngcontent-%COMP%] {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.severity-info[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.severity-warning[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-color-warning-500); }\n.severity-optimization[_ngcontent-%COMP%] .insight-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n\n.insight-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.patterns-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview[_ngcontent-%COMP%] { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery[_ngcontent-%COMP%] { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine[_ngcontent-%COMP%] { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache[_ngcontent-%COMP%] { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network[_ngcontent-%COMP%] { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom[_ngcontent-%COMP%] { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.count-warning[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.slow-queries-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.slow-query-item.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.insight-card.expandable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.insight-details[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time[_ngcontent-%COMP%] {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line[_ngcontent-%COMP%] {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .marker-line[_ngcontent-%COMP%] {\n display: none;\n}\n\n.tl-runview[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-info-700); }\n.tl-runquery[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-violet-700); }\n.tl-engine[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-success-700); }\n.tl-ai[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-color-warning-700); }\n.tl-cache[_ngcontent-%COMP%] .marker-dot[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n\n\n.marker-bolt[_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n\n\n.tl-runview.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit[_ngcontent-%COMP%] .marker-bolt[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n\n\n.cache-hit-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n\n\n.timeline-item.cache-hit[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n\n\n.timeline-entities[_ngcontent-%COMP%], \n.slow-query-entities[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n\n\n.timeline-pills[_ngcontent-%COMP%], \n.slow-query-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-label[_ngcontent-%COMP%] {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill[_ngcontent-%COMP%] .pill-value[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.param-pill.pill-filter[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info[_ngcontent-%COMP%] {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n\n\n.slow-query-item.cache-hit[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small[_ngcontent-%COMP%] {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n\n\n.sortable-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header[_ngcontent-%COMP%] i.fa-sort-up[_ngcontent-%COMP%], \n.sortable-header[_ngcontent-%COMP%] i.fa-sort-down[_ngcontent-%COMP%] {\n color: var(--mj-color-indigo-500);\n}\n\n\n\n.filter-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row[_ngcontent-%COMP%] {\n background: var(--mj-color-error-100);\n}\n\n.slow-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n\n\n.category-chip.small[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.perf-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel[_ngcontent-%COMP%] .section-panel-content[_ngcontent-%COMP%] {\n padding: 20px 24px;\n}\n\n\n\n.success-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n\n\n.filter-bar.compact[_ngcontent-%COMP%] {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n\n\n.category-item[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n\n\n.insight-key-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n\n\n.params-display[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-key[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.perfmon-section[_ngcontent-%COMP%] {\n \n\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n \n\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runview); }\n.legend-item.runquery[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-runquery); }\n.legend-item.engine[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-engine); }\n.legend-item.ai[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%] { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis[_ngcontent-%COMP%] .axis-label[_ngcontent-%COMP%] {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.footer-stats[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n\n\n.perfmon-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn[_ngcontent-%COMP%]:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn[_ngcontent-%COMP%]:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active[_ngcontent-%COMP%] {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active[_ngcontent-%COMP%]:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.control-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle[_ngcontent-%COMP%]:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.zoom-level[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(.selection-rect) {\n pointer-events: none;\n}\n\n\n\n.zoom-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info[_ngcontent-%COMP%] .zoom-level[_ngcontent-%COMP%] {\n color: var(--perfmon-accent);\n}\n\n.zoom-info[_ngcontent-%COMP%] .time-range[_ngcontent-%COMP%] {\n color: var(--perfmon-text-faint);\n}\n\n\n\n@media (max-width: 1024px) {\n .main-content[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .left-nav[_ngcontent-%COMP%] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .engine-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n\n\n.export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn[_ngcontent-%COMP%]:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n\n\n.event-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.detail-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-value.slow[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.detail-metrics[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-key[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n\n\n.params-grid[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n\n\n.pattern-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-val[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable[_ngcontent-%COMP%]:hover .marker-dot[_ngcontent-%COMP%] {\n transform: scale(1.3);\n}\n\n\n\n\n\n\n.engine-detail-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.25s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel[_ngcontent-%COMP%] .panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.engine-summary-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-items-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.config-item-details[_ngcontent-%COMP%] {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row[_ngcontent-%COMP%] .detail-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n\n\n.config-health-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n.config-detail-row--error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n\n\n.sample-data-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sample-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn[_ngcontent-%COMP%], \n.load-all-btn[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:hover:not(:disabled), \n.load-all-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn[_ngcontent-%COMP%]:disabled, \n.load-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.sample-data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 30px 20px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n.cache-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.cache-type-chip[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset[_ngcontent-%COMP%] {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview[_ngcontent-%COMP%] {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery[_ngcontent-%COMP%] {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}"], changeDetection: 0 });
|
|
4766
4625
|
};
|
|
4767
4626
|
SystemDiagnosticsComponent = __decorate([
|
|
4768
4627
|
RegisterClass(BaseResourceComponent, 'SystemDiagnosticsResource')
|
|
@@ -4772,153 +4631,51 @@ export { SystemDiagnosticsComponent };
|
|
|
4772
4631
|
type: Component,
|
|
4773
4632
|
args: [{ standalone: false, selector: 'app-system-diagnostics', changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
4774
4633
|
<!--
|
|
4775
|
-
SystemDiagnostics renders inside Admin's "Monitoring" left-nav shell
|
|
4776
|
-
|
|
4777
|
-
<mj-page-header>
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4634
|
+
SystemDiagnostics renders inside Admin's "Monitoring" left-nav shell.
|
|
4635
|
+
L1 (outer Admin rail) is owned by the parent shell; here we use
|
|
4636
|
+
<mj-page-header-interior> with [toolbar]=<mj-tab-nav> to render the
|
|
4637
|
+
L2 section nav (Engine Registry / Redundant / Performance / Cache),
|
|
4638
|
+
and [actions]=auto-refresh + refresh button. The Performance section
|
|
4639
|
+
carries its own L3 perf-tabs strip inside its panel.
|
|
4640
|
+
See plans/explorer-chrome-conventions.md Section 10.
|
|
4781
4641
|
-->
|
|
4782
|
-
<
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4642
|
+
<mj-page-header-interior
|
|
4643
|
+
Role="region"
|
|
4644
|
+
AriaLabel="System diagnostics"
|
|
4645
|
+
Title="System Diagnostics"
|
|
4646
|
+
Subtitle="Engine registry, cache, and performance telemetry">
|
|
4647
|
+
<div meta>
|
|
4648
|
+
<mj-stat-badge [Count]="engineStats?.totalEngines || 0" Label="engines"></mj-stat-badge>
|
|
4649
|
+
<mj-stat-badge [Count]="formatBytes(engineStats?.totalEstimatedMemoryBytes || 0)" Label="memory"></mj-stat-badge>
|
|
4650
|
+
<mj-stat-badge
|
|
4651
|
+
[Count]="redundantLoads.length"
|
|
4652
|
+
Label="redundant"
|
|
4653
|
+
[Variant]="redundantLoads.length > 0 ? 'warning' : 'default'">
|
|
4654
|
+
</mj-stat-badge>
|
|
4655
|
+
</div>
|
|
4656
|
+
<div toolbar>
|
|
4657
|
+
<mj-tab-nav
|
|
4658
|
+
[Tabs]="diagnosticsTabs"
|
|
4659
|
+
[ActiveKey]="activeSection"
|
|
4660
|
+
(TabChange)="onSectionTabChange($event)">
|
|
4661
|
+
</mj-tab-nav>
|
|
4662
|
+
</div>
|
|
4663
|
+
<div actions>
|
|
4664
|
+
<label class="auto-refresh-toggle">
|
|
4665
|
+
<input type="checkbox" [(ngModel)]="autoRefresh" (change)="toggleAutoRefresh()">
|
|
4666
|
+
Auto-refresh
|
|
4667
|
+
</label>
|
|
4668
|
+
<mj-refresh-button [Loading]="isLoading" Label="Refresh Now" [ShowLabel]="true" (Clicked)="refreshData()"></mj-refresh-button>
|
|
4794
4669
|
</div>
|
|
4670
|
+
</mj-page-header-interior>
|
|
4795
4671
|
|
|
4796
|
-
|
|
4672
|
+
<mj-page-body-interior [Padding]="false">
|
|
4797
4673
|
<div class="system-diagnostics">
|
|
4798
4674
|
|
|
4799
|
-
<!--
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
</button>
|
|
4804
|
-
|
|
4805
|
-
@if (!kpiCardsCollapsed) {
|
|
4806
|
-
<!-- Expanded View -->
|
|
4807
|
-
<div class="overview-cards">
|
|
4808
|
-
<div class="overview-card">
|
|
4809
|
-
<div class="card-icon card-icon--engines">
|
|
4810
|
-
<i class="fa-solid fa-cogs"></i>
|
|
4811
|
-
</div>
|
|
4812
|
-
<div class="card-content">
|
|
4813
|
-
<div class="card-value">{{ engineStats?.totalEngines || 0 }}</div>
|
|
4814
|
-
<div class="card-label">Registered Engines</div>
|
|
4815
|
-
<div class="card-subtitle">{{ engineStats?.loadedEngines || 0 }} loaded</div>
|
|
4816
|
-
</div>
|
|
4817
|
-
</div>
|
|
4818
|
-
|
|
4819
|
-
<div class="overview-card">
|
|
4820
|
-
<div class="card-icon card-icon--memory">
|
|
4821
|
-
<i class="fa-solid fa-microchip"></i>
|
|
4822
|
-
</div>
|
|
4823
|
-
<div class="card-content">
|
|
4824
|
-
<div class="card-value">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</div>
|
|
4825
|
-
<div class="card-label">Engine Memory</div>
|
|
4826
|
-
<div class="card-subtitle">Estimated total</div>
|
|
4827
|
-
</div>
|
|
4828
|
-
</div>
|
|
4829
|
-
|
|
4830
|
-
<div class="overview-card">
|
|
4831
|
-
<div class="card-icon" [class.card-icon--warning]="redundantLoads.length > 0" [class.card-icon--success]="redundantLoads.length === 0">
|
|
4832
|
-
<i class="fa-solid fa-copy"></i>
|
|
4833
|
-
</div>
|
|
4834
|
-
<div class="card-content">
|
|
4835
|
-
<div class="card-value">{{ redundantLoads.length }}</div>
|
|
4836
|
-
<div class="card-label">Redundant Loads</div>
|
|
4837
|
-
<div class="card-subtitle">
|
|
4838
|
-
@if (redundantLoads.length === 0) {
|
|
4839
|
-
No redundant loading detected
|
|
4840
|
-
} @else {
|
|
4841
|
-
{{ redundantLoads.length }} entities loaded by multiple engines
|
|
4842
|
-
}
|
|
4843
|
-
</div>
|
|
4844
|
-
</div>
|
|
4845
|
-
</div>
|
|
4846
|
-
</div>
|
|
4847
|
-
} @else {
|
|
4848
|
-
<!-- Collapsed View - Mini KPI bar -->
|
|
4849
|
-
<div class="overview-cards-mini">
|
|
4850
|
-
<div class="mini-kpi" title="Registered Engines">
|
|
4851
|
-
<i class="fa-solid fa-cogs"></i>
|
|
4852
|
-
<span class="mini-value">{{ engineStats?.totalEngines || 0 }}</span>
|
|
4853
|
-
<span class="mini-label">Engines</span>
|
|
4854
|
-
</div>
|
|
4855
|
-
<div class="mini-divider"></div>
|
|
4856
|
-
<div class="mini-kpi" title="Engine Memory">
|
|
4857
|
-
<i class="fa-solid fa-microchip"></i>
|
|
4858
|
-
<span class="mini-value">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</span>
|
|
4859
|
-
<span class="mini-label">Memory</span>
|
|
4860
|
-
</div>
|
|
4861
|
-
<div class="mini-divider"></div>
|
|
4862
|
-
<div class="mini-kpi" [class.warning]="redundantLoads.length > 0" title="Redundant Loads">
|
|
4863
|
-
<i class="fa-solid fa-copy"></i>
|
|
4864
|
-
<span class="mini-value">{{ redundantLoads.length }}</span>
|
|
4865
|
-
<span class="mini-label">Redundant</span>
|
|
4866
|
-
</div>
|
|
4867
|
-
</div>
|
|
4868
|
-
}
|
|
4869
|
-
</div>
|
|
4870
|
-
|
|
4871
|
-
<!-- Main Content with Left Nav -->
|
|
4872
|
-
<div class="main-content">
|
|
4873
|
-
<!-- Left Navigation -->
|
|
4874
|
-
<div class="left-nav">
|
|
4875
|
-
<div class="nav-section">
|
|
4876
|
-
<div class="nav-section-title">Diagnostics</div>
|
|
4877
|
-
<div
|
|
4878
|
-
class="nav-item"
|
|
4879
|
-
[class.active]="activeSection === 'engines'"
|
|
4880
|
-
(click)="setActiveSection('engines')"
|
|
4881
|
-
>
|
|
4882
|
-
<i class="fa-solid fa-cogs"></i>
|
|
4883
|
-
<span>Engine Registry</span>
|
|
4884
|
-
<span class="nav-badge">{{ engineStats?.totalEngines || 0 }}</span>
|
|
4885
|
-
</div>
|
|
4886
|
-
<div
|
|
4887
|
-
class="nav-item"
|
|
4888
|
-
[class.active]="activeSection === 'redundant'"
|
|
4889
|
-
(click)="setActiveSection('redundant')"
|
|
4890
|
-
>
|
|
4891
|
-
<i class="fa-solid fa-copy"></i>
|
|
4892
|
-
<span>Redundant Loading</span>
|
|
4893
|
-
@if (redundantLoads.length > 0) {
|
|
4894
|
-
<span class="nav-badge nav-badge--warning">{{ redundantLoads.length }}</span>
|
|
4895
|
-
} @else {
|
|
4896
|
-
<span class="nav-badge nav-badge--success">0</span>
|
|
4897
|
-
}
|
|
4898
|
-
</div>
|
|
4899
|
-
<div
|
|
4900
|
-
class="nav-item"
|
|
4901
|
-
[class.active]="activeSection === 'performance'"
|
|
4902
|
-
(click)="setActiveSection('performance')"
|
|
4903
|
-
>
|
|
4904
|
-
<i class="fa-solid fa-chart-line"></i>
|
|
4905
|
-
<span>Performance</span>
|
|
4906
|
-
<span class="nav-badge">{{ telemetrySummary?.totalEvents || 0 }}</span>
|
|
4907
|
-
</div>
|
|
4908
|
-
<div
|
|
4909
|
-
class="nav-item"
|
|
4910
|
-
[class.active]="activeSection === 'cache'"
|
|
4911
|
-
(click)="setActiveSection('cache')"
|
|
4912
|
-
>
|
|
4913
|
-
<i class="fa-solid fa-database"></i>
|
|
4914
|
-
<span>Local Cache</span>
|
|
4915
|
-
<span class="nav-badge">{{ cacheStats?.totalEntries || 0 }}</span>
|
|
4916
|
-
</div>
|
|
4917
|
-
</div>
|
|
4918
|
-
</div>
|
|
4919
|
-
|
|
4920
|
-
<!-- Content Area -->
|
|
4921
|
-
<div class="content-area">
|
|
4675
|
+
<!-- KPI overview moved into chrome [meta] slot as <mj-stat-badge>s. -->
|
|
4676
|
+
|
|
4677
|
+
<!-- Section Content (L2 nav is rendered as horizontal tabs in the interior chrome above) -->
|
|
4678
|
+
<div class="content-area">
|
|
4922
4679
|
<!-- Engine Registry Section -->
|
|
4923
4680
|
@if (activeSection === 'engines') {
|
|
4924
4681
|
<div class="section-panel">
|
|
@@ -5779,8 +5536,7 @@ export { SystemDiagnosticsComponent };
|
|
|
5779
5536
|
</div>
|
|
5780
5537
|
}
|
|
5781
5538
|
</div>
|
|
5782
|
-
|
|
5783
|
-
|
|
5539
|
+
|
|
5784
5540
|
<!-- Last Updated -->
|
|
5785
5541
|
<div class="footer">
|
|
5786
5542
|
<span class="last-updated">
|
|
@@ -6085,12 +5841,11 @@ export { SystemDiagnosticsComponent };
|
|
|
6085
5841
|
</div>
|
|
6086
5842
|
</div>
|
|
6087
5843
|
}
|
|
6088
|
-
</
|
|
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"] }]
|
|
5844
|
+
</mj-page-body-interior>
|
|
5845
|
+
`, styles: ["/*\n SystemDiagnostics renders inside Admin's \"Monitoring\" left-nav shell.\n Host is a flex column so <mj-page-header-interior> sits pinned at the top\n and .scrollable-content fills the rest. See plans/explorer-chrome-conventions.md Section 10.\n*/\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n.system-diagnostics {\n background: var(--mj-bg-surface-sunken);\n display: flex;\n flex-direction: column;\n}\n\n/* Inline auto-refresh toggle in the [actions] slot. */\n.auto-refresh-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.auto-refresh-toggle input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n cursor: pointer;\n}\n\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/*\n Overview KPIs (engines / memory / redundant) now live as <mj-stat-badge>\n instances in the chrome's [meta] slot \u2014 see the header-interior block above.\n The legacy .overview-cards-container / .overview-card / .kpi-toggle-btn /\n .mini-kpi rules were retired with that migration.\n*/\n\n/* Main Content */\n/*\n Content Area \u2014 L2 nav was previously a bespoke left rail (.left-nav). It now\n lives in the interior chrome above as <mj-tab-nav>. Section panels render\n directly inside .content-area, which fills the remaining body width.\n*/\n.content-area {\n flex: 1;\n padding: 24px;\n overflow: hidden;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.section-panel {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.section-panel-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding: 20px 24px;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.panel-header h3 i {\n color: var(--mj-status-success);\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.action-divider {\n width: 1px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.source-toggle {\n display: flex;\n background: var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.source-btn {\n background: transparent;\n border: none;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.15s ease;\n}\n\n.source-btn:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.source-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n.source-btn i {\n font-size: 11px;\n}\n\n.loading-indicator {\n display: flex;\n align-items: center;\n color: var(--mj-status-success);\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-100);\n border-radius: var(--mj-radius-md);\n color: var(--mj-status-error);\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n.error-banner i {\n color: var(--mj-status-error);\n}\n\n.error-banner .dismiss-btn {\n margin-left: auto;\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.error-banner .dismiss-btn:hover {\n color: var(--mj-status-error);\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Status indicator for read-only server telemetry status */\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n}\n\n.status-indicator.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-indicator.disabled {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-indicator .config-note {\n font-size: 11px;\n opacity: 0.7;\n margin-left: 4px;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state.success-state i {\n color: var(--mj-status-success);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-hint {\n font-size: 13px;\n margin-top: 8px;\n}\n\n/* Engine Grid */\n.engine-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n}\n\n.engine-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 16px 20px;\n border: 2px solid transparent;\n transition: all 0.2s ease;\n}\n\n.engine-card.loaded {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.engine-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n}\n\n.engine-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.engine-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 180px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-status {\n flex-shrink: 0;\n font-size: 11px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: var(--mj-radius-lg);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-loaded {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.status-pending {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-800);\n}\n\n.engine-stats {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item i {\n width: 16px;\n color: var(--mj-text-muted);\n}\n\n.engine-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.engine-action-btn {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--mj-radius-md);\n background: rgba(0, 0, 0, 0.05);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-action-btn:hover:not(:disabled) {\n background: var(--mj-status-success);\n color: white;\n}\n\n.engine-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.stat-label {\n color: var(--mj-text-muted);\n}\n\n.stat-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* Info Banner */\n.info-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-accent-300);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-brand-primary);\n margin-bottom: 20px;\n}\n\n.info-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n/* Recommendation Banner */\n.recommendation-banner {\n display: flex;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-warning-800);\n margin-top: 20px;\n}\n\n.recommendation-banner i {\n margin-top: 2px;\n flex-shrink: 0;\n color: var(--mj-color-warning-500);\n}\n\n/* Redundant Loads Table */\n.redundant-loads-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.redundant-loads-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.redundant-loads-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.redundant-loads-table th.text-right {\n text-align: right;\n}\n\n.redundant-loads-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.redundant-loads-table td.text-right {\n text-align: right;\n}\n\n.redundant-loads-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.redundant-loads-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.redundant-loads-table .entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.engine-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.engine-chip {\n padding: 4px 10px;\n background: var(--mj-color-indigo-500);\n color: white;\n font-size: 11px;\n border-radius: var(--mj-radius-lg);\n font-weight: 500;\n}\n\n.count-badge {\n display: inline-block;\n padding: 4px 12px;\n background: var(--mj-color-warning-500);\n color: white;\n font-size: 12px;\n font-weight: 600;\n border-radius: var(--mj-radius-lg);\n}\n\n/* Footer */\n.footer {\n padding: 12px 24px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-default);\n text-align: right;\n flex-shrink: 0;\n}\n\n.last-updated {\n font-size: 12px;\n color: var(--mj-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Performance Section Styles */\n.warning-banner {\n background: var(--mj-color-warning-50) !important;\n color: var(--mj-color-warning-800) !important;\n}\n\n.warning-banner i {\n color: var(--mj-color-warning-500);\n}\n\n.telemetry-summary {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n text-align: center;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.summary-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.category-breakdown {\n margin-bottom: 24px;\n}\n\n.category-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.category-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.category-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-full);\n font-size: 13px;\n}\n\n.category-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.category-events {\n background: var(--mj-color-indigo-500);\n color: white;\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-avg {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.insights-section {\n margin-bottom: 24px;\n}\n\n.insights-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.insights-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.insights-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.insight-card {\n padding: 16px;\n border-radius: var(--mj-radius-md);\n border-left: 4px solid var(--mj-border-default);\n}\n\n.insight-card.severity-info {\n background: var(--mj-color-accent-300);\n border-left-color: var(--mj-brand-primary);\n}\n\n.insight-card.severity-warning {\n background: var(--mj-color-warning-50);\n border-left-color: var(--mj-color-warning-500);\n}\n\n.insight-card.severity-optimization {\n background: var(--mj-color-success-100);\n border-left-color: var(--mj-status-success);\n}\n\n.insight-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 8px;\n}\n\n.insight-header i {\n font-size: 16px;\n}\n\n.severity-info .insight-header i { color: var(--mj-brand-primary); }\n.severity-warning .insight-header i { color: var(--mj-color-warning-500); }\n.severity-optimization .insight-header i { color: var(--mj-status-success); }\n\n.insight-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.insight-category {\n font-size: 11px;\n padding: 2px 8px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: var(--mj-radius-lg);\n color: var(--mj-text-secondary);\n}\n\n.insight-message {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.insight-suggestion {\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.insight-suggestion i {\n color: var(--mj-status-success);\n font-size: 10px;\n}\n\n.patterns-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.patterns-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.patterns-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.patterns-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.patterns-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px 16px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.patterns-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.patterns-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.patterns-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.duplicate-row {\n background: var(--mj-color-warning-50);\n}\n\n.duplicate-row:hover {\n background: var(--mj-color-warning-50) !important;\n}\n\n.category-chip {\n display: inline-block;\n padding: 3px 10px;\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.cat-runview { background: var(--mj-color-info-100); color: var(--mj-color-info-700); }\n.cat-runquery { background: var(--mj-color-violet-100); color: var(--mj-color-violet-700); }\n.cat-engine { background: var(--mj-color-success-100); color: var(--mj-color-success-700); }\n.cat-ai { background: var(--mj-color-warning-50); color: var(--mj-color-warning-700); }\n.cat-cache { background: var(--mj-color-error-100); color: var(--mj-status-error); }\n.cat-network { background: var(--mj-color-tertiary-100); color: var(--mj-color-tertiary-700); }\n.cat-custom { background: var(--mj-color-neutral-100); color: var(--mj-color-neutral-600); }\n\n.operation-cell {\n font-family: monospace;\n font-size: 12px;\n}\n\n.entity-cell {\n font-weight: 500;\n}\n\n.count-warning {\n display: inline-block;\n padding: 2px 8px;\n background: var(--mj-color-warning-500);\n color: white;\n border-radius: var(--mj-radius-lg);\n font-weight: 600;\n}\n\n.action-btn.active {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Slow Queries Section */\n.slow-queries-section {\n margin-bottom: 24px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n border-left: 4px solid var(--mj-color-warning-500);\n}\n\n.slow-queries-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.slow-queries-section h4 i {\n color: var(--mj-color-warning-500);\n}\n\n.slow-queries-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.slow-query-item {\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n padding: 10px 12px;\n border: 1px solid var(--mj-color-warning-50);\n transition: all 0.15s ease;\n}\n\n.slow-query-item.clickable {\n cursor: pointer;\n}\n\n.slow-query-item.clickable:hover {\n background: var(--mj-color-warning-50);\n border-color: var(--mj-color-warning-500);\n transform: translateX(2px);\n}\n\n.slow-query-main {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.slow-query-entity {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.slow-query-time {\n font-weight: 700;\n color: var(--mj-color-warning-800);\n font-size: 14px;\n}\n\n.slow-query-filter {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n font-family: monospace;\n}\n\n.slow-query-timestamp {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.toggle-btn {\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n}\n\n.toggle-btn:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Expandable Insight Cards */\n.insight-card.expandable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.insight-card.expandable:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.insight-card .expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n margin-left: auto;\n}\n\n.insight-card.expanded {\n border-width: 2px;\n}\n\n.insight-details {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.detail-section {\n margin-bottom: 12px;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n margin-bottom: 4px;\n}\n\n.detail-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.related-events {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.related-event {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 4px;\n font-size: 12px;\n}\n\n.event-time {\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.event-duration {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-filter {\n color: var(--mj-text-muted);\n font-family: monospace;\n font-size: 11px;\n}\n\n/* Timeline Section */\n.timeline-section h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-section h4 i {\n color: var(--mj-color-indigo-500);\n}\n\n.timeline-container {\n position: relative;\n padding-left: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n margin-bottom: 12px;\n position: relative;\n}\n\n.timeline-marker {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n left: -24px;\n top: 0;\n bottom: 0;\n}\n\n.marker-dot {\n width: 10px;\n height: 10px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-indigo-500);\n z-index: 1;\n}\n\n.marker-line {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 4px;\n}\n\n.timeline-item:last-child .marker-line {\n display: none;\n}\n\n.tl-runview .marker-dot { background: var(--mj-color-info-700); }\n.tl-runquery .marker-dot { background: var(--mj-color-violet-700); }\n.tl-engine .marker-dot { background: var(--mj-color-success-700); }\n.tl-ai .marker-dot { background: var(--mj-color-warning-700); }\n.tl-cache .marker-dot { background: var(--mj-status-error); }\n\n/* Cache hit bolt marker */\n.marker-bolt {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n color: var(--mj-color-warning-500);\n font-size: 14px;\n margin-left: -4px;\n}\n\n.marker-bolt i {\n filter: drop-shadow(0 0 3px color-mix(in srgb, var(--mj-color-warning-500) 60%, transparent));\n}\n\n/* Category-specific bolt colors */\n.tl-runview.cache-hit .marker-bolt { color: var(--mj-color-info-700); }\n.tl-runquery.cache-hit .marker-bolt { color: var(--mj-color-violet-700); }\n.tl-engine.cache-hit .marker-bolt { color: var(--mj-color-success-700); }\n.tl-ai.cache-hit .marker-bolt { color: var(--mj-color-warning-700); }\n.tl-cache.cache-hit .marker-bolt { color: var(--mj-status-error); }\n\n/* Cache hit badge */\n.cache-hit-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: linear-gradient(135deg, var(--mj-color-warning-100) 0%, var(--mj-color-warning-200) 100%);\n border: 1px solid var(--mj-color-warning-500);\n border-radius: var(--mj-radius-lg);\n font-size: 9px;\n font-weight: 700;\n color: var(--mj-color-warning-800);\n letter-spacing: 0.5px;\n}\n\n.cache-hit-badge i {\n font-size: 8px;\n color: var(--mj-color-warning-500);\n}\n\n/* Highlighted background for cache hit items */\n.timeline-item.cache-hit .timeline-content {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border: 1px solid var(--mj-color-warning-300);\n}\n\n.timeline-content {\n flex: 1;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 10px 14px;\n}\n\n.timeline-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 4px;\n}\n\n.timeline-time {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.timeline-duration {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-duration.slow {\n color: var(--mj-color-warning-800);\n background: var(--mj-color-warning-50);\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.timeline-body {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation {\n font-family: monospace;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-entity {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.timeline-filter {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n margin-top: 4px;\n}\n\n/* Entity Pills for RunViews batch operations */\n.timeline-entities,\n.slow-query-entities {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n}\n\n.entity-pill {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n border-radius: var(--mj-radius-lg);\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-color-info-700);\n}\n\n.entity-pill.small {\n padding: 1px 6px;\n font-size: 10px;\n}\n\n.entity-pill.more {\n background: var(--mj-color-neutral-100);\n border-color: var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n font-style: italic;\n}\n\n/* Parameter Pills */\n.timeline-pills,\n.slow-query-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.param-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.param-pill.small {\n padding: 2px 6px;\n font-size: 9px;\n max-width: 150px;\n}\n\n.param-pill .pill-label {\n font-weight: 600;\n opacity: 0.8;\n}\n\n.param-pill .pill-value {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Pill type colors */\n.param-pill.pill-filter {\n background: var(--mj-color-warning-50);\n border: 1px solid var(--mj-color-warning-300);\n color: var(--mj-color-warning-700);\n}\n\n.param-pill.pill-order {\n background: var(--mj-color-success-100);\n border: 1px solid var(--mj-color-success-300);\n color: var(--mj-color-success-700);\n}\n\n.param-pill.pill-result {\n background: var(--mj-color-violet-100);\n border: 1px solid var(--mj-color-violet-300);\n color: var(--mj-color-violet-700);\n}\n\n.param-pill.pill-limit {\n background: var(--mj-color-info-100);\n border: 1px solid var(--mj-brand-primary);\n color: var(--mj-color-info-700);\n}\n\n.param-pill.pill-batch {\n background: var(--mj-color-error-100);\n border: 1px solid var(--mj-color-error-300);\n color: var(--mj-status-error);\n}\n\n.param-pill.pill-info {\n background: var(--mj-color-neutral-100);\n border: 1px solid var(--mj-color-neutral-200);\n color: var(--mj-color-neutral-600);\n}\n\n/* Slow query cache hit styling */\n.slow-query-item.cache-hit {\n background: linear-gradient(135deg, var(--mj-color-warning-50) 0%, var(--mj-color-warning-100) 100%);\n border-color: var(--mj-color-warning-300);\n}\n\n.cache-hit-badge.small {\n padding: 1px 6px;\n font-size: 8px;\n}\n\n/* Filter Bar */\n.filter-bar {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n}\n\n.search-box {\n flex: 1;\n min-width: 200px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-box input {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n background: var(--mj-bg-page);\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-color-indigo-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-color-indigo-500) 20%, transparent);\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n}\n\n.clear-search:hover {\n color: var(--mj-text-secondary);\n}\n\n.filter-buttons {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n border-radius: var(--mj-radius-full);\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-btn:hover {\n background: var(--mj-bg-surface);\n}\n\n.filter-btn.active {\n background: var(--mj-color-indigo-500);\n color: white;\n border-color: var(--mj-color-indigo-500);\n}\n\n/* Sortable Table Headers */\n.sortable-header {\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.sortable-header:hover {\n background: var(--mj-bg-surface);\n}\n\n.sortable-header i {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.sortable-header i.fa-sort-up,\n.sortable-header i.fa-sort-down {\n color: var(--mj-color-indigo-500);\n}\n\n/* Table Enhancements */\n.filter-cell {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.slow-row {\n background: var(--mj-color-error-100);\n}\n\n.slow-row:hover {\n background: var(--mj-color-error-100) !important;\n}\n\n.slow-value {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n/* Small category chips */\n.category-chip.small {\n font-size: 9px;\n padding: 2px 6px;\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n margin-bottom: 12px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Performance Sub-Tabs */\n.perf-tabs {\n display: flex;\n gap: 4px;\n padding: 12px 24px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.perf-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border: none;\n background: transparent;\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.perf-tab:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.perf-tab.active {\n background: var(--mj-bg-page);\n color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.perf-tab i {\n font-size: 14px;\n}\n\n.tab-badge {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--mj-radius-md);\n min-width: 18px;\n text-align: center;\n}\n\n.perf-tab.active .tab-badge {\n background: var(--mj-color-success-100);\n color: var(--mj-color-success-800);\n}\n\n.tab-badge.warning {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.tab-badge.insight {\n background: var(--mj-color-warning-50);\n color: var(--mj-color-warning-700);\n}\n\n.perf-panel .section-panel-content {\n padding: 20px 24px;\n}\n\n/* Success Banner */\n.success-banner {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: var(--mj-color-success-100);\n border-radius: var(--mj-radius-md);\n font-size: 13px;\n color: var(--mj-color-success-800);\n margin-top: 16px;\n}\n\n.success-banner i {\n font-size: 18px;\n color: var(--mj-status-success);\n}\n\n/* Compact Filter Bar */\n.filter-bar.compact {\n padding: 10px 14px;\n margin-bottom: 12px;\n}\n\n/* Clickable category items */\n.category-item {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.category-item:hover {\n background: var(--mj-color-accent-300);\n transform: translateY(-1px);\n}\n\n/* Insight Key Info (always visible) */\n.insight-key-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 10px 12px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: var(--mj-radius-md);\n margin: 8px 0;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.key-info-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n}\n\n.key-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 50px;\n flex-shrink: 0;\n}\n\n.key-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.key-value.entity-name {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.key-value.filter-code {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.06);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-primary);\n}\n\n/* Params Display */\n.params-display {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 10px;\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-row {\n display: flex;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.param-row:last-child {\n border-bottom: none;\n}\n\n.param-key {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n}\n\n.param-value {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.event-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* PerfMon Chart Styles\n * ====================\n * Chrome (background, borders, text, controls) is mapped to MJ semantic tokens\n * so the panel adapts to the active theme and is white-labelable. Series colors\n * (cyan / magenta / neon-green / orange) are categorical chart data \u2014 they must\n * stay distinct across themes and are exempt by the same rule that exempts\n * other chart-data palettes.\n *\n * The accent (--perfmon-accent) is intentionally kept as the same neon green as\n * the engine series so the \"live signal\" indicators (header icon, footer count,\n * chart strokes) read as part of the chart palette rather than the app's brand.\n *\n * Overlays are derived via color-mix() from --mj-text-primary so they invert\n * automatically: dark tints over light surfaces in light mode, light tints over\n * dark surfaces in dark mode.\n */\n.perfmon-section {\n /* Chrome \u2014 adapts to theme */\n --perfmon-bg: var(--mj-bg-surface-card);\n --perfmon-bg-deep: var(--mj-bg-surface-sunken);\n --perfmon-border: var(--mj-border-default);\n --perfmon-border-medium: var(--mj-border-strong);\n --perfmon-border-light: var(--mj-border-strong);\n --perfmon-text-faint: var(--mj-text-disabled);\n --perfmon-text-muted: var(--mj-text-muted);\n --perfmon-text-secondary: var(--mj-text-secondary);\n --perfmon-control-bg: var(--mj-bg-surface-sunken);\n --perfmon-control-bg-hover: var(--mj-bg-surface-hover);\n --perfmon-mode-bg: var(--mj-bg-surface-sunken);\n --perfmon-overlay-light: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n --perfmon-overlay-medium: color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n --perfmon-overlay-strong: color-mix(in srgb, var(--mj-text-primary) 25%, transparent);\n --perfmon-tooltip-bg: var(--mj-bg-overlay);\n\n /* Categorical series colors and live-signal accent \u2014 exempt */\n --perfmon-accent: #00ff88;\n --perfmon-accent-dim: #00cc6a;\n --perfmon-series-runview: #00bcd4;\n --perfmon-series-runquery: #e040fb;\n --perfmon-series-engine: #00ff88;\n --perfmon-series-ai: #ff9800;\n\n background: var(--perfmon-bg);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n}\n\n.perfmon-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.perfmon-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--perfmon-accent);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.perfmon-header h4 i {\n color: var(--perfmon-accent);\n}\n\n.perfmon-legend {\n display: flex;\n gap: 16px;\n font-size: 11px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--perfmon-text-muted);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n}\n\n.legend-item.runview .legend-dot { background: var(--perfmon-series-runview); }\n.legend-item.runquery .legend-dot { background: var(--perfmon-series-runquery); }\n.legend-item.engine .legend-dot { background: var(--perfmon-series-engine); }\n.legend-item.ai .legend-dot { background: var(--perfmon-series-ai); }\n\n.perfmon-chart-container {\n display: flex;\n background: var(--perfmon-bg-deep);\n border: 1px solid var(--perfmon-border);\n border-radius: 4px;\n position: relative;\n}\n\n.perfmon-y-axis {\n width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 1px solid var(--perfmon-border);\n}\n\n.perfmon-y-axis .axis-label {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-size: 10px;\n color: var(--perfmon-text-faint);\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.perfmon-chart {\n flex: 1;\n height: 300px;\n position: relative;\n overflow: hidden;\n}\n\n.perfmon-chart svg {\n width: 100%;\n height: 100%;\n}\n\n.perfmon-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--perfmon-border);\n}\n\n.footer-note {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer-note i {\n color: var(--perfmon-accent);\n}\n\n.footer-stats {\n font-size: 11px;\n color: var(--perfmon-accent);\n font-family: monospace;\n}\n\n/* D3 Chart Elements */\n.perfmon-chart :deep(.grid-line) {\n stroke: var(--perfmon-border);\n stroke-dasharray: 2,2;\n}\n\n.perfmon-chart :deep(.axis-line) {\n stroke: var(--perfmon-border-light);\n}\n\n.perfmon-chart :deep(.axis-text) {\n fill: var(--perfmon-text-muted);\n font-size: 10px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.event-point) {\n cursor: pointer;\n transition: r 0.15s ease;\n}\n\n.perfmon-chart :deep(.event-point:hover) {\n r: 6;\n}\n\n.perfmon-chart :deep(.tooltip) {\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.tooltip-bg) {\n fill: var(--perfmon-tooltip-bg);\n rx: 4;\n}\n\n.perfmon-chart :deep(.tooltip-text) {\n fill: var(--mj-bg-surface);\n font-size: 11px;\n font-family: monospace;\n}\n\n.perfmon-chart :deep(.area-fill) {\n opacity: 0.15;\n}\n\n.perfmon-chart :deep(.line-path) {\n fill: none;\n stroke-width: 1.5;\n opacity: 0.8;\n}\n\n/* PerfMon Chart Controls */\n.perfmon-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: var(--perfmon-overlay-light);\n border-radius: 6px;\n border: 1px solid var(--perfmon-border);\n}\n\n.chart-control-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--perfmon-control-bg);\n color: var(--perfmon-text-muted);\n border: 1px solid var(--perfmon-border-medium);\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.chart-control-btn:hover {\n background: var(--perfmon-control-bg-hover);\n color: var(--perfmon-accent);\n border-color: var(--perfmon-accent);\n}\n\n.chart-control-btn:active {\n transform: scale(0.95);\n}\n\n.chart-control-btn i {\n font-size: 14px;\n}\n\n/* Mode Toggle Buttons */\n.mode-toggle {\n display: flex;\n background: var(--perfmon-mode-bg);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--perfmon-border-medium);\n}\n\n.mode-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n background: transparent;\n color: var(--perfmon-text-faint);\n border: none;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mode-btn:first-child {\n border-right: 1px solid var(--perfmon-border);\n}\n\n.mode-btn:hover {\n color: var(--perfmon-text-secondary);\n background: var(--perfmon-overlay-light);\n}\n\n.mode-btn.active {\n background: var(--perfmon-accent);\n color: var(--perfmon-mode-bg);\n}\n\n.mode-btn.active:hover {\n background: var(--perfmon-accent-dim);\n}\n\n.mode-btn i {\n font-size: 12px;\n}\n\n.control-divider {\n width: 1px;\n height: 24px;\n background: var(--perfmon-border-medium);\n margin: 0 4px;\n}\n\n.compress-toggle {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--perfmon-text-muted);\n user-select: none;\n}\n\n.compress-toggle:hover {\n color: var(--perfmon-accent);\n}\n\n.compress-toggle input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n accent-color: var(--perfmon-accent);\n cursor: pointer;\n}\n\n.compress-toggle span {\n white-space: nowrap;\n}\n\n.zoom-level {\n font-size: 11px;\n color: var(--perfmon-text-faint);\n font-family: monospace;\n margin-left: 8px;\n}\n\n/* Gap indicators in chart */\n.perfmon-chart :deep(.gap-indicator) {\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-indicator:hover) {\n opacity: 0.8;\n}\n\n.perfmon-chart :deep(.gap-text) {\n fill: var(--perfmon-text-faint);\n font-size: 10px;\n font-family: monospace;\n pointer-events: none;\n}\n\n.perfmon-chart :deep(.gap-expand-btn) {\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.perfmon-chart :deep(.gap-expand-btn:hover) {\n opacity: 1;\n}\n\n/* Selection brush overlay */\n.perfmon-chart :deep(.selection-overlay) {\n pointer-events: all;\n}\n\n.perfmon-chart :deep(.selection-rect) {\n pointer-events: none;\n}\n\n/* Zoom info display */\n.zoom-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n color: var(--perfmon-text-muted);\n font-family: monospace;\n}\n\n.zoom-info .zoom-level {\n color: var(--perfmon-accent);\n}\n\n.zoom-info .time-range {\n color: var(--perfmon-text-faint);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .main-content {\n flex-direction: column;\n }\n\n .left-nav {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 12px;\n }\n\n .nav-section {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding: 0;\n }\n\n .nav-section-title {\n display: none;\n }\n\n .nav-item {\n white-space: nowrap;\n padding: 10px 16px;\n }\n}\n\n@media (max-width: 768px) {\n .engine-grid {\n grid-template-columns: 1fr;\n }\n\n .perfmon-legend {\n flex-wrap: wrap;\n gap: 8px;\n }\n}\n\n/* Export Button */\n.export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: var(--mj-status-success);\n color: white;\n border: none;\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.export-btn:hover:not(:disabled) {\n background: var(--mj-color-success-800);\n transform: translateY(-1px);\n}\n\n.export-btn:disabled {\n background: var(--mj-border-default);\n cursor: not-allowed;\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n/* Event Detail Slide-in Panel */\n.event-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.event-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 450px;\n max-width: 90vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n@keyframes slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n.event-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.event-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.event-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .close-btn {\n background: none;\n border: none;\n font-size: 18px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.event-detail-panel .close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.event-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Detail Metrics */\n.detail-metrics {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.detail-metrics .metric {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n text-align: center;\n}\n\n.detail-metrics .metric-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.detail-metrics .metric-value.slow {\n color: var(--mj-status-error);\n}\n\n.detail-metrics .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Detail Sections */\n.event-detail-panel .detail-section {\n margin-bottom: 24px;\n}\n\n.event-detail-panel .detail-section h4 {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.event-detail-panel .detail-section h4 i {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.detail-content {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n}\n\n.detail-row {\n display: flex;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-key {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n min-width: 80px;\n flex-shrink: 0;\n}\n\n.detail-val {\n font-size: 12px;\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n.detail-val.entity-highlight {\n font-weight: 600;\n color: var(--mj-brand-primary);\n}\n\n.detail-val.filter-val {\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n font-size: 11px;\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n/* Params Grid */\n.params-grid {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.param-item {\n display: flex;\n gap: 12px;\n padding: 6px 0;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n}\n\n.param-item:last-child {\n border-bottom: none;\n}\n\n.param-name {\n color: var(--mj-brand-primary);\n font-weight: 500;\n min-width: 100px;\n flex-shrink: 0;\n font-family: monospace;\n}\n\n.param-val {\n color: var(--mj-text-primary);\n word-break: break-all;\n}\n\n/* Pattern Summary */\n.pattern-summary {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n}\n\n.pattern-stat {\n text-align: center;\n}\n\n.pattern-stat .stat-val {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-family: monospace;\n}\n\n.pattern-stat .stat-label {\n font-size: 10px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n.pattern-warning {\n margin-top: 12px;\n padding: 12px;\n background: var(--mj-color-warning-50);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n color: var(--mj-color-warning-800);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.pattern-warning i {\n color: var(--mj-color-warning-500);\n margin-top: 2px;\n}\n\n/* Detail Actions */\n.detail-actions {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-button:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-default);\n}\n\n.action-button i {\n color: var(--mj-text-secondary);\n}\n\n/* Clickable timeline items */\n.timeline-item.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.timeline-item.clickable:hover .marker-dot {\n transform: scale(1.3);\n}\n\n/* ========================================\n ENGINE DETAIL PANEL STYLES\n ======================================== */\n\n.engine-detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeIn 0.2s ease;\n}\n\n.engine-detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 550px;\n max-width: 95vw;\n height: 100vh;\n background: var(--mj-bg-page);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease;\n}\n\n.engine-detail-panel .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: linear-gradient(135deg, var(--mj-status-success) 0%, var(--mj-color-success-800) 100%);\n color: white;\n}\n\n.engine-detail-panel .panel-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.engine-detail-panel .panel-title h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: white;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.engine-detail-panel .panel-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.engine-detail-panel .icon-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.engine-detail-panel .icon-btn:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .icon-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.engine-detail-panel .close-btn {\n background: rgba(255, 255, 255, 0.15);\n border: none;\n color: white;\n width: 36px;\n height: 36px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 18px;\n}\n\n.engine-detail-panel .close-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.engine-detail-panel .panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Engine Summary */\n.engine-summary-section {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.engine-summary-section .summary-stat {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n padding: 12px 16px;\n}\n\n.engine-summary-section .summary-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.engine-summary-section .summary-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--mj-radius-full);\n background: var(--mj-color-warning-500);\n}\n\n.status-dot.status-loaded {\n background: var(--mj-status-success);\n}\n\n/* Config Items Section */\n.config-items-section h4 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-items-section h4 i {\n color: var(--mj-status-success);\n}\n\n.config-items-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.config-item {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-item.expanded {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.config-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.config-item-header:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n.config-item-info {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.config-type-chip {\n font-size: 10px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n\n.config-type-chip.type-entity {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.config-type-chip.type-dataset {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.config-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.config-item-stats {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-stat {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.config-item.expanded .expand-icon {\n color: var(--mj-status-success);\n}\n\n.config-item-details {\n padding: 0 16px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page);\n}\n\n.config-detail-row {\n display: flex;\n gap: 12px;\n padding: 10px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-detail-row:last-child {\n border-bottom: none;\n}\n\n.config-detail-row .detail-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n min-width: 70px;\n flex-shrink: 0;\n}\n\n.config-detail-row .detail-value {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Monaco, 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n word-break: break-all;\n}\n\n/* Health status indicators for config items */\n.config-health-icon {\n font-size: 12px;\n flex-shrink: 0;\n}\n.config-health-icon.health-success {\n color: var(--mj-status-success);\n}\n.config-health-icon.health-failure {\n color: var(--mj-status-error);\n}\n.config-detail-row--error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-radius: 4px;\n padding: 4px 8px;\n}\n.detail-value--error {\n color: var(--mj-status-error-text) !important;\n background: none !important;\n font-family: inherit !important;\n word-break: break-word;\n}\n\n/* Sample Data Section */\n.sample-data-section {\n margin-top: 16px;\n}\n\n.sample-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.sample-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.sample-header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.load-more-btn,\n.load-all-btn {\n background: none;\n border: 1px solid var(--mj-color-indigo-500);\n color: var(--mj-color-indigo-500);\n font-size: 11px;\n padding: 4px 10px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.load-more-btn:hover:not(:disabled),\n.load-all-btn:hover:not(:disabled) {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.load-more-btn:disabled,\n.load-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.all-loaded-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--mj-status-success);\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n border-radius: 4px;\n}\n\n.action-col {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n padding: 4px !important;\n text-align: center;\n}\n\n.open-record-btn {\n width: 24px;\n height: 24px;\n border: none;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-color-indigo-500);\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.open-record-btn:hover {\n background: var(--mj-color-indigo-500);\n color: white;\n}\n\n.sample-data-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.sample-data-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 11px;\n}\n\n.sample-data-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 8px 10px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.sample-data-table td {\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sample-data-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.sample-data-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Small empty state */\n.empty-state.small {\n padding: 30px 20px;\n}\n\n.empty-state.small i {\n font-size: 32px;\n}\n\n.empty-state.small p {\n font-size: 14px;\n}\n\n/* Spinning animation for refresh icon */\n.spinning {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* ========================================\n LOCAL CACHE SECTION STYLES\n ======================================== */\n\n.cache-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.cache-type-breakdown {\n margin-bottom: 24px;\n}\n\n.cache-type-breakdown h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.type-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n border-color: var(--mj-status-success);\n box-shadow: var(--mj-shadow-md);\n}\n\n.type-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n font-size: 18px;\n color: var(--mj-text-secondary);\n}\n\n.type-name {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-count {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-status-success);\n}\n\n.type-size {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-left: 8px;\n}\n\n.cache-entries-section {\n margin-top: 24px;\n}\n\n.cache-entries-section .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.cache-entries-section .section-header h4 {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.filter-controls {\n display: flex;\n gap: 8px;\n}\n\n.cache-entries-table-wrapper {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.cache-entries-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.cache-entries-table th {\n padding: 12px 16px;\n text-align: left;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.cache-entries-table td {\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n vertical-align: middle;\n}\n\n.cache-entries-table tbody tr:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.cache-entries-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.cache-type-chip {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n}\n\n.cache-type-chip.type-dataset {\n background: var(--mj-color-info-100);\n color: var(--mj-color-info-700);\n}\n\n.cache-type-chip.type-runview {\n background: var(--mj-color-tertiary-100);\n color: var(--mj-color-tertiary-700);\n}\n\n.cache-type-chip.type-runquery {\n background: var(--mj-color-violet-100);\n color: var(--mj-color-violet-700);\n}\n\n.entry-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entry-fingerprint {\n display: block;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.icon-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.icon-btn:hover {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n background: var(--mj-status-error-bg);\n}\n\n.table-footer {\n padding: 12px 16px;\n text-align: center;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-top: 1px solid var(--mj-border-default);\n}\n"] }]
|
|
6091
5846
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ActivatedRoute }], { perfChartRef: [{
|
|
6092
5847
|
type: ViewChild,
|
|
6093
5848
|
args: ['perfChart', { static: false }]
|
|
6094
5849
|
}] }); })();
|
|
6095
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SystemDiagnosticsComponent, { className: "SystemDiagnosticsComponent", filePath: "src/SystemDiagnostics/system-diagnostics.component.ts", lineNumber:
|
|
5850
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SystemDiagnosticsComponent, { className: "SystemDiagnosticsComponent", filePath: "src/SystemDiagnostics/system-diagnostics.component.ts", lineNumber: 1390 }); })();
|
|
6096
5851
|
//# sourceMappingURL=system-diagnostics.component.js.map
|