@ -5,6 +5,7 @@ import { contextSrv } from 'app/core/core';
import { AccessControlAction } from 'app/types' ;
import { ProBadge } from 'app/core/components/Upgrade/ProBadge' ;
import { GenericDataSourcePlugin } from '../settings/PluginSettings' ;
import { highlightTrial } from '../../admin/utils' ;
const loadingDSType = 'Loading' ;
@ -53,7 +54,8 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
const isLoadingNav = dataSource . type === loadingDSType ;
const dsPermissions = {
const permissionsExperimentId = 'feature-highlights-data-source-permissions-badge' ;
const dsPermissions : NavModelItem = {
active : false ,
icon : 'lock' ,
id : ` datasource-permissions- ${ dataSource . uid } ` ,
@ -61,6 +63,10 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
url : ` datasources/edit/ ${ dataSource . uid } /permissions ` ,
} ;
if ( highlightTrial ( ) && ! isLoadingNav ) {
dsPermissions . tabSuffix = ( ) = > ProBadge ( { experimentId : permissionsExperimentId , eventVariant : 'trial' } ) ;
}
if ( featureEnabled ( 'dspermissions' ) ) {
if ( contextSrv . hasPermission ( AccessControlAction . DataSourcesPermissionsRead ) ) {
navModel . children ! . push ( dsPermissions ) ;
@ -69,11 +75,12 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
navModel . children ! . push ( {
. . . dsPermissions ,
url : dsPermissions.url + '/upgrade' ,
tabSuffix : ( ) = > ProBadge ( { experimentId : 'feature-highlights-data-source-permissions-badge' } ) ,
tabSuffix : ( ) = > ProBadge ( { experimentId : permissionsExperimentId } ) ,
} ) ;
}
const analytics = {
const analyticsExperimentId = 'feature-highlights-data-source-insights-badge' ;
const analytics : NavModelItem = {
active : false ,
icon : 'info-circle' ,
id : ` datasource-insights- ${ dataSource . uid } ` ,
@ -81,17 +88,23 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
url : ` datasources/edit/ ${ dataSource . uid } /insights ` ,
} ;
if ( highlightTrial ( ) && ! isLoadingNav ) {
analytics . tabSuffix = ( ) = > ProBadge ( { experimentId : analyticsExperimentId , eventVariant : 'trial' } ) ;
}
if ( featureEnabled ( 'analytics' ) ) {
navModel . children ! . push ( analytics ) ;
} else if ( highlightsEnabled && ! isLoadingNav ) {
navModel . children ! . push ( {
. . . analytics ,
url : analytics.url + '/upgrade' ,
tabSuffix : ( ) = > ProBadge ( { experimentId : 'feature-highlights-data-source-insights-badge' } ) ,
tabSuffix : ( ) = > ProBadge ( { experimentId : analyticsExperimentId } ) ,
} ) ;
}
const caching = {
const cachingExperimentId = 'feature-highlights-query-caching-badge' ;
const caching : NavModelItem = {
active : false ,
icon : 'database' ,
id : ` datasource-cache- ${ dataSource . uid } ` ,
@ -100,13 +113,17 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
hideFromTabs : ! pluginMeta . isBackend || ! config . caching . enabled ,
} ;
if ( highlightTrial ( ) && ! isLoadingNav ) {
caching . tabSuffix = ( ) = > ProBadge ( { experimentId : cachingExperimentId , eventVariant : 'trial' } ) ;
}
if ( featureEnabled ( 'caching' ) ) {
navModel . children ! . push ( caching ) ;
} else if ( highlightsEnabled && ! isLoadingNav ) {
navModel . children ! . push ( {
. . . caching ,
url : caching.url + '/upgrade' ,
tabSuffix : ( ) = > ProBadge ( { experimentId : 'feature-highlights-query-caching-badge' } ) ,
tabSuffix : ( ) = > ProBadge ( { experimentId : cachingExperimentId } ) ,
} ) ;
}