@grafana/scenes 6.40.0--canary.1265.18596374903.0 → 6.40.0--canary.1265.18676273866.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/core/sceneGraph/index.js +1 -1
- package/dist/esm/performance/VizPanelRenderProfiler.js +5 -9
- package/dist/esm/performance/VizPanelRenderProfiler.js.map +1 -1
- package/dist/esm/performance/index.js +1 -5
- package/dist/esm/performance/index.js.map +1 -1
- package/dist/esm/performance/interactionConstants.js +1 -2
- package/dist/esm/performance/interactionConstants.js.map +1 -1
- package/dist/esm/querying/registerQueryWithController.js +0 -10
- package/dist/esm/querying/registerQueryWithController.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariable.js +2 -2
- package/dist/index.d.ts +19 -155
- package/dist/index.js +7393 -7414
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { lookupVariable } from '../../variables/lookupVariable.js';
|
|
2
2
|
import { getQueryController } from './getQueryController.js';
|
|
3
3
|
import { getTimeRange } from './getTimeRange.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getScopes, findDescendents, getAncestor, findAllObjects, findObject, findByKeyAndType, findByKey, hasVariableDependencyInLoadingState, interpolate, getDataLayers, getLayout, getData, getVariables } from './sceneGraph.js';
|
|
5
5
|
|
|
6
6
|
const sceneGraph = {
|
|
7
7
|
getVariables,
|
|
@@ -2,7 +2,7 @@ import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
|
2
2
|
import { VizPanel } from '../components/VizPanel/VizPanel.js';
|
|
3
3
|
import { writeSceneLog } from '../utils/writeSceneLog.js';
|
|
4
4
|
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
5
|
-
import {
|
|
5
|
+
import { generateOperationId, getScenePerformanceTracker } from './ScenePerformanceTracker.js';
|
|
6
6
|
|
|
7
7
|
class VizPanelRenderProfiler extends SceneObjectBase {
|
|
8
8
|
constructor(state = {}) {
|
|
@@ -73,7 +73,7 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
73
73
|
queryType: entry.type
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
|
-
|
|
76
|
+
return (endTimestamp, error) => {
|
|
77
77
|
if (!this._panelKey) {
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
@@ -99,7 +99,6 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
99
99
|
error: error ? (error == null ? void 0 : error.message) || String(error) || "Unknown error" : void 0
|
|
100
100
|
});
|
|
101
101
|
};
|
|
102
|
-
return callback;
|
|
103
102
|
}
|
|
104
103
|
/**
|
|
105
104
|
* Track plugin loading with operation ID correlation
|
|
@@ -137,7 +136,7 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
137
136
|
pluginId
|
|
138
137
|
}
|
|
139
138
|
});
|
|
140
|
-
|
|
139
|
+
return (plugin, fromCache = false) => {
|
|
141
140
|
if (!this._panelKey || !this._loadPluginStartTime) {
|
|
142
141
|
return;
|
|
143
142
|
}
|
|
@@ -158,7 +157,6 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
158
157
|
});
|
|
159
158
|
this._loadPluginStartTime = void 0;
|
|
160
159
|
};
|
|
161
|
-
return callback;
|
|
162
160
|
}
|
|
163
161
|
/**
|
|
164
162
|
* Track field config processing with operation ID correlation
|
|
@@ -178,7 +176,7 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
178
176
|
timestamp: this._applyFieldConfigStartTime,
|
|
179
177
|
metadata: {}
|
|
180
178
|
});
|
|
181
|
-
|
|
179
|
+
return (endTimestamp, dataPointsCount, seriesCount) => {
|
|
182
180
|
if (!this._panelKey || !this._applyFieldConfigStartTime) {
|
|
183
181
|
return;
|
|
184
182
|
}
|
|
@@ -195,7 +193,6 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
195
193
|
});
|
|
196
194
|
this._applyFieldConfigStartTime = void 0;
|
|
197
195
|
};
|
|
198
|
-
return callback;
|
|
199
196
|
}
|
|
200
197
|
/**
|
|
201
198
|
* Get panel info for logging - truncates long titles for readability
|
|
@@ -290,7 +287,7 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
290
287
|
annotationTransformationCount: metrics.annotationTransformationCount
|
|
291
288
|
}
|
|
292
289
|
});
|
|
293
|
-
|
|
290
|
+
return (endTimestamp, duration, success, result) => {
|
|
294
291
|
if (!this._panelKey) {
|
|
295
292
|
return;
|
|
296
293
|
}
|
|
@@ -312,7 +309,6 @@ class VizPanelRenderProfiler extends SceneObjectBase {
|
|
|
312
309
|
}
|
|
313
310
|
});
|
|
314
311
|
};
|
|
315
|
-
return callback;
|
|
316
312
|
}
|
|
317
313
|
}
|
|
318
314
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VizPanelRenderProfiler.js","sources":["../../../src/performance/VizPanelRenderProfiler.ts"],"sourcesContent":["import { SceneObjectBase } from '../core/SceneObjectBase';\nimport { SceneObjectState } from '../core/types';\nimport { VizPanel } from '../components/VizPanel/VizPanel';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneQueryControllerEntry } from '../behaviors/types';\nimport { QueryProfilerLike } from '../querying/registerQueryWithController';\nimport { getScenePerformanceTracker, generateOperationId } from './ScenePerformanceTracker';\n\nexport interface VizPanelRenderProfilerState extends SceneObjectState {}\n\n/**\n * Tracks performance metrics for individual VizPanel instances using observer pattern.\n *\n * Performance events are sent to ScenePerformanceTracker observers, which are consumed\n * by Grafana's ScenePerformanceLogger and DashboardAnalyticsAggregator.\n */\n\nexport class VizPanelRenderProfiler extends SceneObjectBase<VizPanelRenderProfilerState> implements QueryProfilerLike {\n private _panelKey?: string;\n private _panelId?: string;\n private _pluginId?: string;\n private _pluginVersion?: string;\n private _isTracking = false;\n private _loadPluginStartTime?: number;\n private _applyFieldConfigStartTime?: number;\n private _activeQueries = new Map<string, { entry: SceneQueryControllerEntry; startTime: number }>();\n\n public constructor(state: Partial<VizPanelRenderProfilerState> = {}) {\n super({\n ...state,\n });\n\n this.addActivationHandler(() => {\n return this._onActivate();\n });\n }\n\n private _onActivate() {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n writeSceneLog('VizPanelRenderProfiler', 'Failed to find VizPanel ancestor', error);\n return;\n }\n\n if (!panel) {\n writeSceneLog('VizPanelRenderProfiler', 'Not attached to a VizPanel');\n return;\n }\n\n if (!panel.state.key) {\n writeSceneLog('VizPanelRenderProfiler', 'Panel has no key, skipping tracking');\n return;\n }\n\n this._panelKey = panel.state.key;\n this._panelId = String(panel.getLegacyPanelId());\n this._pluginId = panel.state.pluginId;\n const plugin = panel.getPlugin();\n this._pluginVersion = plugin?.meta?.info?.version;\n\n this._subs.add(\n panel.subscribeToState((newState, prevState) => {\n this._handlePanelStateChange(panel, newState, prevState);\n })\n );\n\n return () => {\n this._cleanup();\n };\n }\n\n private _handlePanelStateChange(panel: VizPanel, newState: any, prevState: any) {\n if (newState.pluginId !== prevState.pluginId) {\n this._onPluginChange(panel, newState.pluginId);\n }\n }\n\n /**\n * Track query execution with operation ID correlation\n */\n public onQueryStarted(\n timestamp: number,\n entry: SceneQueryControllerEntry,\n queryId: string\n ): ((endTimestamp: number, error?: any) => void) | null {\n if (!this._panelKey) {\n return null;\n }\n\n this._activeQueries.set(queryId, { entry, startTime: timestamp });\n\n const operationId = generateOperationId('query');\n\n // ✅ Use panel operation tracking for panel queries\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n pluginVersion: this._pluginVersion,\n operation: 'query',\n timestamp,\n metadata: {\n queryId: queryId,\n queryType: entry.type,\n },\n });\n\n // Return end callback with captured operationId and query context\n const callback = (endTimestamp: number, error?: any) => {\n if (!this._panelKey) {\n return;\n }\n\n const queryInfo = this._activeQueries.get(queryId);\n if (!queryInfo) {\n return;\n }\n\n const duration = endTimestamp - queryInfo.startTime;\n this._activeQueries.delete(queryId);\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n pluginVersion: this._pluginVersion,\n operation: 'query',\n timestamp: endTimestamp,\n duration: duration,\n metadata: {\n queryId: queryId,\n queryType: entry.type,\n },\n error: error ? error?.message || String(error) || 'Unknown error' : undefined,\n });\n };\n return callback;\n }\n\n /**\n * Track plugin loading with operation ID correlation\n */\n public onPluginLoadStart(pluginId: string): ((plugin: any, fromCache?: boolean) => void) | null {\n // Initialize early since plugin loading happens before _onActivate\n if (!this._panelKey) {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n return null;\n }\n\n if (panel && !this._panelKey && panel.state.key) {\n this._panelKey = panel.state.key;\n this._panelId = String(panel.getLegacyPanelId());\n this._pluginId = pluginId;\n }\n }\n\n if (!this._panelKey) {\n return null;\n }\n\n if (!this._isTracking) {\n this._startTracking();\n }\n\n this._loadPluginStartTime = performance.now();\n\n const operationId = generateOperationId('pluginLoad');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'plugin-load',\n timestamp: this._loadPluginStartTime,\n metadata: {\n pluginId,\n },\n });\n\n // Return end callback with captured operationId and panel context\n const callback = (plugin: any, fromCache = false) => {\n if (!this._panelKey || !this._loadPluginStartTime) {\n return;\n }\n\n const duration = performance.now() - this._loadPluginStartTime;\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'plugin-load',\n timestamp: performance.now(),\n duration,\n metadata: {\n pluginId: this._pluginId!,\n fromCache,\n pluginLoadTime: duration,\n },\n });\n\n this._loadPluginStartTime = undefined;\n };\n return callback;\n }\n\n /**\n * Track field config processing with operation ID correlation\n */\n public onFieldConfigStart(\n timestamp: number\n ): ((endTimestamp: number, dataPointsCount?: number, seriesCount?: number) => void) | null {\n if (!this._panelKey) {\n return null;\n }\n\n this._applyFieldConfigStartTime = timestamp;\n\n const operationId = generateOperationId('fieldConfig');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'fieldConfig',\n timestamp: this._applyFieldConfigStartTime,\n metadata: {},\n });\n\n // Return end callback with captured operationId and panel context\n const callback = (endTimestamp: number, dataPointsCount?: number, seriesCount?: number) => {\n if (!this._panelKey || !this._applyFieldConfigStartTime) {\n return;\n }\n\n const duration = endTimestamp - this._applyFieldConfigStartTime;\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'fieldConfig',\n timestamp: endTimestamp,\n duration,\n metadata: {},\n });\n\n this._applyFieldConfigStartTime = undefined;\n };\n return callback;\n }\n\n /**\n * Get panel info for logging - truncates long titles for readability\n */\n private _getPanelInfo(): string {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n // If we can't find the panel, use fallback info\n }\n\n let panelTitle = panel?.state.title || this._panelKey || 'No-key panel';\n\n if (panelTitle.length > 30) {\n panelTitle = panelTitle.substring(0, 27) + '...';\n }\n\n return `VizPanelRenderProfiler [${panelTitle}]`;\n }\n\n /**\n * Track simple render timing with operation ID correlation\n */\n public onSimpleRenderStart(timestamp: number): ((endTimestamp: number, duration: number) => void) | undefined {\n if (!this._panelKey) {\n return undefined;\n }\n\n const operationId = generateOperationId('render');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId || 'unknown',\n panelKey: this._panelKey,\n pluginId: this._pluginId || 'unknown',\n pluginVersion: this._pluginVersion,\n operation: 'render',\n timestamp,\n metadata: {},\n });\n\n // Return end callback with captured operationId and panel context\n return (endTimestamp: number, duration: number) => {\n if (!this._panelKey) {\n return;\n }\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId || 'unknown',\n panelKey: this._panelKey,\n pluginId: this._pluginId || 'unknown',\n pluginVersion: this._pluginVersion,\n operation: 'render',\n duration,\n timestamp: endTimestamp,\n metadata: {},\n });\n };\n }\n\n /** Handle plugin changes */\n private _onPluginChange(panel: VizPanel, newPluginId: string) {\n this._pluginId = newPluginId;\n const plugin = panel.getPlugin();\n this._pluginVersion = plugin?.meta?.info?.version;\n\n writeSceneLog(this._getPanelInfo(), `Plugin changed to ${newPluginId}`);\n }\n\n /** Start tracking this panel */\n private _startTracking() {\n if (!this._panelKey || !this._pluginId || this._isTracking) {\n return;\n }\n\n this._isTracking = true;\n }\n\n /** Cleanup when behavior is deactivated */\n private _cleanup() {\n this._activeQueries.clear();\n this._isTracking = false;\n writeSceneLog(this._getPanelInfo(), 'Cleaned up');\n }\n\n /**\n * Track data transformation with operation ID correlation\n */\n public onDataTransformStart(\n timestamp: number,\n transformationId: string,\n metrics: {\n transformationCount: number;\n seriesTransformationCount: number;\n annotationTransformationCount: number;\n }\n ):\n | ((\n endTimestamp: number,\n duration: number,\n success: boolean,\n result?: {\n error?: string;\n }\n ) => void)\n | null {\n if (!this._panelKey) {\n return null;\n }\n\n const operationId = generateOperationId('transform');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'transform',\n timestamp,\n metadata: {\n transformationId,\n transformationCount: metrics.transformationCount,\n seriesTransformationCount: metrics.seriesTransformationCount,\n annotationTransformationCount: metrics.annotationTransformationCount,\n },\n });\n\n // Return end callback with captured operationId and panel context\n const callback = (\n endTimestamp: number,\n duration: number,\n success: boolean,\n result?: {\n outputSeriesCount?: number;\n outputAnnotationsCount?: number;\n error?: string;\n }\n ) => {\n if (!this._panelKey) {\n return;\n }\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'transform',\n timestamp: endTimestamp,\n duration,\n metadata: {\n transformationId,\n transformationCount: metrics.transformationCount,\n seriesTransformationCount: metrics.seriesTransformationCount,\n annotationTransformationCount: metrics.annotationTransformationCount,\n success,\n error: result?.error || (!success ? 'Transform operation failed' : undefined),\n },\n });\n };\n return callback;\n }\n}\n"],"names":[],"mappings":";;;;;;AAkBO,MAAM,+BAA+B,eAA0E,CAAA;AAAA,EAU7G,WAAA,CAAY,KAA8C,GAAA,EAAI,EAAA;AACnE,IAAM,KAAA,CAAA;AAAA,MACJ,GAAG;AAAA,KACJ,CAAA;AARH,IAAA,IAAA,CAAQ,WAAc,GAAA,KAAA;AAGtB,IAAQ,IAAA,CAAA,cAAA,uBAAqB,GAAqE,EAAA;AAOhG,IAAA,IAAA,CAAK,qBAAqB,MAAM;AAC9B,MAAA,OAAO,KAAK,WAAY,EAAA;AAAA,KACzB,CAAA;AAAA;AACH,EAEQ,WAAc,GAAA;AAtCxB,IAAA,IAAA,EAAA,EAAA,EAAA;AAuCI,IAAI,IAAA,KAAA;AAEJ,IAAI,IAAA;AACF,MAAQ,KAAA,GAAA,UAAA,CAAW,WAAY,CAAA,IAAA,EAAM,QAAQ,CAAA;AAAA,aACtC,KAAO,EAAA;AACd,MAAc,aAAA,CAAA,wBAAA,EAA0B,oCAAoC,KAAK,CAAA;AACjF,MAAA;AAAA;AAGF,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,aAAA,CAAc,0BAA0B,4BAA4B,CAAA;AACpE,MAAA;AAAA;AAGF,IAAI,IAAA,CAAC,KAAM,CAAA,KAAA,CAAM,GAAK,EAAA;AACpB,MAAA,aAAA,CAAc,0BAA0B,qCAAqC,CAAA;AAC7E,MAAA;AAAA;AAGF,IAAK,IAAA,CAAA,SAAA,GAAY,MAAM,KAAM,CAAA,GAAA;AAC7B,IAAA,IAAA,CAAK,QAAW,GAAA,MAAA,CAAO,KAAM,CAAA,gBAAA,EAAkB,CAAA;AAC/C,IAAK,IAAA,CAAA,SAAA,GAAY,MAAM,KAAM,CAAA,QAAA;AAC7B,IAAM,MAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAC/B,IAAA,IAAA,CAAK,cAAiB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,IAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,SAAd,IAAoB,GAAA,MAAA,GAAA,EAAA,CAAA,OAAA;AAE1C,IAAA,IAAA,CAAK,KAAM,CAAA,GAAA;AAAA,MACT,KAAM,CAAA,gBAAA,CAAiB,CAAC,QAAA,EAAU,SAAc,KAAA;AAC9C,QAAK,IAAA,CAAA,uBAAA,CAAwB,KAAO,EAAA,QAAA,EAAU,SAAS,CAAA;AAAA,OACxD;AAAA,KACH;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,QAAS,EAAA;AAAA,KAChB;AAAA;AACF,EAEQ,uBAAA,CAAwB,KAAiB,EAAA,QAAA,EAAe,SAAgB,EAAA;AAC9E,IAAI,IAAA,QAAA,CAAS,QAAa,KAAA,SAAA,CAAU,QAAU,EAAA;AAC5C,MAAK,IAAA,CAAA,eAAA,CAAgB,KAAO,EAAA,QAAA,CAAS,QAAQ,CAAA;AAAA;AAC/C;AACF;AAAA;AAAA;AAAA,EAKO,cAAA,CACL,SACA,EAAA,KAAA,EACA,OACsD,EAAA;AACtD,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAA,CAAK,eAAe,GAAI,CAAA,OAAA,EAAS,EAAE,KAAO,EAAA,SAAA,EAAW,WAAW,CAAA;AAEhE,IAAM,MAAA,WAAA,GAAc,oBAAoB,OAAO,CAAA;AAG/C,IAAA,0BAAA,GAA6B,yBAA0B,CAAA;AAAA,MACrD,WAAA;AAAA,MACA,SAAS,IAAK,CAAA,QAAA;AAAA,MACd,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,eAAe,IAAK,CAAA,cAAA;AAAA,MACpB,SAAW,EAAA,OAAA;AAAA,MACX,SAAA;AAAA,MACA,QAAU,EAAA;AAAA,QACR,OAAA;AAAA,QACA,WAAW,KAAM,CAAA;AAAA;AACnB,KACD,CAAA;AAGD,IAAM,MAAA,QAAA,GAAW,CAAC,YAAA,EAAsB,KAAgB,KAAA;AACtD,MAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,QAAA;AAAA;AAGF,MAAA,MAAM,SAAY,GAAA,IAAA,CAAK,cAAe,CAAA,GAAA,CAAI,OAAO,CAAA;AACjD,MAAA,IAAI,CAAC,SAAW,EAAA;AACd,QAAA;AAAA;AAGF,MAAM,MAAA,QAAA,GAAW,eAAe,SAAU,CAAA,SAAA;AAC1C,MAAK,IAAA,CAAA,cAAA,CAAe,OAAO,OAAO,CAAA;AAElC,MAAA,0BAAA,GAA6B,4BAA6B,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,SAAS,IAAK,CAAA,QAAA;AAAA,QACd,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,eAAe,IAAK,CAAA,cAAA;AAAA,QACpB,SAAW,EAAA,OAAA;AAAA,QACX,SAAW,EAAA,YAAA;AAAA,QACX,QAAA;AAAA,QACA,QAAU,EAAA;AAAA,UACR,OAAA;AAAA,UACA,WAAW,KAAM,CAAA;AAAA,SACnB;AAAA,QACA,OAAO,KAAQ,GAAA,CAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,YAAW,MAAO,CAAA,KAAK,KAAK,eAAkB,GAAA;AAAA,OACrE,CAAA;AAAA,KACH;AACA,IAAO,OAAA,QAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,kBAAkB,QAAuE,EAAA;AAE9F,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAI,IAAA,KAAA;AAEJ,MAAI,IAAA;AACF,QAAQ,KAAA,GAAA,UAAA,CAAW,WAAY,CAAA,IAAA,EAAM,QAAQ,CAAA;AAAA,eACtC,KAAO,EAAA;AACd,QAAO,OAAA,IAAA;AAAA;AAGT,MAAA,IAAI,SAAS,CAAC,IAAA,CAAK,SAAa,IAAA,KAAA,CAAM,MAAM,GAAK,EAAA;AAC/C,QAAK,IAAA,CAAA,SAAA,GAAY,MAAM,KAAM,CAAA,GAAA;AAC7B,QAAA,IAAA,CAAK,QAAW,GAAA,MAAA,CAAO,KAAM,CAAA,gBAAA,EAAkB,CAAA;AAC/C,QAAA,IAAA,CAAK,SAAY,GAAA,QAAA;AAAA;AACnB;AAGF,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAA,IAAA,CAAK,cAAe,EAAA;AAAA;AAGtB,IAAK,IAAA,CAAA,oBAAA,GAAuB,YAAY,GAAI,EAAA;AAE5C,IAAM,MAAA,WAAA,GAAc,oBAAoB,YAAY,CAAA;AACpD,IAAA,0BAAA,GAA6B,yBAA0B,CAAA;AAAA,MACrD,WAAA;AAAA,MACA,SAAS,IAAK,CAAA,QAAA;AAAA,MACd,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,SAAW,EAAA,aAAA;AAAA,MACX,WAAW,IAAK,CAAA,oBAAA;AAAA,MAChB,QAAU,EAAA;AAAA,QACR;AAAA;AACF,KACD,CAAA;AAGD,IAAA,MAAM,QAAW,GAAA,CAAC,MAAa,EAAA,SAAA,GAAY,KAAU,KAAA;AACnD,MAAA,IAAI,CAAC,IAAA,CAAK,SAAa,IAAA,CAAC,KAAK,oBAAsB,EAAA;AACjD,QAAA;AAAA;AAGF,MAAA,MAAM,QAAW,GAAA,WAAA,CAAY,GAAI,EAAA,GAAI,IAAK,CAAA,oBAAA;AAE1C,MAAA,0BAAA,GAA6B,4BAA6B,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,SAAS,IAAK,CAAA,QAAA;AAAA,QACd,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,SAAW,EAAA,aAAA;AAAA,QACX,SAAA,EAAW,YAAY,GAAI,EAAA;AAAA,QAC3B,QAAA;AAAA,QACA,QAAU,EAAA;AAAA,UACR,UAAU,IAAK,CAAA,SAAA;AAAA,UACf,SAAA;AAAA,UACA,cAAgB,EAAA;AAAA;AAClB,OACD,CAAA;AAED,MAAA,IAAA,CAAK,oBAAuB,GAAA,MAAA;AAAA,KAC9B;AACA,IAAO,OAAA,QAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,mBACL,SACyF,EAAA;AACzF,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAA,CAAK,0BAA6B,GAAA,SAAA;AAElC,IAAM,MAAA,WAAA,GAAc,oBAAoB,aAAa,CAAA;AACrD,IAAA,0BAAA,GAA6B,yBAA0B,CAAA;AAAA,MACrD,WAAA;AAAA,MACA,SAAS,IAAK,CAAA,QAAA;AAAA,MACd,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,SAAW,EAAA,aAAA;AAAA,MACX,WAAW,IAAK,CAAA,0BAAA;AAAA,MAChB,UAAU;AAAC,KACZ,CAAA;AAGD,IAAA,MAAM,QAAW,GAAA,CAAC,YAAsB,EAAA,eAAA,EAA0B,WAAyB,KAAA;AACzF,MAAA,IAAI,CAAC,IAAA,CAAK,SAAa,IAAA,CAAC,KAAK,0BAA4B,EAAA;AACvD,QAAA;AAAA;AAGF,MAAM,MAAA,QAAA,GAAW,eAAe,IAAK,CAAA,0BAAA;AAErC,MAAA,0BAAA,GAA6B,4BAA6B,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,SAAS,IAAK,CAAA,QAAA;AAAA,QACd,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,SAAW,EAAA,aAAA;AAAA,QACX,SAAW,EAAA,YAAA;AAAA,QACX,QAAA;AAAA,QACA,UAAU;AAAC,OACZ,CAAA;AAED,MAAA,IAAA,CAAK,0BAA6B,GAAA,MAAA;AAAA,KACpC;AACA,IAAO,OAAA,QAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKQ,aAAwB,GAAA;AAC9B,IAAI,IAAA,KAAA;AAEJ,IAAI,IAAA;AACF,MAAQ,KAAA,GAAA,UAAA,CAAW,WAAY,CAAA,IAAA,EAAM,QAAQ,CAAA;AAAA,aACtC,KAAO,EAAA;AAAA;AAIhB,IAAA,IAAI,UAAa,GAAA,CAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAM,CAAA,KAAA,KAAS,KAAK,SAAa,IAAA,cAAA;AAEzD,IAAI,IAAA,UAAA,CAAW,SAAS,EAAI,EAAA;AAC1B,MAAA,UAAA,GAAa,UAAW,CAAA,SAAA,CAAU,CAAG,EAAA,EAAE,CAAI,GAAA,KAAA;AAAA;AAG7C,IAAA,OAAO,2BAA2B,UAAU,CAAA,CAAA,CAAA;AAAA;AAC9C;AAAA;AAAA;AAAA,EAKO,oBAAoB,SAAmF,EAAA;AAC5G,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAO,OAAA,MAAA;AAAA;AAGT,IAAM,MAAA,WAAA,GAAc,oBAAoB,QAAQ,CAAA;AAChD,IAAA,0BAAA,GAA6B,yBAA0B,CAAA;AAAA,MACrD,WAAA;AAAA,MACA,OAAA,EAAS,KAAK,QAAY,IAAA,SAAA;AAAA,MAC1B,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,QAAA,EAAU,KAAK,SAAa,IAAA,SAAA;AAAA,MAC5B,eAAe,IAAK,CAAA,cAAA;AAAA,MACpB,SAAW,EAAA,QAAA;AAAA,MACX,SAAA;AAAA,MACA,UAAU;AAAC,KACZ,CAAA;AAGD,IAAO,OAAA,CAAC,cAAsB,QAAqB,KAAA;AACjD,MAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,QAAA;AAAA;AAGF,MAAA,0BAAA,GAA6B,4BAA6B,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,OAAA,EAAS,KAAK,QAAY,IAAA,SAAA;AAAA,QAC1B,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,QAAA,EAAU,KAAK,SAAa,IAAA,SAAA;AAAA,QAC5B,eAAe,IAAK,CAAA,cAAA;AAAA,QACpB,SAAW,EAAA,QAAA;AAAA,QACX,QAAA;AAAA,QACA,SAAW,EAAA,YAAA;AAAA,QACX,UAAU;AAAC,OACZ,CAAA;AAAA,KACH;AAAA;AACF;AAAA,EAGQ,eAAA,CAAgB,OAAiB,WAAqB,EAAA;AAtUhE,IAAA,IAAA,EAAA,EAAA,EAAA;AAuUI,IAAA,IAAA,CAAK,SAAY,GAAA,WAAA;AACjB,IAAM,MAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAC/B,IAAA,IAAA,CAAK,cAAiB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,IAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,SAAd,IAAoB,GAAA,MAAA,GAAA,EAAA,CAAA,OAAA;AAE1C,IAAA,aAAA,CAAc,IAAK,CAAA,aAAA,EAAiB,EAAA,CAAA,kBAAA,EAAqB,WAAW,CAAE,CAAA,CAAA;AAAA;AACxE;AAAA,EAGQ,cAAiB,GAAA;AACvB,IAAA,IAAI,CAAC,IAAK,CAAA,SAAA,IAAa,CAAC,IAAK,CAAA,SAAA,IAAa,KAAK,WAAa,EAAA;AAC1D,MAAA;AAAA;AAGF,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA;AAAA;AACrB;AAAA,EAGQ,QAAW,GAAA;AACjB,IAAA,IAAA,CAAK,eAAe,KAAM,EAAA;AAC1B,IAAA,IAAA,CAAK,WAAc,GAAA,KAAA;AACnB,IAAc,aAAA,CAAA,IAAA,CAAK,aAAc,EAAA,EAAG,YAAY,CAAA;AAAA;AAClD;AAAA;AAAA;AAAA,EAKO,oBAAA,CACL,SACA,EAAA,gBAAA,EACA,OAcO,EAAA;AACP,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAM,MAAA,WAAA,GAAc,oBAAoB,WAAW,CAAA;AACnD,IAAA,0BAAA,GAA6B,yBAA0B,CAAA;AAAA,MACrD,WAAA;AAAA,MACA,SAAS,IAAK,CAAA,QAAA;AAAA,MACd,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,SAAW,EAAA,WAAA;AAAA,MACX,SAAA;AAAA,MACA,QAAU,EAAA;AAAA,QACR,gBAAA;AAAA,QACA,qBAAqB,OAAQ,CAAA,mBAAA;AAAA,QAC7B,2BAA2B,OAAQ,CAAA,yBAAA;AAAA,QACnC,+BAA+B,OAAQ,CAAA;AAAA;AACzC,KACD,CAAA;AAGD,IAAA,MAAM,QAAW,GAAA,CACf,YACA,EAAA,QAAA,EACA,SACA,MAKG,KAAA;AACH,MAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACnB,QAAA;AAAA;AAGF,MAAA,0BAAA,GAA6B,4BAA6B,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,SAAS,IAAK,CAAA,QAAA;AAAA,QACd,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,UAAU,IAAK,CAAA,SAAA;AAAA,QACf,SAAW,EAAA,WAAA;AAAA,QACX,SAAW,EAAA,YAAA;AAAA,QACX,QAAA;AAAA,QACA,QAAU,EAAA;AAAA,UACR,gBAAA;AAAA,UACA,qBAAqB,OAAQ,CAAA,mBAAA;AAAA,UAC7B,2BAA2B,OAAQ,CAAA,yBAAA;AAAA,UACnC,+BAA+B,OAAQ,CAAA,6BAAA;AAAA,UACvC,OAAA;AAAA,UACA,KAAO,EAAA,CAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,KAAU,MAAA,CAAC,UAAU,4BAA+B,GAAA,MAAA;AAAA;AACrE,OACD,CAAA;AAAA,KACH;AACA,IAAO,OAAA,QAAA;AAAA;AAEX;;;;"}
|
|
1
|
+
{"version":3,"file":"VizPanelRenderProfiler.js","sources":["../../../src/performance/VizPanelRenderProfiler.ts"],"sourcesContent":["import { SceneObjectBase } from '../core/SceneObjectBase';\nimport { SceneObjectState } from '../core/types';\nimport { VizPanel } from '../components/VizPanel/VizPanel';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneQueryControllerEntry } from '../behaviors/types';\nimport { QueryProfilerLike } from '../querying/registerQueryWithController';\nimport {\n QueryCompletionCallback,\n PluginLoadCompletionCallback,\n FieldConfigCompletionCallback,\n RenderCompletionCallback,\n DataTransformCompletionCallback,\n} from './types';\nimport { getScenePerformanceTracker, generateOperationId } from './ScenePerformanceTracker';\n\nexport interface VizPanelRenderProfilerState extends SceneObjectState {}\n\n/**\n * Tracks performance metrics for individual VizPanel instances using observer pattern.\n *\n * Performance events are sent to ScenePerformanceTracker observers, which are consumed\n * by Grafana's ScenePerformanceLogger and DashboardAnalyticsAggregator.\n */\n\nexport class VizPanelRenderProfiler extends SceneObjectBase<VizPanelRenderProfilerState> implements QueryProfilerLike {\n private _panelKey?: string;\n private _panelId?: string;\n private _pluginId?: string;\n private _pluginVersion?: string;\n private _isTracking = false;\n private _loadPluginStartTime?: number;\n private _applyFieldConfigStartTime?: number;\n private _activeQueries = new Map<string, { entry: SceneQueryControllerEntry; startTime: number }>();\n\n public constructor(state: Partial<VizPanelRenderProfilerState> = {}) {\n super({\n ...state,\n });\n\n this.addActivationHandler(() => {\n return this._onActivate();\n });\n }\n\n private _onActivate() {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n writeSceneLog('VizPanelRenderProfiler', 'Failed to find VizPanel ancestor', error);\n return;\n }\n\n if (!panel) {\n writeSceneLog('VizPanelRenderProfiler', 'Not attached to a VizPanel');\n return;\n }\n\n if (!panel.state.key) {\n writeSceneLog('VizPanelRenderProfiler', 'Panel has no key, skipping tracking');\n return;\n }\n\n this._panelKey = panel.state.key;\n this._panelId = String(panel.getLegacyPanelId());\n this._pluginId = panel.state.pluginId;\n const plugin = panel.getPlugin();\n this._pluginVersion = plugin?.meta?.info?.version;\n\n this._subs.add(\n panel.subscribeToState((newState, prevState) => {\n this._handlePanelStateChange(panel, newState, prevState);\n })\n );\n\n return () => {\n this._cleanup();\n };\n }\n\n private _handlePanelStateChange(panel: VizPanel, newState: any, prevState: any) {\n if (newState.pluginId !== prevState.pluginId) {\n this._onPluginChange(panel, newState.pluginId);\n }\n }\n\n /**\n * Track query execution with operation ID correlation\n */\n public onQueryStarted(\n timestamp: number,\n entry: SceneQueryControllerEntry,\n queryId: string\n ): QueryCompletionCallback | null {\n if (!this._panelKey) {\n return null;\n }\n\n this._activeQueries.set(queryId, { entry, startTime: timestamp });\n\n const operationId = generateOperationId('query');\n\n // ✅ Use panel operation tracking for panel queries\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n pluginVersion: this._pluginVersion,\n operation: 'query',\n timestamp,\n metadata: {\n queryId: queryId,\n queryType: entry.type,\n },\n });\n\n // Return end callback with captured operationId and query context\n return (endTimestamp: number, error?: any) => {\n if (!this._panelKey) {\n return;\n }\n\n const queryInfo = this._activeQueries.get(queryId);\n if (!queryInfo) {\n return;\n }\n\n const duration = endTimestamp - queryInfo.startTime;\n this._activeQueries.delete(queryId);\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n pluginVersion: this._pluginVersion,\n operation: 'query',\n timestamp: endTimestamp,\n duration: duration,\n metadata: {\n queryId: queryId,\n queryType: entry.type,\n },\n error: error ? error?.message || String(error) || 'Unknown error' : undefined,\n });\n };\n }\n\n /**\n * Track plugin loading with operation ID correlation\n */\n public onPluginLoadStart(pluginId: string): PluginLoadCompletionCallback | null {\n // Initialize early since plugin loading happens before _onActivate\n if (!this._panelKey) {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n return null;\n }\n\n if (panel && !this._panelKey && panel.state.key) {\n this._panelKey = panel.state.key;\n this._panelId = String(panel.getLegacyPanelId());\n this._pluginId = pluginId;\n }\n }\n\n if (!this._panelKey) {\n return null;\n }\n\n if (!this._isTracking) {\n this._startTracking();\n }\n\n this._loadPluginStartTime = performance.now();\n\n const operationId = generateOperationId('pluginLoad');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'plugin-load',\n timestamp: this._loadPluginStartTime,\n metadata: {\n pluginId,\n },\n });\n\n // Return end callback with captured operationId and panel context\n return (plugin: any, fromCache = false) => {\n if (!this._panelKey || !this._loadPluginStartTime) {\n return;\n }\n\n const duration = performance.now() - this._loadPluginStartTime;\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'plugin-load',\n timestamp: performance.now(),\n duration,\n metadata: {\n pluginId: this._pluginId!,\n fromCache,\n pluginLoadTime: duration,\n },\n });\n\n this._loadPluginStartTime = undefined;\n };\n }\n\n /**\n * Track field config processing with operation ID correlation\n */\n public onFieldConfigStart(timestamp: number): FieldConfigCompletionCallback | null {\n if (!this._panelKey) {\n return null;\n }\n\n this._applyFieldConfigStartTime = timestamp;\n\n const operationId = generateOperationId('fieldConfig');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'fieldConfig',\n timestamp: this._applyFieldConfigStartTime,\n metadata: {},\n });\n\n // Return end callback with captured operationId and panel context\n return (endTimestamp: number, dataPointsCount?: number, seriesCount?: number) => {\n if (!this._panelKey || !this._applyFieldConfigStartTime) {\n return;\n }\n\n const duration = endTimestamp - this._applyFieldConfigStartTime;\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'fieldConfig',\n timestamp: endTimestamp,\n duration,\n metadata: {},\n });\n\n this._applyFieldConfigStartTime = undefined;\n };\n }\n\n /**\n * Get panel info for logging - truncates long titles for readability\n */\n private _getPanelInfo(): string {\n let panel: VizPanel | undefined;\n\n try {\n panel = sceneGraph.getAncestor(this, VizPanel);\n } catch (error) {\n // If we can't find the panel, use fallback info\n }\n\n let panelTitle = panel?.state.title || this._panelKey || 'No-key panel';\n\n if (panelTitle.length > 30) {\n panelTitle = panelTitle.substring(0, 27) + '...';\n }\n\n return `VizPanelRenderProfiler [${panelTitle}]`;\n }\n\n /**\n * Track simple render timing with operation ID correlation\n */\n public onSimpleRenderStart(timestamp: number): RenderCompletionCallback | undefined {\n if (!this._panelKey) {\n return undefined;\n }\n\n const operationId = generateOperationId('render');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId || 'unknown',\n panelKey: this._panelKey,\n pluginId: this._pluginId || 'unknown',\n pluginVersion: this._pluginVersion,\n operation: 'render',\n timestamp,\n metadata: {},\n });\n\n // Return end callback with captured operationId and panel context\n return (endTimestamp: number, duration: number) => {\n if (!this._panelKey) {\n return;\n }\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId || 'unknown',\n panelKey: this._panelKey,\n pluginId: this._pluginId || 'unknown',\n pluginVersion: this._pluginVersion,\n operation: 'render',\n duration,\n timestamp: endTimestamp,\n metadata: {},\n });\n };\n }\n\n /** Handle plugin changes */\n private _onPluginChange(panel: VizPanel, newPluginId: string) {\n this._pluginId = newPluginId;\n const plugin = panel.getPlugin();\n this._pluginVersion = plugin?.meta?.info?.version;\n\n writeSceneLog(this._getPanelInfo(), `Plugin changed to ${newPluginId}`);\n }\n\n /** Start tracking this panel */\n private _startTracking() {\n if (!this._panelKey || !this._pluginId || this._isTracking) {\n return;\n }\n\n this._isTracking = true;\n }\n\n /** Cleanup when behavior is deactivated */\n private _cleanup() {\n this._activeQueries.clear();\n this._isTracking = false;\n writeSceneLog(this._getPanelInfo(), 'Cleaned up');\n }\n\n /**\n * Track data transformation with operation ID correlation\n */\n public onDataTransformStart(\n timestamp: number,\n transformationId: string,\n metrics: {\n transformationCount: number;\n seriesTransformationCount: number;\n annotationTransformationCount: number;\n }\n ): DataTransformCompletionCallback | null {\n if (!this._panelKey) {\n return null;\n }\n\n const operationId = generateOperationId('transform');\n getScenePerformanceTracker().notifyPanelOperationStart({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'transform',\n timestamp,\n metadata: {\n transformationId,\n transformationCount: metrics.transformationCount,\n seriesTransformationCount: metrics.seriesTransformationCount,\n annotationTransformationCount: metrics.annotationTransformationCount,\n },\n });\n\n // Return end callback with captured operationId and panel context\n return (\n endTimestamp: number,\n duration: number,\n success: boolean,\n result?: {\n outputSeriesCount?: number;\n outputAnnotationsCount?: number;\n error?: string;\n }\n ) => {\n if (!this._panelKey) {\n return;\n }\n\n getScenePerformanceTracker().notifyPanelOperationComplete({\n operationId,\n panelId: this._panelId!,\n panelKey: this._panelKey,\n pluginId: this._pluginId!,\n operation: 'transform',\n timestamp: endTimestamp,\n duration,\n metadata: {\n transformationId,\n transformationCount: metrics.transformationCount,\n seriesTransformationCount: metrics.seriesTransformationCount,\n annotationTransformationCount: metrics.annotationTransformationCount,\n success,\n error: result?.error || (!success ? 'Transform operation failed' : undefined),\n },\n });\n };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
export { SceneRenderProfiler } from './SceneRenderProfiler.js';
|
|
2
|
-
export {
|
|
3
|
-
export { PanelProfilingManager } from './PanelProfilingManager.js';
|
|
4
|
-
export { LongFrameDetector } from './LongFrameDetector.js';
|
|
5
|
-
export { ScenePerformanceTracker, generateOperationId, getScenePerformanceTracker } from './ScenePerformanceTracker.js';
|
|
6
|
-
export { ADHOC_KEYS_DROPDOWN_INTERACTION, ADHOC_VALUES_DROPDOWN_INTERACTION, FILTER_ADDED_INTERACTION, FILTER_CHANGED_INTERACTION, FILTER_REMOVED_INTERACTION, FILTER_RESTORED_INTERACTION, GROUPBY_DIMENSIONS_INTERACTION, REFRESH_INTERACTION, SCOPES_CHANGED_INTERACTION, TIME_RANGE_CHANGE_INTERACTION, VARIABLE_VALUE_CHANGED_INTERACTION } from './interactionConstants.js';
|
|
2
|
+
export { getScenePerformanceTracker } from './ScenePerformanceTracker.js';
|
|
7
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const REFRESH_INTERACTION = "refresh";
|
|
2
2
|
const TIME_RANGE_CHANGE_INTERACTION = "time_range_change";
|
|
3
|
-
const FILTER_ADDED_INTERACTION = "filter_added";
|
|
4
3
|
const FILTER_REMOVED_INTERACTION = "filter_removed";
|
|
5
4
|
const FILTER_CHANGED_INTERACTION = "filter_changed";
|
|
6
5
|
const FILTER_RESTORED_INTERACTION = "filter_restored";
|
|
@@ -10,5 +9,5 @@ const ADHOC_KEYS_DROPDOWN_INTERACTION = "adhoc_keys_dropdown";
|
|
|
10
9
|
const ADHOC_VALUES_DROPDOWN_INTERACTION = "adhoc_values_dropdown";
|
|
11
10
|
const GROUPBY_DIMENSIONS_INTERACTION = "groupby_dimensions";
|
|
12
11
|
|
|
13
|
-
export { ADHOC_KEYS_DROPDOWN_INTERACTION, ADHOC_VALUES_DROPDOWN_INTERACTION,
|
|
12
|
+
export { ADHOC_KEYS_DROPDOWN_INTERACTION, ADHOC_VALUES_DROPDOWN_INTERACTION, FILTER_CHANGED_INTERACTION, FILTER_REMOVED_INTERACTION, FILTER_RESTORED_INTERACTION, GROUPBY_DIMENSIONS_INTERACTION, REFRESH_INTERACTION, SCOPES_CHANGED_INTERACTION, TIME_RANGE_CHANGE_INTERACTION, VARIABLE_VALUE_CHANGED_INTERACTION };
|
|
14
13
|
//# sourceMappingURL=interactionConstants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionConstants.js","sources":["../../../src/performance/interactionConstants.ts"],"sourcesContent":["/**\n * Constants for different types of dashboard interactions tracked by SceneRenderProfiler\n */\n\nexport const REFRESH_INTERACTION = 'refresh';\nexport const TIME_RANGE_CHANGE_INTERACTION = 'time_range_change';\nexport const FILTER_ADDED_INTERACTION = 'filter_added';\nexport const FILTER_REMOVED_INTERACTION = 'filter_removed';\nexport const FILTER_CHANGED_INTERACTION = 'filter_changed';\nexport const FILTER_RESTORED_INTERACTION = 'filter_restored';\nexport const VARIABLE_VALUE_CHANGED_INTERACTION = 'variable_value_changed';\nexport const SCOPES_CHANGED_INTERACTION = 'scopes_changed';\nexport const ADHOC_KEYS_DROPDOWN_INTERACTION = 'adhoc_keys_dropdown';\nexport const ADHOC_VALUES_DROPDOWN_INTERACTION = 'adhoc_values_dropdown';\nexport const GROUPBY_DIMENSIONS_INTERACTION = 'groupby_dimensions';\n"],"names":[],"mappings":"AAIO,MAAM,mBAAsB,GAAA;AAC5B,MAAM,6BAAgC,GAAA;
|
|
1
|
+
{"version":3,"file":"interactionConstants.js","sources":["../../../src/performance/interactionConstants.ts"],"sourcesContent":["/**\n * Constants for different types of dashboard interactions tracked by SceneRenderProfiler\n */\n\nexport const REFRESH_INTERACTION = 'refresh';\nexport const TIME_RANGE_CHANGE_INTERACTION = 'time_range_change';\nexport const FILTER_ADDED_INTERACTION = 'filter_added';\nexport const FILTER_REMOVED_INTERACTION = 'filter_removed';\nexport const FILTER_CHANGED_INTERACTION = 'filter_changed';\nexport const FILTER_RESTORED_INTERACTION = 'filter_restored';\nexport const VARIABLE_VALUE_CHANGED_INTERACTION = 'variable_value_changed';\nexport const SCOPES_CHANGED_INTERACTION = 'scopes_changed';\nexport const ADHOC_KEYS_DROPDOWN_INTERACTION = 'adhoc_keys_dropdown';\nexport const ADHOC_VALUES_DROPDOWN_INTERACTION = 'adhoc_values_dropdown';\nexport const GROUPBY_DIMENSIONS_INTERACTION = 'groupby_dimensions';\n"],"names":[],"mappings":"AAIO,MAAM,mBAAsB,GAAA;AAC5B,MAAM,6BAAgC,GAAA;AAEtC,MAAM,0BAA6B,GAAA;AACnC,MAAM,0BAA6B,GAAA;AACnC,MAAM,2BAA8B,GAAA;AACpC,MAAM,kCAAqC,GAAA;AAC3C,MAAM,0BAA6B,GAAA;AACnC,MAAM,+BAAkC,GAAA;AACxC,MAAM,iCAAoC,GAAA;AAC1C,MAAM,8BAAiC,GAAA;;;;"}
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { Observable, from, map, catchError } from 'rxjs';
|
|
2
2
|
import { LoadingState } from '@grafana/schema';
|
|
3
3
|
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
4
|
-
import '../performance/SceneRenderProfiler.js';
|
|
5
|
-
import 'react';
|
|
6
|
-
import 'uuid';
|
|
7
|
-
import '@grafana/data';
|
|
8
|
-
import '../core/SceneComponentWrapper.js';
|
|
9
|
-
import '../core/events.js';
|
|
10
|
-
import '../core/SceneObjectRef.js';
|
|
11
|
-
import 'lodash';
|
|
12
|
-
import '../components/VizPanel/VizPanel.js';
|
|
13
4
|
import { getScenePerformanceTracker, generateOperationId } from '../performance/ScenePerformanceTracker.js';
|
|
14
|
-
import '../performance/LongFrameDetector.js';
|
|
15
5
|
|
|
16
6
|
function registerQueryWithController(entry, profiler) {
|
|
17
7
|
return (queryStream) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerQueryWithController.js","sources":["../../../src/querying/registerQueryWithController.ts"],"sourcesContent":["import { Observable, catchError, from, map } from 'rxjs';\nimport { LoadingState } from '@grafana/schema';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { QueryResultWithState, SceneQueryControllerEntry } from '../behaviors/types';\nimport { getScenePerformanceTracker, generateOperationId } from '../performance';\n\n//
|
|
1
|
+
{"version":3,"file":"registerQueryWithController.js","sources":["../../../src/querying/registerQueryWithController.ts"],"sourcesContent":["import { Observable, catchError, from, map } from 'rxjs';\nimport { LoadingState } from '@grafana/schema';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { QueryResultWithState, SceneQueryControllerEntry } from '../behaviors/types';\nimport { getScenePerformanceTracker, generateOperationId } from '../performance/ScenePerformanceTracker';\n\n// Import performance callback types\nimport { QueryCompletionCallback } from '../performance/types';\n\nexport interface QueryProfilerLike {\n onQueryStarted(timestamp: number, entry: SceneQueryControllerEntry, queryId: string): QueryCompletionCallback | null;\n}\n\n/**\n * Will look for a scene object with a behavior that is a SceneQueryController and register the query with it.\n * Optionally accepts a panel profiler for direct query tracking callbacks.\n */\nexport function registerQueryWithController<T extends QueryResultWithState>(\n entry: SceneQueryControllerEntry,\n profiler?: QueryProfilerLike\n) {\n return (queryStream: Observable<T>) => {\n const queryControler = sceneGraph.getQueryController(entry.origin);\n if (!queryControler) {\n return queryStream;\n }\n\n return new Observable<T>((observer) => {\n if (!entry.cancel) {\n entry.cancel = () => observer.complete();\n }\n\n // Use existing request ID if available, otherwise generate one\n const queryId = entry.request?.requestId || `${entry.type}-${Math.floor(performance.now()).toString(36)}`;\n\n const startTimestamp = performance.now();\n let endQueryCallback: QueryCompletionCallback | null = null;\n\n if (profiler) {\n // Panel query: Use panel profiler\n endQueryCallback = profiler.onQueryStarted(startTimestamp, entry, queryId);\n } else {\n // Non-panel query: Track directly with simple approach\n const operationId = generateOperationId('query');\n getScenePerformanceTracker().notifyQueryStart({\n operationId,\n queryId,\n queryType: entry.type,\n origin: entry.origin.constructor.name,\n timestamp: startTimestamp,\n });\n\n // Create simple end callback for non-panel queries\n endQueryCallback = (endTimestamp: number, error?: any) => {\n getScenePerformanceTracker().notifyQueryComplete({\n operationId,\n queryId,\n queryType: entry.type,\n origin: entry.origin.constructor.name,\n timestamp: endTimestamp,\n duration: endTimestamp - startTimestamp,\n error: error ? error?.message || String(error) || 'Unknown error' : undefined,\n });\n };\n }\n\n queryControler.queryStarted(entry);\n let markedAsCompleted = false;\n\n const sub = queryStream.subscribe({\n next: (v) => {\n if (!markedAsCompleted && v.state !== LoadingState.Loading) {\n markedAsCompleted = true;\n queryControler.queryCompleted(entry);\n endQueryCallback?.(performance.now()); // Success case - no error\n }\n\n observer.next(v);\n },\n error: (e) => {\n if (!markedAsCompleted) {\n markedAsCompleted = true;\n queryControler.queryCompleted(entry);\n endQueryCallback?.(performance.now(), e); // Error case - pass error\n }\n observer.error(e);\n },\n complete: () => {\n observer.complete();\n },\n });\n\n return () => {\n sub.unsubscribe();\n\n if (!markedAsCompleted) {\n queryControler.queryCompleted(entry);\n endQueryCallback?.(performance.now()); // Cleanup case - no error\n }\n };\n });\n };\n}\n\n// Wraps an arbitrary Promise in an observble that emits Promise state\nexport function wrapPromiseInStateObservable(promise: Promise<any>): Observable<QueryResultWithState> {\n return new Observable<QueryResultWithState>((observer) => {\n // Emit 'loading' state initially\n observer.next({ state: LoadingState.Loading });\n\n // Convert the promise to an observable\n const promiseObservable = from(promise);\n\n // Subscribe to the promise observable\n promiseObservable\n .pipe(\n map(() => ({ state: LoadingState.Done })),\n\n catchError(() => {\n observer.next({ state: LoadingState.Error });\n return [];\n })\n )\n .subscribe({\n next: (result) => observer.next(result),\n complete: () => observer.complete(),\n });\n });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,11 @@ import { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid.js'
|
|
|
4
4
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
5
5
|
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
6
6
|
import { MultiValueVariable } from '../variants/MultiValueVariable.js';
|
|
7
|
-
import { map, of, from, mergeMap, tap, take
|
|
7
|
+
import { lastValueFrom, map, of, from, mergeMap, tap, take } from 'rxjs';
|
|
8
8
|
import { getDataSource } from '../../utils/getDataSource.js';
|
|
9
9
|
import { MultiSelect, Select } from '@grafana/ui';
|
|
10
10
|
import { isArray, isEqual } from 'lodash';
|
|
11
|
-
import { dataFromResponse, getQueriesForVariables, responseHasError
|
|
11
|
+
import { handleOptionGroups, dataFromResponse, getQueriesForVariables, responseHasError } from '../utils.js';
|
|
12
12
|
import { OptionWithCheckbox } from '../components/VariableValueSelect.js';
|
|
13
13
|
import { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler.js';
|
|
14
14
|
import { getOptionSearcher } from '../components/getOptionSearcher.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -321,58 +321,6 @@ interface LongFrameEvent {
|
|
|
321
321
|
method: 'manual' | 'loaf';
|
|
322
322
|
}
|
|
323
323
|
type LongFrameCallback = (event: LongFrameEvent) => void;
|
|
324
|
-
/**
|
|
325
|
-
* LongFrameDetector is a module for detecting long animation frames.
|
|
326
|
-
*
|
|
327
|
-
* It supports two detection methods with automatic fallback:
|
|
328
|
-
* 1. LoAF API (default when available): Uses Long Animation Frame API with 50ms threshold
|
|
329
|
-
* 2. Manual tracking (fallback): Uses requestAnimationFrame with configurable threshold (default: 50ms)
|
|
330
|
-
*
|
|
331
|
-
* The detector automatically uses LoAF when available for better attribution and performance,
|
|
332
|
-
* falling back to manual tracking for broader browser support.
|
|
333
|
-
*
|
|
334
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Long_animation_frame_timing
|
|
335
|
-
*/
|
|
336
|
-
declare class LongFrameDetector {
|
|
337
|
-
#private;
|
|
338
|
-
/**
|
|
339
|
-
* Check if LoAF API is available in the browser
|
|
340
|
-
*/
|
|
341
|
-
private isLoAFAvailable;
|
|
342
|
-
/**
|
|
343
|
-
* Start detecting long frames and call the provided callback when they occur
|
|
344
|
-
*/
|
|
345
|
-
start(callback: LongFrameCallback): void;
|
|
346
|
-
/**
|
|
347
|
-
* Stop detecting long frames
|
|
348
|
-
*/
|
|
349
|
-
stop(): void;
|
|
350
|
-
/**
|
|
351
|
-
* Check if currently tracking frames
|
|
352
|
-
*/
|
|
353
|
-
isTracking(): boolean;
|
|
354
|
-
/**
|
|
355
|
-
* Start tracking using the Long Animation Frame API
|
|
356
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongAnimationFrameTiming
|
|
357
|
-
*/
|
|
358
|
-
private startLoAFTracking;
|
|
359
|
-
/**
|
|
360
|
-
* Stop LoAF tracking
|
|
361
|
-
*/
|
|
362
|
-
private stopLoAFTracking;
|
|
363
|
-
/**
|
|
364
|
-
* Start manual frame tracking using requestAnimationFrame
|
|
365
|
-
*/
|
|
366
|
-
private startManualFrameTracking;
|
|
367
|
-
/**
|
|
368
|
-
* Stop manual frame tracking
|
|
369
|
-
*/
|
|
370
|
-
private stopManualFrameTracking;
|
|
371
|
-
/**
|
|
372
|
-
* Measure frame durations using requestAnimationFrame
|
|
373
|
-
*/
|
|
374
|
-
private measureFrames;
|
|
375
|
-
}
|
|
376
324
|
|
|
377
325
|
interface QueryResultWithState {
|
|
378
326
|
state: LoadingState;
|
|
@@ -412,8 +360,19 @@ interface SceneQueryControllerLike extends SceneObject<SceneQueryStateController
|
|
|
412
360
|
runningQueriesCount(): number;
|
|
413
361
|
}
|
|
414
362
|
|
|
363
|
+
/**
|
|
364
|
+
* Performance tracking callback types
|
|
365
|
+
*/
|
|
366
|
+
type QueryCompletionCallback = (endTimestamp: number, error?: any) => void;
|
|
367
|
+
type PluginLoadCompletionCallback = (plugin: any, fromCache?: boolean) => void;
|
|
368
|
+
type FieldConfigCompletionCallback = (endTimestamp: number, dataPointsCount?: number, seriesCount?: number) => void;
|
|
369
|
+
type RenderCompletionCallback = (endTimestamp: number, duration: number) => void;
|
|
370
|
+
type DataTransformCompletionCallback = (endTimestamp: number, duration: number, success: boolean, result?: {
|
|
371
|
+
error?: string;
|
|
372
|
+
}) => void;
|
|
373
|
+
|
|
415
374
|
interface QueryProfilerLike {
|
|
416
|
-
onQueryStarted(timestamp: number, entry: SceneQueryControllerEntry, queryId: string):
|
|
375
|
+
onQueryStarted(timestamp: number, entry: SceneQueryControllerEntry, queryId: string): QueryCompletionCallback | null;
|
|
417
376
|
}
|
|
418
377
|
/**
|
|
419
378
|
* Will look for a scene object with a behavior that is a SceneQueryController and register the query with it.
|
|
@@ -444,15 +403,15 @@ declare class VizPanelRenderProfiler extends SceneObjectBase<VizPanelRenderProfi
|
|
|
444
403
|
/**
|
|
445
404
|
* Track query execution with operation ID correlation
|
|
446
405
|
*/
|
|
447
|
-
onQueryStarted(timestamp: number, entry: SceneQueryControllerEntry, queryId: string):
|
|
406
|
+
onQueryStarted(timestamp: number, entry: SceneQueryControllerEntry, queryId: string): QueryCompletionCallback | null;
|
|
448
407
|
/**
|
|
449
408
|
* Track plugin loading with operation ID correlation
|
|
450
409
|
*/
|
|
451
|
-
onPluginLoadStart(pluginId: string):
|
|
410
|
+
onPluginLoadStart(pluginId: string): PluginLoadCompletionCallback | null;
|
|
452
411
|
/**
|
|
453
412
|
* Track field config processing with operation ID correlation
|
|
454
413
|
*/
|
|
455
|
-
onFieldConfigStart(timestamp: number):
|
|
414
|
+
onFieldConfigStart(timestamp: number): FieldConfigCompletionCallback | null;
|
|
456
415
|
/**
|
|
457
416
|
* Get panel info for logging - truncates long titles for readability
|
|
458
417
|
*/
|
|
@@ -460,7 +419,7 @@ declare class VizPanelRenderProfiler extends SceneObjectBase<VizPanelRenderProfi
|
|
|
460
419
|
/**
|
|
461
420
|
* Track simple render timing with operation ID correlation
|
|
462
421
|
*/
|
|
463
|
-
onSimpleRenderStart(timestamp: number):
|
|
422
|
+
onSimpleRenderStart(timestamp: number): RenderCompletionCallback | undefined;
|
|
464
423
|
/** Handle plugin changes */
|
|
465
424
|
private _onPluginChange;
|
|
466
425
|
/** Start tracking this panel */
|
|
@@ -474,9 +433,7 @@ declare class VizPanelRenderProfiler extends SceneObjectBase<VizPanelRenderProfi
|
|
|
474
433
|
transformationCount: number;
|
|
475
434
|
seriesTransformationCount: number;
|
|
476
435
|
annotationTransformationCount: number;
|
|
477
|
-
}):
|
|
478
|
-
error?: string;
|
|
479
|
-
}) => void) | null;
|
|
436
|
+
}): DataTransformCompletionCallback | null;
|
|
480
437
|
}
|
|
481
438
|
|
|
482
439
|
interface VizPanelState<TOptions = {}, TFieldConfig = {}> extends SceneObjectState {
|
|
@@ -1693,33 +1650,6 @@ declare class PanelContextEventBus implements EventBus {
|
|
|
1693
1650
|
interface PanelProfilingConfig {
|
|
1694
1651
|
watchStateKey?: string;
|
|
1695
1652
|
}
|
|
1696
|
-
/**
|
|
1697
|
-
* Manages VizPanelRenderProfiler instances for all panels in a scene object.
|
|
1698
|
-
* Extracted from DashboardPanelProfilingBehavior to allow composition with SceneRenderProfiler.
|
|
1699
|
-
*/
|
|
1700
|
-
declare class PanelProfilingManager {
|
|
1701
|
-
private _config;
|
|
1702
|
-
private _sceneObject?;
|
|
1703
|
-
private _subscriptions;
|
|
1704
|
-
constructor(_config: PanelProfilingConfig);
|
|
1705
|
-
/**
|
|
1706
|
-
* Attach panel profiling to a scene object
|
|
1707
|
-
*/
|
|
1708
|
-
attachToScene(sceneObject: SceneObject): void;
|
|
1709
|
-
/**
|
|
1710
|
-
* Attach VizPanelRenderProfiler to a specific panel if it doesn't already have one
|
|
1711
|
-
* @param panel - The VizPanel to attach profiling to
|
|
1712
|
-
*/
|
|
1713
|
-
attachProfilerToPanel(panel: VizPanel): void;
|
|
1714
|
-
/**
|
|
1715
|
-
* Attach VizPanelRenderProfiler to all VizPanels that don't already have one
|
|
1716
|
-
*/
|
|
1717
|
-
private _attachProfilersToPanels;
|
|
1718
|
-
/**
|
|
1719
|
-
* Clean up subscriptions and references
|
|
1720
|
-
*/
|
|
1721
|
-
cleanup(): void;
|
|
1722
|
-
}
|
|
1723
1653
|
|
|
1724
1654
|
/**
|
|
1725
1655
|
* SceneRenderProfiler tracks dashboard interaction performance including:
|
|
@@ -1830,11 +1760,6 @@ declare namespace index$2 {
|
|
|
1830
1760
|
};
|
|
1831
1761
|
}
|
|
1832
1762
|
|
|
1833
|
-
/**
|
|
1834
|
-
* Centralized performance tracking system using observer pattern.
|
|
1835
|
-
* External systems (like Grafana) implement ScenePerformanceObserver to receive performance events.
|
|
1836
|
-
*/
|
|
1837
|
-
declare function generateOperationId(prefix?: string): string;
|
|
1838
1763
|
/** Base interface for all performance events */
|
|
1839
1764
|
interface BasePerformanceEvent {
|
|
1840
1765
|
operationId: string;
|
|
@@ -1972,84 +1897,23 @@ declare class ScenePerformanceTracker {
|
|
|
1972
1897
|
*/
|
|
1973
1898
|
declare function getScenePerformanceTracker(): ScenePerformanceTracker;
|
|
1974
1899
|
|
|
1975
|
-
/**
|
|
1976
|
-
* Constants for different types of dashboard interactions tracked by SceneRenderProfiler
|
|
1977
|
-
*/
|
|
1978
|
-
declare const REFRESH_INTERACTION = "refresh";
|
|
1979
|
-
declare const TIME_RANGE_CHANGE_INTERACTION = "time_range_change";
|
|
1980
|
-
declare const FILTER_ADDED_INTERACTION = "filter_added";
|
|
1981
|
-
declare const FILTER_REMOVED_INTERACTION = "filter_removed";
|
|
1982
|
-
declare const FILTER_CHANGED_INTERACTION = "filter_changed";
|
|
1983
|
-
declare const FILTER_RESTORED_INTERACTION = "filter_restored";
|
|
1984
|
-
declare const VARIABLE_VALUE_CHANGED_INTERACTION = "variable_value_changed";
|
|
1985
|
-
declare const SCOPES_CHANGED_INTERACTION = "scopes_changed";
|
|
1986
|
-
declare const ADHOC_KEYS_DROPDOWN_INTERACTION = "adhoc_keys_dropdown";
|
|
1987
|
-
declare const ADHOC_VALUES_DROPDOWN_INTERACTION = "adhoc_values_dropdown";
|
|
1988
|
-
declare const GROUPBY_DIMENSIONS_INTERACTION = "groupby_dimensions";
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
1900
|
|
|
2004
1901
|
|
|
2005
1902
|
|
|
2006
1903
|
|
|
2007
1904
|
|
|
2008
1905
|
|
|
2009
|
-
declare const index$1_ADHOC_KEYS_DROPDOWN_INTERACTION: typeof ADHOC_KEYS_DROPDOWN_INTERACTION;
|
|
2010
|
-
declare const index$1_ADHOC_VALUES_DROPDOWN_INTERACTION: typeof ADHOC_VALUES_DROPDOWN_INTERACTION;
|
|
2011
|
-
type index$1_BasePerformanceEvent = BasePerformanceEvent;
|
|
2012
1906
|
type index$1_DashboardInteractionCompleteData = DashboardInteractionCompleteData;
|
|
2013
1907
|
type index$1_DashboardInteractionMilestoneData = DashboardInteractionMilestoneData;
|
|
2014
1908
|
type index$1_DashboardInteractionStartData = DashboardInteractionStartData;
|
|
2015
|
-
declare const index$1_FILTER_ADDED_INTERACTION: typeof FILTER_ADDED_INTERACTION;
|
|
2016
|
-
declare const index$1_FILTER_CHANGED_INTERACTION: typeof FILTER_CHANGED_INTERACTION;
|
|
2017
|
-
declare const index$1_FILTER_REMOVED_INTERACTION: typeof FILTER_REMOVED_INTERACTION;
|
|
2018
|
-
declare const index$1_FILTER_RESTORED_INTERACTION: typeof FILTER_RESTORED_INTERACTION;
|
|
2019
|
-
type index$1_FieldConfigMetadata = FieldConfigMetadata;
|
|
2020
|
-
declare const index$1_GROUPBY_DIMENSIONS_INTERACTION: typeof GROUPBY_DIMENSIONS_INTERACTION;
|
|
2021
|
-
type index$1_LongFrameDetector = LongFrameDetector;
|
|
2022
|
-
declare const index$1_LongFrameDetector: typeof LongFrameDetector;
|
|
2023
|
-
type index$1_PanelFieldConfigPerformanceData = PanelFieldConfigPerformanceData;
|
|
2024
1909
|
type index$1_PanelPerformanceData = PanelPerformanceData;
|
|
2025
|
-
type index$1_PanelPluginLoadPerformanceData = PanelPluginLoadPerformanceData;
|
|
2026
|
-
type index$1_PanelProfilingConfig = PanelProfilingConfig;
|
|
2027
|
-
type index$1_PanelProfilingManager = PanelProfilingManager;
|
|
2028
|
-
declare const index$1_PanelProfilingManager: typeof PanelProfilingManager;
|
|
2029
|
-
type index$1_PanelQueryPerformanceData = PanelQueryPerformanceData;
|
|
2030
|
-
type index$1_PanelRenderPerformanceData = PanelRenderPerformanceData;
|
|
2031
|
-
type index$1_PanelTransformPerformanceData = PanelTransformPerformanceData;
|
|
2032
|
-
type index$1_PluginLoadMetadata = PluginLoadMetadata;
|
|
2033
|
-
type index$1_QueryMetadata = QueryMetadata;
|
|
2034
|
-
type index$1_QueryPerformanceData = QueryPerformanceData;
|
|
2035
|
-
declare const index$1_REFRESH_INTERACTION: typeof REFRESH_INTERACTION;
|
|
2036
|
-
type index$1_RenderMetadata = RenderMetadata;
|
|
2037
|
-
declare const index$1_SCOPES_CHANGED_INTERACTION: typeof SCOPES_CHANGED_INTERACTION;
|
|
2038
1910
|
type index$1_ScenePerformanceObserver = ScenePerformanceObserver;
|
|
2039
|
-
type index$1_ScenePerformanceTracker = ScenePerformanceTracker;
|
|
2040
|
-
declare const index$1_ScenePerformanceTracker: typeof ScenePerformanceTracker;
|
|
2041
1911
|
type index$1_SceneRenderProfiler = SceneRenderProfiler;
|
|
2042
1912
|
declare const index$1_SceneRenderProfiler: typeof SceneRenderProfiler;
|
|
2043
|
-
declare const index$1_TIME_RANGE_CHANGE_INTERACTION: typeof TIME_RANGE_CHANGE_INTERACTION;
|
|
2044
|
-
type index$1_TransformMetadata = TransformMetadata;
|
|
2045
|
-
declare const index$1_VARIABLE_VALUE_CHANGED_INTERACTION: typeof VARIABLE_VALUE_CHANGED_INTERACTION;
|
|
2046
|
-
type index$1_VizPanelRenderProfiler = VizPanelRenderProfiler;
|
|
2047
|
-
declare const index$1_VizPanelRenderProfiler: typeof VizPanelRenderProfiler;
|
|
2048
|
-
declare const index$1_generateOperationId: typeof generateOperationId;
|
|
2049
1913
|
declare const index$1_getScenePerformanceTracker: typeof getScenePerformanceTracker;
|
|
2050
1914
|
declare namespace index$1 {
|
|
2051
|
-
export { index$
|
|
2052
|
-
export type { index$
|
|
1915
|
+
export { index$1_SceneRenderProfiler as SceneRenderProfiler, index$1_getScenePerformanceTracker as getScenePerformanceTracker };
|
|
1916
|
+
export type { index$1_DashboardInteractionCompleteData as DashboardInteractionCompleteData, index$1_DashboardInteractionMilestoneData as DashboardInteractionMilestoneData, index$1_DashboardInteractionStartData as DashboardInteractionStartData, index$1_PanelPerformanceData as PanelPerformanceData, index$1_ScenePerformanceObserver as ScenePerformanceObserver };
|
|
2053
1917
|
}
|
|
2054
1918
|
|
|
2055
1919
|
declare function writePerformanceLog(logger: string, message: string, ...rest: unknown[]): void;
|