mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
|  | import angular from 'angular'; | ||
|  | 
 | ||
|  | const directiveModule = angular.module('grafana.directives'); | ||
|  | const directiveCache: any = {}; | ||
|  | 
 | ||
|  | /** @ngInject */ | ||
|  | function panelEditorTab(dynamicDirectiveSrv: any) { | ||
|  |   return dynamicDirectiveSrv.create({ | ||
|  |     scope: { | ||
|  |       ctrl: '=', | ||
|  |       editorTab: '=', | ||
|  |     }, | ||
|  |     directive: (scope: any) => { | ||
|  |       const pluginId = scope.ctrl.pluginId; | ||
|  |       const tabName = scope.editorTab.title | ||
|  |         .toLowerCase() | ||
|  |         .replace(' ', '-') | ||
|  |         .replace('&', '') | ||
|  |         .replace(' ', '') | ||
|  |         .replace(' ', '-'); | ||
|  | 
 | ||
|  |       if (directiveCache[pluginId]) { | ||
|  |         if (directiveCache[pluginId][tabName]) { | ||
|  |           return directiveCache[pluginId][tabName]; | ||
|  |         } | ||
|  |       } else { | ||
|  |         directiveCache[pluginId] = []; | ||
|  |       } | ||
|  | 
 | ||
|  |       const result = { | ||
|  |         fn: () => scope.editorTab.directiveFn(), | ||
|  |         name: `panel-editor-tab-${pluginId}${tabName}`, | ||
|  |       }; | ||
|  | 
 | ||
|  |       directiveCache[pluginId][tabName] = result; | ||
|  | 
 | ||
|  |       return result; | ||
|  |     }, | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | directiveModule.directive('panelEditorTab', panelEditorTab); |