@memberjunction/ng-dashboards 5.3.1 → 5.4.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.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
- package/dist/AI/index.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +2 -2
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +2 -2
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +2 -2
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/APIKeys/index.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/Actions/index.js.map +1 -1
- package/dist/Actions/services/action-explorer-state.service.js.map +1 -1
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/ComponentStudio/index.js.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/Credentials/index.js.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +25 -3
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +158 -34
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +57 -23
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +600 -445
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/index.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +25 -0
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js +6 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts +21 -3
- package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +70 -36
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +20 -5
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +128 -79
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/index.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-filter-panel.component.js.map +1 -1
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/MCP/services/mcp-tools.service.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/index.js.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/SystemDiagnostics/index.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +3 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/index.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/index.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/VersionHistory/index.js.map +1 -1
- package/dist/__tests__/dashboards.test.js.map +1 -1
- package/dist/module.js.map +1 -1
- package/dist/public-api.js.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
- package/dist/shared/pipes/index.js.map +1 -1
- package/dist/shared/shared-pipes.module.js.map +1 -1
- package/package.json +38 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-diagnostics.component.js","sourceRoot":"","sources":["../../src/SystemDiagnostics/system-diagnostics.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system-diagnostics.component.js","sourceRoot":"","sources":["../../src/SystemDiagnostics/system-diagnostics.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ElementRef, ViewChild, AfterViewInit, NgZone } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject, interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { CompositeKey, TelemetryManager, TelemetryEvent, TelemetryPattern, TelemetryInsight, TelemetryCategory, TelemetryParamsUnion, isSingleRunViewParams, isSingleRunQueryParams, isBatchRunViewParams } from '@memberjunction/core';\nimport { ResourceData, MJUserSettingEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { BaseEngineRegistry, EngineMemoryStats, LocalCacheManager, CacheEntryInfo, CacheStats, CacheEntryType, Metadata } from '@memberjunction/core';\nimport { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport * as d3 from 'd3';\n\n/**\n * Interface representing a single engine's diagnostic info for display\n */\nexport interface EngineDiagnosticInfo {\n className: string;\n isLoaded: boolean;\n registeredAt: Date;\n lastLoadedAt: Date | null;\n estimatedMemoryBytes: number;\n itemCount: number;\n memoryDisplay: string;\n}\n\n/**\n * Interface for engine config items for drill-down detail\n */\nexport interface EngineConfigItemDisplay {\n propertyName: string;\n type: 'entity' | 'dataset';\n entityName?: string;\n datasetName?: string;\n filter?: string;\n orderBy?: string;\n itemCount: number;\n estimatedMemoryBytes: number;\n memoryDisplay: string;\n sampleData: unknown[];\n expanded: boolean;\n // Paging support\n displayedData: unknown[];\n allDataLoaded: boolean;\n isLoadingMore: boolean;\n currentPage: number;\n pageSize: number;\n}\n\n/**\n * Engine detail panel state\n */\nexport interface EngineDetailPanelState {\n isOpen: boolean;\n engine: EngineDiagnosticInfo | null;\n configItems: EngineConfigItemDisplay[];\n isRefreshing: boolean;\n}\n\n/**\n * Interface for redundant entity loading info\n */\nexport interface RedundantLoadInfo {\n entityName: string;\n engines: string[];\n}\n\n/**\n * Display-friendly telemetry pattern info\n */\nexport interface TelemetryPatternDisplay {\n fingerprint: string;\n category: TelemetryCategory;\n operation: string;\n entityName: string | null;\n filter: string | null;\n orderBy: string | null;\n count: number;\n avgElapsedMs: number;\n totalElapsedMs: number;\n minElapsedMs: number;\n maxElapsedMs: number;\n lastSeen: Date;\n sampleParams: TelemetryParamsUnion;\n}\n\n/**\n * Display-friendly telemetry event for timeline\n */\nexport interface TelemetryEventDisplay {\n id: string;\n category: TelemetryCategory;\n operation: string;\n entityName: string | null;\n filter: string | null;\n startTime: number;\n endTime: number | undefined;\n elapsedMs: number | undefined;\n timestamp: Date;\n params: TelemetryParamsUnion;\n}\n\n/**\n * Extended insight with expansion state\n */\nexport interface TelemetryInsightDisplay extends TelemetryInsight {\n expanded: boolean;\n relatedEvents: TelemetryEventDisplay[];\n}\n\n/**\n * Sort configuration for patterns table\n */\nexport interface PatternSortConfig {\n column: 'category' | 'operation' | 'entity' | 'count' | 'avgMs' | 'totalMs';\n direction: 'asc' | 'desc';\n}\n\n/**\n * Event detail panel state\n */\nexport interface EventDetailPanelState {\n isOpen: boolean;\n event: TelemetryEventDisplay | null;\n relatedPattern: TelemetryPatternDisplay | null;\n}\n\n/**\n * Summary stats for telemetry\n */\nexport interface TelemetrySummary {\n totalEvents: number;\n totalPatterns: number;\n totalInsights: number;\n activeEvents: number;\n byCategory: Record<TelemetryCategory, { events: number; avgMs: number }>;\n}\n\n/**\n * Settings key for persisting user preferences\n */\nconst SYSTEM_DIAGNOSTICS_SETTINGS_KEY = 'SystemDiagnostics.UserPreferences';\n\n/**\n * Interface for persisted user preferences\n */\nexport interface SystemDiagnosticsUserPreferences {\n kpiCardsCollapsed: boolean;\n activeSection: 'engines' | 'redundant' | 'performance' | 'cache';\n perfTab: 'monitor' | 'overview' | 'events' | 'patterns' | 'insights';\n telemetrySource: 'client' | 'server';\n categoryFilter: 'all' | TelemetryCategory;\n chartZoomLevel: number;\n chartGapCompression: boolean;\n autoRefresh: boolean;\n}\n/**\n * System Diagnostics Resource Component\n *\n * Provides a comprehensive view of:\n * - All registered BaseEngine instances and their memory usage\n * - Entity load tracking across engines (identifies redundant loading)\n *\n * This is a client-side only dashboard - all data comes from in-memory registries.\n */\n@RegisterClass(BaseResourceComponent, 'SystemDiagnosticsResource')\n@Component({\n standalone: false,\n selector: 'app-system-diagnostics',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"system-diagnostics\">\n <!-- Header -->\n <div class=\"diagnostics-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-stethoscope\"></i>\n <h2>System Diagnostics</h2>\n </div>\n <div class=\"header-controls\">\n <div class=\"auto-refresh-control\">\n <label>\n <input type=\"checkbox\" [(ngModel)]=\"autoRefresh\" (change)=\"toggleAutoRefresh()\">\n Auto-refresh\n </label>\n @if (autoRefresh) {\n <span class=\"refresh-indicator\">\n <i class=\"fa-solid fa-sync-alt spinning\"></i>\n Every 5s\n </span>\n }\n </div>\n <button class=\"refresh-btn\" (click)=\"refreshData()\" [disabled]=\"isLoading\">\n <i class=\"fa-solid fa-refresh\" [class.spinning]=\"isLoading\"></i>\n Refresh Now\n </button>\n </div>\n </div>\n \n <!-- Overview Cards (Collapsible) -->\n <div class=\"overview-cards-container\" [class.collapsed]=\"kpiCardsCollapsed\">\n <button class=\"kpi-toggle-btn\" (click)=\"toggleKpiCards()\" [title]=\"kpiCardsCollapsed ? 'Expand KPI cards' : 'Collapse KPI cards'\">\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"!kpiCardsCollapsed\" [class.fa-chevron-down]=\"kpiCardsCollapsed\"></i>\n </button>\n \n @if (!kpiCardsCollapsed) {\n <!-- Expanded View -->\n <div class=\"overview-cards\">\n <div class=\"overview-card\">\n <div class=\"card-icon card-icon--engines\">\n <i class=\"fa-solid fa-cogs\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-value\">{{ engineStats?.totalEngines || 0 }}</div>\n <div class=\"card-label\">Registered Engines</div>\n <div class=\"card-subtitle\">{{ engineStats?.loadedEngines || 0 }} loaded</div>\n </div>\n </div>\n \n <div class=\"overview-card\">\n <div class=\"card-icon card-icon--memory\">\n <i class=\"fa-solid fa-microchip\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-value\">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</div>\n <div class=\"card-label\">Engine Memory</div>\n <div class=\"card-subtitle\">Estimated total</div>\n </div>\n </div>\n \n <div class=\"overview-card\">\n <div class=\"card-icon\" [class.card-icon--warning]=\"redundantLoads.length > 0\" [class.card-icon--success]=\"redundantLoads.length === 0\">\n <i class=\"fa-solid fa-copy\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-value\">{{ redundantLoads.length }}</div>\n <div class=\"card-label\">Redundant Loads</div>\n <div class=\"card-subtitle\">\n @if (redundantLoads.length === 0) {\n No redundant loading detected\n } @else {\n {{ redundantLoads.length }} entities loaded by multiple engines\n }\n </div>\n </div>\n </div>\n </div>\n } @else {\n <!-- Collapsed View - Mini KPI bar -->\n <div class=\"overview-cards-mini\">\n <div class=\"mini-kpi\" title=\"Registered Engines\">\n <i class=\"fa-solid fa-cogs\"></i>\n <span class=\"mini-value\">{{ engineStats?.totalEngines || 0 }}</span>\n <span class=\"mini-label\">Engines</span>\n </div>\n <div class=\"mini-divider\"></div>\n <div class=\"mini-kpi\" title=\"Engine Memory\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"mini-value\">{{ formatBytes(engineStats?.totalEstimatedMemoryBytes || 0) }}</span>\n <span class=\"mini-label\">Memory</span>\n </div>\n <div class=\"mini-divider\"></div>\n <div class=\"mini-kpi\" [class.warning]=\"redundantLoads.length > 0\" title=\"Redundant Loads\">\n <i class=\"fa-solid fa-copy\"></i>\n <span class=\"mini-value\">{{ redundantLoads.length }}</span>\n <span class=\"mini-label\">Redundant</span>\n </div>\n </div>\n }\n </div>\n \n <!-- Main Content with Left Nav -->\n <div class=\"main-content\">\n <!-- Left Navigation -->\n <div class=\"left-nav\">\n <div class=\"nav-section\">\n <div class=\"nav-section-title\">Diagnostics</div>\n <div\n class=\"nav-item\"\n [class.active]=\"activeSection === 'engines'\"\n (click)=\"setActiveSection('engines')\"\n >\n <i class=\"fa-solid fa-cogs\"></i>\n <span>Engine Registry</span>\n <span class=\"nav-badge\">{{ engineStats?.totalEngines || 0 }}</span>\n </div>\n <div\n class=\"nav-item\"\n [class.active]=\"activeSection === 'redundant'\"\n (click)=\"setActiveSection('redundant')\"\n >\n <i class=\"fa-solid fa-copy\"></i>\n <span>Redundant Loading</span>\n @if (redundantLoads.length > 0) {\n <span class=\"nav-badge nav-badge--warning\">{{ redundantLoads.length }}</span>\n } @else {\n <span class=\"nav-badge nav-badge--success\">0</span>\n }\n </div>\n <div\n class=\"nav-item\"\n [class.active]=\"activeSection === 'performance'\"\n (click)=\"setActiveSection('performance')\"\n >\n <i class=\"fa-solid fa-chart-line\"></i>\n <span>Performance</span>\n <span class=\"nav-badge\">{{ telemetrySummary?.totalEvents || 0 }}</span>\n </div>\n <div\n class=\"nav-item\"\n [class.active]=\"activeSection === 'cache'\"\n (click)=\"setActiveSection('cache')\"\n >\n <i class=\"fa-solid fa-database\"></i>\n <span>Local Cache</span>\n <span class=\"nav-badge\">{{ cacheStats?.totalEntries || 0 }}</span>\n </div>\n </div>\n </div>\n \n <!-- Content Area -->\n <div class=\"content-area\">\n <!-- Engine Registry Section -->\n @if (activeSection === 'engines') {\n <div class=\"section-panel\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fa-solid fa-cogs\"></i>\n Registered Engines\n </h3>\n <div class=\"panel-actions\">\n <button class=\"action-btn\" (click)=\"refreshAllEngines()\" [disabled]=\"isRefreshingEngines\">\n <i class=\"fa-solid fa-sync\" [class.spinning]=\"isRefreshingEngines\"></i>\n Refresh All Engines\n </button>\n </div>\n </div>\n \n <div class=\"section-panel-content\">\n @if (engines.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No engines registered yet</p>\n <span class=\"empty-hint\">Engines register themselves when they are first configured</span>\n </div>\n } @else {\n <div class=\"engine-grid\">\n @for (engine of engines; track engine.className) {\n <div class=\"engine-card\" [class.loaded]=\"engine.isLoaded\">\n <div class=\"engine-header\">\n <div class=\"engine-name\" [title]=\"engine.className\">{{ engine.className }}</div>\n <div class=\"engine-status\" [class.status-loaded]=\"engine.isLoaded\" [class.status-pending]=\"!engine.isLoaded\">\n {{ engine.isLoaded ? 'Loaded' : 'Not Loaded' }}\n </div>\n </div>\n <div class=\"engine-stats\">\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"stat-label\">Memory:</span>\n <span class=\"stat-value\">{{ engine.memoryDisplay }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span class=\"stat-label\">Items:</span>\n <span class=\"stat-value\">{{ engine.itemCount.toLocaleString() }}</span>\n </div>\n @if (engine.lastLoadedAt) {\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span class=\"stat-label\">Loaded:</span>\n <span class=\"stat-value\">{{ formatTime(engine.lastLoadedAt) }}</span>\n </div>\n }\n </div>\n <div class=\"engine-actions\">\n <button class=\"engine-action-btn\" (click)=\"refreshSingleEngine(engine, $event)\" [disabled]=\"!engine.isLoaded || isRefreshingSingleEngine === engine.className\" title=\"Refresh this engine\">\n <i class=\"fa-solid fa-sync\" [class.spinning]=\"isRefreshingSingleEngine === engine.className\"></i>\n </button>\n <button class=\"engine-action-btn\" (click)=\"openEngineDetailPanel(engine)\" [disabled]=\"!engine.isLoaded\" title=\"View engine details\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Redundant Loading Section -->\n @if (activeSection === 'redundant') {\n <div class=\"section-panel\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fa-solid fa-copy\"></i>\n Redundant Entity Loading\n </h3>\n </div>\n \n <div class=\"section-panel-content\">\n <div class=\"info-banner\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <div>\n <strong>What is this?</strong>\n This section shows entities that are loaded by multiple engines.\n Redundant loading indicates potential optimization opportunities where engines\n could share data or consolidate their loading logic.\n </div>\n </div>\n \n @if (redundantLoads.length === 0) {\n <div class=\"empty-state success-state\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <p>No redundant entity loading detected</p>\n <span class=\"empty-hint\">Each entity is being loaded by only one engine</span>\n </div>\n } @else {\n <div class=\"redundant-loads-table-wrapper\">\n <table class=\"redundant-loads-table\">\n <thead>\n <tr>\n <th>Entity Name</th>\n <th>Loaded By Engines</th>\n <th class=\"text-right\">Engine Count</th>\n </tr>\n </thead>\n <tbody>\n @for (load of redundantLoads; track load.entityName) {\n <tr>\n <td class=\"entity-name\">{{ load.entityName }}</td>\n <td class=\"engines-cell\">\n <div class=\"engine-chips\">\n @for (engine of load.engines; track engine) {\n <span class=\"engine-chip\">{{ engine }}</span>\n }\n </div>\n </td>\n <td class=\"text-right count-cell\">\n <span class=\"count-badge\">{{ load.engines.length }}</span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n \n <div class=\"recommendation-banner\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <div>\n <strong>Recommendation:</strong>\n Consider consolidating data loading by having dependent engines\n access data from a parent engine, or restructuring the engine\n hierarchy to avoid duplicate data fetches.\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Performance Section -->\n @if (activeSection === 'performance') {\n <div class=\"section-panel perf-panel\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fa-solid fa-chart-line\"></i>\n Performance Telemetry\n </h3>\n <div class=\"panel-actions\">\n <!-- Source toggle -->\n <div class=\"source-toggle\">\n <button class=\"source-btn\" [class.active]=\"telemetrySource === 'client'\" (click)=\"setTelemetrySource('client')\">\n <i class=\"fa-solid fa-browser\"></i>\n Client\n </button>\n <button class=\"source-btn\" [class.active]=\"telemetrySource === 'server'\" (click)=\"setTelemetrySource('server')\">\n <i class=\"fa-solid fa-server\"></i>\n Server\n </button>\n </div>\n <span class=\"action-divider\"></span>\n @if (telemetrySource === 'client') {\n <button class=\"action-btn\" [class.active]=\"telemetryEnabled\" (click)=\"toggleTelemetry()\">\n <i class=\"fa-solid\" [class.fa-toggle-on]=\"telemetryEnabled\" [class.fa-toggle-off]=\"!telemetryEnabled\"></i>\n {{ telemetryEnabled ? 'Enabled' : 'Disabled' }}\n </button>\n <button class=\"action-btn\" (click)=\"clearTelemetry()\" [disabled]=\"!telemetryEnabled\">\n <i class=\"fa-solid fa-trash\"></i>\n Clear\n </button>\n } @else {\n <span class=\"status-indicator\" [class.enabled]=\"serverTelemetryEnabled\" [class.disabled]=\"!serverTelemetryEnabled\">\n <i class=\"fa-solid\" [class.fa-circle-check]=\"serverTelemetryEnabled\" [class.fa-circle-xmark]=\"!serverTelemetryEnabled\"></i>\n {{ serverTelemetryEnabled ? 'Enabled' : 'Disabled' }}\n <span class=\"config-note\" title=\"Configure via mj.config.cjs telemetry section\">(config)</span>\n </span>\n }\n @if (serverTelemetryLoading) {\n <span class=\"loading-indicator\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </span>\n }\n </div>\n </div>\n @if (serverTelemetryError) {\n <div class=\"error-banner\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ serverTelemetryError }}\n <button class=\"dismiss-btn\" (click)=\"serverTelemetryError = null\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n \n <!-- Performance Sub-Navigation Tabs -->\n <div class=\"perf-tabs\">\n <button class=\"perf-tab\" [class.active]=\"perfTab === 'monitor'\" (click)=\"setPerfTab('monitor')\">\n <i class=\"fa-solid fa-chart-area\"></i>\n <span>Monitor</span>\n </button>\n <button class=\"perf-tab\" [class.active]=\"perfTab === 'overview'\" (click)=\"setPerfTab('overview')\">\n <i class=\"fa-solid fa-gauge\"></i>\n <span>Overview</span>\n @if (slowQueries.length > 0) {\n <span class=\"tab-badge warning\">{{ slowQueries.length }}</span>\n }\n </button>\n <button class=\"perf-tab\" [class.active]=\"perfTab === 'events'\" (click)=\"setPerfTab('events')\">\n <i class=\"fa-solid fa-timeline\"></i>\n <span>Events</span>\n <span class=\"tab-badge\">{{ telemetrySummary?.totalEvents || 0 }}</span>\n </button>\n <button class=\"perf-tab\" [class.active]=\"perfTab === 'patterns'\" (click)=\"setPerfTab('patterns')\">\n <i class=\"fa-solid fa-fingerprint\"></i>\n <span>Patterns</span>\n <span class=\"tab-badge\">{{ telemetrySummary?.totalPatterns || 0 }}</span>\n </button>\n <button class=\"perf-tab\" [class.active]=\"perfTab === 'insights'\" (click)=\"setPerfTab('insights')\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Insights</span>\n @if (telemetryInsights.length > 0) {\n <span class=\"tab-badge insight\">{{ telemetryInsights.length }}</span>\n }\n </button>\n </div>\n \n <div class=\"section-panel-content\">\n @if (!telemetryEnabled) {\n <div class=\"info-banner warning-banner\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div>\n <strong>Telemetry is disabled.</strong>\n Enable telemetry to track RunView, RunQuery, and Engine loading performance.\n </div>\n </div>\n }\n \n <!-- Monitor Tab (PerfMon Chart) -->\n @if (perfTab === 'monitor') {\n <div class=\"perfmon-section\">\n <div class=\"perfmon-header\">\n <div class=\"perfmon-legend\">\n <span class=\"legend-item runview\"><span class=\"legend-dot\"></span> RunView</span>\n <span class=\"legend-item runquery\"><span class=\"legend-dot\"></span> RunQuery</span>\n <span class=\"legend-item engine\"><span class=\"legend-dot\"></span> Engine</span>\n <span class=\"legend-item ai\"><span class=\"legend-dot\"></span> AI</span>\n </div>\n <div class=\"perfmon-controls\">\n <!-- Interaction Mode Toggle -->\n <div class=\"mode-toggle\" title=\"Chart Interaction Mode\">\n <button\n class=\"mode-btn\"\n [class.active]=\"chartInteractionMode === 'pointer'\"\n (click)=\"setChartInteractionMode('pointer')\"\n title=\"Pointer mode - click events to view details\">\n <i class=\"fa-solid fa-arrow-pointer\"></i>\n </button>\n <button\n class=\"mode-btn\"\n [class.active]=\"chartInteractionMode === 'select'\"\n (click)=\"setChartInteractionMode('select')\"\n title=\"Select mode - drag to zoom into a time range\">\n <i class=\"fa-solid fa-vector-square\"></i>\n </button>\n <button\n class=\"mode-btn\"\n [class.active]=\"chartInteractionMode === 'pan'\"\n (click)=\"setChartInteractionMode('pan')\"\n title=\"Pan mode - drag to pan the chart\">\n <i class=\"fa-solid fa-hand\"></i>\n </button>\n </div>\n <span class=\"control-divider\"></span>\n <button class=\"chart-control-btn\" (click)=\"zoomPerfChart('in')\" title=\"Zoom In\">\n <i class=\"fa-solid fa-search-plus\"></i>\n </button>\n <button class=\"chart-control-btn\" (click)=\"zoomPerfChart('out')\" title=\"Zoom Out\">\n <i class=\"fa-solid fa-search-minus\"></i>\n </button>\n <button class=\"chart-control-btn\" (click)=\"resetPerfChartZoom()\" title=\"Reset Zoom\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n <span class=\"control-divider\"></span>\n <label class=\"compress-toggle\" title=\"Automatically compress gaps with no activity\">\n <input type=\"checkbox\" [(ngModel)]=\"chartGapCompression\" (change)=\"onGapCompressionChange()\">\n <span>Compress Gaps</span>\n </label>\n </div>\n </div>\n <div class=\"perfmon-chart-container\">\n <div class=\"perfmon-y-axis\">\n <span class=\"axis-label\">Duration (ms)</span>\n </div>\n <div #perfChart class=\"perfmon-chart\"></div>\n </div>\n <div class=\"perfmon-footer\">\n <span class=\"footer-note\">\n <i class=\"fa-solid fa-info-circle\"></i>\n @if (chartTimeRangeStart !== null && chartTimeRangeEnd !== null) {\n Viewing {{ formatRelativeTime(chartTimeRangeStart) }} - {{ formatRelativeTime(chartTimeRangeEnd) }}. Click Reset to show all.\n } @else if (chartGapCompression) {\n Drag to select a time range. Gaps >5s compressed.\n } @else {\n Drag to select a time range. Hover over points for details.\n }\n </span>\n @if (telemetrySummary) {\n <span class=\"footer-stats\">\n {{ telemetrySummary.totalEvents }} events\n @if (chartZoomLevel !== 1) {\n • {{ (chartZoomLevel * 100) | number:'1.0-0' }}% zoom\n }\n </span>\n }\n </div>\n </div>\n }\n \n <!-- Overview Tab -->\n @if (perfTab === 'overview') {\n <!-- Summary Stats -->\n <div class=\"telemetry-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ telemetrySummary?.totalEvents || 0 }}</div>\n <div class=\"summary-label\">Total Events</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ telemetrySummary?.totalPatterns || 0 }}</div>\n <div class=\"summary-label\">Unique Patterns</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ telemetrySummary?.totalInsights || 0 }}</div>\n <div class=\"summary-label\">Insights</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ telemetrySummary?.activeEvents || 0 }}</div>\n <div class=\"summary-label\">Active</div>\n </div>\n </div>\n \n <!-- Category Breakdown -->\n @if (telemetrySummary && telemetrySummary.totalEvents > 0) {\n <div class=\"category-breakdown\">\n <h4>By Category</h4>\n <div class=\"category-grid\">\n @for (cat of categoriesWithData; track cat.name) {\n <div class=\"category-item\" (click)=\"jumpToPatternsByCategory(cat.name)\">\n <span class=\"category-name\">{{ cat.name }}</span>\n <span class=\"category-events\">{{ cat.events }}</span>\n <span class=\"category-avg\">avg {{ cat.avgMs | number:'1.0-0' }}ms</span>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Slow Queries Section -->\n @if (slowQueries.length > 0) {\n <div class=\"slow-queries-section\">\n <h4>\n <i class=\"fa-solid fa-turtle\"></i>\n Slow Operations (>{{ slowQueryThresholdMs }}ms)\n </h4>\n <div class=\"slow-queries-list\">\n @for (query of slowQueries.slice(0, 10); track query.id) {\n <div class=\"slow-query-item clickable\" [class.cache-hit]=\"isCacheHit(query)\" (click)=\"openEventDetailPanel(query)\">\n <div class=\"slow-query-main\">\n <span class=\"category-chip small\" [class]=\"'cat-' + query.category.toLowerCase()\">\n {{ query.category }}\n </span>\n <span class=\"slow-query-entity\">{{ query.entityName || query.operation }}</span>\n @if (isCacheHit(query)) {\n <span class=\"cache-hit-badge small\" title=\"Data served from local cache\">\n <i class=\"fa-solid fa-bolt\"></i>\n CACHED\n </span>\n }\n <span class=\"slow-query-time\">{{ query.elapsedMs | number:'1.0-0' }}ms</span>\n </div>\n <!-- Show entities for RunViews batch operation -->\n @if (isRunViewsOperation(query)) {\n <div class=\"slow-query-entities\">\n @for (entity of getRunViewsEntities(query, 4); track entity) {\n <span class=\"entity-pill small\">{{ entity }}</span>\n }\n @if (hasMoreEntities(query, 4)) {\n <span class=\"entity-pill small more\">+{{ getRunViewsEntityCount(query) - 4 }} more</span>\n }\n </div>\n }\n <!-- RunView parameter pills -->\n @if (isRunViewOperation(query) && getRunViewPills(query).length > 0) {\n <div class=\"slow-query-pills\">\n @for (pill of getRunViewPills(query); track pill.label) {\n <span class=\"param-pill small\" [class]=\"'pill-' + pill.type\" [title]=\"pill.value\">\n <span class=\"pill-label\">{{ pill.label }}:</span>\n <span class=\"pill-value\">{{ pill.value }}</span>\n </span>\n }\n </div>\n }\n @if (query.filter) {\n <div class=\"slow-query-filter\">{{ truncateString(query.filter, 60) }}</div>\n }\n <div class=\"slow-query-timestamp\">{{ formatTimestamp(query.timestamp) }}</div>\n </div>\n }\n </div>\n </div>\n } @else if (telemetryEnabled && telemetrySummary && telemetrySummary.totalEvents > 0) {\n <div class=\"success-banner\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span>No slow operations detected. All operations completed under {{ slowQueryThresholdMs }}ms.</span>\n </div>\n }\n }\n \n <!-- Events Tab (Timeline) -->\n @if (perfTab === 'events') {\n <!-- Filter Bar for Events -->\n <div class=\"filter-bar compact\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Search events...\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearchChange()\">\n @if (searchQuery) {\n <button class=\"clear-search\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"categoryFilter === 'all'\" (click)=\"setCategoryFilter('all')\">\n All\n </button>\n @for (cat of categoriesWithData; track cat.name) {\n <button class=\"filter-btn\" [class.active]=\"categoryFilter === cat.name\" (click)=\"setCategoryFilterByName(cat.name)\">\n {{ cat.name }}\n </button>\n }\n </div>\n </div>\n \n <div class=\"timeline-section\">\n <div class=\"timeline-container\">\n @if (filteredEvents.length > 0) {\n @for (event of filteredEvents.slice(0, 50); track event.id) {\n <div class=\"timeline-item clickable\" [class]=\"'tl-' + event.category.toLowerCase()\" [class.cache-hit]=\"isCacheHit(event)\" (click)=\"openEventDetailPanel(event)\">\n <div class=\"timeline-marker\">\n @if (isCacheHit(event)) {\n <div class=\"marker-bolt\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n } @else {\n <div class=\"marker-dot\"></div>\n }\n <div class=\"marker-line\"></div>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-header\">\n <span class=\"timeline-time\">{{ formatTimestamp(event.timestamp) }}</span>\n <span class=\"category-chip small\" [class]=\"'cat-' + event.category.toLowerCase()\">\n {{ event.category }}\n </span>\n @if (isCacheHit(event)) {\n <span class=\"cache-hit-badge\" title=\"Data served from local cache\">\n <i class=\"fa-solid fa-bolt\"></i>\n CACHED\n </span>\n }\n @if (event.elapsedMs !== undefined) {\n <span class=\"timeline-duration\" [class.slow]=\"(event.elapsedMs || 0) >= slowQueryThresholdMs\">\n {{ event.elapsedMs | number:'1.0-0' }}ms\n </span>\n }\n </div>\n <div class=\"timeline-body\">\n <span class=\"timeline-operation\">{{ event.operation }}</span>\n @if (event.entityName) {\n <span class=\"timeline-entity\">{{ event.entityName }}</span>\n }\n <!-- Show entities for RunViews batch operation -->\n @if (isRunViewsOperation(event)) {\n <div class=\"timeline-entities\">\n @for (entity of getRunViewsEntities(event, 3); track entity) {\n <span class=\"entity-pill\">{{ entity }}</span>\n }\n @if (hasMoreEntities(event, 3)) {\n <span class=\"entity-pill more\">+{{ getRunViewsEntityCount(event) - 3 }} more</span>\n }\n </div>\n }\n </div>\n <!-- RunView parameter pills -->\n @if (isRunViewOperation(event) && getRunViewPills(event).length > 0) {\n <div class=\"timeline-pills\">\n @for (pill of getRunViewPills(event); track pill.label) {\n <span class=\"param-pill\" [class]=\"'pill-' + pill.type\" [title]=\"pill.value\">\n <span class=\"pill-label\">{{ pill.label }}:</span>\n <span class=\"pill-value\">{{ pill.value }}</span>\n </span>\n }\n </div>\n }\n @if (event.filter) {\n <div class=\"timeline-filter\">{{ truncateString(event.filter, 80) }}</div>\n }\n </div>\n </div>\n }\n } @else {\n <div class=\"empty-state small\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <p>No events recorded yet</p>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Patterns Tab -->\n @if (perfTab === 'patterns') {\n <!-- Filter Bar -->\n <div class=\"filter-bar compact\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Search patterns...\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearchChange()\">\n @if (searchQuery) {\n <button class=\"clear-search\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"categoryFilter === 'all'\" (click)=\"setCategoryFilter('all')\">\n All\n </button>\n @for (cat of categoriesWithData; track cat.name) {\n <button class=\"filter-btn\" [class.active]=\"categoryFilter === cat.name\" (click)=\"setCategoryFilterByName(cat.name)\">\n {{ cat.name }}\n </button>\n }\n </div>\n </div>\n \n @if (filteredPatterns.length > 0) {\n <div class=\"patterns-section\">\n <div class=\"patterns-table-wrapper\">\n <table class=\"patterns-table sortable\">\n <thead>\n <tr>\n <th class=\"sortable-header\" (click)=\"sortPatternsBy('category')\">\n Category\n <i class=\"fa-solid\" [class]=\"getSortIcon('category')\"></i>\n </th>\n <th class=\"sortable-header\" (click)=\"sortPatternsBy('operation')\">\n Operation\n <i class=\"fa-solid\" [class]=\"getSortIcon('operation')\"></i>\n </th>\n <th class=\"sortable-header\" (click)=\"sortPatternsBy('entity')\">\n Entity/Query\n <i class=\"fa-solid\" [class]=\"getSortIcon('entity')\"></i>\n </th>\n <th>Filter</th>\n <th class=\"sortable-header text-right\" (click)=\"sortPatternsBy('count')\">\n Count\n <i class=\"fa-solid\" [class]=\"getSortIcon('count')\"></i>\n </th>\n <th class=\"sortable-header text-right\" (click)=\"sortPatternsBy('avgMs')\">\n Avg (ms)\n <i class=\"fa-solid\" [class]=\"getSortIcon('avgMs')\"></i>\n </th>\n <th class=\"sortable-header text-right\" (click)=\"sortPatternsBy('totalMs')\">\n Total (ms)\n <i class=\"fa-solid\" [class]=\"getSortIcon('totalMs')\"></i>\n </th>\n </tr>\n </thead>\n <tbody>\n @for (pattern of filteredPatterns; track pattern.fingerprint) {\n <tr [class.duplicate-row]=\"pattern.count >= 2\" [class.slow-row]=\"pattern.avgElapsedMs >= slowQueryThresholdMs\">\n <td>\n <span class=\"category-chip\" [class]=\"'cat-' + pattern.category.toLowerCase()\">\n {{ pattern.category }}\n </span>\n </td>\n <td class=\"operation-cell\">{{ pattern.operation }}</td>\n <td class=\"entity-cell\">{{ pattern.entityName || '-' }}</td>\n <td class=\"filter-cell\" [title]=\"pattern.filter || ''\">\n {{ truncateString(pattern.filter, 30) }}\n </td>\n <td class=\"text-right\">\n @if (pattern.count >= 2) {\n <span class=\"count-warning\">{{ pattern.count }}</span>\n } @else {\n {{ pattern.count }}\n }\n </td>\n <td class=\"text-right\" [class.slow-value]=\"pattern.avgElapsedMs >= slowQueryThresholdMs\">\n {{ pattern.avgElapsedMs | number:'1.1-1' }}\n </td>\n <td class=\"text-right\">{{ pattern.totalElapsedMs | number:'1.0-0' }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n } @else if (telemetryEnabled && telemetryPatterns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <p>No telemetry data yet</p>\n <span class=\"empty-hint\">Navigate around the app to generate performance data</span>\n </div>\n } @else if (searchQuery || categoryFilter !== 'all') {\n <div class=\"empty-state small\">\n <i class=\"fa-solid fa-filter\"></i>\n <p>No patterns match your filter</p>\n </div>\n }\n }\n \n <!-- Insights Tab -->\n @if (perfTab === 'insights') {\n @if (telemetryInsights.length > 0) {\n <div class=\"insights-section\">\n <div class=\"insights-list\">\n @for (insight of telemetryInsights; track insight.id) {\n <div class=\"insight-card expandable\" [class]=\"getSeverityClass(insight.severity)\" [class.expanded]=\"insight.expanded\">\n <div class=\"insight-header\" (click)=\"toggleInsightExpanded(insight)\">\n <i class=\"fa-solid\" [class]=\"getSeverityIcon(insight.severity)\"></i>\n <span class=\"insight-title\">{{ insight.title }}</span>\n <span class=\"insight-category\">{{ insight.category }}</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"!insight.expanded\" [class.fa-chevron-up]=\"insight.expanded\"></i>\n </div>\n \n <!-- Always show key info for actionability -->\n <div class=\"insight-key-info\">\n @if (insight.entityName) {\n <div class=\"key-info-item\">\n <span class=\"key-label\">Entity:</span>\n <span class=\"key-value entity-name\">{{ insight.entityName }}</span>\n </div>\n }\n @if (getInsightFilter(insight)) {\n <div class=\"key-info-item\">\n <span class=\"key-label\">Filter:</span>\n <code class=\"key-value filter-code\">{{ getInsightFilter(insight) }}</code>\n </div>\n }\n </div>\n \n <div class=\"insight-message\">{{ insight.message }}</div>\n <div class=\"insight-suggestion\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n {{ insight.suggestion }}\n </div>\n \n <!-- Expanded Details -->\n @if (insight.expanded) {\n <div class=\"insight-details\">\n <!-- Show all params from first related event -->\n @if (insight.relatedEvents.length > 0) {\n <div class=\"detail-section\">\n <div class=\"detail-label\">Full Parameters</div>\n <div class=\"params-display\">\n @for (param of getEventParams(insight.relatedEvents[0]); track param.key) {\n <div class=\"param-row\">\n <span class=\"param-key\">{{ param.key }}:</span>\n <span class=\"param-value\">{{ param.value }}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"detail-section\">\n <div class=\"detail-label\">Related Calls ({{ insight.relatedEvents.length }})</div>\n <div class=\"related-events\">\n @for (event of insight.relatedEvents; track event.id) {\n <div class=\"related-event\">\n <span class=\"event-time\">{{ formatTimestamp(event.timestamp) }}</span>\n <span class=\"event-duration\">{{ event.elapsedMs | number:'1.0-0' }}ms</span>\n @if (event.entityName) {\n <span class=\"event-entity\">{{ event.entityName }}</span>\n }\n @if (event.filter) {\n <span class=\"event-filter\">{{ truncateString(event.filter, 40) }}</span>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: #4caf50;\"></i>\n <p>No optimization insights</p>\n <span class=\"empty-hint\">Insights will appear when potential optimizations are detected</span>\n </div>\n }\n }\n </div>\n </div>\n }\n \n <!-- Local Cache Section -->\n @if (activeSection === 'cache') {\n <div class=\"section-panel\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fa-solid fa-database\"></i>\n Local Cache\n </h3>\n <div class=\"panel-actions\">\n <button class=\"action-btn\" (click)=\"clearAllCache()\" [disabled]=\"!cacheStats || cacheStats.totalEntries === 0\">\n <i class=\"fa-solid fa-trash\"></i>\n Clear All\n </button>\n </div>\n </div>\n \n <div class=\"section-panel-content\">\n @if (!cacheInitialized) {\n <div class=\"info-banner warning-banner\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div>\n <strong>Cache not initialized.</strong>\n The LocalCacheManager requires initialization with a storage provider during app startup.\n </div>\n </div>\n } @else {\n <!-- Cache Summary Stats -->\n <div class=\"cache-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ cacheStats?.totalEntries || 0 }}</div>\n <div class=\"summary-label\">Total Entries</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ formatBytes(cacheStats?.totalSizeBytes || 0) }}</div>\n <div class=\"summary-label\">Total Size</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ cacheStats?.hits || 0 }}</div>\n <div class=\"summary-label\">Cache Hits</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ cacheStats?.misses || 0 }}</div>\n <div class=\"summary-label\">Cache Misses</div>\n </div>\n <div class=\"summary-card\">\n <div class=\"summary-value\">{{ cacheHitRate | number:'1.1-1' }}%</div>\n <div class=\"summary-label\">Hit Rate</div>\n </div>\n </div>\n \n <!-- Cache Type Breakdown -->\n <div class=\"cache-type-breakdown\">\n <h4>By Type</h4>\n <div class=\"type-grid\">\n <div class=\"type-item\" (click)=\"setCacheTypeFilter('dataset')\">\n <span class=\"type-icon\"><i class=\"fa-solid fa-layer-group\"></i></span>\n <span class=\"type-name\">Datasets</span>\n <span class=\"type-count\">{{ cacheStats?.byType?.dataset?.count || 0 }}</span>\n <span class=\"type-size\">{{ formatBytes(cacheStats?.byType?.dataset?.sizeBytes || 0) }}</span>\n </div>\n <div class=\"type-item\" (click)=\"setCacheTypeFilter('runview')\">\n <span class=\"type-icon\"><i class=\"fa-solid fa-table\"></i></span>\n <span class=\"type-name\">RunViews</span>\n <span class=\"type-count\">{{ cacheStats?.byType?.runview?.count || 0 }}</span>\n <span class=\"type-size\">{{ formatBytes(cacheStats?.byType?.runview?.sizeBytes || 0) }}</span>\n </div>\n <div class=\"type-item\" (click)=\"setCacheTypeFilter('runquery')\">\n <span class=\"type-icon\"><i class=\"fa-solid fa-code\"></i></span>\n <span class=\"type-name\">RunQueries</span>\n <span class=\"type-count\">{{ cacheStats?.byType?.runquery?.count || 0 }}</span>\n <span class=\"type-size\">{{ formatBytes(cacheStats?.byType?.runquery?.sizeBytes || 0) }}</span>\n </div>\n </div>\n </div>\n \n <!-- Cache Entries Table -->\n @if (filteredCacheEntries.length > 0) {\n <div class=\"cache-entries-section\">\n <div class=\"section-header\">\n <h4>Cache Entries</h4>\n <div class=\"filter-controls\">\n <button class=\"filter-btn\" [class.active]=\"cacheTypeFilter === 'all'\" (click)=\"setCacheTypeFilter('all')\">All</button>\n <button class=\"filter-btn\" [class.active]=\"cacheTypeFilter === 'dataset'\" (click)=\"setCacheTypeFilter('dataset')\">Datasets</button>\n <button class=\"filter-btn\" [class.active]=\"cacheTypeFilter === 'runview'\" (click)=\"setCacheTypeFilter('runview')\">RunViews</button>\n <button class=\"filter-btn\" [class.active]=\"cacheTypeFilter === 'runquery'\" (click)=\"setCacheTypeFilter('runquery')\">RunQueries</button>\n </div>\n </div>\n <div class=\"cache-entries-table-wrapper\">\n <table class=\"cache-entries-table\">\n <thead>\n <tr>\n <th>Type</th>\n <th>Name</th>\n <th class=\"text-right\">Size</th>\n <th class=\"text-right\">Hits</th>\n <th>Cached At</th>\n <th>Last Accessed</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (entry of filteredCacheEntries.slice(0, 50); track entry.key) {\n <tr>\n <td>\n <span class=\"cache-type-chip\" [class]=\"'type-' + entry.type\">\n {{ entry.type }}\n </span>\n </td>\n <td class=\"entry-name\">\n {{ entry.name }}\n @if (entry.fingerprint) {\n <code class=\"entry-fingerprint\">{{ truncateString(entry.fingerprint, 20) }}</code>\n }\n </td>\n <td class=\"text-right\">{{ formatBytes(entry.sizeBytes) }}</td>\n <td class=\"text-right\">{{ entry.accessCount }}</td>\n <td>{{ formatCacheTimestamp(entry.cachedAt) }}</td>\n <td>{{ formatCacheTimestamp(entry.lastAccessedAt) }}</td>\n <td>\n <button class=\"icon-btn\" (click)=\"invalidateCacheEntry(entry)\" title=\"Invalidate\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n @if (filteredCacheEntries.length > 50) {\n <div class=\"table-footer\">\n Showing 50 of {{ filteredCacheEntries.length }} entries\n </div>\n }\n </div>\n } @else if (cacheStats && cacheStats.totalEntries === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No cached data</p>\n <span class=\"empty-hint\">Data will be cached as you use the application</span>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n \n <!-- Last Updated -->\n <div class=\"footer\">\n <span class=\"last-updated\">\n <i class=\"fa-solid fa-clock\"></i>\n Last updated: {{ lastUpdated | date:'medium' }}\n </span>\n <button class=\"export-btn\" (click)=\"exportTelemetryData()\" [disabled]=\"!telemetryEnabled || telemetryEvents.length === 0\">\n <i class=\"fa-solid fa-download\"></i>\n Export JSON\n </button>\n </div>\n </div>\n \n <!-- Event Detail Slide-in Panel -->\n @if (eventDetailPanel.isOpen && eventDetailPanel.event) {\n <div class=\"event-detail-overlay\" (click)=\"closeEventDetailPanel()\"></div>\n <div class=\"event-detail-panel\" [class.open]=\"eventDetailPanel.isOpen\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <span class=\"category-chip\" [class]=\"'cat-' + eventDetailPanel.event.category.toLowerCase()\">\n {{ eventDetailPanel.event.category }}\n </span>\n <h3>Event Details</h3>\n </div>\n <button class=\"close-btn\" (click)=\"closeEventDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n \n <div class=\"panel-body\">\n <!-- Key Metrics -->\n <div class=\"detail-metrics\">\n <div class=\"metric\">\n <div class=\"metric-value\" [class.slow]=\"(eventDetailPanel.event.elapsedMs || 0) >= slowQueryThresholdMs\">\n {{ eventDetailPanel.event.elapsedMs !== undefined ? (eventDetailPanel.event.elapsedMs | number:'1.0-0') + 'ms' : 'In Progress' }}\n </div>\n <div class=\"metric-label\">Duration</div>\n </div>\n <div class=\"metric\">\n <div class=\"metric-value\">{{ formatTimestamp(eventDetailPanel.event.timestamp) }}</div>\n <div class=\"metric-label\">Time</div>\n </div>\n <div class=\"metric\">\n <div class=\"metric-value\">+{{ formatRelativeTime(eventDetailPanel.event.startTime - telemetryBootTime) }}</div>\n <div class=\"metric-label\">Relative</div>\n </div>\n </div>\n \n <!-- Operation Info -->\n <div class=\"detail-section\">\n <h4><i class=\"fa-solid fa-code\"></i> Operation</h4>\n <div class=\"detail-content\">\n <div class=\"detail-row\">\n <span class=\"detail-key\">Operation:</span>\n <span class=\"detail-val\">{{ eventDetailPanel.event.operation }}</span>\n </div>\n @if (eventDetailPanel.event.entityName) {\n <div class=\"detail-row\">\n <span class=\"detail-key\">Entity:</span>\n <span class=\"detail-val entity-highlight\">{{ eventDetailPanel.event.entityName }}</span>\n </div>\n }\n @if (eventDetailPanel.event.filter) {\n <div class=\"detail-row\">\n <span class=\"detail-key\">Filter:</span>\n <code class=\"detail-val filter-val\">{{ eventDetailPanel.event.filter }}</code>\n </div>\n }\n </div>\n </div>\n \n <!-- All Parameters -->\n <div class=\"detail-section\">\n <h4><i class=\"fa-solid fa-sliders\"></i> Parameters</h4>\n <div class=\"params-grid\">\n @for (param of getEventParams(eventDetailPanel.event); track param.key) {\n <div class=\"param-item\">\n <span class=\"param-name\">{{ param.key }}</span>\n <span class=\"param-val\">{{ param.value }}</span>\n </div>\n }\n </div>\n </div>\n \n <!-- Related Pattern -->\n @if (eventDetailPanel.relatedPattern) {\n <div class=\"detail-section\">\n <h4><i class=\"fa-solid fa-fingerprint\"></i> Related Pattern</h4>\n <div class=\"pattern-summary\">\n <div class=\"pattern-stat\">\n <span class=\"stat-val\">{{ eventDetailPanel.relatedPattern.count }}</span>\n <span class=\"stat-label\">Total Calls</span>\n </div>\n <div class=\"pattern-stat\">\n <span class=\"stat-val\">{{ eventDetailPanel.relatedPattern.avgElapsedMs | number:'1.1-1' }}ms</span>\n <span class=\"stat-label\">Avg Duration</span>\n </div>\n <div class=\"pattern-stat\">\n <span class=\"stat-val\">{{ eventDetailPanel.relatedPattern.minElapsedMs | number:'1.0-0' }} - {{ eventDetailPanel.relatedPattern.maxElapsedMs | number:'1.0-0' }}ms</span>\n <span class=\"stat-label\">Range</span>\n </div>\n </div>\n @if (eventDetailPanel.relatedPattern.count >= 2) {\n <div class=\"pattern-warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n This pattern has been called {{ eventDetailPanel.relatedPattern.count }} times. Consider caching or batching.\n </div>\n }\n </div>\n }\n \n <!-- Actions -->\n <div class=\"detail-actions\">\n <button class=\"action-button\" (click)=\"copyEventToClipboard(eventDetailPanel.event)\">\n <i class=\"fa-solid fa-copy\"></i>\n Copy JSON\n </button>\n @if (eventDetailPanel.event.entityName) {\n <button class=\"action-button\" (click)=\"filterByEntity(eventDetailPanel.event.entityName)\">\n <i class=\"fa-solid fa-filter\"></i>\n Filter by Entity\n </button>\n }\n </div>\n </div>\n </div>\n }\n \n <!-- Engine Detail Slide-in Panel -->\n @if (engineDetailPanel.isOpen && engineDetailPanel.engine) {\n <div class=\"engine-detail-overlay\" (click)=\"closeEngineDetailPanel()\"></div>\n <div class=\"engine-detail-panel\" [class.open]=\"engineDetailPanel.isOpen\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n <h3>{{ engineDetailPanel.engine.className }}</h3>\n </div>\n <div class=\"panel-header-actions\">\n <button class=\"icon-btn\" (click)=\"refreshEngineInDetailPanel()\" [disabled]=\"engineDetailPanel.isRefreshing\" title=\"Refresh engine\">\n <i class=\"fa-solid fa-sync\" [class.spinning]=\"engineDetailPanel.isRefreshing\"></i>\n </button>\n <button class=\"close-btn\" (click)=\"closeEngineDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n \n <div class=\"panel-body\">\n <!-- Engine Summary -->\n <div class=\"engine-summary-section\">\n <div class=\"summary-stat\">\n <span class=\"summary-label\">Status</span>\n <span class=\"summary-value\">\n <span class=\"status-dot\" [class.status-loaded]=\"engineDetailPanel.engine.isLoaded\"></span>\n {{ engineDetailPanel.engine.isLoaded ? 'Loaded' : 'Not Loaded' }}\n </span>\n </div>\n <div class=\"summary-stat\">\n <span class=\"summary-label\">Memory</span>\n <span class=\"summary-value\">{{ engineDetailPanel.engine.memoryDisplay }}</span>\n </div>\n <div class=\"summary-stat\">\n <span class=\"summary-label\">Items</span>\n <span class=\"summary-value\">{{ engineDetailPanel.engine.itemCount.toLocaleString() }}</span>\n </div>\n @if (engineDetailPanel.engine.lastLoadedAt) {\n <div class=\"summary-stat\">\n <span class=\"summary-label\">Last Loaded</span>\n <span class=\"summary-value\">{{ formatTime(engineDetailPanel.engine.lastLoadedAt) }}</span>\n </div>\n }\n </div>\n \n <!-- Config Items -->\n <div class=\"config-items-section\">\n <h4>\n <i class=\"fa-solid fa-database\"></i>\n Data Configs ({{ engineDetailPanel.configItems.length }})\n </h4>\n \n @if (engineDetailPanel.configItems.length === 0) {\n <div class=\"empty-state small\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No config items found</p>\n </div>\n } @else {\n <div class=\"config-items-list\">\n @for (item of engineDetailPanel.configItems; track item.propertyName) {\n <div class=\"config-item\" [class.expanded]=\"item.expanded\">\n <div class=\"config-item-header\" (click)=\"toggleConfigItemExpanded(item)\">\n <div class=\"config-item-info\">\n <span class=\"config-type-chip\" [class]=\"'type-' + item.type\">{{ item.type }}</span>\n <span class=\"config-name\">{{ item.entityName || item.datasetName || item.propertyName }}</span>\n </div>\n <div class=\"config-item-stats\">\n <span class=\"config-stat\">{{ item.itemCount }} items</span>\n <span class=\"config-stat\">{{ item.memoryDisplay }}</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"!item.expanded\" [class.fa-chevron-up]=\"item.expanded\"></i>\n </div>\n </div>\n \n @if (item.expanded) {\n <div class=\"config-item-details\">\n <div class=\"config-detail-row\">\n <span class=\"detail-label\">Property:</span>\n <code class=\"detail-value\">{{ item.propertyName }}</code>\n </div>\n @if (item.filter) {\n <div class=\"config-detail-row\">\n <span class=\"detail-label\">Filter:</span>\n <code class=\"detail-value\">{{ item.filter }}</code>\n </div>\n }\n @if (item.orderBy) {\n <div class=\"config-detail-row\">\n <span class=\"detail-label\">Order By:</span>\n <code class=\"detail-value\">{{ item.orderBy }}</code>\n </div>\n }\n \n <!-- Data Table with Paging -->\n @if (item.displayedData.length > 0) {\n <div class=\"sample-data-section\">\n <div class=\"sample-header\">\n <span class=\"sample-title\">Data ({{ item.displayedData.length }} of {{ item.itemCount }})</span>\n <div class=\"sample-header-actions\">\n @if (!item.allDataLoaded && item.itemCount > item.displayedData.length) {\n <button class=\"load-more-btn\" (click)=\"loadMoreData(item)\" [disabled]=\"item.isLoadingMore\" title=\"Load more records\">\n @if (item.isLoadingMore) {\n <i class=\"fa-solid fa-spinner spinning\"></i>\n } @else {\n <i class=\"fa-solid fa-plus\"></i>\n }\n Load More\n </button>\n <button class=\"load-all-btn\" (click)=\"loadAllData(item)\" [disabled]=\"item.isLoadingMore\" title=\"Load all records\">\n @if (item.isLoadingMore) {\n <i class=\"fa-solid fa-spinner spinning\"></i>\n } @else {\n <i class=\"fa-solid fa-download\"></i>\n }\n Load All\n </button>\n }\n @if (item.allDataLoaded) {\n <span class=\"all-loaded-badge\">\n <i class=\"fa-solid fa-check\"></i>\n All Loaded\n </span>\n }\n </div>\n </div>\n <div class=\"sample-data-table-wrapper\">\n <table class=\"sample-data-table\">\n <thead>\n <tr>\n <th class=\"action-col\"></th>\n @for (col of getSampleDataColumns(item); track col) {\n <th>{{ col }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of item.displayedData; track $index) {\n <tr>\n <td class=\"action-col\">\n @if (item.entityName && getRecordId(row)) {\n <button class=\"open-record-btn\" (click)=\"openEntityRecord(item.entityName, row)\" title=\"Open record\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n </td>\n @for (col of getSampleDataColumns(item); track col) {\n <td [title]=\"getSampleDataValue(row, col)\">{{ truncateString(getSampleDataValue(row, col), 30) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n `,\n styleUrls: ['./system-diagnostics.component.css']\n})\nexport class SystemDiagnosticsComponent extends BaseResourceComponent implements OnInit, OnDestroy, AfterViewInit {\n private destroy$ = new Subject<void>();\n\n // User settings persistence\n private metadata = new Metadata();\n private userSettingEntity: MJUserSettingEntity | null = null;\n private saveSettingsTimeout: ReturnType<typeof setTimeout> | null = null;\n private settingsLoaded = false;\n\n // State\n isLoading = false;\n autoRefresh = false;\n activeSection: 'engines' | 'redundant' | 'performance' | 'cache' = 'engines';\n lastUpdated = new Date();\n isRefreshingEngines = false;\n kpiCardsCollapsed = false;\n\n // Data\n engineStats: EngineMemoryStats | null = null;\n engines: EngineDiagnosticInfo[] = [];\n redundantLoads: RedundantLoadInfo[] = [];\n\n // Telemetry data\n telemetrySummary: TelemetrySummary | null = null;\n telemetryPatterns: TelemetryPatternDisplay[] = [];\n telemetryInsights: TelemetryInsightDisplay[] = [];\n telemetryEnabled = false;\n categoriesWithData: { name: string; events: number; avgMs: number }[] = [];\n\n // Telemetry source toggle (client vs server)\n telemetrySource: 'client' | 'server' = 'client';\n serverTelemetryLoading = false;\n serverTelemetryError: string | null = null;\n serverTelemetryEnabled = false; // Read from server config, not changeable at runtime\n\n // Timeline data\n telemetryEvents: TelemetryEventDisplay[] = [];\n timelineView: 'insights' | 'timeline' | 'chart' = 'insights';\n\n // Performance sub-tabs\n perfTab: 'monitor' | 'overview' | 'events' | 'patterns' | 'insights' = 'monitor';\n\n // D3 Chart reference\n @ViewChild('perfChart', { static: false }) perfChartRef!: ElementRef<HTMLDivElement>;\n private chartInitialized = false;\n\n // Chart zoom and gap compression state\n chartZoomLevel = 1;\n chartGapCompression = true;\n private chartViewportStart = 0;\n private chartViewportEnd = 0;\n private expandedGaps = new Set<number>(); // Track which gaps are expanded\n\n // Selection-based zoom state\n private isSelecting = false;\n private selectionStartX = 0;\n private selectionRect: d3.Selection<SVGRectElement, unknown, null, undefined> | null = null;\n private chartXScale: d3.ScaleLinear<number, number> | null = null;\n private chartMarginLeft = 50;\n chartTimeRangeStart: number | null = null; // Currently visible time range start\n\n // Chart interaction mode: 'pointer' to click events, 'select' for drag-to-zoom, 'pan' for panning\n chartInteractionMode: 'pointer' | 'select' | 'pan' = 'pointer';\n\n // Store gap segments for inverse mapping (x -> time)\n private chartGapSegments: Array<{ type: 'events' | 'gap'; startTime: number; endTime: number; gapIndex?: number; displayStart: number; displayEnd: number }> = [];\n chartTimeRangeEnd: number | null = null; // Currently visible time range end\n\n // Slow queries\n slowQueries: TelemetryEventDisplay[] = [];\n slowQueryThresholdMs = 500;\n\n // Patterns sorting\n patternSort: PatternSortConfig = { column: 'count', direction: 'desc' };\n\n // Search/Filter\n searchQuery = '';\n categoryFilter: TelemetryCategory | 'all' = 'all';\n\n // Store telemetry boot time for relative time calculations (public for template access)\n telemetryBootTime: number = 0;\n\n // Event detail panel state\n eventDetailPanel: EventDetailPanelState = {\n isOpen: false,\n event: null,\n relatedPattern: null\n };\n\n // Local Cache data\n cacheStats: CacheStats | null = null;\n cacheEntries: CacheEntryInfo[] = [];\n cacheTypeFilter: CacheEntryType | 'all' = 'all';\n cacheInitialized = false;\n cacheHitRate = 0;\n\n // Engine detail panel state\n engineDetailPanel: EngineDetailPanelState = {\n isOpen: false,\n engine: null,\n configItems: [],\n isRefreshing: false\n };\n isRefreshingSingleEngine: string | null = null;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n private navigationService: NavigationService,\n private route: ActivatedRoute\n ) {\n super();\n }\n\n async ngOnInit() {\n // Load user preferences first\n await this.loadUserPreferences();\n\n // Apply query params (override preferences if present)\n this.applyQueryParams();\n\n // Subscribe to query param changes\n this.route.queryParams\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // Only apply if we've already loaded settings\n if (this.settingsLoaded) {\n this.applyQueryParams();\n }\n });\n\n this.refreshData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n // Clear any pending save timeout\n if (this.saveSettingsTimeout) {\n clearTimeout(this.saveSettingsTimeout);\n }\n }\n\n ngAfterViewInit() {\n // Render the PerfMon chart if we're on the monitor tab\n // Need a small delay to ensure the DOM is fully ready\n if (this.activeSection === 'performance' && this.perfTab === 'monitor') {\n setTimeout(() => this.renderPerfChart(), 100);\n }\n }\n\n setActiveSection(section: 'engines' | 'redundant' | 'performance' | 'cache'): void {\n this.activeSection = section;\n if (section === 'cache') {\n this.refreshCacheData();\n }\n if (section === 'performance' && this.perfTab === 'monitor') {\n // Need to wait for DOM to render before chart can be drawn\n setTimeout(() => this.renderPerfChart(), 50);\n }\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n toggleAutoRefresh(): void {\n if (this.autoRefresh) {\n // Start auto-refresh interval\n interval(5000)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.autoRefresh) {\n this.refreshData();\n }\n });\n }\n this.saveUserPreferencesDebounced();\n }\n\n toggleKpiCards(): void {\n this.kpiCardsCollapsed = !this.kpiCardsCollapsed;\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n async refreshData(): Promise<void> {\n this.isLoading = true;\n this.cdr.markForCheck();\n\n try {\n // Get engine registry stats\n this.engineStats = BaseEngineRegistry.Instance.GetMemoryStats();\n\n // Transform to display format\n this.engines = this.engineStats.engineStats.map(engine => ({\n className: engine.className,\n isLoaded: engine.isLoaded,\n registeredAt: engine.registeredAt,\n lastLoadedAt: engine.lastLoadedAt,\n estimatedMemoryBytes: engine.estimatedMemoryBytes,\n itemCount: engine.itemCount,\n memoryDisplay: this.formatBytes(engine.estimatedMemoryBytes)\n }));\n\n // Get redundantly loaded entities\n const redundantMap = BaseEngineRegistry.Instance.GetRedundantlyLoadedEntities();\n this.redundantLoads = Array.from(redundantMap.entries())\n .map(([entityName, engines]) => ({\n entityName,\n engines\n }))\n .sort((a, b) => b.engines.length - a.engines.length);\n\n // Get telemetry data\n this.refreshTelemetryData();\n\n this.lastUpdated = new Date();\n } catch (error) {\n console.error('Error refreshing diagnostics data:', error);\n } finally {\n this.isLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n private refreshTelemetryData(): void {\n const tm = TelemetryManager.Instance;\n this.telemetryEnabled = tm.IsEnabled;\n\n // Get summary stats\n const stats = tm.GetStats();\n this.telemetrySummary = {\n totalEvents: stats.totalEvents,\n totalPatterns: stats.totalPatterns,\n totalInsights: stats.totalInsights,\n activeEvents: stats.activeEvents,\n byCategory: stats.byCategory\n };\n\n // Build categories with data for display\n const categoryNames: TelemetryCategory[] = ['RunView', 'RunQuery', 'Engine', 'AI', 'Cache'];\n this.categoriesWithData = categoryNames\n .filter(cat => stats.byCategory[cat]?.events > 0)\n .map(cat => ({\n name: cat,\n events: stats.byCategory[cat].events,\n avgMs: stats.byCategory[cat].avgMs\n }));\n\n // Get patterns and apply sorting\n const patterns = tm.GetPatterns({ minCount: 1, sortBy: 'count' });\n this.telemetryPatterns = this.sortPatterns(patterns.slice(0, 100).map(p => ({\n fingerprint: p.fingerprint,\n category: p.category,\n operation: p.operation,\n entityName: this.getEntityName(p.sampleParams),\n filter: this.getFilter(p.sampleParams),\n orderBy: this.getOrderBy(p.sampleParams),\n count: p.count,\n avgElapsedMs: Math.round(p.avgElapsedMs * 100) / 100,\n totalElapsedMs: Math.round(p.totalElapsedMs),\n minElapsedMs: p.minElapsedMs === Infinity ? 0 : Math.round(p.minElapsedMs),\n maxElapsedMs: Math.round(p.maxElapsedMs),\n lastSeen: new Date(p.lastSeen),\n sampleParams: p.sampleParams\n })));\n\n // Get all events for timeline\n const events = tm.GetEvents({ limit: 200 });\n this.telemetryEvents = events.map(e => this.eventToDisplay(e));\n\n // Get slow queries (operations above threshold)\n this.slowQueries = this.telemetryEvents\n .filter(e => e.elapsedMs !== undefined && e.elapsedMs >= this.slowQueryThresholdMs)\n .sort((a, b) => (b.elapsedMs || 0) - (a.elapsedMs || 0))\n .slice(0, 20);\n\n // Get insights and convert to display format with expansion support\n const insights = tm.GetInsights({ limit: 20 });\n this.telemetryInsights = insights.map(insight => ({\n ...insight,\n expanded: false,\n relatedEvents: this.getRelatedEventsForInsight(insight)\n }));\n }\n\n private eventToDisplay(e: TelemetryEvent): TelemetryEventDisplay {\n return {\n id: e.id,\n category: e.category,\n operation: e.operation,\n entityName: this.getEntityName(e.params),\n filter: this.getFilter(e.params),\n startTime: e.startTime,\n endTime: e.endTime,\n elapsedMs: e.elapsedMs,\n timestamp: new Date(e.startTime),\n params: e.params\n };\n }\n\n private getRelatedEventsForInsight(insight: TelemetryInsight): TelemetryEventDisplay[] {\n const tm = TelemetryManager.Instance;\n const events = tm.GetEvents({ limit: 500 });\n return events\n .filter(e => insight.relatedEventIds?.includes(e.id))\n .map(e => this.eventToDisplay(e));\n }\n\n private sortPatterns(patterns: TelemetryPatternDisplay[]): TelemetryPatternDisplay[] {\n return [...patterns].sort((a, b) => {\n let comparison = 0;\n switch (this.patternSort.column) {\n case 'category':\n comparison = a.category.localeCompare(b.category);\n break;\n case 'operation':\n comparison = a.operation.localeCompare(b.operation);\n break;\n case 'entity':\n comparison = (a.entityName || '').localeCompare(b.entityName || '');\n break;\n case 'count':\n comparison = a.count - b.count;\n break;\n case 'avgMs':\n comparison = a.avgElapsedMs - b.avgElapsedMs;\n break;\n case 'totalMs':\n comparison = a.totalElapsedMs - b.totalElapsedMs;\n break;\n }\n return this.patternSort.direction === 'asc' ? comparison : -comparison;\n });\n }\n\n sortPatternsBy(column: PatternSortConfig['column']): void {\n if (this.patternSort.column === column) {\n // Toggle direction\n this.patternSort.direction = this.patternSort.direction === 'asc' ? 'desc' : 'asc';\n } else {\n this.patternSort.column = column;\n this.patternSort.direction = 'desc';\n }\n this.telemetryPatterns = this.sortPatterns(this.telemetryPatterns);\n this.cdr.markForCheck();\n }\n\n getSortIcon(column: PatternSortConfig['column']): string {\n if (this.patternSort.column !== column) {\n return 'fa-sort';\n }\n return this.patternSort.direction === 'asc' ? 'fa-sort-up' : 'fa-sort-down';\n }\n\n toggleInsightExpanded(insight: TelemetryInsightDisplay): void {\n insight.expanded = !insight.expanded;\n this.cdr.markForCheck();\n }\n\n setTimelineView(view: 'insights' | 'timeline' | 'chart'): void {\n this.timelineView = view;\n if (view === 'chart') {\n // Render chart after view updates\n setTimeout(() => this.renderPerfChart(), 0);\n }\n this.cdr.markForCheck();\n }\n\n setPerfTab(tab: 'monitor' | 'overview' | 'events' | 'patterns' | 'insights'): void {\n this.perfTab = tab;\n if (tab === 'monitor') {\n // Render chart after view updates\n setTimeout(() => this.renderPerfChart(), 0);\n }\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n jumpToPatternsByCategory(categoryName: string): void {\n this.perfTab = 'patterns';\n this.categoryFilter = categoryName as TelemetryCategory;\n this.cdr.markForCheck();\n }\n\n getInsightFilter(insight: TelemetryInsightDisplay): string | null {\n // Get filter from first related event\n if (insight.relatedEvents.length > 0) {\n return insight.relatedEvents[0].filter;\n }\n return null;\n }\n\n getEventParams(event: TelemetryEventDisplay): Array<{ key: string; value: string }> {\n const params: Array<{ key: string; value: string }> = [];\n if (!event.params) return params;\n\n // Cast to record for dynamic iteration - params have been validated by type guards\n const paramsRecord = event.params as unknown as Record<string, unknown>;\n\n // Show important params first\n const priorityKeys = ['EntityName', 'ViewName', 'ViewID', 'QueryName', 'ExtraFilter', 'OrderBy', 'ResultType', 'MaxRows'];\n const shownKeys = new Set<string>();\n\n // Add priority keys first if they exist\n for (const key of priorityKeys) {\n if (paramsRecord[key] !== undefined && paramsRecord[key] !== null) {\n const value = this.formatParamValue(paramsRecord[key]);\n if (value) {\n params.push({ key, value });\n shownKeys.add(key);\n }\n }\n }\n\n // Add remaining keys\n for (const [key, val] of Object.entries(paramsRecord)) {\n if (!shownKeys.has(key) && !key.startsWith('_')) {\n const value = this.formatParamValue(val);\n if (value) {\n params.push({ key, value });\n }\n }\n }\n\n return params;\n }\n\n private formatParamValue(val: unknown): string {\n if (val === null || val === undefined) return '';\n if (typeof val === 'string') return val || '(empty)';\n if (typeof val === 'boolean') return val ? 'true' : 'false';\n if (typeof val === 'number') return val.toString();\n if (Array.isArray(val)) return val.join(', ');\n if (typeof val === 'object') return JSON.stringify(val);\n return String(val);\n }\n\n /**\n * Check if this is a RunView/RunViews operation\n */\n isRunViewOperation(event: TelemetryEventDisplay): boolean {\n return event.operation === 'ProviderBase.RunView' || event.operation === 'ProviderBase.RunViews';\n }\n\n /**\n * Check if this is a batch RunViews operation\n */\n isRunViewsOperation(event: TelemetryEventDisplay): boolean {\n return event.operation === 'ProviderBase.RunViews';\n }\n\n /**\n * Get entity names for RunViews batch operation (first few for display)\n */\n getRunViewsEntities(event: TelemetryEventDisplay, maxDisplay: number = 3): string[] {\n if (!event.params || !isBatchRunViewParams(event.params)) return [];\n const entities = event.params.Entities;\n if (!entities || !Array.isArray(entities)) return [];\n return entities.slice(0, maxDisplay);\n }\n\n /**\n * Get total entity count for RunViews batch operation\n */\n getRunViewsEntityCount(event: TelemetryEventDisplay): number {\n if (!event.params || !isBatchRunViewParams(event.params)) return 0;\n return event.params.Entities?.length || 0;\n }\n\n /**\n * Check if there are more entities than displayed\n */\n hasMoreEntities(event: TelemetryEventDisplay, maxDisplay: number = 3): boolean {\n return this.getRunViewsEntityCount(event) > maxDisplay;\n }\n\n /**\n * Check if the event was a cache hit (safe accessor for union type params)\n */\n isCacheHit(event: TelemetryEventDisplay | { params: TelemetryParamsUnion }): boolean {\n if (!event?.params) return false;\n // Use isSingleRunViewParams or isSingleRunQueryParams to safely access cacheHit\n if (isSingleRunViewParams(event.params)) {\n return event.params.cacheHit === true;\n }\n if (isSingleRunQueryParams(event.params)) {\n return event.params.cacheHit === true;\n }\n // Handle batch RunViews operations - check cacheHits/cacheMisses counts\n if (isBatchRunViewParams(event.params)) {\n const p = event.params as { cacheHits?: number; cacheMisses?: number };\n // Consider it a cache hit if all items were served from cache\n return (p.cacheHits ?? 0) > 0 && (p.cacheMisses ?? 0) === 0;\n }\n return false;\n }\n\n /**\n * Get entity name from telemetry params (safe accessor for union type)\n */\n getEntityName(params: TelemetryParamsUnion | undefined): string | null {\n if (!params) return null;\n if (isSingleRunViewParams(params)) {\n return params.EntityName || null;\n }\n if (isSingleRunQueryParams(params)) {\n return params.QueryName || null;\n }\n return null;\n }\n\n /**\n * Get filter from telemetry params (safe accessor for union type)\n */\n getFilter(params: TelemetryParamsUnion | undefined): string | null {\n if (!params) return null;\n if (isSingleRunViewParams(params)) {\n return params.ExtraFilter || null;\n }\n return null;\n }\n\n /**\n * Get order by from telemetry params (safe accessor for union type)\n */\n getOrderBy(params: TelemetryParamsUnion | undefined): string | null {\n if (!params) return null;\n if (isSingleRunViewParams(params)) {\n return params.OrderBy || null;\n }\n return null;\n }\n\n /**\n * Get RunView parameter pills for display\n */\n getRunViewPills(event: TelemetryEventDisplay): Array<{ label: string; value: string; type: 'filter' | 'order' | 'result' | 'limit' | 'batch' | 'info' }> {\n const pills: Array<{ label: string; value: string; type: 'filter' | 'order' | 'result' | 'limit' | 'batch' | 'info' }> = [];\n\n // For batch operations, show batch size\n if (this.isRunViewsOperation(event) && event.params && isBatchRunViewParams(event.params)) {\n const batchSize = event.params.BatchSize;\n if (batchSize) {\n pills.push({ label: 'Batch', value: String(batchSize), type: 'batch' });\n }\n }\n\n // For single RunView, show params\n if (!this.isRunViewsOperation(event) && event.params && isSingleRunViewParams(event.params)) {\n const extraFilter = event.params.ExtraFilter;\n if (extraFilter) {\n pills.push({ label: 'Filter', value: this.truncateString(extraFilter, 25), type: 'filter' });\n }\n\n const orderBy = event.params.OrderBy;\n if (orderBy) {\n pills.push({ label: 'Order', value: this.truncateString(orderBy, 20), type: 'order' });\n }\n\n const resultType = event.params.ResultType;\n if (resultType && resultType !== 'simple') {\n pills.push({ label: 'Type', value: resultType, type: 'result' });\n }\n\n const maxRows = event.params.MaxRows;\n if (maxRows && maxRows > 0) {\n pills.push({ label: 'Limit', value: String(maxRows), type: 'limit' });\n }\n }\n\n return pills;\n }\n\n // === Event Detail Panel Methods ===\n\n openEventDetailPanel(event: TelemetryEventDisplay): void {\n // Find related pattern\n const relatedPattern = this.telemetryPatterns.find(p =>\n p.category === event.category &&\n p.operation === event.operation &&\n p.entityName === event.entityName\n ) || null;\n\n this.eventDetailPanel = {\n isOpen: true,\n event,\n relatedPattern\n };\n this.cdr.markForCheck();\n }\n\n closeEventDetailPanel(): void {\n this.eventDetailPanel = {\n isOpen: false,\n event: null,\n relatedPattern: null\n };\n this.cdr.markForCheck();\n }\n\n copyEventToClipboard(event: TelemetryEventDisplay): void {\n const eventData = {\n id: event.id,\n category: event.category,\n operation: event.operation,\n entityName: event.entityName,\n filter: event.filter,\n startTime: event.startTime,\n endTime: event.endTime,\n elapsedMs: event.elapsedMs,\n timestamp: event.timestamp.toISOString(),\n params: event.params\n };\n\n navigator.clipboard.writeText(JSON.stringify(eventData, null, 2))\n .then(() => {\n // Could show a toast notification here\n console.log('Event copied to clipboard');\n })\n .catch(err => {\n console.error('Failed to copy event:', err);\n });\n }\n\n filterByEntity(entityName: string | null): void {\n if (!entityName) return;\n\n this.closeEventDetailPanel();\n this.searchQuery = entityName;\n this.perfTab = 'patterns';\n this.cdr.markForCheck();\n }\n\n exportTelemetryData(): void {\n const exportData = {\n exportedAt: new Date().toISOString(),\n bootTime: this.telemetryBootTime,\n summary: this.telemetrySummary,\n events: this.telemetryEvents.map(e => ({\n id: e.id,\n category: e.category,\n operation: e.operation,\n entityName: e.entityName,\n filter: e.filter,\n startTime: e.startTime,\n endTime: e.endTime,\n elapsedMs: e.elapsedMs,\n timestamp: e.timestamp.toISOString(),\n params: e.params\n })),\n patterns: this.telemetryPatterns.map(p => ({\n fingerprint: p.fingerprint,\n category: p.category,\n operation: p.operation,\n entityName: p.entityName,\n filter: p.filter,\n count: p.count,\n avgElapsedMs: p.avgElapsedMs,\n totalElapsedMs: p.totalElapsedMs,\n minElapsedMs: p.minElapsedMs,\n maxElapsedMs: p.maxElapsedMs,\n lastSeen: p.lastSeen.toISOString()\n })),\n insights: this.telemetryInsights.map(i => ({\n id: i.id,\n category: i.category,\n severity: i.severity,\n title: i.title,\n message: i.message,\n suggestion: i.suggestion,\n entityName: i.entityName,\n timestamp: typeof i.timestamp === 'number' ? new Date(i.timestamp).toISOString() : i.timestamp\n }))\n };\n\n const blob = new Blob([JSON.stringify(exportData, null, 2)], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `telemetry-export-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.json`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n\n setCategoryFilter(category: TelemetryCategory | 'all'): void {\n this.categoryFilter = category;\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n setCategoryFilterByName(name: string): void {\n // Cast string to TelemetryCategory since we know it comes from categoriesWithData\n this.categoryFilter = name as TelemetryCategory;\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n onSearchChange(): void {\n this.cdr.markForCheck();\n // Debounce URL update for search to avoid too many history changes\n this.updateQueryParamsDebounced();\n }\n\n clearSearch(): void {\n this.searchQuery = '';\n this.cdr.markForCheck();\n this.updateQueryParams();\n }\n\n private searchParamsTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private updateQueryParamsDebounced(): void {\n if (this.searchParamsTimeout) {\n clearTimeout(this.searchParamsTimeout);\n }\n this.searchParamsTimeout = setTimeout(() => {\n this.updateQueryParams();\n }, 300);\n }\n\n get filteredPatterns(): TelemetryPatternDisplay[] {\n let patterns = this.telemetryPatterns;\n\n // Apply category filter\n if (this.categoryFilter !== 'all') {\n patterns = patterns.filter(p => p.category === this.categoryFilter);\n }\n\n // Apply search filter\n if (this.searchQuery.trim()) {\n const query = this.searchQuery.toLowerCase();\n patterns = patterns.filter(p =>\n p.entityName?.toLowerCase().includes(query) ||\n p.operation.toLowerCase().includes(query) ||\n p.filter?.toLowerCase().includes(query) ||\n p.category.toLowerCase().includes(query)\n );\n }\n\n return patterns;\n }\n\n get filteredEvents(): TelemetryEventDisplay[] {\n let events = this.telemetryEvents;\n\n // Apply category filter\n if (this.categoryFilter !== 'all') {\n events = events.filter(e => e.category === this.categoryFilter);\n }\n\n // Apply search filter\n if (this.searchQuery.trim()) {\n const query = this.searchQuery.toLowerCase();\n events = events.filter(e =>\n e.entityName?.toLowerCase().includes(query) ||\n e.operation.toLowerCase().includes(query) ||\n e.filter?.toLowerCase().includes(query) ||\n e.category.toLowerCase().includes(query)\n );\n }\n\n return events;\n }\n\n formatTimestamp(date: Date): string {\n return date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n fractionalSecondDigits: 3\n });\n }\n\n truncateString(str: string | null, maxLength: number): string {\n if (!str) return '-';\n if (str.length <= maxLength) return str;\n return str.substring(0, maxLength) + '...';\n }\n\n toggleTelemetry(): void {\n const tm = TelemetryManager.Instance;\n tm.SetEnabled(!tm.IsEnabled);\n this.telemetryEnabled = tm.IsEnabled;\n this.cdr.markForCheck();\n }\n\n clearTelemetry(): void {\n // Only client telemetry can be cleared (server telemetry is read-only)\n TelemetryManager.Instance.Clear();\n TelemetryManager.Instance.ClearInsights();\n this.refreshTelemetryData();\n this.cdr.markForCheck();\n }\n\n /**\n * Switch between client and server telemetry sources\n */\n setTelemetrySource(source: 'client' | 'server'): void {\n if (this.telemetrySource === source) return;\n\n this.telemetrySource = source;\n this.serverTelemetryError = null;\n\n if (source === 'server') {\n this.loadServerTelemetry();\n } else {\n this.refreshTelemetryData();\n }\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Load telemetry data from the server via GraphQL\n */\n private async loadServerTelemetry(): Promise<void> {\n this.serverTelemetryLoading = true;\n this.serverTelemetryError = null;\n this.cdr.markForCheck();\n\n try {\n const gqlProvider = GraphQLDataProvider.Instance;\n\n // Query for server telemetry settings (read-only, configured via mj.config.cjs)\n const settingsQuery = `\n query GetServerTelemetrySettings {\n GetServerTelemetrySettings {\n enabled\n level\n }\n }\n `;\n\n // Query for server telemetry stats\n const statsQuery = `\n query GetServerTelemetryStats {\n GetServerTelemetryStats {\n totalEvents\n totalPatterns\n totalInsights\n activeEvents\n byCategory {\n category\n events\n avgMs\n }\n }\n }\n `;\n\n // Query for server telemetry events\n const eventsQuery = `\n query GetServerTelemetryEvents($filter: TelemetryEventFilterInput) {\n GetServerTelemetryEvents(filter: $filter) {\n id\n category\n operation\n fingerprint\n startTime\n endTime\n elapsedMs\n userId\n params\n tags\n parentEventId\n }\n }\n `;\n\n // Query for server telemetry patterns\n const patternsQuery = `\n query GetServerTelemetryPatterns($filter: TelemetryPatternFilterInput) {\n GetServerTelemetryPatterns(filter: $filter) {\n fingerprint\n category\n operation\n sampleParams\n count\n totalElapsedMs\n avgElapsedMs\n minElapsedMs\n maxElapsedMs\n firstSeen\n lastSeen\n }\n }\n `;\n\n // Query for server telemetry insights\n const insightsQuery = `\n query GetServerTelemetryInsights($filter: TelemetryInsightFilterInput) {\n GetServerTelemetryInsights(filter: $filter) {\n id\n severity\n analyzerName\n category\n title\n message\n suggestion\n relatedEventIds\n entityName\n metadata\n timestamp\n }\n }\n `;\n\n // Execute queries in parallel\n const [settingsResult, statsResult, eventsResult, patternsResult, insightsResult] = await Promise.all([\n gqlProvider.ExecuteGQL(settingsQuery, {}),\n gqlProvider.ExecuteGQL(statsQuery, {}),\n gqlProvider.ExecuteGQL(eventsQuery, { filter: { limit: 200 } }),\n gqlProvider.ExecuteGQL(patternsQuery, { filter: { minCount: 1 } }),\n gqlProvider.ExecuteGQL(insightsQuery, { filter: { limit: 20 } })\n ]);\n\n // Process settings (read-only status from server config)\n if (settingsResult?.GetServerTelemetrySettings) {\n this.serverTelemetryEnabled = settingsResult.GetServerTelemetrySettings.enabled;\n }\n\n // Process stats\n if (statsResult?.GetServerTelemetryStats) {\n const stats = statsResult.GetServerTelemetryStats;\n const byCategory: Record<TelemetryCategory, { events: number; avgMs: number }> = {\n 'RunView': { events: 0, avgMs: 0 },\n 'RunQuery': { events: 0, avgMs: 0 },\n 'Engine': { events: 0, avgMs: 0 },\n 'AI': { events: 0, avgMs: 0 },\n 'Cache': { events: 0, avgMs: 0 },\n 'Network': { events: 0, avgMs: 0 },\n 'Custom': { events: 0, avgMs: 0 }\n };\n\n for (const cat of stats.byCategory || []) {\n if (cat.category in byCategory) {\n byCategory[cat.category as TelemetryCategory] = {\n events: cat.events,\n avgMs: cat.avgMs\n };\n }\n }\n\n this.telemetrySummary = {\n totalEvents: stats.totalEvents,\n totalPatterns: stats.totalPatterns,\n totalInsights: stats.totalInsights,\n activeEvents: stats.activeEvents,\n byCategory\n };\n\n // Build categories with data\n const categoryNames: TelemetryCategory[] = ['RunView', 'RunQuery', 'Engine', 'AI', 'Cache'];\n this.categoriesWithData = categoryNames\n .filter(cat => byCategory[cat]?.events > 0)\n .map(cat => ({\n name: cat,\n events: byCategory[cat].events,\n avgMs: byCategory[cat].avgMs\n }));\n }\n\n // Process events\n if (eventsResult?.GetServerTelemetryEvents) {\n this.telemetryEvents = eventsResult.GetServerTelemetryEvents.map((e: {\n id: string;\n category: string;\n operation: string;\n startTime: number;\n endTime?: number;\n elapsedMs?: number;\n params: string;\n }) => {\n const params = e.params ? JSON.parse(e.params) : {};\n return {\n id: e.id,\n category: e.category as TelemetryCategory,\n operation: e.operation,\n entityName: params?.EntityName || params?.QueryName || null,\n filter: params?.ExtraFilter || null,\n startTime: e.startTime,\n endTime: e.endTime,\n elapsedMs: e.elapsedMs,\n timestamp: new Date(e.startTime),\n params\n };\n });\n\n // Update slow queries\n this.slowQueries = this.telemetryEvents\n .filter(e => e.elapsedMs !== undefined && e.elapsedMs >= this.slowQueryThresholdMs)\n .sort((a, b) => (b.elapsedMs || 0) - (a.elapsedMs || 0))\n .slice(0, 20);\n }\n\n // Process patterns\n if (patternsResult?.GetServerTelemetryPatterns) {\n this.telemetryPatterns = patternsResult.GetServerTelemetryPatterns.slice(0, 100).map((p: {\n fingerprint: string;\n category: string;\n operation: string;\n sampleParams: string;\n count: number;\n avgElapsedMs: number;\n totalElapsedMs: number;\n minElapsedMs: number;\n maxElapsedMs: number;\n lastSeen: number;\n }) => {\n const sampleParams = p.sampleParams ? JSON.parse(p.sampleParams) : {};\n return {\n fingerprint: p.fingerprint,\n category: p.category as TelemetryCategory,\n operation: p.operation,\n entityName: sampleParams?.EntityName || sampleParams?.QueryName || null,\n filter: sampleParams?.ExtraFilter || null,\n orderBy: sampleParams?.OrderBy || null,\n count: p.count,\n avgElapsedMs: Math.round(p.avgElapsedMs * 100) / 100,\n totalElapsedMs: Math.round(p.totalElapsedMs),\n minElapsedMs: Math.round(p.minElapsedMs),\n maxElapsedMs: Math.round(p.maxElapsedMs),\n lastSeen: new Date(p.lastSeen),\n sampleParams\n };\n });\n }\n\n // Process insights\n if (insightsResult?.GetServerTelemetryInsights) {\n this.telemetryInsights = insightsResult.GetServerTelemetryInsights.map((i: {\n id: string;\n severity: string;\n analyzerName: string;\n category: string;\n title: string;\n message: string;\n suggestion: string;\n relatedEventIds: string[];\n entityName?: string;\n metadata?: string;\n timestamp: number;\n }) => ({\n id: i.id,\n severity: i.severity,\n analyzerName: i.analyzerName,\n category: i.category,\n title: i.title,\n message: i.message,\n suggestion: i.suggestion,\n relatedEventIds: i.relatedEventIds || [],\n entityName: i.entityName,\n metadata: i.metadata ? JSON.parse(i.metadata) : undefined,\n timestamp: i.timestamp,\n expanded: false,\n relatedEvents: []\n }));\n }\n\n this.telemetryEnabled = true; // Server telemetry is available\n } catch (error) {\n console.error('Failed to load server telemetry:', error);\n this.serverTelemetryError = `Failed to load server telemetry: ${error instanceof Error ? error.message : String(error)}`;\n // Clear data on error\n this.telemetrySummary = null;\n this.telemetryEvents = [];\n this.telemetryPatterns = [];\n this.telemetryInsights = [];\n this.slowQueries = [];\n } finally {\n this.serverTelemetryLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n getSeverityClass(severity: string): string {\n switch (severity) {\n case 'info': return 'severity-info';\n case 'warning': return 'severity-warning';\n case 'optimization': return 'severity-optimization';\n default: return '';\n }\n }\n\n getSeverityIcon(severity: string): string {\n switch (severity) {\n case 'info': return 'fa-info-circle';\n case 'warning': return 'fa-exclamation-triangle';\n case 'optimization': return 'fa-lightbulb';\n default: return 'fa-circle';\n }\n }\n\n async refreshAllEngines(): Promise<void> {\n this.isRefreshingEngines = true;\n this.cdr.markForCheck();\n\n try {\n const count = await BaseEngineRegistry.Instance.RefreshAllEngines();\n console.log(`Refreshed ${count} engines`);\n this.refreshData();\n } catch (error) {\n console.error('Error refreshing engines:', error);\n } finally {\n this.isRefreshingEngines = false;\n this.cdr.markForCheck();\n }\n }\n\n formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n formatTime(date: Date): string {\n return date.toLocaleTimeString();\n }\n\n formatRelativeTime(ms: number): string {\n if (ms < 1000) {\n return `${ms.toFixed(0)}ms`;\n } else if (ms < 60000) {\n return `${(ms / 1000).toFixed(1)}s`;\n } else {\n const mins = Math.floor(ms / 60000);\n const secs = ((ms % 60000) / 1000).toFixed(0);\n return `${mins}m ${secs}s`;\n }\n }\n\n /**\n * Renders a Windows PerfMon-style D3 time series chart\n * Shows performance events over time with duration spikes\n */\n renderPerfChart(): void {\n if (!this.perfChartRef?.nativeElement) {\n return;\n }\n\n const container = this.perfChartRef.nativeElement;\n const events = this.telemetryEvents.filter(e => e.elapsedMs !== undefined);\n\n if (events.length === 0) {\n container.innerHTML = '<div style=\"color: #666; text-align: center; padding: 100px 20px;\">No telemetry events with timing data yet.<br>Navigate around the app to generate performance data.</div>';\n return;\n }\n\n // Clear previous chart\n container.innerHTML = '';\n\n // Get dimensions\n const rect = container.getBoundingClientRect();\n const width = rect.width || 800;\n const height = rect.height || 300;\n const margin = { top: 20, right: 30, bottom: 40, left: 50 };\n const innerWidth = width - margin.left - margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n // Calculate boot time (earliest event)\n this.telemetryBootTime = Math.min(...events.map(e => e.startTime));\n\n // Prepare data with relative time\n const allChartData = events.map(e => ({\n ...e,\n relativeTime: e.startTime - this.telemetryBootTime,\n duration: e.elapsedMs || 0\n })).sort((a, b) => a.relativeTime - b.relativeTime);\n\n // Calculate full time range\n const fullTimeRange = d3.max(allChartData, d => d.relativeTime) || 1000;\n\n // Determine viewport bounds\n let viewportStart = this.chartViewportStart;\n let viewportEnd = this.chartViewportEnd;\n\n // If no viewport set or zoom level is 1, show everything\n if (this.chartZoomLevel <= 1 || (viewportStart === 0 && viewportEnd === 0)) {\n viewportStart = 0;\n viewportEnd = fullTimeRange;\n }\n\n // Filter data to only include events within the viewport (with some padding for edge visibility)\n const padding = (viewportEnd - viewportStart) * 0.05; // 5% padding\n const chartData = allChartData.filter(d =>\n d.relativeTime >= (viewportStart - padding) &&\n d.relativeTime <= (viewportEnd + padding)\n );\n\n // If no data in viewport, show a message\n if (chartData.length === 0) {\n container.innerHTML = '<div style=\"color: #666; text-align: center; padding: 100px 20px;\">No events in the current view.<br>Try zooming out or panning to see events.</div>';\n return;\n }\n\n // Calculate effective width with zoom\n const effectiveWidth = innerWidth * this.chartZoomLevel;\n\n // Create SVG with potential scroll for zoomed view\n const svg = d3.select(container)\n .append('svg')\n .attr('width', Math.max(width, effectiveWidth + margin.left + margin.right))\n .attr('height', height);\n\n const g = svg.append('g')\n .attr('transform', `translate(${margin.left},${margin.top})`);\n\n // Handle gap compression\n let xScale: d3.ScaleLinear<number, number>;\n let gapSegments: Array<{ type: 'events' | 'gap'; startTime: number; endTime: number; gapIndex?: number; displayStart: number; displayEnd: number }> = [];\n\n if (this.chartGapCompression && chartData.length > 1) {\n // Identify gaps and create compressed scale\n const segments = this.identifyGaps(chartData, 5000); // 5 second threshold\n const compressedGapWidth = 30; // Fixed width for compressed gaps\n\n // Calculate total display width needed\n let currentX = 0;\n for (const segment of segments) {\n const segmentDuration = segment.endTime - segment.startTime;\n\n if (segment.type === 'gap') {\n const isExpanded = segment.gapIndex !== undefined && this.expandedGaps.has(segment.gapIndex);\n const gapWidth = isExpanded ? (segmentDuration / (d3.max(chartData, d => d.relativeTime) || 1000)) * effectiveWidth : compressedGapWidth;\n\n gapSegments.push({\n ...segment,\n displayStart: currentX,\n displayEnd: currentX + gapWidth\n });\n currentX += gapWidth;\n } else {\n // Event segments get proportional width\n const proportionalWidth = (segmentDuration / (d3.max(chartData, d => d.relativeTime) || 1000)) * effectiveWidth;\n const segmentWidth = Math.max(proportionalWidth, 50); // Minimum width for visibility\n\n gapSegments.push({\n ...segment,\n displayStart: currentX,\n displayEnd: currentX + segmentWidth\n });\n currentX += segmentWidth;\n }\n }\n\n // Create custom scale function based on segments\n const totalDisplayWidth = currentX;\n const baseScale = d3.scaleLinear()\n .domain([0, d3.max(chartData, d => d.relativeTime) || 1000])\n .range([0, Math.min(totalDisplayWidth, effectiveWidth)]);\n\n // Store gap segments for inverse mapping\n this.chartGapSegments = gapSegments;\n\n // Create a custom mapping function for segment-based positioning\n const mapTimeToX = (time: number): number => {\n // Find which segment this time falls into\n for (const seg of gapSegments) {\n if (time >= seg.startTime && time <= seg.endTime) {\n if (seg.type === 'gap') {\n const isExpanded = seg.gapIndex !== undefined && this.expandedGaps.has(seg.gapIndex);\n if (isExpanded) {\n // Linear interpolation within expanded gap\n const ratio = (time - seg.startTime) / (seg.endTime - seg.startTime);\n return seg.displayStart + ratio * (seg.displayEnd - seg.displayStart);\n }\n // Compressed gap - map to center\n return seg.displayStart + (seg.displayEnd - seg.displayStart) / 2;\n } else {\n // Event segment - linear interpolation\n const ratio = (time - seg.startTime) / Math.max(seg.endTime - seg.startTime, 1);\n return seg.displayStart + ratio * (seg.displayEnd - seg.displayStart);\n }\n }\n }\n return baseScale(time);\n };\n\n // Create inverse mapping function for x -> time (used by selection brush)\n const mapXToTime = (x: number): number => {\n // Find which segment this x position falls into\n for (const seg of gapSegments) {\n if (x >= seg.displayStart && x <= seg.displayEnd) {\n if (seg.type === 'gap') {\n const isExpanded = seg.gapIndex !== undefined && this.expandedGaps.has(seg.gapIndex);\n if (isExpanded) {\n // Linear interpolation within expanded gap\n const displayRange = seg.displayEnd - seg.displayStart;\n if (displayRange <= 0) return seg.startTime;\n const ratio = (x - seg.displayStart) / displayRange;\n return seg.startTime + ratio * (seg.endTime - seg.startTime);\n }\n // Compressed gap - return start time (the gap itself has no meaningful selection)\n return seg.startTime;\n } else {\n // Event segment - linear interpolation\n const displayRange = seg.displayEnd - seg.displayStart;\n if (displayRange <= 0) return seg.startTime;\n const ratio = (x - seg.displayStart) / displayRange;\n return seg.startTime + ratio * (seg.endTime - seg.startTime);\n }\n }\n }\n return baseScale.invert(x);\n };\n\n // Use base scale but override the call behavior via a proxy-like wrapper\n xScale = Object.assign(\n (time: number) => mapTimeToX(time),\n {\n domain: baseScale.domain.bind(baseScale),\n range: () => [0, Math.min(totalDisplayWidth, effectiveWidth)] as [number, number],\n ticks: baseScale.ticks.bind(baseScale),\n tickFormat: baseScale.tickFormat.bind(baseScale),\n nice: baseScale.nice.bind(baseScale),\n copy: baseScale.copy.bind(baseScale),\n invert: mapXToTime, // Use our custom inverse function!\n clamp: baseScale.clamp.bind(baseScale),\n unknown: baseScale.unknown.bind(baseScale),\n interpolate: baseScale.interpolate.bind(baseScale),\n rangeRound: baseScale.rangeRound.bind(baseScale)\n }\n ) as unknown as d3.ScaleLinear<number, number>;\n\n // Draw gap indicators\n for (const seg of gapSegments) {\n if (seg.type === 'gap' && seg.gapIndex !== undefined) {\n const isExpanded = this.expandedGaps.has(seg.gapIndex);\n if (!isExpanded) {\n this.drawGapIndicator(\n g,\n seg.displayStart,\n seg.displayEnd - seg.displayStart,\n innerHeight,\n seg.endTime - seg.startTime,\n seg.gapIndex\n );\n }\n }\n }\n } else {\n // Standard linear scale - clear gap segments\n this.chartGapSegments = [];\n // Use viewport bounds for domain when zoomed\n xScale = d3.scaleLinear()\n .domain([viewportStart, viewportEnd])\n .range([0, innerWidth]); // Use innerWidth, not effectiveWidth for proper fit\n }\n\n // Calculate Y-scale from VISIBLE data only (not all data)\n const visibleMaxDuration = d3.max(chartData, d => d.duration) || 100;\n const yScale = d3.scaleLinear()\n .domain([0, visibleMaxDuration * 1.1]) // Add 10% padding at top\n .range([innerHeight, 0])\n .nice();\n\n // Draw grid lines\n this.drawGridLines(g, xScale, yScale, effectiveWidth, innerHeight);\n\n // Draw axes\n this.drawAxes(g, xScale, yScale, innerHeight);\n\n // Color mapping for categories\n const categoryColors: Record<string, string> = {\n 'RunView': '#00bcd4',\n 'RunQuery': '#e040fb',\n 'Engine': '#00ff88',\n 'AI': '#ff9800',\n 'Cache': '#f06292',\n 'Network': '#26a69a',\n 'Custom': '#78909c'\n };\n\n // Draw area fill for each category (like PerfMon background)\n const categories = [...new Set(chartData.map(d => d.category))];\n categories.forEach(category => {\n const categoryData = chartData.filter(d => d.category === category);\n if (categoryData.length > 1) {\n this.drawCategoryArea(g, categoryData, xScale, yScale, innerHeight, categoryColors[category] || '#78909c');\n }\n });\n\n // Draw event points\n this.drawEventPoints(g, chartData, xScale, yScale, categoryColors, container);\n\n // Draw threshold line for slow queries\n this.drawThresholdLine(g, yScale, effectiveWidth, this.slowQueryThresholdMs);\n\n // Add selection brush for drag-to-zoom and pan\n this.addSelectionBrush(svg, g, xScale, innerHeight, margin, allChartData, fullTimeRange);\n\n // Store scale and dimensions for selection calculations\n this.chartXScale = xScale;\n this.chartMarginLeft = margin.left;\n\n this.chartInitialized = true;\n }\n\n private drawGridLines(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n xScale: d3.ScaleLinear<number, number>,\n yScale: d3.ScaleLinear<number, number>,\n width: number,\n height: number\n ): void {\n // Horizontal grid lines\n const yTicks = yScale.ticks(5);\n g.selectAll('.grid-line-h')\n .data(yTicks)\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', width)\n .attr('y1', d => yScale(d))\n .attr('y2', d => yScale(d))\n .attr('stroke', '#333')\n .attr('stroke-dasharray', '2,2');\n\n // Vertical grid lines\n const xTicks = xScale.ticks(10);\n g.selectAll('.grid-line-v')\n .data(xTicks)\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', d => xScale(d))\n .attr('x2', d => xScale(d))\n .attr('y1', 0)\n .attr('y2', height)\n .attr('stroke', '#333')\n .attr('stroke-dasharray', '2,2');\n }\n\n private drawAxes(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n xScale: d3.ScaleLinear<number, number>,\n yScale: d3.ScaleLinear<number, number>,\n height: number\n ): void {\n // X axis with better time formatting\n const xDomain = xScale.domain();\n const timeRange = xDomain[1] - xDomain[0];\n\n // Choose appropriate number of ticks based on range\n const numTicks = Math.min(10, Math.max(5, Math.floor(timeRange / 1000)));\n\n const xAxis = d3.axisBottom(xScale)\n .ticks(numTicks)\n .tickFormat(d => this.formatAxisTime(d as number));\n\n const xAxisGroup = g.append('g')\n .attr('transform', `translate(0,${height})`)\n .call(xAxis)\n .attr('class', 'axis-line');\n\n xAxisGroup.selectAll('text')\n .attr('class', 'axis-text')\n .attr('fill', '#888')\n .attr('font-size', '11px');\n\n // X axis label\n xAxisGroup.append('text')\n .attr('class', 'axis-label')\n .attr('x', xScale.range()[1] / 2)\n .attr('y', 35)\n .attr('fill', '#666')\n .attr('font-size', '11px')\n .attr('text-anchor', 'middle')\n .text('Time since process start');\n\n // Y axis with proper duration formatting\n const yMax = yScale.domain()[1];\n const yAxis = d3.axisLeft(yScale)\n .ticks(6)\n .tickFormat(d => this.formatAxisDuration(d as number, yMax));\n\n const yAxisGroup = g.append('g')\n .call(yAxis)\n .attr('class', 'axis-line');\n\n yAxisGroup.selectAll('text')\n .attr('class', 'axis-text')\n .attr('fill', '#888')\n .attr('font-size', '11px');\n\n // Y axis label\n yAxisGroup.append('text')\n .attr('class', 'axis-label')\n .attr('transform', 'rotate(-90)')\n .attr('x', -height / 2)\n .attr('y', -40)\n .attr('fill', '#666')\n .attr('font-size', '11px')\n .attr('text-anchor', 'middle')\n .text('Duration');\n }\n\n /**\n * Format time for axis labels - shows relative time since process start\n */\n private formatAxisTime(ms: number): string {\n if (ms < 1000) {\n return `${Math.round(ms)}ms`;\n } else if (ms < 60000) {\n const secs = ms / 1000;\n return secs % 1 === 0 ? `${secs}s` : `${secs.toFixed(1)}s`;\n } else if (ms < 3600000) {\n const mins = Math.floor(ms / 60000);\n const secs = Math.floor((ms % 60000) / 1000);\n return secs > 0 ? `${mins}m${secs}s` : `${mins}m`;\n } else {\n const hours = Math.floor(ms / 3600000);\n const mins = Math.floor((ms % 3600000) / 60000);\n return mins > 0 ? `${hours}h${mins}m` : `${hours}h`;\n }\n }\n\n /**\n * Format duration for Y axis labels\n */\n private formatAxisDuration(ms: number, maxValue: number): string {\n // If max is >= 1000ms, show in seconds for values >= 1000\n if (maxValue >= 1000 && ms >= 1000) {\n return `${(ms / 1000).toFixed(1)}s`;\n }\n return `${Math.round(ms)}ms`;\n }\n\n private drawCategoryArea(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n data: Array<{ relativeTime: number; duration: number }>,\n xScale: d3.ScaleLinear<number, number>,\n yScale: d3.ScaleLinear<number, number>,\n height: number,\n color: string\n ): void {\n const area = d3.area<{ relativeTime: number; duration: number }>()\n .x(d => xScale(d.relativeTime))\n .y0(height)\n .y1(d => yScale(d.duration))\n .curve(d3.curveMonotoneX);\n\n g.append('path')\n .datum(data)\n .attr('class', 'area-fill')\n .attr('d', area)\n .attr('fill', color)\n .attr('opacity', 0.1);\n\n // Line on top\n const line = d3.line<{ relativeTime: number; duration: number }>()\n .x(d => xScale(d.relativeTime))\n .y(d => yScale(d.duration))\n .curve(d3.curveMonotoneX);\n\n g.append('path')\n .datum(data)\n .attr('class', 'line-path')\n .attr('d', line)\n .attr('stroke', color)\n .attr('fill', 'none')\n .attr('stroke-width', 1.5)\n .attr('opacity', 0.6);\n }\n\n private drawEventPoints(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n data: Array<TelemetryEventDisplay & { relativeTime: number; duration: number }>,\n xScale: d3.ScaleLinear<number, number>,\n yScale: d3.ScaleLinear<number, number>,\n categoryColors: Record<string, string>,\n container: HTMLDivElement\n ): void {\n // Create tooltip\n const tooltip = g.append('g')\n .attr('class', 'tooltip')\n .style('display', 'none');\n\n tooltip.append('rect')\n .attr('class', 'tooltip-bg')\n .attr('fill', 'rgba(0, 0, 0, 0.9)')\n .attr('rx', 4);\n\n const tooltipText = tooltip.append('text')\n .attr('class', 'tooltip-text')\n .attr('fill', '#fff')\n .attr('font-size', '11px')\n .attr('font-family', 'monospace');\n\n // Split data into cached and non-cached events\n const nonCachedData = data.filter(d => !this.isCacheHit(d));\n const cachedData = data.filter(d => this.isCacheHit(d));\n\n // Helper to show tooltip\n const showTooltip = (event: MouseEvent, d: TelemetryEventDisplay & { relativeTime: number; duration: number }) => {\n // Update tooltip content\n const isCached = this.isCacheHit(d);\n const lines = [\n `${d.category}: ${d.operation}`,\n d.entityName ? `Entity: ${d.entityName}` : null,\n `Duration: ${d.duration.toFixed(0)}ms`,\n isCached ? '⚡ CACHED' : null,\n `Time: +${this.formatRelativeTime(d.relativeTime)}`\n ].filter(Boolean);\n\n tooltipText.selectAll('tspan').remove();\n lines.forEach((line, i) => {\n tooltipText.append('tspan')\n .attr('x', 8)\n .attr('dy', i === 0 ? '1.2em' : '1.4em')\n .text(line as string);\n });\n\n // Size tooltip background\n const textBBox = (tooltipText.node() as SVGTextElement).getBBox();\n tooltip.select('.tooltip-bg')\n .attr('width', textBBox.width + 16)\n .attr('height', textBBox.height + 12)\n .attr('y', textBBox.y - 6);\n\n // Position tooltip\n const x = xScale(d.relativeTime);\n const y = yScale(d.duration);\n const tooltipWidth = textBBox.width + 16;\n\n // Flip tooltip if too close to right edge\n const translateX = x + tooltipWidth + 20 > (container.clientWidth - 80) ? x - tooltipWidth - 10 : x + 10;\n tooltip.attr('transform', `translate(${translateX},${y - 20})`);\n tooltip.style('display', 'block');\n };\n\n const hideTooltip = () => {\n tooltip.style('display', 'none');\n };\n\n // Draw circles for non-cached events\n g.selectAll('.event-point-circle')\n .data(nonCachedData)\n .enter()\n .append('circle')\n .attr('class', 'event-point event-point-circle')\n .attr('cx', d => xScale(d.relativeTime))\n .attr('cy', d => yScale(d.duration))\n .attr('r', d => d.duration >= this.slowQueryThresholdMs ? 5 : 3)\n .attr('fill', d => categoryColors[d.category] || '#78909c')\n .attr('stroke', d => d.duration >= this.slowQueryThresholdMs ? '#ff5252' : 'none')\n .attr('stroke-width', 2)\n .style('cursor', 'pointer')\n .on('mouseenter', (event: MouseEvent, d) => {\n const target = event.target as SVGCircleElement;\n d3.select(target).attr('r', 7);\n showTooltip(event, d);\n })\n .on('mouseleave', (event: MouseEvent, d) => {\n const target = event.target as SVGCircleElement;\n d3.select(target).attr('r', d.duration >= this.slowQueryThresholdMs ? 5 : 3);\n hideTooltip();\n })\n .on('click', (_event: MouseEvent, d) => {\n // Open detail panel for this event\n this.ngZone.run(() => {\n this.openEventDetailPanel(d);\n });\n });\n\n // Draw bolt symbols for cached events\n // SVG path for a lightning bolt shape\n const boltPath = 'M-3,-6 L1,-6 L0,-1 L4,-1 L-2,6 L0,1 L-4,1 Z';\n\n g.selectAll('.event-point-bolt')\n .data(cachedData)\n .enter()\n .append('path')\n .attr('class', 'event-point event-point-bolt')\n .attr('d', boltPath)\n .attr('transform', d => `translate(${xScale(d.relativeTime)},${yScale(d.duration)}) scale(${d.duration >= this.slowQueryThresholdMs ? 1.3 : 1})`)\n .attr('fill', '#f59e0b')\n .attr('stroke', d => d.duration >= this.slowQueryThresholdMs ? '#ff5252' : categoryColors[d.category] || '#78909c')\n .attr('stroke-width', 1.5)\n .style('cursor', 'pointer')\n .style('filter', 'drop-shadow(0 0 2px rgba(245, 158, 11, 0.5))')\n .on('mouseenter', (event: MouseEvent, d) => {\n const target = event.target as SVGPathElement;\n d3.select(target)\n .attr('transform', `translate(${xScale(d.relativeTime)},${yScale(d.duration)}) scale(1.5)`)\n .style('filter', 'drop-shadow(0 0 4px rgba(245, 158, 11, 0.8))');\n showTooltip(event, d);\n })\n .on('mouseleave', (event: MouseEvent, d) => {\n const target = event.target as SVGPathElement;\n d3.select(target)\n .attr('transform', `translate(${xScale(d.relativeTime)},${yScale(d.duration)}) scale(${d.duration >= this.slowQueryThresholdMs ? 1.3 : 1})`)\n .style('filter', 'drop-shadow(0 0 2px rgba(245, 158, 11, 0.5))');\n hideTooltip();\n })\n .on('click', (_event: MouseEvent, d) => {\n // Open detail panel for this event\n this.ngZone.run(() => {\n this.openEventDetailPanel(d);\n });\n });\n }\n\n private drawThresholdLine(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n yScale: d3.ScaleLinear<number, number>,\n width: number,\n threshold: number\n ): void {\n const yPos = yScale(threshold);\n\n // Only draw if threshold is within visible range\n if (yPos > 0 && yPos < yScale.range()[0]) {\n g.append('line')\n .attr('x1', 0)\n .attr('x2', width)\n .attr('y1', yPos)\n .attr('y2', yPos)\n .attr('stroke', '#ff5252')\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '5,3')\n .attr('opacity', 0.7);\n\n g.append('text')\n .attr('x', width - 5)\n .attr('y', yPos - 5)\n .attr('text-anchor', 'end')\n .attr('fill', '#ff5252')\n .attr('font-size', '10px')\n .text(`Slow (>${threshold}ms)`);\n }\n }\n\n // === Chart Zoom and Gap Compression Methods ===\n\n /**\n * Zoom the chart in or out\n */\n zoomPerfChart(direction: 'in' | 'out'): void {\n const zoomFactor = 1.5;\n if (direction === 'in') {\n this.chartZoomLevel = Math.min(this.chartZoomLevel * zoomFactor, 100); // Allow up to 100x zoom\n } else {\n this.chartZoomLevel = Math.max(this.chartZoomLevel / zoomFactor, 0.25); // Allow zoom out to 25%\n }\n this.renderPerfChart();\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Reset chart zoom to default\n */\n resetPerfChartZoom(): void {\n this.chartZoomLevel = 1;\n this.chartViewportStart = 0;\n this.chartViewportEnd = 0;\n this.chartTimeRangeStart = null;\n this.chartTimeRangeEnd = null;\n this.expandedGaps.clear();\n this.renderPerfChart();\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Handle gap compression toggle\n */\n onGapCompressionChange(): void {\n this.expandedGaps.clear();\n this.renderPerfChart();\n this.cdr.markForCheck();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Set chart interaction mode (select for drag-to-zoom, pan for click-to-view)\n */\n setChartInteractionMode(mode: 'pointer' | 'select' | 'pan'): void {\n this.chartInteractionMode = mode;\n this.renderPerfChart(); // Re-render to update cursor and behavior\n this.cdr.markForCheck();\n }\n\n /**\n * Returns the appropriate cursor style based on the current chart interaction mode\n */\n private getChartCursor(): string {\n switch (this.chartInteractionMode) {\n case 'pointer':\n return 'default';\n case 'select':\n return 'crosshair';\n case 'pan':\n return 'grab';\n default:\n return 'default';\n }\n }\n\n /**\n * Returns whether the overlay should intercept pointer events based on the current mode\n */\n private getOverlayPointerEvents(): string {\n // In pointer mode, let events pass through to the data points\n // In select/pan mode, the overlay needs to capture events\n return this.chartInteractionMode === 'pointer' ? 'none' : 'all';\n }\n\n /**\n * Identifies gaps in the data where there's no activity\n * Returns segments with their type (events or gap)\n */\n private identifyGaps(\n events: Array<{ relativeTime: number; duration: number }>,\n gapThresholdMs: number = 5000\n ): Array<{ type: 'events' | 'gap'; startTime: number; endTime: number; gapIndex?: number; events?: typeof events }> {\n if (events.length === 0) return [];\n\n const segments: Array<{ type: 'events' | 'gap'; startTime: number; endTime: number; gapIndex?: number; events?: typeof events }> = [];\n let gapIndex = 0;\n\n // Sort events by time\n const sortedEvents = [...events].sort((a, b) => a.relativeTime - b.relativeTime);\n\n let currentSegmentStart = sortedEvents[0].relativeTime;\n let currentSegmentEvents: typeof events = [];\n let lastEventTime = sortedEvents[0].relativeTime;\n\n for (let i = 0; i < sortedEvents.length; i++) {\n const event = sortedEvents[i];\n const timeSinceLastEvent = event.relativeTime - lastEventTime;\n\n if (timeSinceLastEvent > gapThresholdMs && currentSegmentEvents.length > 0) {\n // Close current event segment\n segments.push({\n type: 'events',\n startTime: currentSegmentStart,\n endTime: lastEventTime,\n events: currentSegmentEvents\n });\n\n // Add gap segment\n segments.push({\n type: 'gap',\n startTime: lastEventTime,\n endTime: event.relativeTime,\n gapIndex: gapIndex++\n });\n\n // Start new segment\n currentSegmentStart = event.relativeTime;\n currentSegmentEvents = [event];\n } else {\n currentSegmentEvents.push(event);\n }\n\n lastEventTime = event.relativeTime;\n }\n\n // Close final segment\n if (currentSegmentEvents.length > 0) {\n segments.push({\n type: 'events',\n startTime: currentSegmentStart,\n endTime: lastEventTime,\n events: currentSegmentEvents\n });\n }\n\n return segments;\n }\n\n /**\n * Draws a compressed gap indicator\n */\n private drawGapIndicator(\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n x: number,\n width: number,\n height: number,\n gapDurationMs: number,\n gapIndex: number\n ): void {\n const isExpanded = this.expandedGaps.has(gapIndex);\n\n // Draw striped background\n const pattern = g.append('defs')\n .append('pattern')\n .attr('id', `gap-pattern-${gapIndex}`)\n .attr('patternUnits', 'userSpaceOnUse')\n .attr('width', 8)\n .attr('height', 8)\n .attr('patternTransform', 'rotate(45)');\n\n pattern.append('rect')\n .attr('width', 8)\n .attr('height', 8)\n .attr('fill', '#f5f5f5');\n\n pattern.append('line')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', 0)\n .attr('y2', 8)\n .attr('stroke', '#e0e0e0')\n .attr('stroke-width', 4);\n\n // Gap rectangle\n const gapRect = g.append('rect')\n .attr('x', x)\n .attr('y', 0)\n .attr('width', width)\n .attr('height', height)\n .attr('fill', `url(#gap-pattern-${gapIndex})`)\n .attr('stroke', '#ccc')\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '4,2')\n .style('cursor', 'pointer');\n\n // Vertical text showing gap duration\n const gapText = this.formatRelativeTime(gapDurationMs);\n const textG = g.append('g')\n .attr('transform', `translate(${x + width / 2}, ${height / 2})`)\n .style('pointer-events', 'none');\n\n textG.append('text')\n .attr('transform', 'rotate(-90)')\n .attr('text-anchor', 'middle')\n .attr('fill', '#888')\n .attr('font-size', '10px')\n .attr('font-weight', '500')\n .text(`${gapText} gap`);\n\n // Click handler to expand/collapse\n gapRect.on('click', () => {\n this.ngZone.run(() => {\n if (this.expandedGaps.has(gapIndex)) {\n this.expandedGaps.delete(gapIndex);\n } else {\n this.expandedGaps.add(gapIndex);\n }\n this.renderPerfChart();\n });\n });\n }\n\n /**\n * Adds a drag-to-select brush overlay for zooming into a time range\n * Only active when chartInteractionMode is 'select'\n */\n private addSelectionBrush(\n svg: d3.Selection<SVGSVGElement, unknown, null, undefined>,\n g: d3.Selection<SVGGElement, unknown, null, undefined>,\n xScale: d3.ScaleLinear<number, number>,\n innerHeight: number,\n _margin: { top: number; right: number; bottom: number; left: number },\n allChartData: Array<{ relativeTime: number; duration: number }>,\n fullTimeRange: number\n ): void {\n // Create a transparent overlay for mouse events\n // Cursor and pointer-events depend on interaction mode\n const overlay = g.append('rect')\n .attr('class', 'selection-overlay')\n .attr('width', xScale.range()[1])\n .attr('height', innerHeight)\n .attr('fill', 'transparent')\n .style('cursor', this.getChartCursor())\n .style('pointer-events', this.getOverlayPointerEvents());\n\n // Selection rectangle (initially hidden) - only used in select mode\n const selectionRect = g.append('rect')\n .attr('class', 'selection-rect')\n .attr('fill', 'rgba(0, 255, 136, 0.15)')\n .attr('stroke', '#00ff88')\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '4,2')\n .style('display', 'none');\n\n let startX = 0;\n let isDragging = false;\n let isPanning = false;\n let panStartX = 0;\n let panStartViewportStart = 0;\n\n // Store the inverse scale function for mapping x back to time\n const getTimeFromX = (x: number): number => {\n // For gap-compressed scales, we need to use invert if available\n if (typeof xScale.invert === 'function') {\n return xScale.invert(x);\n }\n // Fallback: linear interpolation\n const domain = xScale.domain();\n const range = xScale.range();\n const ratio = (x - range[0]) / (range[1] - range[0]);\n return domain[0] + ratio * (domain[1] - domain[0]);\n };\n\n overlay.on('mousedown', (event: MouseEvent) => {\n if (this.chartInteractionMode === 'select') {\n // Selection mode - drag to zoom\n isDragging = true;\n this.isSelecting = true;\n const [x] = d3.pointer(event, overlay.node());\n startX = Math.max(0, Math.min(x, xScale.range()[1]));\n this.selectionStartX = startX;\n\n selectionRect\n .attr('x', startX)\n .attr('y', 0)\n .attr('width', 0)\n .attr('height', innerHeight)\n .style('display', 'block');\n } else if (this.chartInteractionMode === 'pan') {\n // Pan mode - drag to pan\n isPanning = true;\n const [x] = d3.pointer(event, overlay.node());\n panStartX = x;\n panStartViewportStart = this.chartViewportStart;\n overlay.style('cursor', 'grabbing');\n }\n });\n\n svg.on('mousemove', (event: MouseEvent) => {\n if (isDragging && this.chartInteractionMode === 'select') {\n const [x] = d3.pointer(event, g.node());\n const currentX = Math.max(0, Math.min(x, xScale.range()[1]));\n\n const rectX = Math.min(startX, currentX);\n const rectWidth = Math.abs(currentX - startX);\n\n selectionRect\n .attr('x', rectX)\n .attr('width', rectWidth);\n } else if (isPanning && this.chartInteractionMode === 'pan') {\n const [x] = d3.pointer(event, g.node());\n const deltaX = x - panStartX;\n\n // Convert pixel delta to time delta\n const pixelsPerMs = xScale.range()[1] / ((xScale.domain()[1] - xScale.domain()[0]) || 1);\n const timeDelta = -deltaX / pixelsPerMs; // Negative because dragging right should move viewport left\n\n // Calculate new viewport position using the full time range\n const viewportSize = (this.chartViewportEnd - this.chartViewportStart) || fullTimeRange / this.chartZoomLevel;\n\n let newStart = panStartViewportStart + timeDelta;\n // Clamp to valid range\n newStart = Math.max(0, Math.min(newStart, fullTimeRange - viewportSize));\n\n this.chartViewportStart = newStart;\n this.chartViewportEnd = newStart + viewportSize;\n\n // Re-render chart with new viewport\n this.ngZone.run(() => {\n this.renderPerfChart();\n });\n }\n });\n\n svg.on('mouseup', (event: MouseEvent) => {\n if (isDragging && this.chartInteractionMode === 'select') {\n isDragging = false;\n this.isSelecting = false;\n\n const [x] = d3.pointer(event, g.node());\n const endX = Math.max(0, Math.min(x, xScale.range()[1]));\n\n selectionRect.style('display', 'none');\n\n // Only zoom if selection is significant (> 20 pixels)\n const selectionWidth = Math.abs(endX - startX);\n if (selectionWidth > 20) {\n const startTime = getTimeFromX(Math.min(startX, endX));\n const endTime = getTimeFromX(Math.max(startX, endX));\n\n this.ngZone.run(() => {\n this.zoomToTimeRange(startTime, endTime, allChartData);\n });\n }\n } else if (isPanning) {\n isPanning = false;\n overlay.style('cursor', 'grab');\n }\n });\n\n // Cancel selection/pan on mouse leave\n svg.on('mouseleave', () => {\n if (isDragging) {\n isDragging = false;\n this.isSelecting = false;\n selectionRect.style('display', 'none');\n }\n if (isPanning) {\n isPanning = false;\n overlay.style('cursor', 'grab');\n }\n });\n }\n\n /**\n * Zooms the chart to show only events within the specified time range\n */\n private zoomToTimeRange(\n startTime: number,\n endTime: number,\n allData: Array<{ relativeTime: number; duration: number }>\n ): void {\n // Store the time range for filtering\n this.chartTimeRangeStart = startTime;\n this.chartTimeRangeEnd = endTime;\n\n // Calculate zoom level based on selection\n const fullRange = (d3.max(allData, d => d.relativeTime) || 1000) - (d3.min(allData, d => d.relativeTime) || 0);\n const selectedRange = endTime - startTime;\n const newZoomLevel = fullRange / Math.max(selectedRange, 10); // Allow very fine selections (down to 10ms)\n\n this.chartZoomLevel = Math.min(Math.max(newZoomLevel, 1), 100); // Allow up to 100x zoom\n this.chartViewportStart = startTime;\n this.chartViewportEnd = endTime;\n\n this.renderPerfChart();\n this.cdr.markForCheck();\n }\n\n // === Local Cache Methods ===\n\n /**\n * Refreshes cache data from LocalCacheManager\n */\n refreshCacheData(): void {\n const lcm = LocalCacheManager.Instance;\n this.cacheInitialized = lcm.IsInitialized;\n\n if (this.cacheInitialized) {\n this.cacheStats = lcm.GetStats();\n this.cacheEntries = lcm.GetAllEntries();\n this.cacheHitRate = lcm.GetHitRate();\n } else {\n this.cacheStats = null;\n this.cacheEntries = [];\n this.cacheHitRate = 0;\n }\n\n this.cdr.markForCheck();\n }\n\n /**\n * Getter for filtered cache entries based on type filter\n */\n get filteredCacheEntries(): CacheEntryInfo[] {\n if (this.cacheTypeFilter === 'all') {\n return this.cacheEntries;\n }\n return this.cacheEntries.filter(e => e.type === this.cacheTypeFilter);\n }\n\n /**\n * Sets the cache type filter\n */\n setCacheTypeFilter(type: CacheEntryType | 'all'): void {\n this.cacheTypeFilter = type;\n this.cdr.markForCheck();\n }\n\n /**\n * Clears all cache entries\n */\n async clearAllCache(): Promise<void> {\n const lcm = LocalCacheManager.Instance;\n if (lcm.IsInitialized) {\n await lcm.ClearAll();\n this.refreshCacheData();\n }\n }\n\n /**\n * Invalidates a single cache entry\n */\n async invalidateCacheEntry(entry: CacheEntryInfo): Promise<void> {\n const lcm = LocalCacheManager.Instance;\n if (!lcm.IsInitialized) return;\n\n // Remove based on type\n if (entry.type === 'runview' && entry.fingerprint) {\n await lcm.InvalidateRunViewResult(entry.fingerprint);\n } else if (entry.type === 'dataset') {\n // For datasets, we need to call ClearDataset with proper params\n // Since we don't have the full params, use the key directly\n // This is a simplified approach - in production you'd want more robust handling\n await lcm.InvalidateRunViewResult(entry.key);\n } else if (entry.type === 'runquery' && entry.fingerprint) {\n await lcm.InvalidateRunViewResult(entry.fingerprint);\n }\n\n this.refreshCacheData();\n }\n\n /**\n * Formats a cache timestamp (unix ms) to display string\n */\n formatCacheTimestamp(timestamp: number): string {\n const date = new Date(timestamp);\n return date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n // === Engine Detail Panel Methods ===\n\n /**\n * Refresh a single engine\n */\n async refreshSingleEngine(engine: EngineDiagnosticInfo, event: Event): Promise<void> {\n event.stopPropagation();\n this.isRefreshingSingleEngine = engine.className;\n this.cdr.markForCheck();\n\n try {\n const engineInstance = BaseEngineRegistry.Instance.GetEngine<{ RefreshAllItems: () => Promise<void> }>(engine.className);\n if (engineInstance && typeof engineInstance.RefreshAllItems === 'function') {\n await engineInstance.RefreshAllItems();\n console.log(`Refreshed engine: ${engine.className}`);\n }\n this.refreshData();\n } catch (error) {\n console.error(`Error refreshing engine ${engine.className}:`, error);\n } finally {\n this.isRefreshingSingleEngine = null;\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Opens the engine detail panel for a specific engine\n */\n openEngineDetailPanel(engine: EngineDiagnosticInfo): void {\n const configItems = this.getEngineConfigItems(engine.className);\n\n this.engineDetailPanel = {\n isOpen: true,\n engine,\n configItems,\n isRefreshing: false\n };\n this.cdr.markForCheck();\n }\n\n /**\n * Closes the engine detail panel\n */\n closeEngineDetailPanel(): void {\n this.engineDetailPanel = {\n isOpen: false,\n engine: null,\n configItems: [],\n isRefreshing: false\n };\n this.cdr.markForCheck();\n }\n\n /**\n * Refreshes the engine shown in the detail panel\n */\n async refreshEngineInDetailPanel(): Promise<void> {\n if (!this.engineDetailPanel.engine) return;\n\n this.engineDetailPanel.isRefreshing = true;\n this.cdr.markForCheck();\n\n try {\n const engineInstance = BaseEngineRegistry.Instance.GetEngine<{ RefreshAllItems: () => Promise<void> }>(\n this.engineDetailPanel.engine.className\n );\n if (engineInstance && typeof engineInstance.RefreshAllItems === 'function') {\n await engineInstance.RefreshAllItems();\n }\n\n // Refresh the data and reopen panel with updated info\n await this.refreshData();\n\n // Update the panel with refreshed data\n const updatedEngine = this.engines.find(e => e.className === this.engineDetailPanel.engine?.className);\n if (updatedEngine) {\n this.engineDetailPanel.engine = updatedEngine;\n this.engineDetailPanel.configItems = this.getEngineConfigItems(updatedEngine.className);\n }\n } catch (error) {\n console.error('Error refreshing engine in detail panel:', error);\n } finally {\n this.engineDetailPanel.isRefreshing = false;\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Gets config items for an engine by examining its Configs property\n */\n private getEngineConfigItems(className: string): EngineConfigItemDisplay[] {\n const engineInstance = BaseEngineRegistry.Instance.GetEngine<{\n Configs?: Array<{\n Type: 'entity' | 'dataset';\n PropertyName: string;\n EntityName?: string;\n DatasetName?: string;\n Filter?: string;\n OrderBy?: string;\n }>;\n }>(className);\n\n if (!engineInstance || !engineInstance.Configs) {\n return [];\n }\n\n const engineObj = engineInstance as Record<string, unknown>;\n const items: EngineConfigItemDisplay[] = [];\n\n for (const config of engineInstance.Configs) {\n const propValue = engineObj[config.PropertyName];\n const dataArray = Array.isArray(propValue) ? propValue : [];\n const estimatedBytes = this.estimateArrayMemory(dataArray);\n const initialPageSize = 10;\n const initialData = dataArray.slice(0, initialPageSize);\n\n items.push({\n propertyName: config.PropertyName,\n type: config.Type || 'entity',\n entityName: config.EntityName,\n datasetName: config.DatasetName,\n filter: config.Filter,\n orderBy: config.OrderBy,\n itemCount: dataArray.length,\n estimatedMemoryBytes: estimatedBytes,\n memoryDisplay: this.formatBytes(estimatedBytes),\n sampleData: dataArray, // Store all data for paging\n expanded: false,\n // Paging support\n displayedData: initialData,\n allDataLoaded: dataArray.length <= initialPageSize,\n isLoadingMore: false,\n currentPage: 1,\n pageSize: initialPageSize\n });\n }\n\n return items.sort((a, b) => b.itemCount - a.itemCount);\n }\n\n /**\n * Estimates memory for an array of objects\n */\n private estimateArrayMemory(arr: unknown[]): number {\n if (arr.length === 0) return 0;\n\n // Sample first item to estimate size\n const sample = arr[0];\n let bytesPerItem = 100; // default\n\n if (sample && typeof sample === 'object') {\n try {\n // For MJ entity objects, use GetAll() to get just the data values\n // This avoids serializing the massive metadata/prototype chain\n const sampleObj = sample as { GetAll?: () => Record<string, unknown> };\n const dataToSerialize = sampleObj.GetAll ? sampleObj.GetAll() : sample;\n const json = JSON.stringify(dataToSerialize);\n bytesPerItem = json.length * 2; // UTF-16\n } catch {\n bytesPerItem = 500;\n }\n }\n\n return arr.length * bytesPerItem;\n }\n\n /**\n * Toggle expansion of a config item\n */\n toggleConfigItemExpanded(item: EngineConfigItemDisplay): void {\n item.expanded = !item.expanded;\n this.cdr.markForCheck();\n }\n\n /**\n * Get column names for sample data display\n */\n getSampleDataColumns(item: EngineConfigItemDisplay): string[] {\n if (item.sampleData.length === 0) return [];\n\n const sample = item.sampleData[0];\n if (!sample || typeof sample !== 'object') return [];\n\n // For BaseEntity objects, try to get key properties\n const obj = sample as Record<string, unknown>;\n\n // Check if it's a BaseEntity with GetAll method\n if ('GetAll' in obj && typeof obj.GetAll === 'function') {\n const allData = (obj as { GetAll: () => Record<string, unknown> }).GetAll();\n // Return priority columns first\n const priorityKeys = ['ID', 'Name', 'Description', 'Code', 'Status', 'Type'];\n const availableKeys = Object.keys(allData);\n const result: string[] = [];\n\n for (const key of priorityKeys) {\n if (availableKeys.includes(key)) {\n result.push(key);\n }\n }\n\n // Add remaining keys up to 6 total\n for (const key of availableKeys) {\n if (!result.includes(key) && result.length < 6 && !key.startsWith('_')) {\n result.push(key);\n }\n }\n\n return result;\n }\n\n // For plain objects\n const keys = Object.keys(obj).filter(k => !k.startsWith('_'));\n return keys.slice(0, 6);\n }\n\n /**\n * Get a value from sample data for display\n */\n getSampleDataValue(row: unknown, column: string): string {\n if (!row || typeof row !== 'object') return '';\n\n const obj = row as Record<string, unknown>;\n\n // For BaseEntity objects, use GetAll\n if ('GetAll' in obj && typeof obj.GetAll === 'function') {\n const allData = (obj as { GetAll: () => Record<string, unknown> }).GetAll();\n const value = allData[column];\n return this.formatValueForDisplay(value);\n }\n\n // For plain objects\n const value = obj[column];\n return this.formatValueForDisplay(value);\n }\n\n /**\n * Format a value for display in sample data table\n */\n private formatValueForDisplay(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'string') return value;\n if (typeof value === 'number') return value.toString();\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (value instanceof Date) return value.toLocaleDateString();\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n }\n\n /**\n * Load more data for a config item (paging)\n */\n loadMoreData(item: EngineConfigItemDisplay): void {\n if (item.isLoadingMore || item.allDataLoaded) return;\n\n item.isLoadingMore = true;\n this.cdr.markForCheck();\n\n // Simulate async loading (data is already in memory)\n setTimeout(() => {\n const nextPage = item.currentPage + 1;\n const startIndex = item.currentPage * item.pageSize;\n const endIndex = startIndex + item.pageSize;\n const newData = item.sampleData.slice(startIndex, endIndex);\n\n item.displayedData = [...item.displayedData, ...newData];\n item.currentPage = nextPage;\n item.allDataLoaded = item.displayedData.length >= item.sampleData.length;\n item.isLoadingMore = false;\n this.cdr.markForCheck();\n }, 100);\n }\n\n /**\n * Load all remaining data for a config item\n */\n loadAllData(item: EngineConfigItemDisplay): void {\n if (item.isLoadingMore || item.allDataLoaded) return;\n\n item.isLoadingMore = true;\n this.cdr.markForCheck();\n\n // Simulate async loading (data is already in memory)\n setTimeout(() => {\n item.displayedData = [...item.sampleData];\n item.allDataLoaded = true;\n item.isLoadingMore = false;\n this.cdr.markForCheck();\n }, 100);\n }\n\n /**\n * Get the record ID from a row (for opening entity records)\n */\n getRecordId(row: unknown): string | null {\n if (!row || typeof row !== 'object') return null;\n\n const obj = row as Record<string, unknown>;\n\n // For BaseEntity objects, use the ID property\n if ('ID' in obj) {\n return String(obj.ID);\n }\n\n // Try GetAll for BaseEntity\n if ('GetAll' in obj && typeof obj.GetAll === 'function') {\n const allData = (obj as { GetAll: () => Record<string, unknown> }).GetAll();\n if ('ID' in allData) {\n return String(allData.ID);\n }\n }\n\n return null;\n }\n\n /**\n * Open an entity record using NavigationService\n */\n openEntityRecord(entityName: string, row: unknown): void {\n const recordId = this.getRecordId(row);\n if (!recordId || !entityName) return;\n\n // Create a CompositeKey with the ID\n const compositeKey = new CompositeKey([\n { FieldName: 'ID', Value: recordId }\n ]);\n\n this.navigationService.OpenEntityRecord(entityName, compositeKey);\n }\n\n /**\n * Open an entity in the explorer (placeholder - would need routing integration)\n */\n openEntityInExplorer(entityName: string): void {\n // This would integrate with the app's navigation/routing system\n // For now, just log and could be extended to emit an event or use router\n console.log(`Would open entity in explorer: ${entityName}`);\n // Could emit an event or use router:\n // this.router.navigate(['/entities', entityName]);\n }\n\n // === Deep Linking via Query Parameters ===\n\n /**\n * Apply query parameters to component state (deep linking support)\n * Query params take precedence over saved preferences\n */\n private applyQueryParams(): void {\n const params = this.route.snapshot.queryParams;\n\n // Section: ?section=engines|redundant|performance|cache\n if (params['section']) {\n const section = params['section'] as string;\n if (['engines', 'redundant', 'performance', 'cache'].includes(section)) {\n this.activeSection = section as 'engines' | 'redundant' | 'performance' | 'cache';\n }\n }\n\n // Performance tab: ?tab=monitor|overview|events|patterns|insights\n if (params['tab']) {\n const tab = params['tab'] as string;\n if (['monitor', 'overview', 'events', 'patterns', 'insights'].includes(tab)) {\n this.perfTab = tab as 'monitor' | 'overview' | 'events' | 'patterns' | 'insights';\n }\n }\n\n // Telemetry source: ?source=client|server\n if (params['source']) {\n const source = params['source'] as string;\n if (['client', 'server'].includes(source)) {\n this.telemetrySource = source as 'client' | 'server';\n }\n }\n\n // Category filter: ?category=all|data|api|render|...\n if (params['category']) {\n const category = params['category'] as string;\n if (category === 'all') {\n this.categoryFilter = 'all';\n } else {\n this.categoryFilter = category as TelemetryCategory;\n }\n }\n\n // Search query: ?search=...\n if (params['search']) {\n this.searchQuery = params['search'] as string;\n }\n\n // KPI cards collapsed: ?kpi=collapsed|expanded\n if (params['kpi']) {\n this.kpiCardsCollapsed = params['kpi'] === 'collapsed';\n }\n\n this.cdr.markForCheck();\n }\n\n /**\n * Update query parameters to reflect current state (for deep linking)\n * Uses NavigationService for proper URL management that respects app-scoped routes.\n */\n private updateQueryParams(): void {\n const queryParams: Record<string, string | null> = {\n section: this.activeSection !== 'engines' ? this.activeSection : null,\n tab: this.perfTab !== 'monitor' ? this.perfTab : null,\n source: this.telemetrySource !== 'client' ? this.telemetrySource : null,\n category: this.categoryFilter !== 'all' ? this.categoryFilter : null,\n search: this.searchQuery.trim() || null,\n kpi: this.kpiCardsCollapsed ? 'collapsed' : null\n };\n\n // Use NavigationService to update query params properly\n this.navigationService.UpdateActiveTabQueryParams(queryParams);\n }\n\n // === User Preferences Persistence ===\n\n /**\n * Load user preferences from MJ: User Settings entity using UserInfoEngine for cached access\n */\n private async loadUserPreferences(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) {\n this.settingsLoaded = true;\n return;\n }\n\n const engine = UserInfoEngine.Instance;\n\n // Find setting from cached user settings\n const setting = engine.UserSettings.find(s => s.Setting === SYSTEM_DIAGNOSTICS_SETTINGS_KEY);\n\n if (setting) {\n this.userSettingEntity = setting;\n if (this.userSettingEntity.Value) {\n const prefs = JSON.parse(this.userSettingEntity.Value) as Partial<SystemDiagnosticsUserPreferences>;\n this.applyUserPreferences(prefs);\n }\n }\n\n this.settingsLoaded = true;\n } catch (error) {\n console.warn('Failed to load user preferences:', error);\n this.settingsLoaded = true;\n }\n }\n\n /**\n * Apply loaded user preferences to component state\n */\n private applyUserPreferences(prefs: Partial<SystemDiagnosticsUserPreferences>): void {\n if (prefs.kpiCardsCollapsed !== undefined) this.kpiCardsCollapsed = prefs.kpiCardsCollapsed;\n if (prefs.activeSection !== undefined) this.activeSection = prefs.activeSection;\n if (prefs.perfTab !== undefined) this.perfTab = prefs.perfTab;\n if (prefs.telemetrySource !== undefined) this.telemetrySource = prefs.telemetrySource;\n if (prefs.categoryFilter !== undefined) this.categoryFilter = prefs.categoryFilter;\n if (prefs.chartZoomLevel !== undefined) this.chartZoomLevel = prefs.chartZoomLevel;\n if (prefs.chartGapCompression !== undefined) this.chartGapCompression = prefs.chartGapCompression;\n if (prefs.autoRefresh !== undefined) this.autoRefresh = prefs.autoRefresh;\n this.cdr.markForCheck();\n }\n\n /**\n * Get current preferences as an object\n */\n private getCurrentPreferences(): SystemDiagnosticsUserPreferences {\n return {\n kpiCardsCollapsed: this.kpiCardsCollapsed,\n activeSection: this.activeSection,\n perfTab: this.perfTab,\n telemetrySource: this.telemetrySource,\n categoryFilter: this.categoryFilter,\n chartZoomLevel: this.chartZoomLevel,\n chartGapCompression: this.chartGapCompression,\n autoRefresh: this.autoRefresh\n };\n }\n\n /**\n * Debounced save of user preferences (500ms delay)\n * Also updates query params for deep linking\n */\n private saveUserPreferencesDebounced(): void {\n if (!this.settingsLoaded) return; // Don't save until we've loaded\n\n // Update query params immediately for deep linking\n this.updateQueryParams();\n\n if (this.saveSettingsTimeout) {\n clearTimeout(this.saveSettingsTimeout);\n }\n\n this.saveSettingsTimeout = setTimeout(() => {\n this.saveUserPreferences();\n }, 500);\n }\n\n /**\n * Save user preferences to MJ: User Settings entity using UserInfoEngine for cached lookup\n */\n private async saveUserPreferences(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n // Find existing setting from cached user settings if not already loaded\n if (!this.userSettingEntity) {\n const engine = UserInfoEngine.Instance;\n const setting = engine.UserSettings.find(s => s.Setting === SYSTEM_DIAGNOSTICS_SETTINGS_KEY);\n\n if (setting) {\n this.userSettingEntity = setting;\n } else {\n this.userSettingEntity = await this.metadata.GetEntityObject<MJUserSettingEntity>('MJ: User Settings');\n this.userSettingEntity.UserID = userId;\n this.userSettingEntity.Setting = SYSTEM_DIAGNOSTICS_SETTINGS_KEY;\n }\n }\n\n // Save the preferences as JSON\n this.userSettingEntity.Value = JSON.stringify(this.getCurrentPreferences());\n await this.userSettingEntity.Save();\n } catch (error) {\n console.warn('Failed to save user preferences:', error);\n }\n }\n\n // === BaseResourceComponent Required Methods ===\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'System Diagnostics';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-stethoscope';\n }\n}\n"]}
|