mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			38 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| 
								 | 
							
								import { writePerformanceLog } from '@grafana/scenes';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { getDashboardAnalyticsAggregator } from '../../dashboard/services/DashboardAnalyticsAggregator';
							 | 
						||
| 
								 | 
							
								import { DashboardScene } from '../scene/DashboardScene';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Scene behavior function that manages the dashboard-specific initialization
							 | 
						||
| 
								 | 
							
								 * of the global analytics aggregator for each dashboard session.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Note: Both ScenePerformanceLogger and DashboardAnalyticsAggregator are now
							 | 
						||
| 
								 | 
							
								 * initialized globally to avoid timing issues. This behavior only sets
							 | 
						||
| 
								 | 
							
								 * dashboard-specific context.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function dashboardAnalyticsInitializer(dashboard: DashboardScene) {
							 | 
						||
| 
								 | 
							
								  const { uid, title } = dashboard.state;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!uid) {
							 | 
						||
| 
								 | 
							
								    console.warn('dashboardAnalyticsInitializer: Dashboard UID is missing');
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  writePerformanceLog('DAI', 'Setting dashboard context for analytics aggregator');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Set dashboard context on the global aggregator (observer already registered)
							 | 
						||
| 
								 | 
							
								  const aggregator = getDashboardAnalyticsAggregator();
							 | 
						||
| 
								 | 
							
								  aggregator.initialize(uid, title || 'Untitled Dashboard');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  writePerformanceLog('DAI', 'Dashboard analytics aggregator context set:', { uid, title });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Return cleanup function
							 | 
						||
| 
								 | 
							
								  return () => {
							 | 
						||
| 
								 | 
							
								    // Only clear dashboard state, keep observer registered for next dashboard
							 | 
						||
| 
								 | 
							
								    aggregator.destroy();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    writePerformanceLog('DAI', 'Dashboard analytics aggregator context cleared');
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |