@memberjunction/ng-dashboards 5.3.0 → 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.
Files changed (173) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  2. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  3. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  4. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  5. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  6. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  7. package/dist/AI/components/models/model-management.component.js.map +1 -1
  8. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  10. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  11. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  12. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  14. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  15. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  16. package/dist/AI/index.js.map +1 -1
  17. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  18. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  19. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  20. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  21. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  22. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  23. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  24. package/dist/APIKeys/api-key-list.component.js +2 -2
  25. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  26. package/dist/APIKeys/api-keys-resource.component.js +2 -2
  27. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  28. package/dist/APIKeys/api-scopes-panel.component.js +2 -2
  29. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  30. package/dist/APIKeys/api-usage-panel.component.js +2 -2
  31. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  32. package/dist/APIKeys/index.js.map +1 -1
  33. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  34. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  35. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  36. package/dist/Actions/components/code-management.component.js.map +1 -1
  37. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  38. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  39. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  40. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  41. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  42. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  43. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  44. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  45. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  46. package/dist/Actions/components/explorer/index.js.map +1 -1
  47. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  48. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  49. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  50. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  51. package/dist/Actions/index.js.map +1 -1
  52. package/dist/Actions/services/action-explorer-state.service.js.map +1 -1
  53. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  54. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  55. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  56. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  57. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  58. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  59. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  60. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  61. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  62. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  63. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  64. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  65. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  66. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  67. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  68. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  69. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  70. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  71. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  73. package/dist/ComponentStudio/index.js.map +1 -1
  74. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  75. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  76. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  77. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  78. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  79. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  80. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  81. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  82. package/dist/Credentials/index.js.map +1 -1
  83. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  84. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  85. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  86. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  87. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +25 -3
  88. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  89. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +158 -34
  90. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  91. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  92. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +57 -23
  93. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  94. package/dist/DataExplorer/data-explorer-dashboard.component.js +600 -445
  95. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  96. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  97. package/dist/DataExplorer/index.js.map +1 -1
  98. package/dist/DataExplorer/models/explorer-state.interface.d.ts +25 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  100. package/dist/DataExplorer/models/explorer-state.interface.js +6 -1
  101. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  102. package/dist/DataExplorer/services/explorer-state.service.d.ts +21 -3
  103. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  104. package/dist/DataExplorer/services/explorer-state.service.js +70 -36
  105. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  106. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  107. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  108. package/dist/Home/home-application.js.map +1 -1
  109. package/dist/Home/home-dashboard.component.d.ts +20 -5
  110. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  111. package/dist/Home/home-dashboard.component.js +128 -79
  112. package/dist/Home/home-dashboard.component.js.map +1 -1
  113. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  114. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  115. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  116. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  117. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  118. package/dist/Lists/index.js.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  120. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  121. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  122. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  123. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  124. package/dist/MCP/index.js.map +1 -1
  125. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  126. package/dist/MCP/mcp-filter-panel.component.js.map +1 -1
  127. package/dist/MCP/mcp-resource.component.js.map +1 -1
  128. package/dist/MCP/mcp.module.js.map +1 -1
  129. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  130. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  131. package/dist/Scheduling/components/index.js.map +1 -1
  132. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  133. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  136. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  137. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  138. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  139. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  140. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  141. package/dist/SystemDiagnostics/index.js.map +1 -1
  142. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  143. package/dist/SystemDiagnostics/system-diagnostics.component.js +3 -3
  144. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  145. package/dist/Testing/components/index.js.map +1 -1
  146. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  147. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  148. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  149. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  150. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  151. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  152. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  153. package/dist/Testing/components/testing-review.component.js.map +1 -1
  154. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  155. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  156. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  157. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  158. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  159. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  160. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  161. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  162. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  163. package/dist/VersionHistory/components/index.js.map +1 -1
  164. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  165. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  166. package/dist/VersionHistory/index.js.map +1 -1
  167. package/dist/__tests__/dashboards.test.js.map +1 -1
  168. package/dist/module.js.map +1 -1
  169. package/dist/public-api.js.map +1 -1
  170. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  171. package/dist/shared/pipes/index.js.map +1 -1
  172. package/dist/shared/shared-pipes.module.js.map +1 -1
  173. package/package.json +38 -38
