Browse Source

feat(preferences): refactoring PR #4399

Torkel Ödegaard 10 years ago
parent
commit
7023dedc05

+ 2 - 3
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
 	}
 

+ 2 - 2
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 {

+ 10 - 4
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
 }

+ 7 - 11
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;