diff --git a/pkg/services/navtree/navtreeimpl/navtree.go b/pkg/services/navtree/navtreeimpl/navtree.go index ef5c52f7ba1..56764dc4988 100644 --- a/pkg/services/navtree/navtreeimpl/navtree.go +++ b/pkg/services/navtree/navtreeimpl/navtree.go @@ -117,6 +117,7 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere } if setting.ExploreEnabled && hasAccess(ac.EvalPermission(ac.ActionDatasourcesExplore)) { + exploreChildNavLinks := s.buildExploreNavLinks(c) treeRoot.AddSection(&navtree.NavLink{ Text: "Explore", Id: navtree.NavIDExplore, @@ -124,6 +125,7 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere Icon: "compass", SortWeight: navtree.WeightExplore, Url: s.cfg.AppSubURL + "/explore", + Children: exploreChildNavLinks, }) } @@ -373,15 +375,6 @@ func (s *ServiceImpl) buildDashboardNavLinks(c *contextmodel.ReqContext) []*navt } } - if s.features.IsEnabled(c.Req.Context(), featuremgmt.FlagDatatrails) { - dashboardChildNavs = append(dashboardChildNavs, &navtree.NavLink{ - Text: "Data trails", - Id: "data-trails", - Url: s.cfg.AppSubURL + "/data-trails", - Icon: "code-branch", - }) - } - if hasAccess(ac.EvalPermission(dashboards.ActionDashboardsCreate)) { dashboardChildNavs = append(dashboardChildNavs, &navtree.NavLink{ Text: "New dashboard", Icon: "plus", Url: s.cfg.AppSubURL + "/dashboard/new", HideFromTabs: true, Id: "dashboards/new", IsCreateAction: true, @@ -528,3 +521,17 @@ func (s *ServiceImpl) buildDataConnectionsNavLink(c *contextmodel.ReqContext) *n } return nil } + +func (s *ServiceImpl) buildExploreNavLinks(c *contextmodel.ReqContext) []*navtree.NavLink { + exploreChildNavs := []*navtree.NavLink{} + if s.features.IsEnabled(c.Req.Context(), featuremgmt.FlagDatatrails) { + exploreChildNavs = append(exploreChildNavs, &navtree.NavLink{ + Text: "Metrics", + SubTitle: "Queryless exploration of your metrics", + Id: "explore/metrics", + Url: s.cfg.AppSubURL + "/explore/metrics", + Icon: "code-branch", + }) + } + return exploreChildNavs +} diff --git a/public/app/features/trails/ActionTabs/MetricOverviewScene.tsx b/public/app/features/trails/ActionTabs/MetricOverviewScene.tsx index 20df46cd3eb..adffb65988e 100644 --- a/public/app/features/trails/ActionTabs/MetricOverviewScene.tsx +++ b/public/app/features/trails/ActionTabs/MetricOverviewScene.tsx @@ -15,7 +15,7 @@ import PrometheusLanguageProvider from '../../../plugins/datasource/prometheus/l import { PromMetricsMetadataItem } from '../../../plugins/datasource/prometheus/types'; import { getDatasourceSrv } from '../../plugins/datasource_srv'; import { ALL_VARIABLE_VALUE } from '../../variables/constants'; -import { VAR_DATASOURCE_EXPR, VAR_GROUP_BY } from '../shared'; +import { TRAILS_ROUTE, VAR_DATASOURCE_EXPR, VAR_GROUP_BY } from '../shared'; import { getMetricSceneFor } from '../utils'; import { getLabelOptions } from './utils'; @@ -109,7 +109,7 @@ export class MetricOverviewScene extends SceneObjectBase { ( - +
@@ -47,9 +47,9 @@ export class DataTrailsApp extends SceneObjectBase { /> ( - +
diff --git a/public/app/features/trails/shared.ts b/public/app/features/trails/shared.ts index 2cb3fb479a8..8854ad44df8 100644 --- a/public/app/features/trails/shared.ts +++ b/public/app/features/trails/shared.ts @@ -9,7 +9,7 @@ export interface ActionViewDefinition { getScene: () => SceneObject; } -export const TRAILS_ROUTE = '/data-trails/trail'; +export const TRAILS_ROUTE = '/explore/metrics/trail'; export const VAR_METRIC_NAMES = 'metricNames'; export const VAR_FILTERS = 'filters'; diff --git a/public/app/routes/routes.tsx b/public/app/routes/routes.tsx index e42659a68c3..2255864ac83 100644 --- a/public/app/routes/routes.tsx +++ b/public/app/routes/routes.tsx @@ -487,7 +487,7 @@ export function getAppRoutes(): RouteDescriptor[] { ), }, { - path: '/data-trails', + path: '/explore/metrics', chromeless: false, exact: false, component: SafeDynamicImport(