|
|
|
@ -205,9 +205,9 @@ func (s *ServiceImpl) addPluginToSection(c *contextmodel.ReqContext, treeRoot *n |
|
|
|
|
}) |
|
|
|
|
case navtree.NavIDMonitoring: |
|
|
|
|
treeRoot.AddSection(&navtree.NavLink{ |
|
|
|
|
Text: "Monitoring", |
|
|
|
|
Text: "Observability", |
|
|
|
|
Id: navtree.NavIDMonitoring, |
|
|
|
|
SubTitle: "Monitoring and infrastructure apps", |
|
|
|
|
SubTitle: "Observability and infrastructure apps", |
|
|
|
|
Icon: "heart-rate", |
|
|
|
|
SortWeight: navtree.WeightMonitoring, |
|
|
|
|
Children: []*navtree.NavLink{appLink}, |
|
|
|
@ -256,6 +256,7 @@ func (s *ServiceImpl) readNavigationSettings() { |
|
|
|
|
s.navigationAppConfig = map[string]NavigationAppConfig{ |
|
|
|
|
"grafana-k8s-app": {SectionID: navtree.NavIDMonitoring, SortWeight: 1, Text: "Kubernetes"}, |
|
|
|
|
"grafana-synthetic-monitoring-app": {SectionID: navtree.NavIDMonitoring, SortWeight: 2, Text: "Synthetics"}, |
|
|
|
|
"grafana-kowalski-app": {SectionID: navtree.NavIDMonitoring, SortWeight: 3, Text: "Frontend"}, |
|
|
|
|
"grafana-oncall-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 1, Text: "OnCall"}, |
|
|
|
|
"grafana-incident-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 2, Text: "Incident"}, |
|
|
|
|
"grafana-ml-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 3, Text: "Machine Learning"}, |
|
|
|
@ -283,7 +284,16 @@ func (s *ServiceImpl) readNavigationSettings() { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
s.navigationAppConfig[pluginId] = *appCfg |
|
|
|
|
// Only apply the new values, don't completely overwrite the entry if it exists
|
|
|
|
|
if entry, ok := s.navigationAppConfig[pluginId]; ok { |
|
|
|
|
entry.SectionID = appCfg.SectionID |
|
|
|
|
if appCfg.SortWeight != 0 { |
|
|
|
|
entry.SortWeight = appCfg.SortWeight |
|
|
|
|
} |
|
|
|
|
s.navigationAppConfig[pluginId] = entry |
|
|
|
|
} else { |
|
|
|
|
s.navigationAppConfig[pluginId] = *appCfg |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, key := range appStandalonePages.Keys() { |
|
|
|
|