diff --git a/pkg/api/api.go b/pkg/api/api.go index d06e3a5fac4..0f94e3f7f57 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -200,7 +200,6 @@ func Register(r *macaron.Macaron) { r.Get("/home", GetHomeDashboard) r.Get("/tags", GetDashboardTags) r.Post("/import", bind(dtos.ImportDashboardCommand{}), wrap(ImportDashboard)) - r.Get("/id/:id", GetDashboardSlugById) }) // Dashboard snapshots diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index d6c0fa0a827..1ea22984521 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -159,6 +159,28 @@ func canEditDashboard(role m.RoleType) bool { } func GetHomeDashboard(c *middleware.Context) { + + // Checking if there is any preference set for home dashboard + query := m.GetPreferencesQuery{UserId: c.UserId, OrgId: c.OrgId} + + if err := bus.Dispatch(&query); err != nil { + c.JsonApiErr(500, "Failed to get preferences", err) + } + + if query.Result.HomeDashboardId != 0 { + query := m.GetDashboardSlugByIdQuery{Id: query.Result.HomeDashboardId} + err := bus.Dispatch(&query) + if err != nil { + c.JsonApiErr(500, "Failed to get slug from database", err) + return + } + + slug := dtos.DashboardSlug{Slug: query.Result} + + c.JSON(200, &slug) + return + } + filePath := path.Join(setting.StaticRootPath, "dashboards/home.json") file, err := os.Open(filePath) if err != nil { @@ -204,17 +226,3 @@ func GetDashboardTags(c *middleware.Context) { c.JSON(200, query.Result) } - -func GetDashboardSlugById(c *middleware.Context) { - dashId := c.ParamsInt64(":id") - query := m.GetDashboardSlugByIdQuery{Id: dashId} - err := bus.Dispatch(&query) - if err != nil { - c.JsonApiErr(500, "Failed to get slug from database", err) - return - } - - slug := dtos.DashboardSlug{Slug: query.Result} - - c.JSON(200, &slug) -} diff --git a/public/app/core/routes/dashboard_loaders.js b/public/app/core/routes/dashboard_loaders.js index c24ed1ea7a2..9c276a7c3fd 100644 --- a/public/app/core/routes/dashboard_loaders.js +++ b/public/app/core/routes/dashboard_loaders.js @@ -7,25 +7,19 @@ function (coreModule) { coreModule.default.controller('LoadDashboardCtrl', function($scope, $routeParams, dashboardLoaderSrv, backendSrv) { if (!$routeParams.slug) { - - backendSrv.get('/api/preferences').then(function(preferences) { - if (preferences !== null && preferences.homeDashboardId !== 0) { - backendSrv.get('/api/dashboards/id/' + preferences.homeDashboardId).then(function(dashSlug) { - $routeParams.type = 'db'; - $routeParams.slug = dashSlug.slug; - dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug).then(function(result) { - $scope.initDashboard(result, $scope); - }); - }); + backendSrv.get('/api/dashboards/home').then(function(result) { + if (result.slug == null) { + var meta = result.meta; + meta.canSave = meta.canShare = meta.canStar = false; + $scope.initDashboard(result, $scope); } else { - backendSrv.get('/api/dashboards/home').then(function(result) { - var meta = result.meta; - meta.canSave = meta.canShare = meta.canStar = false; + $routeParams.type = 'db'; + $routeParams.slug = result.slug; + dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug).then(function(result) { $scope.initDashboard(result, $scope); }); } }); - return; }