@@ -1 +1 @@
1
- {"version":3,"file":"time-series-chart.component.js","sourceRoot":"","sources":["../../../../src/AI/components/charts/time-series-chart.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time-series-chart.component.js","sourceRoot":"","sources":["../../../../src/AI/components/charts/time-series-chart.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit, OnDestroy, AfterViewInit, ViewChild, ElementRef, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport * as d3 from 'd3';\nimport { TrendData } from '../../services/ai-instrumentation.service';\n\nexport interface TimeSeriesConfig {\n width?: number;\n height?: number;\n margin?: { top: number; right: number; bottom: number; left: number };\n showGrid?: boolean;\n showTooltip?: boolean;\n animationDuration?: number;\n colors?: string[];\n useDualAxis?: boolean;\n}\n\nexport interface DataPointClickEvent {\n data: TrendData;\n metric: string;\n event: MouseEvent;\n}\n\n@Component({\n standalone: false,\n selector: 'app-time-series-chart',\n template: `\n <div class=\"time-series-chart\">\n @if (title) {\n <div class=\"chart-header\">\n <h4 class=\"chart-title\">{{ title }}</h4>\n @if (showLegend) {\n <div class=\"chart-legend\">\n @for (metric of visibleMetrics; track metric) {\n <div \n class=\"legend-item\"\n (click)=\"toggleMetric(metric)\"\n [class.legend-item--disabled]=\"!isMetricVisible(metric)\"\n >\n <div \n class=\"legend-color\"\n [style.background-color]=\"getMetricColor(metric)\"\n ></div>\n <span class=\"legend-label\">{{ getMetricLabel(metric) }}</span>\n </div>\n }\n </div>\n }\n </div>\n }\n \n <div class=\"chart-container\">\n <svg #chartSvg></svg>\n <div class=\"chart-tooltip\" #tooltip style=\"display: none;\"></div>\n </div>\n </div>\n `,\n styles: [`\n .time-series-chart {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n padding: 12px;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden; /* Ensure content doesn't overflow */\n }\n\n .chart-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n flex-wrap: wrap;\n gap: 12px;\n flex-shrink: 0; /* Prevent header from being squeezed */\n }\n\n .chart-title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .chart-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n }\n\n .legend-item {\n display: flex;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n transition: opacity 0.2s ease;\n font-size: 11px;\n }\n\n .legend-item--disabled {\n opacity: 0.4;\n }\n\n .legend-color {\n width: 12px;\n height: 12px;\n border-radius: 2px;\n }\n\n .legend-label {\n color: #666;\n font-weight: 500;\n }\n\n .chart-container {\n flex: 1;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important: allows flex child to shrink below content size */\n }\n\n .chart-container svg {\n width: 100%;\n height: 100%;\n }\n\n .chart-tooltip {\n position: absolute;\n background: rgba(0, 0, 0, 0.8);\n color: white;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n pointer-events: none;\n z-index: 1000;\n max-width: 200px;\n }\n\n\n /* Chart styles */\n :host ::ng-deep .chart-line {\n fill: none;\n stroke-width: 2;\n }\n\n :host ::ng-deep .chart-area {\n fill-opacity: 0.1;\n }\n\n :host ::ng-deep .chart-dot {\n transition: r 0.1s ease;\n }\n\n :host ::ng-deep .chart-dot:hover {\n filter: drop-shadow(0 0 4px rgba(0,0,0,0.3));\n }\n\n :host ::ng-deep .grid-line {\n stroke: #f0f0f0;\n stroke-width: 1;\n }\n\n :host ::ng-deep .axis {\n font-size: 11px;\n color: #666;\n }\n\n :host ::ng-deep .axis path {\n stroke: #ddd;\n }\n\n :host ::ng-deep .axis .tick line {\n stroke: #ddd;\n }\n\n :host ::ng-deep .axis-y-left {\n color: #2196f3;\n }\n\n :host ::ng-deep .axis-y-right {\n color: #4caf50;\n }\n\n :host ::ng-deep .axis-label {\n font-weight: 500;\n }\n\n @media (max-width: 768px) {\n .chart-header {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .chart-legend {\n width: 100%;\n justify-content: flex-start;\n }\n \n .chart-controls {\n flex-wrap: wrap;\n }\n }\n `]\n})\nexport class TimeSeriesChartComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() data: TrendData[] = [];\n @Input() title?: string;\n @Input() config: TimeSeriesConfig = {};\n @Input() showLegend = true;\n @Input() showControls = true;\n \n @Output() dataPointClick: EventEmitter<DataPointClickEvent> = new EventEmitter<DataPointClickEvent>();\n @Output() timeRangeChange = new EventEmitter<string>();\n\n @ViewChild('chartSvg', { static: true }) chartSvg!: ElementRef<SVGElement>;\n @ViewChild('tooltip', { static: true }) tooltip!: ElementRef<HTMLDivElement>;\n\n private svg!: d3.Selection<SVGElement, unknown, null, undefined>;\n private width = 0;\n private height = 0;\n private margin = { top: 10, right: 70, bottom: 50, left: 70 }; // Increased bottom margin for x-axis labels\n\n // Chart configuration\n private defaultColors = ['#2196f3', '#4caf50', '#ff9800', '#f44336', '#9c27b0'];\n \n // Metrics configuration\n visibleMetrics = ['executions', 'cost', 'tokens', 'avgTime', 'errors'];\n private hiddenMetrics = new Set<string>();\n\n\n ngOnInit() {\n this.applyConfig();\n }\n\n ngAfterViewInit() {\n this.initChart();\n this.updateChart();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['data'] && !changes['data'].firstChange) {\n this.updateChart();\n }\n if (changes['config'] && !changes['config'].firstChange) {\n this.applyConfig();\n this.updateChart();\n }\n }\n\n ngOnDestroy() {\n // Cleanup D3 event listeners\n d3.select(window).on('resize.timeseries', null);\n }\n\n private applyConfig() {\n const config = this.config;\n this.margin = { ...this.margin, ...config.margin };\n }\n\n private initChart() {\n this.svg = d3.select(this.chartSvg.nativeElement);\n \n // Set up responsive behavior\n d3.select(window).on('resize.timeseries', () => this.updateChart());\n }\n\n private updateChart() {\n if (!this.data || this.data.length === 0) {\n this.svg.selectAll('*').remove();\n return;\n }\n\n this.calculateDimensions();\n this.svg.selectAll('*').remove();\n this.drawChart();\n }\n\n private calculateDimensions() {\n const container = this.chartSvg.nativeElement.parentElement!;\n const containerWidth = container.clientWidth;\n const containerHeight = container.clientHeight;\n \n // Use config dimensions or fallback to container dimensions\n this.width = (this.config.width || containerWidth) - this.margin.left - this.margin.right;\n this.height = (this.config.height || Math.max(containerHeight, 200)) - this.margin.top - this.margin.bottom;\n \n // Ensure minimum dimensions for usability\n this.width = Math.max(this.width, 200);\n this.height = Math.max(this.height, 150);\n \n this.svg\n .attr('width', this.width + this.margin.left + this.margin.right)\n .attr('height', this.height + this.margin.top + this.margin.bottom);\n }\n\n private drawChart() {\n const g = this.svg.append('g')\n .attr('transform', `translate(${this.margin.left},${this.margin.top})`);\n\n // Create scales\n const xScale = d3.scaleTime()\n .domain(d3.extent(this.data, d => d.timestamp) as [Date, Date])\n .range([0, this.width]);\n\n // Create separate scales for different metrics\n const scales = this.createMetricScales();\n\n // Draw grid\n if (this.config.showGrid !== false) {\n this.drawGrid(g, xScale, scales);\n }\n\n // Draw axes\n this.drawAxes(g, xScale, scales);\n\n // Draw data lines and areas\n this.drawMetrics(g, xScale, scales);\n\n // Draw interactive elements\n this.drawInteractiveElements(g, xScale, scales);\n }\n\n private createMetricScales() {\n const scales: { [key: string]: d3.ScaleLinear<number, number> } = {};\n\n if (this.config.useDualAxis !== false) {\n // Dual axis mode: Left axis (cost, avgTime), Right axis (executions, tokens, errors)\n const leftAxisMetrics = ['cost', 'avgTime'];\n const rightAxisMetrics = ['executions', 'tokens', 'errors'];\n\n // Create left axis scale (cost and time)\n const leftValues = leftAxisMetrics.flatMap(metric =>\n this.data.map(d => {\n const value = this.getMetricValue(d, metric);\n // Normalize avgTime to seconds for better scale comparison with cost\n return metric === 'avgTime' ? (value || 0) / 1000 : (value || 0);\n }).filter((v): v is number => v != null)\n );\n\n if (leftValues.length > 0) {\n const maxLeftValue = Math.max(...leftValues);\n const leftScale = d3.scaleLinear()\n .domain([0, maxLeftValue])\n .range([this.height, 0])\n .nice();\n\n leftAxisMetrics.forEach(metric => scales[metric] = leftScale);\n }\n\n // Create right axis scale (count-based metrics)\n const rightValues = rightAxisMetrics.flatMap(metric =>\n this.data.map(d => this.getMetricValue(d, metric)).filter((v): v is number => v != null)\n );\n\n if (rightValues.length > 0) {\n const maxRightValue = Math.max(...rightValues);\n const rightScale = d3.scaleLinear()\n .domain([0, maxRightValue])\n .range([this.height, 0])\n .nice();\n\n rightAxisMetrics.forEach(metric => scales[metric] = rightScale);\n }\n } else {\n // Single axis mode (original behavior)\n const metricGroups = {\n count: ['executions', 'errors'],\n cost: ['cost'],\n tokens: ['tokens'],\n time: ['avgTime']\n };\n\n Object.entries(metricGroups).forEach(([groupName, metrics]) => {\n const allValues = metrics.flatMap(metric =>\n this.data.map(d => this.getMetricValue(d, metric)).filter((v): v is number => v != null)\n );\n\n if (allValues.length > 0) {\n const maxValue = Math.max(...allValues);\n const scale = d3.scaleLinear()\n .domain([0, maxValue])\n .range([this.height, 0])\n .nice();\n\n metrics.forEach(metric => scales[metric] = scale);\n }\n });\n }\n\n return scales;\n }\n\n private drawGrid(g: any, xScale: any, scales: any) {\n // Vertical grid lines\n g.selectAll('.grid-line-x')\n .data(xScale.ticks(6))\n .enter().append('line')\n .attr('class', 'grid-line grid-line-x')\n .attr('x1', (d: Date) => xScale(d))\n .attr('x2', (d: Date) => xScale(d))\n .attr('y1', 0)\n .attr('y2', this.height);\n\n // Horizontal grid lines (use first scale)\n const firstScale = Object.values(scales)[0] as d3.ScaleLinear<number, number>;\n if (firstScale) {\n g.selectAll('.grid-line-y')\n .data(firstScale.ticks(5))\n .enter().append('line')\n .attr('class', 'grid-line grid-line-y')\n .attr('x1', 0)\n .attr('x2', this.width)\n .attr('y1', (d: number) => firstScale(d))\n .attr('y2', (d: number) => firstScale(d));\n }\n }\n\n private drawAxes(g: any, xScale: any, scales: any) {\n // X axis\n g.append('g')\n .attr('class', 'axis axis-x')\n .attr('transform', `translate(0,${this.height})`)\n .call(d3.axisBottom(xScale)\n .ticks(this.getOptimalTickCount())\n .tickFormat(this.getTimeFormat() as any));\n\n if (this.config.useDualAxis !== false) {\n // Dual Y-axis mode\n const leftAxisMetrics = ['cost', 'avgTime'];\n const rightAxisMetrics = ['executions', 'tokens', 'errors'];\n\n // Left Y axis (cost, time)\n const leftScale = scales[leftAxisMetrics[0]];\n if (leftScale) {\n g.append('g')\n .attr('class', 'axis axis-y axis-y-left')\n .call(d3.axisLeft(leftScale)\n .ticks(5)\n .tickFormat((d) => {\n const value = d as number;\n // Format based on value range - if > 1, likely cost, else time in seconds\n return value > 1 ? `$${value.toFixed(2)}` : `${value.toFixed(1)}s`;\n }));\n\n // Left axis label\n g.append('text')\n .attr('class', 'axis-label axis-label-left')\n .attr('transform', 'rotate(-90)')\n .attr('y', 0 - this.margin.left + 20)\n .attr('x', 0 - (this.height / 2))\n .style('text-anchor', 'middle')\n .style('font-size', '12px')\n .style('fill', '#666')\n .text('Cost ($) / Time (s)');\n }\n\n // Right Y axis (counts)\n const rightScale = scales[rightAxisMetrics[0]];\n if (rightScale) {\n g.append('g')\n .attr('class', 'axis axis-y axis-y-right')\n .attr('transform', `translate(${this.width},0)`)\n .call(d3.axisRight(rightScale)\n .ticks(5)\n .tickFormat((d) => {\n const value = d as number;\n // Format large numbers with K/M suffixes\n if (value >= 1000000) return `${(value / 1000000).toFixed(1)}M`;\n if (value >= 1000) return `${(value / 1000).toFixed(1)}K`;\n return value.toString();\n }));\n\n // Right axis label\n g.append('text')\n .attr('class', 'axis-label axis-label-right')\n .attr('transform', 'rotate(90)')\n .attr('y', 0 - this.width - this.margin.right + 20)\n .attr('x', this.height / 2)\n .style('text-anchor', 'middle')\n .style('font-size', '12px')\n .style('fill', '#666')\n .text('Count (Executions / Tokens)');\n }\n } else {\n // Single Y axis (original behavior)\n const firstScale = Object.values(scales)[0] as d3.ScaleLinear<number, number>;\n if (firstScale) {\n g.append('g')\n .attr('class', 'axis axis-y')\n .call(d3.axisLeft(firstScale).ticks(5));\n }\n }\n }\n\n private drawMetrics(g: any, xScale: any, scales: any) {\n // Create a group for lines and areas\n const linesGroup = g.append('g').attr('class', 'lines-group');\n \n // First draw all lines and areas\n this.visibleMetrics.forEach((metric) => {\n if (this.hiddenMetrics.has(metric) || !scales[metric]) return;\n\n const color = this.getMetricColor(metric);\n const scale = scales[metric];\n\n // Create line generator with proper value transformation\n const line = d3.line<TrendData>()\n .x(d => xScale(d.timestamp))\n .y(d => {\n const value = this.getMetricValue(d, metric) || 0;\n // Normalize avgTime to seconds if using dual axis\n const transformedValue = (this.config.useDualAxis !== false && metric === 'avgTime') \n ? value / 1000 : value;\n return scale(transformedValue);\n })\n .curve(d3.curveMonotoneX);\n\n // Create area generator with proper value transformation\n const area = d3.area<TrendData>()\n .x(d => xScale(d.timestamp))\n .y0(this.height)\n .y1(d => {\n const value = this.getMetricValue(d, metric) || 0;\n // Normalize avgTime to seconds if using dual axis\n const transformedValue = (this.config.useDualAxis !== false && metric === 'avgTime') \n ? value / 1000 : value;\n return scale(transformedValue);\n })\n .curve(d3.curveMonotoneX);\n\n // Draw area (optional)\n if (metric === 'executions' || metric === 'cost') {\n linesGroup.append('path')\n .datum(this.data)\n .attr('class', `chart-area chart-area--${metric}`)\n .attr('d', area)\n .attr('fill', color);\n }\n\n // Draw line\n linesGroup.append('path')\n .datum(this.data)\n .attr('class', `chart-line chart-line--${metric}`)\n .attr('d', line)\n .attr('stroke', color);\n });\n \n // Then create dots group on top of everything\n const dotsGroup = g.append('g').attr('class', 'dots-group').style('pointer-events', 'all');\n \n // Draw all dots in a separate pass so they're all on top\n this.visibleMetrics.forEach((metric) => {\n if (this.hiddenMetrics.has(metric) || !scales[metric]) return;\n \n const color = this.getMetricColor(metric);\n const scale = scales[metric];\n \n // Draw dots with click events - only for non-zero values\n const dotsData = this.data.filter(d => {\n const value = this.getMetricValue(d, metric);\n return value != null && value > 0;\n });\n \n const dots = dotsGroup.selectAll(`.chart-dot--${metric}`)\n .data(dotsData)\n .enter().append('circle')\n .attr('class', `chart-dot chart-dot--${metric}`)\n .attr('cx', (d: TrendData) => xScale(d.timestamp))\n .attr('cy', (d: TrendData) => {\n const value = this.getMetricValue(d, metric) || 0;\n // Normalize avgTime to seconds if using dual axis\n const transformedValue = (this.config.useDualAxis !== false && metric === 'avgTime') \n ? value / 1000 : value;\n return scale(transformedValue);\n })\n .attr('r', 4) // Slightly larger for easier clicking\n .attr('stroke', color)\n .attr('stroke-width', 2)\n .attr('fill', 'white')\n .style('cursor', 'pointer')\n .style('pointer-events', 'all') // Ensure clicks are captured\n .style('z-index', 1000) // Ensure dots are on top\n .attr('data-metric', metric) // Add data attribute for debugging\n .on('mouseenter', (event: MouseEvent, d: TrendData) => {\n // Bring to front on hover\n const dot = d3.select(event.currentTarget as SVGCircleElement);\n dot.raise();\n dot.attr('r', 6);\n // Show tooltip\n if (this.config.showTooltip !== false) {\n this.showTooltip(event, d);\n }\n })\n .on('mouseleave', (event: MouseEvent, d: TrendData) => {\n const dot = d3.select(event.currentTarget as SVGCircleElement);\n dot.attr('r', 4);\n // Hide tooltip\n if (this.config.showTooltip !== false) {\n this.hideTooltip();\n }\n })\n .on('click', (event: MouseEvent, d: TrendData) => {\n event.stopPropagation();\n event.preventDefault();\n // Only emit if there's actual data\n const value = this.getMetricValue(d, metric);\n if (value != null && value > 0) {\n this.dataPointClick.emit({ data: d, metric, event });\n }\n });\n });\n }\n\n private drawInteractiveElements(g: any, xScale: any, scales: any) {\n if (this.config.showTooltip === false) return;\n\n // Note: We don't need an overlay for tooltips as the dots themselves handle interactions\n // The overlay was preventing click events on dots\n }\n\n private findClosestDataPoint(targetDate: Date): TrendData | null {\n if (!this.data.length) return null;\n\n return this.data.reduce((closest, current) => {\n const currentDiff = Math.abs(current.timestamp.getTime() - targetDate.getTime());\n const closestDiff = Math.abs(closest.timestamp.getTime() - targetDate.getTime());\n return currentDiff < closestDiff ? current : closest;\n });\n }\n\n private showTooltip(event: MouseEvent, data: TrendData) {\n const tooltip = d3.select(this.tooltip.nativeElement);\n \n const content = `\n <div><strong>${d3.timeFormat('%H:%M')(data.timestamp)}</strong></div>\n <div>Executions: ${data.executions.toLocaleString()}</div>\n <div>Cost: $${data.cost.toFixed(4)}</div>\n <div>Tokens: ${data.tokens.toLocaleString()}</div>\n <div>Avg Time: ${(data.avgTime / 1000).toFixed(1)}s</div>\n <div>Errors: ${data.errors}</div>\n <div style=\"margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.3); font-size: 11px; color: rgba(255,255,255,0.8);\">\n Click data points to drill down\n </div>\n `;\n\n tooltip\n .style('display', 'block')\n .html(content)\n .style('left', (event.offsetX + 10) + 'px')\n .style('top', (event.offsetY - 10) + 'px');\n }\n\n private hideTooltip() {\n d3.select(this.tooltip.nativeElement)\n .style('display', 'none');\n }\n\n private getMetricValue(data: TrendData, metric: string): number | null {\n switch (metric) {\n case 'executions': return data.executions;\n case 'cost': return data.cost;\n case 'tokens': return data.tokens;\n case 'avgTime': return data.avgTime;\n case 'errors': return data.errors;\n default: return null;\n }\n }\n\n getMetricColor(metric: string): string {\n const colors = this.config.colors || this.defaultColors;\n const index = this.visibleMetrics.indexOf(metric);\n return colors[index % colors.length];\n }\n\n getMetricLabel(metric: string): string {\n const labels: { [key: string]: string } = {\n executions: 'Executions',\n cost: 'Cost ($)',\n tokens: 'Tokens',\n avgTime: 'Avg Time (ms)',\n errors: 'Errors'\n };\n return labels[metric] || metric;\n }\n\n isMetricVisible(metric: string): boolean {\n return !this.hiddenMetrics.has(metric);\n }\n\n toggleMetric(metric: string): void {\n if (this.hiddenMetrics.has(metric)) {\n this.hiddenMetrics.delete(metric);\n } else {\n this.hiddenMetrics.add(metric);\n }\n this.updateChart();\n }\n \n private getTimeFormat(): (date: Date) => string {\n if (this.data.length < 2) {\n return d3.timeFormat('%H:%M');\n }\n \n // Calculate the time span of the data\n const firstDate = this.data[0].timestamp;\n const lastDate = this.data[this.data.length - 1].timestamp;\n const timeDiff = lastDate.getTime() - firstDate.getTime();\n const hours = timeDiff / (1000 * 60 * 60);\n const days = hours / 24;\n \n // Choose format based on time span\n if (hours <= 24) {\n // For up to 24 hours, show hours and minutes\n return d3.timeFormat('%H:%M');\n } else if (days <= 7) {\n // For up to 7 days, show day and time\n return d3.timeFormat('%a %H:%M'); // e.g., \"Mon 14:00\"\n } else if (days <= 30) {\n // For up to 30 days, show month/day\n return d3.timeFormat('%m/%d'); // e.g., \"06/13\"\n } else {\n // For longer periods, show month/day/year\n return d3.timeFormat('%m/%d/%y'); // e.g., \"06/13/25\"\n }\n }\n \n private getOptimalTickCount(): number {\n if (this.data.length < 2) {\n return 6;\n }\n \n // Calculate the time span of the data\n const firstDate = this.data[0].timestamp;\n const lastDate = this.data[this.data.length - 1].timestamp;\n const timeDiff = lastDate.getTime() - firstDate.getTime();\n const hours = timeDiff / (1000 * 60 * 60);\n const days = hours / 24;\n \n // Adjust tick count based on time span and chart width\n const pixelsPerTick = 100; // Minimum pixels between ticks\n const maxTicks = Math.floor(this.width / pixelsPerTick);\n \n if (days <= 1) {\n return Math.min(8, maxTicks); // Show more ticks for hourly data\n } else if (days <= 7) {\n return Math.min(7, maxTicks); // One per day for weekly view\n } else if (days <= 30) {\n return Math.min(6, maxTicks); // Fewer ticks for monthly view\n } else {\n return Math.min(5, maxTicks); // Even fewer for longer periods\n }\n }\n\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"execution-monitoring.component.js","sourceRoot":"","sources":["../../../src/AI/components/execution-monitoring.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-monitoring.component.js","sourceRoot":"","sources":["../../../src/AI/components/execution-monitoring.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil, debounceTime } from 'rxjs/operators';\nimport {\n AIInstrumentationService,\n DashboardKPIs,\n TrendData,\n LiveExecution,\n ChartData,\n ExecutionDetails\n} from '../services/ai-instrumentation.service';\nimport { DataPointClickEvent } from './charts/time-series-chart.component';\nimport { KPICardData } from './widgets/kpi-card.component';\nimport { HeatmapData } from './charts/performance-heatmap.component';\nimport { RunView, CompositeKey } from '@memberjunction/core';\nimport { ResourceData } from \"@memberjunction/core-entities\";\nimport { MJAIPromptRunEntityExtended, MJAIAgentRunEntityExtended, MJAIModelEntityExtended } from '@memberjunction/ai-core-plus';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\n\nexport interface DrillDownTab {\n id: string;\n title: string;\n type: 'chart' | 'executions' | 'model-detail';\n data?: any;\n timestamp?: Date;\n metric?: string;\n closeable: boolean;\n}\n\nexport interface ExecutionRecord {\n id: string;\n type: 'prompt' | 'agent';\n name: string;\n model?: string;\n status: string;\n startTime: Date;\n endTime?: Date;\n duration: number;\n cost: number;\n tokens: number;\n errorMessage?: string;\n}\n\nexport interface ExecutionMonitoringState {\n selectedTimeRange: string;\n refreshInterval: number;\n panelStates: {\n cost: boolean;\n efficiency: boolean;\n executions: boolean;\n };\n drillDownTabs: Array<{\n id: string;\n title: string;\n type: string;\n timestamp?: string;\n metric?: string;\n }>;\n activeTabId: string;\n splitterSizes?: number[];\n}\n/**\n * AI Monitor Resource - displays AI execution monitoring and analytics\n * Extends BaseResourceComponent to work with the resource type system\n */\n@RegisterClass(BaseResourceComponent, 'AIMonitorResource')\n@Component({\n standalone: false,\n selector: 'app-execution-monitoring',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"execution-monitoring\" [class.loading]=\"isLoading\">\n <!-- Loading Overlay -->\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading dashboard data...\" size=\"large\"></mj-loading>\n </div>\n }\n <!-- Header Controls -->\n <div class=\"monitoring-header\">\n <h2 class=\"monitoring-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n AI Execution Monitoring\n </h2>\n \n <div class=\"monitoring-controls\">\n <div class=\"time-range-control\">\n <label>Time Range:</label>\n <select [(ngModel)]=\"selectedTimeRange\" (change)=\"onTimeRangeChange()\" [disabled]=\"isLoading\">\n <option value=\"1h\">Last Hour</option>\n <option value=\"6h\">Last 6 Hours</option>\n <option value=\"24h\">Last 24 Hours</option>\n <option value=\"7d\">Last 7 Days</option>\n <option value=\"30d\">Last 30 Days</option>\n </select>\n </div>\n \n <button class=\"refresh-btn\" (click)=\"refreshData()\" [disabled]=\"isLoading\">\n <i class=\"fa-solid fa-refresh\" [class.spinning]=\"isLoading\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n <!-- KPI Dashboard -->\n <div class=\"kpi-dashboard\">\n <div class=\"kpi-grid\">\n @for (kpi of kpiCards$ | async; track kpi.title) {\n <app-kpi-card \n [data]=\"kpi\"\n (click)=\"onKpiClick(kpi)\"\n [class.clickable]=\"isKpiClickable(kpi)\"\n ></app-kpi-card>\n }\n </div>\n </div>\n\n <!-- Main Dashboard with Kendo Splitter -->\n <kendo-splitter class=\"dashboard-splitter\" orientation=\"vertical\" (layoutChange)=\"onSplitterLayoutChange($event)\">\n <!-- Top Row: System Health and Trends Chart -->\n <kendo-splitter-pane size=\"45%\" [resizable]=\"true\" [collapsible]=\"false\">\n <kendo-splitter orientation=\"horizontal\" (layoutChange)=\"onSplitterLayoutChange($event)\">\n <!-- System Health -->\n <kendo-splitter-pane size=\"30%\" [resizable]=\"true\" [collapsible]=\"true\" [collapsed]=\"false\">\n <div class=\"dashboard-section system-status\">\n <div class=\"status-container\">\n <div class=\"chart-header\">\n <h4 class=\"chart-title\">\n <i class=\"fa-solid fa-heartbeat\"></i>\n System Health\n </h4>\n </div>\n @if (kpis$ | async; as kpis) {\n <div class=\"status-metrics\">\n <div class=\"status-metric\">\n <div class=\"status-icon status-icon--success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <div class=\"status-info\">\n <div class=\"status-label\">Success Rate</div>\n <div class=\"status-value\">{{ (kpis.successRate * 100).toFixed(1) }}%</div>\n <div class=\"status-subtitle\">Last {{ selectedTimeRange }}</div>\n </div>\n </div>\n \n <div class=\"status-metric\">\n <div class=\"status-icon status-icon--warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n </div>\n <div class=\"status-info\">\n <div class=\"status-label\">Error Rate</div>\n <div class=\"status-value\">{{ (kpis.errorRate * 100).toFixed(1) }}%</div>\n <div class=\"status-subtitle\">{{ kpis.totalExecutions }} total executions</div>\n </div>\n </div>\n \n <div class=\"status-metric\">\n <div class=\"status-icon status-icon--info\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"status-info\">\n <div class=\"status-label\">Avg Response Time</div>\n <div class=\"status-value\">{{ (kpis.avgExecutionTime / 1000).toFixed(2) }}s</div>\n <div class=\"status-subtitle\">Across all models</div>\n </div>\n </div>\n \n <div class=\"status-metric\">\n <div class=\"status-icon status-icon--primary\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"status-info\">\n <div class=\"status-label\">Active Executions</div>\n <div class=\"status-value\">{{ kpis.activeExecutions }}</div>\n <div class=\"status-subtitle\">Currently running</div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </kendo-splitter-pane>\n \n <!-- Drill-down Tab Container -->\n <kendo-splitter-pane [resizable]=\"true\" [collapsible]=\"false\">\n <div class=\"dashboard-section drill-down-container\">\n <div class=\"drill-down-tabs\">\n <div class=\"tab-header\">\n @for (tab of drillDownTabs; track tab.id) {\n <div \n class=\"tab-item\"\n [class.active]=\"activeTabId === tab.id\"\n (click)=\"selectTab(tab.id)\"\n >\n <span class=\"tab-title\">{{ tab.title }}</span>\n @if (tab.closeable) {\n <button \n class=\"tab-close\"\n (click)=\"closeTab($event, tab.id)\"\n title=\"Close tab\"\n >\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n }\n </div>\n \n <div class=\"tab-content\">\n @if (activeTab?.type === 'chart') {\n <div class=\"tab-pane trends-chart\">\n <app-time-series-chart\n [data]=\"(trends$ | async) ?? []\"\n title=\"Execution Trends\"\n [config]=\"timeSeriesConfig\"\n (dataPointClick)=\"onDataPointClick($event)\"\n (timeRangeChange)=\"onChartTimeRangeChange($event)\"\n ></app-time-series-chart>\n </div>\n }\n \n @if (activeTab?.type === 'executions') {\n <div class=\"tab-pane executions-drill-down\">\n <div class=\"drill-down-header\">\n <h4>\n <i class=\"fa-solid fa-list\"></i>\n {{ activeTab?.title }}\n </h4>\n <div class=\"drill-down-meta\">\n @if (activeTab?.timestamp) {\n <span class=\"timestamp\">{{ getFormattedTimestamp(activeTab) }}</span>\n }\n @if (activeTab?.metric) {\n <span class=\"metric-badge\">{{ getFormattedMetricLabel(activeTab) }}</span>\n }\n </div>\n </div>\n \n @if (loadingDrillDown) {\n <div class=\"loading-spinner\">\n <mj-loading text=\"Loading execution details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (activeTab?.data?.length > 0) {\n <div class=\"executions-table\">\n <div class=\"table-header\">\n <div class=\"header-cell\">Type</div>\n <div class=\"header-cell\">Name</div>\n <div class=\"header-cell\">Model</div>\n <div class=\"header-cell\">Status</div>\n <div class=\"header-cell\">Duration</div>\n <div class=\"header-cell\">Cost</div>\n <div class=\"header-cell\">Tokens</div>\n <div class=\"header-cell\">Time</div>\n </div>\n @for (execution of activeTab?.data; track execution.id) {\n <div \n class=\"table-row\"\n (click)=\"viewExecutionDetail(execution)\"\n >\n <div class=\"table-cell\">\n <span class=\"type-badge\" [class]=\"'type-badge--' + execution.type\">\n {{ execution.type }}\n </span>\n </div>\n <div class=\"table-cell\">{{ execution.name }}</div>\n <div class=\"table-cell\">{{ execution.model || 'N/A' }}</div>\n <div class=\"table-cell\">\n <span class=\"status-badge\" [class]=\"'status-badge--' + execution.status\">\n {{ execution.status }}\n </span>\n </div>\n <div class=\"table-cell\">{{ formatDuration(execution.duration) }}</div>\n <div class=\"table-cell\">{{ formatCurrency(execution.cost) }}</div>\n <div class=\"table-cell\">{{ execution.tokens.toLocaleString() }}</div>\n <div class=\"table-cell\">{{ formatTime(execution.startTime) }}</div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-data\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No executions found for this time period</p>\n </div>\n }\n </div>\n }\n \n @if (activeTab?.type === 'model-detail') {\n <div class=\"tab-pane model-detail\">\n <div class=\"drill-down-header\">\n <h4>\n <i class=\"fa-solid fa-microchip\"></i>\n Model Details: {{ activeTab?.data?.name }}\n </h4>\n </div>\n \n @if (loadingDrillDown) {\n <div class=\"loading-spinner\">\n <mj-loading text=\"Loading model details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (activeTab?.data) {\n <div class=\"model-details\">\n <div class=\"model-info-grid\">\n <div class=\"info-item\">\n <label>Model Name:</label>\n <span>{{ activeTab?.data?.name }}</span>\n </div>\n <div class=\"info-item\">\n <label>Vendor:</label>\n <span>{{ activeTab?.data?.vendor }}</span>\n </div>\n <div class=\"info-item\">\n <label>API Name:</label>\n <span>{{ activeTab?.data?.apiName }}</span>\n </div>\n <div class=\"info-item\">\n <label>Input Cost:</label>\n <span>\\${{ activeTab?.data?.inputTokenCost?.toFixed(6) || '0' }} per token</span>\n </div>\n <div class=\"info-item\">\n <label>Output Cost:</label>\n <span>\\${{ activeTab?.data?.outputTokenCost?.toFixed(6) || '0' }} per token</span>\n </div>\n <div class=\"info-item\">\n <label>Active:</label>\n <span class=\"status-indicator\" [class.active]=\"activeTab?.data?.isActive\">\n {{ activeTab?.data?.isActive ? 'Yes' : 'No' }}\n </span>\n </div>\n </div>\n \n @if (activeTab?.data?.description) {\n <div class=\"model-description\">\n <h5>Description</h5>\n <p>{{ activeTab?.data?.description }}</p>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n </kendo-splitter-pane>\n\n <!-- Bottom Row: Analysis Panels with Expansion Layout -->\n <kendo-splitter-pane [resizable]=\"true\" [collapsible]=\"false\">\n <kendo-splitter orientation=\"horizontal\" (layoutChange)=\"onSplitterLayoutChange($event)\">\n <!-- Left: Performance Heatmap -->\n <kendo-splitter-pane size=\"50%\" [resizable]=\"true\" [collapsible]=\"false\">\n <div class=\"dashboard-section performance-matrix\">\n <app-performance-heatmap\n [data]=\"(performanceMatrix$ | async) ?? []\"\n title=\"Agent vs Model Performance\"\n [config]=\"heatmapConfig\"\n ></app-performance-heatmap>\n </div>\n </kendo-splitter-pane>\n\n <!-- Right: Analysis Panels with Collapsible Sections -->\n <kendo-splitter-pane [resizable]=\"true\" [collapsible]=\"false\">\n <div class=\"dashboard-section analysis-panels\">\n \n <!-- Cost Analysis Panel -->\n <div class=\"analysis-panel\">\n <div class=\"panel-header\" (click)=\"togglePanel('cost')\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n Cost Analysis\n </span>\n <i class=\"fa-solid panel-toggle-icon\" [class.fa-chevron-down]=\"!panelStates.cost\" [class.fa-chevron-up]=\"panelStates.cost\"></i>\n </div>\n @if (panelStates.cost) {\n <div class=\"panel-content\">\n @if (costData$ | async; as costData) {\n <div class=\"cost-bars\">\n @for (item of costData.slice(0, 8); track item.model) {\n <div class=\"cost-bar-item\">\n <div class=\"cost-bar-info\">\n <span class=\"model-name\">{{ item.model }}</span>\n <span class=\"cost-value\">{{ formatCurrency(item.cost) }}</span>\n </div>\n <div class=\"cost-bar-container\">\n <div \n class=\"cost-bar\"\n [style.width.%]=\"getCostBarWidth(item.cost, getMaxCost(costData))\"\n ></div>\n </div>\n <div class=\"token-info\">\n {{ formatTokens(item.tokens) }} tokens\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Token Efficiency Panel -->\n <div class=\"analysis-panel\">\n <div class=\"panel-header\" (click)=\"togglePanel('efficiency')\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-pie\"></i>\n Token Efficiency\n </span>\n <i class=\"fa-solid panel-toggle-icon\" [class.fa-chevron-down]=\"!panelStates.efficiency\" [class.fa-chevron-up]=\"panelStates.efficiency\"></i>\n </div>\n @if (panelStates.efficiency) {\n <div class=\"panel-content\">\n @if (tokenEfficiency$ | async; as efficiencyData) {\n <div class=\"efficiency-items\">\n @for (item of efficiencyData.slice(0, 6); track item.model) {\n <div class=\"efficiency-item\">\n <div class=\"efficiency-header\">\n <span class=\"model-name\">{{ item.model }}</span>\n <span class=\"efficiency-ratio\">\n {{ getTokenRatio(item.inputTokens, item.outputTokens) }}\n </span>\n </div>\n <div class=\"token-breakdown\">\n <div class=\"token-bar\">\n <div \n class=\"token-segment token-segment--input\"\n [style.width.%]=\"getTokenPercentage(item.inputTokens, item.inputTokens + item.outputTokens)\"\n ></div>\n <div \n class=\"token-segment token-segment--output\"\n [style.width.%]=\"getTokenPercentage(item.outputTokens, item.inputTokens + item.outputTokens)\"\n ></div>\n </div>\n <div class=\"token-labels\">\n <span class=\"input-label\">Input: {{ formatTokens(item.inputTokens) }}</span>\n <span class=\"output-label\">Output: {{ formatTokens(item.outputTokens) }}</span>\n </div>\n </div>\n <div class=\"cost-per-token\">\n {{ formatCostPerToken(item.cost, item.inputTokens + item.outputTokens) }}\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Live Executions Panel -->\n <div class=\"analysis-panel\">\n <div class=\"panel-header\" (click)=\"togglePanel('executions')\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Live Executions\n </span>\n <i class=\"fa-solid panel-toggle-icon\" [class.fa-chevron-down]=\"!panelStates.executions\" [class.fa-chevron-up]=\"panelStates.executions\"></i>\n </div>\n @if (panelStates.executions) {\n <div class=\"panel-content live-executions-panel\">\n <app-live-execution-widget\n [executions]=\"(liveExecutions$ | async) ?? []\"\n (executionClick)=\"onExecutionClick($event)\"\n ></app-live-execution-widget>\n </div>\n }\n </div>\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n </kendo-splitter-pane>\n </kendo-splitter>\n\n <!-- Execution Details Modal -->\n @if (selectedExecution) {\n <div class=\"execution-modal\" (click)=\"closeExecutionModal()\">\n <div class=\"execution-modal-content\" (click)=\"$event.stopPropagation()\">\n <div class=\"execution-modal-header\">\n <h3>Execution Details</h3>\n <div class=\"modal-header-actions\">\n <button class=\"open-record-btn\" (click)=\"openFullRecord()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open\n </button>\n <button class=\"close-btn\" (click)=\"closeExecutionModal()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"execution-modal-body\">\n @if (executionDetails) {\n <div class=\"execution-details\">\n <div class=\"detail-section\">\n <h4>Basic Information</h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <label>Type:</label>\n <span>{{ executionDetails.type | titlecase }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Name:</label>\n <span>{{ executionDetails.name }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Status:</label>\n <span class=\"status-badge\" [class]=\"'status-badge--' + executionDetails.status\">\n {{ executionDetails.status | titlecase }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Started:</label>\n <span>{{ executionDetails.startTime | date:'medium' }}</span>\n </div>\n @if (executionDetails.endTime) {\n <div class=\"detail-item\">\n <label>Completed:</label>\n <span>{{ executionDetails.endTime | date:'medium' }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <label>Duration:</label>\n <span>{{ formatDuration(getDuration(executionDetails)) }}</span>\n </div>\n </div>\n </div>\n \n <div class=\"detail-section\">\n <h4>Resource Usage</h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <label>Cost:</label>\n <span>{{ formatCurrency(executionDetails.cost, 6) }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Tokens:</label>\n <span>{{ executionDetails.tokens.toLocaleString() }}</span>\n </div>\n @if (executionDetails.model) {\n <div class=\"detail-item\">\n <label>Model:</label>\n <span>{{ executionDetails.model }}</span>\n </div>\n }\n </div>\n </div>\n \n @if (executionDetails.errorMessage) {\n <div class=\"detail-section\">\n <h4>Error Information</h4>\n <div class=\"error-message\">{{ executionDetails.errorMessage }}</div>\n </div>\n }\n \n @if (executionDetails.children.length > 0) {\n <div class=\"detail-section\">\n <h4>Child Executions ({{ executionDetails.children.length }})</h4>\n <div class=\"child-executions\">\n @for (child of executionDetails.children; track child.id) {\n <div class=\"child-execution\">\n <div class=\"child-info\">\n <span class=\"child-name\">{{ child.name }}</span>\n <span class=\"child-type\">{{ child.type }}</span>\n <span class=\"child-status\" [class]=\"'status-badge--' + child.status\">\n {{ child.status }}\n </span>\n </div>\n <div class=\"child-metrics\">\n <span>{{ formatCurrency(child.cost) }}</span>\n <span>{{ child.tokens.toLocaleString() }} tokens</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n \n @if (loadingExecutionDetails) {\n <div class=\"loading-details\">\n <mj-loading text=\"Loading execution details...\" size=\"medium\"></mj-loading>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n `,\n styles: [`\n .execution-monitoring {\n padding: 0;\n background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ed 100%);\n width: 100%;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n }\n\n .execution-monitoring.loading {\n overflow: hidden;\n }\n\n /* Loading Overlay */\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.7);\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n }\n\n /* === Dashboard Header - Clean White Style === */\n .monitoring-header {\n background: white;\n padding: 16px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n border-bottom: 1px solid #e0e6ed;\n position: relative;\n z-index: 10;\n }\n\n .monitoring-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: #1e293b;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .monitoring-title i {\n color: #6366f1;\n font-size: 22px;\n }\n\n .monitoring-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .time-range-control {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n }\n\n .time-range-control label {\n color: #64748b;\n font-weight: 500;\n }\n\n .time-range-control select {\n padding: 8px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n font-size: 13px;\n background: #f8fafc;\n color: #1e293b;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .time-range-control select:hover:not(:disabled) {\n background: #f1f5f9;\n border-color: #cbd5e1;\n }\n\n .time-range-control select:focus {\n outline: none;\n border-color: #6366f1;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n }\n\n .time-range-control select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .time-range-control select option {\n background: white;\n color: #1e293b;\n }\n\n .refresh-btn {\n background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.25);\n }\n\n .refresh-btn:hover:not(:disabled) {\n background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.35);\n }\n\n .refresh-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .refresh-btn i.spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .kpi-dashboard {\n padding: 20px;\n }\n\n .kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n }\n\n .dashboard-splitter {\n flex: 1;\n min-height: 500px;\n margin: 0 20px 20px 20px;\n }\n\n .dashboard-section {\n background: white;\n border-radius: 12px;\n box-shadow: 0 4px 16px rgba(99, 102, 241, 0.08);\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n border: 1px solid rgba(99, 102, 241, 0.08);\n transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .dashboard-section:hover {\n box-shadow: 0 8px 24px rgba(99, 102, 241, 0.12);\n }\n\n /* Ensure splitter panes take full height */\n :host ::ng-deep .k-splitter-pane {\n overflow: hidden;\n }\n\n :host ::ng-deep .k-splitter .k-splitter-pane {\n padding: 10px;\n }\n\n :host ::ng-deep .k-splitter-horizontal > .k-splitter-pane {\n padding: 10px 5px;\n }\n\n :host ::ng-deep .k-splitter-vertical > .k-splitter-pane {\n padding: 5px 10px;\n }\n\n /* Cost Analysis Styles */\n .cost-chart-container, .efficiency-chart-container, .status-container {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .chart-header {\n margin-bottom: 16px;\n }\n\n .chart-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #1e293b;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .chart-title i {\n color: #6366f1;\n }\n\n .cost-bars, .efficiency-items {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .cost-bar-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid #f0f0f0;\n }\n\n .cost-bar-item:last-child {\n border-bottom: none;\n }\n\n .cost-bar-info {\n min-width: 120px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n .model-name {\n font-size: 12px;\n font-weight: 500;\n color: #333;\n }\n\n .cost-value {\n font-size: 11px;\n color: #8b5cf6;\n font-weight: 600;\n }\n\n .cost-bar-container {\n flex: 1;\n height: 8px;\n background: linear-gradient(90deg, rgba(99, 102, 241, 0.1) 0%, rgba(139, 92, 246, 0.1) 100%);\n border-radius: 4px;\n overflow: hidden;\n }\n\n .cost-bar {\n height: 100%;\n background: linear-gradient(90deg, #6366f1 0%, #8b5cf6 50%, #a78bfa 100%);\n border-radius: 4px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-info {\n font-size: 10px;\n color: #666;\n min-width: 80px;\n text-align: right;\n }\n\n /* Token Efficiency Styles */\n .efficiency-item {\n padding: 12px 0;\n border-bottom: 1px solid #f0f0f0;\n }\n\n .efficiency-item:last-child {\n border-bottom: none;\n }\n\n .efficiency-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .efficiency-ratio {\n font-size: 11px;\n color: #6366f1;\n font-weight: 600;\n }\n\n .token-breakdown {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .token-bar {\n height: 8px;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n }\n\n .token-segment {\n height: 100%;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-segment--input {\n background: linear-gradient(90deg, #6366f1 0%, #818cf8 100%);\n }\n\n .token-segment--output {\n background: linear-gradient(90deg, #8b5cf6 0%, #a78bfa 100%);\n }\n\n .token-labels {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: #666;\n }\n\n .input-label {\n color: #6366f1;\n font-weight: 500;\n }\n\n .output-label {\n color: #8b5cf6;\n font-weight: 500;\n }\n\n .cost-per-token {\n font-size: 10px;\n color: #999;\n margin-top: 4px;\n }\n\n /* System Status Styles */\n .status-metrics {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n }\n\n .status-metric {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n }\n\n .status-icon {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .status-icon--success {\n background: linear-gradient(135deg, rgba(16, 185, 129, 0.15) 0%, rgba(5, 150, 105, 0.15) 100%);\n color: #10b981;\n }\n\n .status-icon--warning {\n background: linear-gradient(135deg, rgba(245, 158, 11, 0.15) 0%, rgba(217, 119, 6, 0.15) 100%);\n color: #f59e0b;\n }\n\n .status-icon--info {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(139, 92, 246, 0.15) 100%);\n color: #6366f1;\n }\n\n .status-icon--primary {\n background: linear-gradient(135deg, rgba(139, 92, 246, 0.15) 0%, rgba(167, 139, 250, 0.15) 100%);\n color: #8b5cf6;\n }\n\n .status-info {\n flex: 1;\n }\n\n .status-label {\n font-size: 12px;\n color: #666;\n font-weight: 500;\n }\n\n .status-value {\n font-size: 18px;\n font-weight: 700;\n color: #333;\n margin: 2px 0;\n }\n\n .status-subtitle {\n font-size: 10px;\n color: #999;\n }\n\n /* Execution Modal Styles */\n .execution-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n }\n\n .execution-modal-content {\n background: white;\n border-radius: 8px;\n max-width: 800px;\n width: 100%;\n max-height: 80vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .execution-modal-header {\n padding: 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .execution-modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-header-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .open-record-btn {\n background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.25);\n }\n\n .open-record-btn:hover {\n background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.35);\n }\n\n .open-record-btn i {\n font-size: 12px;\n }\n\n .close-btn {\n background: none;\n border: none;\n font-size: 16px;\n color: #999;\n cursor: pointer;\n padding: 4px;\n }\n\n .close-btn:hover {\n color: #333;\n }\n\n .execution-modal-body {\n padding: 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .execution-details {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .detail-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n border-bottom: 1px solid #f0f0f0;\n padding-bottom: 6px;\n }\n\n .detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n }\n\n .detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .detail-item label {\n font-size: 11px;\n color: #666;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .detail-item span {\n font-size: 13px;\n color: #333;\n }\n\n .status-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .status-badge--completed {\n background: linear-gradient(135deg, rgba(16, 185, 129, 0.15) 0%, rgba(5, 150, 105, 0.15) 100%);\n color: #10b981;\n }\n\n .status-badge--running {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(139, 92, 246, 0.15) 100%);\n color: #6366f1;\n }\n\n .status-badge--failed {\n background: linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(220, 38, 38, 0.15) 100%);\n color: #ef4444;\n }\n\n .error-message {\n background: #fff3e0;\n border: 1px solid #ffcc02;\n border-radius: 4px;\n padding: 12px;\n font-size: 12px;\n color: #e65100;\n font-family: monospace;\n }\n\n .child-executions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .child-execution {\n background: #f8f9fa;\n border-radius: 4px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .child-info {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .child-name {\n font-size: 12px;\n font-weight: 500;\n color: #333;\n }\n\n .child-type {\n font-size: 10px;\n background: #e0e0e0;\n padding: 2px 6px;\n border-radius: 3px;\n color: #666;\n }\n\n .child-status {\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 3px;\n }\n\n .child-metrics {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: #666;\n }\n\n .loading-details {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 12px;\n }\n\n /* Drill-down Tab Styles */\n .drill-down-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .drill-down-tabs {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .tab-header {\n display: flex;\n border-bottom: 1px solid rgba(99, 102, 241, 0.1);\n background: linear-gradient(180deg, #f8f9ff 0%, #f3f4f6 100%);\n min-height: 44px;\n overflow-x: auto;\n }\n\n .tab-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: #64748b;\n white-space: nowrap;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 120px;\n justify-content: space-between;\n }\n\n .tab-item:hover {\n background: rgba(99, 102, 241, 0.05);\n color: #6366f1;\n }\n\n .tab-item.active {\n background: white;\n color: #6366f1;\n border-bottom-color: #6366f1;\n font-weight: 600;\n }\n\n .tab-title {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .tab-close {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n padding: 2px;\n border-radius: 2px;\n font-size: 10px;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n }\n\n .tab-close:hover {\n background: rgba(0, 0, 0, 0.1);\n color: #333;\n }\n\n .tab-content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .tab-pane {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .trends-chart {\n padding: 0;\n }\n\n .trends-chart app-time-series-chart {\n height: 100%;\n display: block;\n overflow: hidden;\n }\n\n /* Ensure chart fits within tab pane */\n .tab-pane.trends-chart {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n /* Drill-down specific styles */\n .executions-drill-down {\n padding: 20px;\n overflow-y: auto;\n }\n\n .drill-down-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .drill-down-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .drill-down-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n font-size: 12px;\n }\n\n .timestamp {\n color: #666;\n background: #f0f0f0;\n padding: 4px 8px;\n border-radius: 4px;\n }\n\n .metric-badge {\n background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n color: white;\n padding: 4px 10px;\n border-radius: 6px;\n font-weight: 600;\n box-shadow: 0 2px 4px rgba(99, 102, 241, 0.25);\n }\n\n .loading-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: #666;\n gap: 12px;\n }\n\n .executions-table {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n background: #f8f9fa;\n padding: 12px 16px;\n font-size: 11px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n padding: 12px 16px;\n border-top: 1px solid #f0f0f0;\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n }\n\n .table-row:hover {\n background: #f8f9fa;\n }\n\n .table-cell {\n font-size: 12px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .type-badge {\n background: linear-gradient(135deg, rgba(100, 116, 139, 0.1) 0%, rgba(71, 85, 105, 0.1) 100%);\n color: #64748b;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .type-badge--prompt {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(139, 92, 246, 0.15) 100%);\n color: #6366f1;\n }\n\n .type-badge--agent {\n background: linear-gradient(135deg, rgba(16, 185, 129, 0.15) 0%, rgba(5, 150, 105, 0.15) 100%);\n color: #10b981;\n }\n\n .no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: #999;\n gap: 16px;\n }\n\n .no-data i {\n font-size: 48px;\n color: #ddd;\n }\n\n .no-data p {\n margin: 0;\n font-size: 14px;\n }\n\n /* Model detail styles */\n .model-detail {\n padding: 20px;\n overflow-y: auto;\n }\n\n .model-details {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .model-info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n }\n\n .info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 6px;\n }\n\n .info-item label {\n font-size: 11px;\n color: #666;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0;\n }\n\n .info-item span {\n font-size: 14px;\n color: #333;\n font-weight: 500;\n }\n\n .status-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n }\n\n .status-indicator.active {\n color: #4caf50;\n }\n\n .status-indicator.active::before {\n content: '';\n width: 6px;\n height: 6px;\n background: #4caf50;\n border-radius: 50%;\n }\n\n .model-description {\n padding: 20px;\n background: #f8f9fa;\n border-radius: 8px;\n }\n\n .model-description h5 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .model-description p {\n margin: 0;\n font-size: 13px;\n color: #666;\n line-height: 1.5;\n }\n\n /* Clickable KPI cards */\n .clickable {\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n\n .clickable:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n /* Collapsible Panel Styles */\n .analysis-panels {\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n background: linear-gradient(180deg, #f8f9ff 0%, #f3f4f6 100%);\n }\n\n .analysis-panel {\n margin-bottom: 12px;\n border-radius: 10px;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.08);\n background: white;\n overflow: hidden;\n border: 1px solid rgba(99, 102, 241, 0.08);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .analysis-panel:hover {\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.12);\n }\n\n .analysis-panel:last-child {\n margin-bottom: 0;\n }\n\n .panel-header {\n padding: 14px 18px;\n background: linear-gradient(180deg, #fafbff 0%, #f8f9fc 100%);\n border-bottom: 1px solid rgba(99, 102, 241, 0.08);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-header:hover {\n background: linear-gradient(180deg, #f0f1ff 0%, #e8e9ff 100%);\n }\n\n .panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n color: #1e293b;\n font-size: 14px;\n }\n\n .panel-title i {\n color: #6366f1;\n width: 18px;\n }\n\n .panel-toggle-icon {\n color: #6366f1;\n font-size: 12px;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-content {\n padding: 18px;\n border-top: 1px solid rgba(99, 102, 241, 0.05);\n animation: slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n }\n }\n\n .live-executions-panel {\n padding: 0;\n }\n\n .live-executions-panel app-live-execution-widget {\n height: 300px;\n display: block;\n }\n\n /* Responsive Design */\n @media (max-width: 1200px) {\n .dashboard-splitter {\n min-height: 400px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 60px 1fr 100px 80px 80px 60px 80px 100px;\n gap: 8px;\n }\n \n .model-info-grid {\n grid-template-columns: 1fr;\n }\n \n .analysis-panels {\n padding: 8px;\n }\n \n .analysis-panel {\n margin-bottom: 8px;\n }\n }\n\n @media (max-width: 768px) {\n .execution-monitoring {\n padding: 12px;\n }\n \n .monitoring-header {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .monitoring-controls {\n width: 100%;\n justify-content: flex-start;\n }\n \n .dashboard-splitter {\n min-height: 350px;\n }\n \n .kpi-grid {\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n }\n\n /* Reduce padding on smaller screens */\n :host ::ng-deep .k-splitter .k-splitter-pane {\n padding: 5px;\n }\n\n :host ::ng-deep .k-splitter-horizontal > .k-splitter-pane {\n padding: 5px 2px;\n }\n\n :host ::ng-deep .k-splitter-vertical > .k-splitter-pane {\n padding: 2px 5px;\n }\n \n .tab-header {\n overflow-x: auto;\n }\n \n .tab-item {\n min-width: 100px;\n padding: 6px 12px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 1fr;\n gap: 4px;\n text-align: left;\n }\n \n .table-row {\n display: block;\n padding: 16px;\n }\n \n .table-cell {\n display: block;\n margin-bottom: 8px;\n }\n \n .table-cell:before {\n content: attr(data-label) ': ';\n font-weight: 600;\n color: #666;\n font-size: 11px;\n text-transform: uppercase;\n }\n \n .executions-drill-down,\n .model-detail {\n padding: 12px;\n }\n \n .panel-content {\n padding: 12px;\n }\n \n .panel-header {\n padding: 10px 12px;\n }\n \n .panel-title {\n font-size: 13px;\n }\n }\n `]\n})\nexport class ExecutionMonitoringComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private stateChangeSubject$ = new Subject<ExecutionMonitoringState>();\n\n // Configuration\n selectedTimeRange = '24h';\n isLoading = false;\n\n // Chart configurations\n timeSeriesConfig = {\n showGrid: true,\n showTooltip: true,\n animationDuration: 500,\n useDualAxis: true\n };\n\n heatmapConfig = {\n height: 350,\n showTooltip: true,\n animationDuration: 300\n };\n\n // Data streams\n kpis$: Observable<DashboardKPIs>;\n trends$: Observable<TrendData[]>;\n liveExecutions$: Observable<LiveExecution[]>;\n chartData$: Observable<ChartData>;\n\n // Derived data streams\n kpiCards$: Observable<KPICardData[]>;\n performanceMatrix$: Observable<HeatmapData[]>;\n costData$: Observable<{ model: string; cost: number; tokens: number }[]>;\n tokenEfficiency$: Observable<{ inputTokens: number; outputTokens: number; cost: number; model: string }[]>;\n\n // Modal state\n selectedExecution: LiveExecution | null = null;\n executionDetails: ExecutionDetails | null = null;\n loadingExecutionDetails = false;\n\n // Drill-down tab state\n drillDownTabs: DrillDownTab[] = [];\n activeTabId: string = 'main-chart';\n loadingDrillDown = false;\n\n // Panel state for collapsible sections\n panelStates = {\n cost: true,\n efficiency: true, // Expanded by default\n executions: false\n };\n\n get activeTab(): DrillDownTab | undefined {\n return this.drillDownTabs.find(tab => tab.id === this.activeTabId);\n }\n\n constructor(\n private instrumentationService: AIInstrumentationService,\n private navigationService: NavigationService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n // Initialize data streams\n this.kpis$ = this.instrumentationService.kpis$;\n this.trends$ = this.instrumentationService.trends$;\n this.liveExecutions$ = this.instrumentationService.liveExecutions$;\n this.chartData$ = this.instrumentationService.chartData$;\n\n // Subscribe to loading state from service\n this.instrumentationService.isLoading$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(loading => {\n this.isLoading = loading;\n this.cdr.markForCheck();\n });\n\n // Derived streams\n this.kpiCards$ = this.kpis$.pipe(\n map(kpis => this.createKPICards(kpis))\n );\n\n this.performanceMatrix$ = this.chartData$.pipe(\n map(data => data.performanceMatrix.map(item => ({\n agent: item.agent,\n model: item.model,\n avgTime: item.avgTime,\n successRate: item.successRate\n })))\n );\n\n this.costData$ = this.chartData$.pipe(\n map(data => data.costByModel)\n );\n\n this.tokenEfficiency$ = this.chartData$.pipe(\n map(data => data.tokenEfficiency)\n );\n }\n\n ngOnInit() {\n // Load initial state if provided from resource configuration\n if (this.Data?.Configuration) {\n this.loadUserState(this.Data.Configuration);\n } else {\n // Default initialization\n this.setTimeRange(this.selectedTimeRange);\n \n // Initialize with main chart tab\n this.drillDownTabs = [\n {\n id: 'main-chart',\n title: 'Execution Trends',\n type: 'chart',\n closeable: false\n }\n ];\n \n // Trigger initial data load\n this.instrumentationService.refresh();\n }\n \n // Set up debounced state change - could be used for persistence in the future\n this.stateChangeSubject$.pipe(\n debounceTime(2000), // 2 second debounce\n takeUntil(this.destroy$)\n ).subscribe(_state => {\n // State change handling placeholder\n });\n\n // Notify that the resource has finished loading\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.stateChangeSubject$.complete();\n }\n\n private getCurrentState(): ExecutionMonitoringState {\n return {\n selectedTimeRange: this.selectedTimeRange,\n refreshInterval: 0, // Always manual refresh now\n panelStates: { ...this.panelStates },\n drillDownTabs: this.drillDownTabs.map(tab => ({\n id: tab.id,\n title: tab.title,\n type: tab.type,\n timestamp: tab.timestamp?.toISOString(),\n metric: tab.metric\n })),\n activeTabId: this.activeTabId\n };\n }\n\n private emitStateChange(): void {\n const currentState = this.getCurrentState();\n this.stateChangeSubject$.next(currentState);\n }\n\n public loadUserState(state: Partial<ExecutionMonitoringState>): void {\n \n if (state.selectedTimeRange) {\n this.selectedTimeRange = state.selectedTimeRange;\n this.setTimeRange(state.selectedTimeRange);\n }\n \n // No longer need to handle refreshInterval since we removed auto-refresh\n \n if (state.panelStates) {\n // Only override if state has explicit panel states, otherwise keep defaults\n this.panelStates = { ...this.panelStates, ...state.panelStates };\n }\n \n if (state.drillDownTabs && state.drillDownTabs.length > 0) {\n this.drillDownTabs = state.drillDownTabs.map(tab => ({\n ...tab,\n type: tab.type as 'chart' | 'executions' | 'model-detail',\n timestamp: tab.timestamp ? new Date(tab.timestamp) : undefined,\n closeable: tab.id !== 'main-chart'\n }));\n } else {\n // Initialize with default tab if not provided\n this.drillDownTabs = [\n {\n id: 'main-chart',\n title: 'Execution Trends',\n type: 'chart',\n closeable: false\n }\n ];\n }\n \n if (state.activeTabId) {\n this.activeTabId = state.activeTabId;\n }\n }\n\n private createKPICards(kpis: DashboardKPIs): KPICardData[] {\n return [\n {\n title: 'Total Executions',\n value: kpis.totalExecutions,\n icon: 'fa-chart-bar',\n color: 'primary',\n subtitle: `${kpis.activeExecutions} active`\n },\n {\n title: 'Total Cost',\n value: `$${kpis.totalCost.toFixed(4)}`,\n icon: 'fa-dollar-sign',\n color: 'warning',\n subtitle: `${kpis.costCurrency} • $${kpis.dailyCostBurn.toFixed(2)}/day`\n },\n {\n title: 'Success Rate',\n value: `${(kpis.successRate * 100).toFixed(1)}%`,\n icon: 'fa-check-circle',\n color: 'success',\n subtitle: `${(kpis.errorRate * 100).toFixed(1)}% errors`\n },\n {\n title: 'Avg Response Time',\n value: `${(kpis.avgExecutionTime / 1000).toFixed(2)}s`,\n icon: 'fa-clock',\n color: 'info',\n subtitle: 'All models average'\n },\n {\n title: 'Token Usage',\n value: this.formatTokens(kpis.totalTokens),\n icon: 'fa-coins',\n color: 'primary',\n subtitle: `$${kpis.costPerToken.toFixed(6)}/token`\n },\n {\n title: 'Top Model',\n value: kpis.topModel,\n icon: 'fa-microchip',\n color: 'info',\n subtitle: 'Most used'\n }\n ];\n }\n\n onTimeRangeChange(): void {\n // Simply change time range - loading state is managed by the service\n this.setTimeRange(this.selectedTimeRange);\n this.emitStateChange();\n }\n\n private setTimeRange(range: string): void {\n const { start, end } = this.getTimeRangeFromSelection(range);\n this.instrumentationService.setDateRange(start, end);\n }\n \n private getTimeRangeFromSelection(range?: string): { start: Date; end: Date } {\n const now = new Date();\n const selectedRange = range || this.selectedTimeRange;\n let start: Date;\n\n switch (selectedRange) {\n case '1h':\n start = new Date(now.getTime() - 60 * 60 * 1000);\n break;\n case '6h':\n start = new Date(now.getTime() - 6 * 60 * 60 * 1000);\n break;\n case '24h':\n start = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n break;\n case '7d':\n start = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n break;\n case '30d':\n start = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n break;\n default:\n start = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n }\n\n return { start, end: now };\n }\n\n refreshData(): void {\n // Simply trigger refresh - loading state is managed by the service\n this.instrumentationService.refresh();\n }\n\n onExecutionClick(execution: LiveExecution): void {\n this.selectedExecution = execution;\n this.loadExecutionDetails(execution);\n }\n\n onDataPointClick(event: DataPointClickEvent): void {\n const timestamp = event.data.timestamp;\n const metric = event.metric;\n \n // Create new drill-down tab\n const tabId = `drill-down-${timestamp.getTime()}-${metric}`;\n const tabTitle = `${this.getMetricDisplayLabel(metric)} - ${this.formatTimestamp(timestamp)}`;\n \n const newTab: DrillDownTab = {\n id: tabId,\n title: tabTitle,\n type: 'executions',\n timestamp: timestamp,\n metric: metric,\n closeable: true\n };\n \n // Add tab if it doesn't exist\n if (!this.drillDownTabs.find(tab => tab.id === tabId)) {\n this.drillDownTabs.push(newTab);\n this.emitStateChange(); // Emit state when new tab is added\n this.cdr.markForCheck();\n }\n \n // Switch to the new tab\n this.selectTab(tabId);\n \n // Load drill-down data\n this.loadDrillDownData(newTab);\n }\n\n onChartTimeRangeChange(range: string): void {\n this.selectedTimeRange = range;\n this.setTimeRange(range);\n }\n\n private getMetricValue(data: TrendData, metric: string): number {\n switch (metric) {\n case 'executions': return data.executions;\n case 'cost': return data.cost;\n case 'tokens': return data.tokens;\n case 'avgTime': return data.avgTime;\n case 'errors': return data.errors;\n default: return 0;\n }\n }\n\n private formatMetricValue(metric: string, value: number): string {\n switch (metric) {\n case 'executions': return value.toLocaleString();\n case 'cost': return `$${value.toFixed(4)}`;\n case 'tokens': return value.toLocaleString();\n case 'avgTime': return `${(value / 1000).toFixed(1)}s`;\n case 'errors': return value.toString();\n default: return value.toString();\n }\n }\n\n private async loadExecutionDetails(execution: LiveExecution): Promise<void> {\n this.loadingExecutionDetails = true;\n this.executionDetails = null;\n\n try {\n const details = await this.instrumentationService.getExecutionDetails(\n execution.id,\n execution.type\n );\n this.executionDetails = details;\n } catch (error) {\n console.error('Error loading execution details:', error);\n } finally {\n this.loadingExecutionDetails = false;\n }\n }\n\n closeExecutionModal(): void {\n this.selectedExecution = null;\n this.executionDetails = null;\n this.loadingExecutionDetails = false;\n }\n\n openFullRecord(): void {\n if (this.selectedExecution) {\n // Determine the entity name based on the execution type\n const entityName = this.selectedExecution.type === 'prompt'\n ? 'MJ: AI Prompt Runs'\n : 'MJ: AI Agent Runs';\n\n // Open the record using NavigationService\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: this.selectedExecution.id }]);\n this.navigationService.OpenEntityRecord(entityName, compositeKey);\n\n // Close the modal\n this.closeExecutionModal();\n }\n }\n\n // Utility methods for templates\n trackByKpiTitle(index: number, kpi: KPICardData): string {\n return kpi.title;\n }\n\n trackByCostModel(index: number, item: { model: string; cost: number; tokens: number }): string {\n return item.model;\n }\n\n trackByEfficiencyModel(index: number, item: { model: string; inputTokens: number; outputTokens: number; cost: number }): string {\n return item.model;\n }\n\n formatTokens(tokens: number): string {\n if (tokens >= 1000000) {\n return `${(tokens / 1000000).toFixed(1)}M`;\n } else if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}K`;\n }\n return tokens.toString();\n }\n\n formatCurrency(amount: number, decimals: number = 4): string {\n return `$${amount.toFixed(decimals)}`;\n }\n\n formatCostPerToken(cost: number, tokens: number): string {\n const costPer1K = tokens > 0 ? (cost / tokens) * 1000 : 0;\n return `$${costPer1K.toFixed(4)}/1K tokens`;\n }\n\n getCostBarWidth(cost: number, maxCost: number): number {\n return maxCost > 0 ? (cost / maxCost) * 100 : 0;\n }\n\n getMaxCost(costData: { cost: number }[]): number {\n return Math.max(...costData.map(item => item.cost));\n }\n\n getTokenRatio(input: number, output: number): string {\n const total = input + output;\n if (total === 0) return '0:0';\n const ratio = output / input;\n return `1:${ratio.toFixed(1)}`;\n }\n\n getTokenPercentage(tokens: number, total: number): number {\n return total > 0 ? (tokens / total) * 100 : 0;\n }\n\n getCostPerToken(cost: number, tokens: number): string {\n const costPer1K = tokens > 0 ? (cost / tokens) * 1000 : 0;\n return costPer1K.toFixed(4);\n }\n\n // Tab management methods\n selectTab(tabId: string): void {\n this.activeTabId = tabId;\n // Trigger chart resize after tab switch to fix chart rendering\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n closeTab(event: MouseEvent, tabId: string): void {\n event.stopPropagation();\n \n const tabIndex = this.drillDownTabs.findIndex(tab => tab.id === tabId);\n if (tabIndex === -1) return;\n \n // Remove the tab\n this.drillDownTabs.splice(tabIndex, 1);\n \n // If we closed the active tab, switch to another tab\n if (this.activeTabId === tabId) {\n if (this.drillDownTabs.length > 0) {\n // Switch to the previous tab or first tab\n const newActiveIndex = Math.max(0, tabIndex - 1);\n this.activeTabId = this.drillDownTabs[newActiveIndex].id;\n // Trigger resize after tab switch\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n } else {\n // No tabs left, this shouldn't happen as main chart is not closeable\n this.activeTabId = 'main-chart';\n }\n }\n \n this.emitStateChange();\n }\n\n // KPI click handling\n onKpiClick(kpi: KPICardData): void {\n if (kpi.title === 'Top Model' && kpi.value !== 'N/A') {\n this.openModelDrillDown(String(kpi.value));\n }\n // Add other KPI drill-downs as needed\n }\n\n isKpiClickable(kpi: KPICardData): boolean {\n return kpi.title === 'Top Model' && kpi.value !== 'N/A';\n }\n\n private async openModelDrillDown(modelName: string): Promise<void> {\n const tabId = `model-detail-${modelName.replace(/[^a-zA-Z0-9]/g, '-')}`;\n const tabTitle = `Model: ${modelName}`;\n \n // Check if tab already exists\n if (this.drillDownTabs.find(tab => tab.id === tabId)) {\n this.selectTab(tabId);\n return;\n }\n \n // Create new model detail tab\n const newTab: DrillDownTab = {\n id: tabId,\n title: tabTitle,\n type: 'model-detail',\n closeable: true\n };\n \n this.drillDownTabs.push(newTab);\n this.selectTab(tabId);\n \n // Load model details\n this.loadModelDetails(newTab, modelName);\n }\n\n private async loadDrillDownData(tab: DrillDownTab): Promise<void> {\n if (!tab.timestamp) return;\n \n this.loadingDrillDown = true;\n \n try {\n // Determine bucket size based on selected time range\n const { start, end } = this.getTimeRangeFromSelection();\n const duration = end.getTime() - start.getTime();\n const hours = duration / (1000 * 60 * 60);\n \n let windowSizeMs: number;\n let alignToDay = false;\n \n if (hours <= 24) {\n // For up to 24 hours, use 1 hour window (30 min before and after)\n windowSizeMs = 30 * 60 * 1000;\n } else if (hours <= 24 * 7) {\n // For up to 7 days, use full day window\n // Since data is aggregated into 4-hour buckets, we need to capture the full day\n windowSizeMs = 12 * 60 * 60 * 1000; // 12 hours before/after = 24 hour window\n alignToDay = true;\n } else {\n // For more than 7 days, use full day window\n windowSizeMs = 12 * 60 * 60 * 1000; // 12 hours before/after = 24 hour window\n alignToDay = true;\n }\n \n // Create time window around the clicked point\n let startTime = new Date(tab.timestamp.getTime() - windowSizeMs);\n let endTime = new Date(tab.timestamp.getTime() + windowSizeMs);\n \n // For day-aligned queries, expand to full day boundaries\n if (alignToDay) {\n // Set start to beginning of the day\n startTime = new Date(tab.timestamp);\n startTime.setHours(0, 0, 0, 0);\n \n // Set end to end of the day\n endTime = new Date(tab.timestamp);\n endTime.setHours(23, 59, 59, 999);\n }\n \n // Load executions for this time period\n const [promptResults, agentResults] = await Promise.all([\n new RunView().RunView<MJAIPromptRunEntityExtended>({\n EntityName: 'MJ: AI Prompt Runs',\n ExtraFilter: `RunAt >= '${startTime.toISOString()}' AND RunAt <= '${endTime.toISOString()}'`,\n OrderBy: 'RunAt DESC' \n }),\n new RunView().RunView<MJAIAgentRunEntityExtended>({\n EntityName: 'MJ: AI Agent Runs',\n ExtraFilter: `StartedAt >= '${startTime.toISOString()}' AND StartedAt <= '${endTime.toISOString()}'`,\n OrderBy: 'StartedAt DESC' \n })\n ]);\n \n // Convert to ExecutionRecord format\n const executions: ExecutionRecord[] = [];\n \n // Add prompt executions\n for (const run of promptResults.Results) {\n const duration = run.CompletedAt ? \n new Date(run.CompletedAt).getTime() - new Date(run.RunAt).getTime() : \n Date.now() - new Date(run.RunAt).getTime();\n \n executions.push({\n id: run.ID,\n type: 'prompt',\n name: run.Prompt || 'Unnamed Prompt',\n model: run.Model || undefined,\n status: run.Success ? 'completed' : (run.Success === false ? 'failed' : 'running'),\n startTime: new Date(run.RunAt),\n endTime: run.CompletedAt ? new Date(run.CompletedAt) : undefined,\n duration: duration,\n cost: run.Cost || 0,\n tokens: run.TokensUsed || 0,\n errorMessage: run.ErrorMessage || undefined\n });\n }\n \n // Add agent executions\n for (const run of agentResults.Results) {\n const duration = run.CompletedAt ? \n new Date(run.CompletedAt).getTime() - new Date(run.StartedAt).getTime() : \n Date.now() - new Date(run.StartedAt).getTime();\n \n executions.push({\n id: run.ID,\n type: 'agent',\n name: run.Agent || 'Unnamed Agent',\n status: run.Status.toLowerCase(),\n startTime: new Date(run.StartedAt),\n endTime: run.CompletedAt ? new Date(run.CompletedAt) : undefined,\n duration: duration,\n cost: run.TotalCost || 0,\n tokens: run.TotalTokensUsed || 0,\n errorMessage: run.ErrorMessage || undefined\n });\n }\n \n // Sort by start time (most recent first)\n executions.sort((a, b) => b.startTime.getTime() - a.startTime.getTime());\n \n // Update tab data\n tab.data = executions;\n this.cdr.markForCheck();\n \n } catch (error) {\n console.error('Error loading drill-down data:', error);\n tab.data = [];\n this.cdr.markForCheck();\n } finally {\n this.loadingDrillDown = false;\n this.cdr.markForCheck();\n }\n }\n\n private async loadModelDetails(tab: DrillDownTab, modelName: string): Promise<void> {\n this.loadingDrillDown = true;\n \n try {\n // Find model by name\n const rv = new RunView();\n const result = await rv.RunView<MJAIModelEntityExtended>({\n EntityName: 'MJ: AI Models',\n ExtraFilter: `Name = '${modelName.replace(/'/g, \"''\")}'` \n });\n \n const model = result.Results[0];\n if (model) {\n tab.data = {\n name: model.Name,\n vendor: model.Vendor,\n apiName: model.APIName,\n inputTokenCost: 0, // Not available in current model\n outputTokenCost: 0, // Not available in current model \n isActive: model.IsActive,\n description: model.Description\n };\n } else {\n tab.data = null;\n }\n \n } catch (error) {\n console.error('Error loading model details:', error);\n tab.data = null;\n } finally {\n this.loadingDrillDown = false;\n }\n }\n\n // Helper methods for drill-down\n\n formatTimestamp(timestamp: Date): string {\n return timestamp.toLocaleString();\n }\n\n formatTime(time: Date): string {\n return time.toLocaleTimeString();\n }\n\n getMetricDisplayLabel(metric: string): string {\n const labels: { [key: string]: string } = {\n executions: 'Executions',\n cost: 'Cost',\n tokens: 'Tokens',\n avgTime: 'Avg Time',\n errors: 'Errors'\n };\n return labels[metric] || metric;\n }\n\n getFormattedTimestamp(tab: DrillDownTab | undefined): string {\n return tab?.timestamp ? this.formatTimestamp(tab.timestamp) : '';\n }\n\n getFormattedMetricLabel(tab: DrillDownTab | undefined): string {\n return tab?.metric ? this.getMetricDisplayLabel(tab.metric) : '';\n }\n\n // Panel management methods\n togglePanel(panelName: 'cost' | 'efficiency' | 'executions'): void {\n this.panelStates[panelName] = !this.panelStates[panelName];\n this.emitStateChange();\n }\n\n viewExecutionDetail(execution: ExecutionRecord): void {\n // Convert ExecutionRecord to LiveExecution format for the modal\n const liveExecution: LiveExecution = {\n id: execution.id,\n type: execution.type,\n name: execution.name,\n status: execution.status as 'running' | 'completed' | 'failed',\n startTime: execution.startTime,\n duration: execution.duration,\n cost: execution.cost,\n tokens: execution.tokens\n };\n \n this.onExecutionClick(liveExecution);\n }\n\n formatDuration(milliseconds: number): string {\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m ${seconds % 60}s`;\n } else if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n } else {\n return `${seconds}s`;\n }\n }\n\n getDuration(details: ExecutionDetails): number {\n const start = details.startTime.getTime();\n const end = details.endTime ? details.endTime.getTime() : Date.now();\n return end - start;\n }\n\n onSplitterLayoutChange(event: any): void {\n // Trigger window resize event to force charts to recalculate dimensions\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n\n // Emit state change when splitter changes\n this.emitStateChange();\n }\n\n // === BaseResourceComponent Required Methods ===\n\n /**\n * Get the display name for this resource\n */\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Monitor';\n }\n\n /**\n * Get the icon class for this resource\n */\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-chart-line';\n }\n}"]}