Explore: Move drilldown apps from Explore to a new navbar item "Drilldown" (#100409)
* Move drilldown apps from Explore to a new navbar item "Drilldown" * Commit make i18n-extract * Update drilldown icon * Added alert to explore with call out to drilldown apps * Add isNew field for nav item which shows a "New!" badge on the navbar and expands it by default * Fix e2e test
This commit is contained in:
@@ -16,6 +16,7 @@ const (
|
||||
WeightSavedItems
|
||||
WeightDashboard
|
||||
WeightExplore
|
||||
WeightDrilldown
|
||||
WeightAlerting
|
||||
WeightAlertsAndIncidents
|
||||
WeightTestingAndSynthetics
|
||||
@@ -37,6 +38,7 @@ const (
|
||||
NavIDRoot = "root"
|
||||
NavIDDashboards = "dashboards/browse"
|
||||
NavIDExplore = "explore"
|
||||
NavIDDrilldown = "drilldown"
|
||||
NavIDCfg = "cfg" // NavIDCfg is the id for org configuration navigation node
|
||||
NavIDAlertsAndIncidents = "alerts-and-incidents"
|
||||
NavIDTestingAndSynthetics = "testing-and-synthetics"
|
||||
@@ -70,6 +72,7 @@ type NavLink struct {
|
||||
EmptyMessageId string `json:"emptyMessageId,omitempty"`
|
||||
PluginID string `json:"pluginId,omitempty"` // (Optional) The ID of the plugin that registered nav link (e.g. as a standalone plugin page)
|
||||
IsCreateAction bool `json:"isCreateAction,omitempty"`
|
||||
IsNew bool `json:"isNew,omitempty"` // (Optional) Adds "New!" badge to the nav link and expands it by default
|
||||
Keywords []string `json:"keywords,omitempty"`
|
||||
ParentItem *NavLink `json:"parentItem,omitempty"` // (Optional) The parent item of the nav link
|
||||
}
|
||||
|
||||
@@ -286,9 +286,9 @@ func (s *ServiceImpl) readNavigationSettings() {
|
||||
"grafana-k8s-app": {SectionID: navtree.NavIDInfrastructure, SortWeight: 1, Text: "Kubernetes"},
|
||||
"grafana-dbo11y-app": {SectionID: navtree.NavIDInfrastructure, SortWeight: 2, Text: "Databases"},
|
||||
"grafana-app-observability-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightApplication, Text: "Application", Icon: "graph-bar"},
|
||||
"grafana-lokiexplore-app": {SectionID: navtree.NavIDExplore, SortWeight: 2, Text: "Logs"},
|
||||
"grafana-exploretraces-app": {SectionID: navtree.NavIDExplore, SortWeight: 3, Text: "Traces"},
|
||||
"grafana-pyroscope-app": {SectionID: navtree.NavIDExplore, SortWeight: 4, Text: "Profiles"},
|
||||
"grafana-lokiexplore-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 2, Text: "Logs"},
|
||||
"grafana-exploretraces-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 3, Text: "Traces"},
|
||||
"grafana-pyroscope-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 4, Text: "Profiles"},
|
||||
"grafana-kowalski-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightFrontend, Text: "Frontend", Icon: "frontend-observability"},
|
||||
"grafana-synthetic-monitoring-app": {SectionID: navtree.NavIDTestingAndSynthetics, SortWeight: 2, Text: "Synthetics"},
|
||||
"grafana-irm-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 1, Text: "IRM"},
|
||||
@@ -310,7 +310,7 @@ func (s *ServiceImpl) readNavigationSettings() {
|
||||
}
|
||||
|
||||
if s.features.IsEnabledGlobally(featuremgmt.FlagExploreMetricsUseExternalAppPlugin) {
|
||||
s.navigationAppConfig["grafana-metricsdrilldown-app"] = NavigationAppConfig{SectionID: navtree.NavIDExplore, SortWeight: 1, Text: "Metrics"}
|
||||
s.navigationAppConfig["grafana-metricsdrilldown-app"] = NavigationAppConfig{SectionID: navtree.NavIDDrilldown, SortWeight: 1, Text: "Metrics"}
|
||||
}
|
||||
|
||||
if s.features.IsEnabledGlobally(featuremgmt.FlagGrafanaAdvisor) {
|
||||
|
||||
@@ -120,7 +120,6 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere
|
||||
}
|
||||
|
||||
if s.cfg.ExploreEnabled && hasAccess(ac.EvalPermission(ac.ActionDatasourcesExplore)) {
|
||||
exploreChildNavLinks := s.buildExploreNavLinks(c)
|
||||
treeRoot.AddSection(&navtree.NavLink{
|
||||
Text: "Explore",
|
||||
Id: navtree.NavIDExplore,
|
||||
@@ -128,7 +127,20 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere
|
||||
Icon: "compass",
|
||||
SortWeight: navtree.WeightExplore,
|
||||
Url: s.cfg.AppSubURL + "/explore",
|
||||
Children: exploreChildNavLinks,
|
||||
})
|
||||
}
|
||||
|
||||
if hasAccess(ac.EvalPermission(ac.ActionDatasourcesDrilldown)) {
|
||||
drilldownChildNavLinks := s.buildDrilldownNavLinks(c)
|
||||
treeRoot.AddSection(&navtree.NavLink{
|
||||
Text: "Drilldown",
|
||||
Id: navtree.NavIDDrilldown,
|
||||
SubTitle: "Drill down into your data using Grafana's powerful queryless apps",
|
||||
Icon: "drilldown",
|
||||
IsNew: true,
|
||||
SortWeight: navtree.WeightDrilldown,
|
||||
Url: s.cfg.AppSubURL + "/drilldown",
|
||||
Children: drilldownChildNavLinks,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -560,10 +572,10 @@ func (s *ServiceImpl) buildDataConnectionsNavLink(c *contextmodel.ReqContext) *n
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *ServiceImpl) buildExploreNavLinks(c *contextmodel.ReqContext) []*navtree.NavLink {
|
||||
exploreChildNavs := []*navtree.NavLink{}
|
||||
func (s *ServiceImpl) buildDrilldownNavLinks(c *contextmodel.ReqContext) []*navtree.NavLink {
|
||||
drilldownChildNavs := []*navtree.NavLink{}
|
||||
if s.features.IsEnabled(c.Req.Context(), featuremgmt.FlagExploreMetrics) && !s.features.IsEnabled(c.Req.Context(), featuremgmt.FlagExploreMetricsUseExternalAppPlugin) {
|
||||
exploreChildNavs = append(exploreChildNavs, &navtree.NavLink{
|
||||
drilldownChildNavs = append(drilldownChildNavs, &navtree.NavLink{
|
||||
Text: "Metrics",
|
||||
SubTitle: "Queryless exploration of your metrics",
|
||||
Id: "explore/metrics",
|
||||
@@ -571,5 +583,5 @@ func (s *ServiceImpl) buildExploreNavLinks(c *contextmodel.ReqContext) []*navtre
|
||||
Icon: "code-branch",
|
||||
})
|
||||
}
|
||||
return exploreChildNavs
|
||||
return drilldownChildNavs
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user