Navigation: show breadcrumbs correctly when on the home page (#55759)
* show breadcrumbs correctly when on the home page * adjust breadcrumb unit tests * update betterer * fix backend tests * update getSectionRoot to look at the home nav id * remove redundant setting of home dashboard * construct a home navmodelitem in the backend * fix cases when the feature toggle is off * fix unit test * fix more unit tests * refactor how buildBreadcrumbs works * use HOME_NAV_ID * move homeNav useSelector into NavToolbar * remove unnecesary cloneDeep * don't need locationUtil here * restore using getUrlForPartial in DashboardPage * special case for the editview query param * remove commented out code * add comment to clarify splice behaviour * slightly cleaner syntax
This commit is contained in:
@@ -11,7 +11,8 @@ const (
|
||||
// are negative to ensure that the default items are placed above
|
||||
// any items with default weight.
|
||||
|
||||
WeightSavedItems = (iota - 20) * 100
|
||||
WeightHome = (iota - 20) * 100
|
||||
WeightSavedItems
|
||||
WeightCreate
|
||||
WeightDashboard
|
||||
WeightExplore
|
||||
|
||||
@@ -69,8 +69,12 @@ func (s *ServiceImpl) GetNavTree(c *models.ReqContext, hasEditPerm bool, prefs *
|
||||
hasAccess := ac.HasAccess(s.accessControl, c)
|
||||
treeRoot := &navtree.NavTreeRoot{}
|
||||
|
||||
if s.features.IsEnabled(featuremgmt.FlagTopnav) {
|
||||
treeRoot.AddSection(s.getHomeNode(c, prefs))
|
||||
}
|
||||
|
||||
if hasAccess(ac.ReqSignedIn, ac.EvalPermission(dashboards.ActionDashboardsRead)) {
|
||||
starredItemsLinks, err := s.buildStarredItemsNavLinks(c, prefs)
|
||||
starredItemsLinks, err := s.buildStarredItemsNavLinks(c)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -186,6 +190,32 @@ func (s *ServiceImpl) GetNavTree(c *models.ReqContext, hasEditPerm bool, prefs *
|
||||
return treeRoot, nil
|
||||
}
|
||||
|
||||
func (s *ServiceImpl) getHomeNode(c *models.ReqContext, prefs *pref.Preference) *navtree.NavLink {
|
||||
homeUrl := s.cfg.AppSubURL + "/"
|
||||
homePage := s.cfg.HomePage
|
||||
|
||||
if prefs.HomeDashboardID == 0 && len(homePage) > 0 {
|
||||
homeUrl = homePage
|
||||
}
|
||||
|
||||
if prefs.HomeDashboardID != 0 {
|
||||
slugQuery := models.GetDashboardRefByIdQuery{Id: prefs.HomeDashboardID}
|
||||
err := s.dashboardService.GetDashboardUIDById(c.Req.Context(), &slugQuery)
|
||||
if err == nil {
|
||||
homeUrl = models.GetDashboardUrl(slugQuery.Result.Uid, slugQuery.Result.Slug)
|
||||
}
|
||||
}
|
||||
|
||||
return &navtree.NavLink{
|
||||
Text: "Home",
|
||||
Id: "home",
|
||||
Url: homeUrl,
|
||||
Icon: "home-alt",
|
||||
Section: navtree.NavSectionCore,
|
||||
SortWeight: navtree.WeightHome,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ServiceImpl) addHelpLinks(treeRoot *navtree.NavTreeRoot, c *models.ReqContext) {
|
||||
if setting.HelpEnabled {
|
||||
helpVersion := fmt.Sprintf(`%s v%s (%s)`, setting.ApplicationName, setting.BuildVersion, setting.BuildCommit)
|
||||
@@ -256,7 +286,7 @@ func (s *ServiceImpl) getProfileNode(c *models.ReqContext) *navtree.NavLink {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ServiceImpl) buildStarredItemsNavLinks(c *models.ReqContext, prefs *pref.Preference) ([]*navtree.NavLink, error) {
|
||||
func (s *ServiceImpl) buildStarredItemsNavLinks(c *models.ReqContext) ([]*navtree.NavLink, error) {
|
||||
starredItemsChildNavs := []*navtree.NavLink{}
|
||||
|
||||
query := star.GetUserStarsQuery{
|
||||
|
||||
Reference in New Issue
Block a user