From 7023dedc0523d1db83110663744f88e9f240279a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Sun, 20 Mar 2016 11:52:19 +0100 Subject: [PATCH] feat(preferences): refactoring PR #4399 --- pkg/api/dashboard.go | 5 ++--- pkg/api/dtos/models.go | 4 ++-- pkg/services/sqlstore/dashboard.go | 14 ++++++++++---- public/app/core/routes/dashboard_loaders.js | 18 +++++++----------- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 1ea22984521..1a45ffcd020 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -175,9 +175,8 @@ func GetHomeDashboard(c *middleware.Context) { return } - slug := dtos.DashboardSlug{Slug: query.Result} - - c.JSON(200, &slug) + dashRedirect := dtos.DashboardRedirect{RedirectUri: "db/" + query.Result} + c.JSON(200, &dashRedirect) return } diff --git a/pkg/api/dtos/models.go b/pkg/api/dtos/models.go index b9fd49a19c8..a95bd464f35 100644 --- a/pkg/api/dtos/models.go +++ b/pkg/api/dtos/models.go @@ -57,8 +57,8 @@ type DashboardFullWithMeta struct { Dashboard *simplejson.Json `json:"dashboard"` } -type DashboardSlug struct { - Slug string `json:"slug"` +type DashboardRedirect struct { + RedirectUri string `json:"redirectUri"` } type DataSource struct { diff --git a/pkg/services/sqlstore/dashboard.go b/pkg/services/sqlstore/dashboard.go index 2e8fd748154..a64094cb65e 100644 --- a/pkg/services/sqlstore/dashboard.go +++ b/pkg/services/sqlstore/dashboard.go @@ -257,16 +257,22 @@ func GetDashboards(query *m.GetDashboardsQuery) error { return nil } +type DashboardSlugDTO struct { + Slug string +} + func GetDashboardSlugById(query *m.GetDashboardSlugByIdQuery) error { - dashboard := m.Dashboard{Id: query.Id} - has, err := x.Get(&dashboard) - query.Result = dashboard.Slug + var rawSql = `SELECT slug from dashboard WHERE Id=?` + var slug = DashboardSlugDTO{} + + exists, err := x.Sql(rawSql, query.Id).Get(&slug) if err != nil { return err - } else if has == false { + } else if exists == false { return m.ErrDashboardNotFound } + query.Result = slug.Slug return nil } diff --git a/public/app/core/routes/dashboard_loaders.js b/public/app/core/routes/dashboard_loaders.js index 9c276a7c3fd..61cdf32c128 100644 --- a/public/app/core/routes/dashboard_loaders.js +++ b/public/app/core/routes/dashboard_loaders.js @@ -4,20 +4,16 @@ define([ function (coreModule) { "use strict"; - coreModule.default.controller('LoadDashboardCtrl', function($scope, $routeParams, dashboardLoaderSrv, backendSrv) { + coreModule.default.controller('LoadDashboardCtrl', function($scope, $routeParams, dashboardLoaderSrv, backendSrv, $location) { if (!$routeParams.slug) { - 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); + backendSrv.get('/api/dashboards/home').then(function(homeDash) { + if (homeDash.redirectUri) { + $location.path('dashboard/' + homeDash.redirectUri); } else { - $routeParams.type = 'db'; - $routeParams.slug = result.slug; - dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug).then(function(result) { - $scope.initDashboard(result, $scope); - }); + var meta = homeDash.meta; + meta.canSave = meta.canShare = meta.canStar = false; + $scope.initDashboard(homeDash, $scope); } }); return;