diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index ac43f2693e3..3fd3932e810 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -45,7 +45,7 @@ func GetDashboard(c *middleware.Context) { dash := query.Result dto := dtos.Dashboard{ Model: dash.Data, - Meta: dtos.DashboardMeta{IsStarred: isStarred}, + Meta: dtos.DashboardMeta{IsStarred: isStarred, Slug: slug}, } c.JSON(200, dto) diff --git a/pkg/api/dtos/models.go b/pkg/api/dtos/models.go index dfb76229199..12d72314f8d 100644 --- a/pkg/api/dtos/models.go +++ b/pkg/api/dtos/models.go @@ -26,8 +26,9 @@ type CurrentUser struct { } type DashboardMeta struct { - IsStarred bool `json:"isStarred"` - IsHome bool `json:"isHome"` + IsStarred bool `json:"isStarred"` + IsHome bool `json:"isHome"` + Slug string `json:"slug"` } type Dashboard struct { diff --git a/src/app/controllers/search.js b/src/app/controllers/search.js index a7503bb0347..96af8db9cce 100644 --- a/src/app/controllers/search.js +++ b/src/app/controllers/search.js @@ -19,9 +19,6 @@ function (angular, _, config, $) { $scope.db = datasourceSrv.getGrafanaDB(); $scope.currentSearchId = 0; - // events - $scope.onAppEvent('dashboard-deleted', $scope.dashboardDeleted); - $timeout(function() { $scope.giveSearchFocus = $scope.giveSearchFocus + 1; $scope.query.query = ''; @@ -77,6 +74,10 @@ function (angular, _, config, $) { .then(function(results) { if (localSearchId < $scope.currentSearchId) { return; } + if ($scope.query.query === "") { + results.dashboards.splice(0, 1, { title: 'Home', url: config.appSubUrl + '/', isHome: true }); + } + $scope.results.dashboards = results.dashboards; $scope.results.tags = results.tags; $scope.resultCount = results.tagsOnly ? results.tags.length : results.dashboards.length; @@ -112,16 +113,6 @@ function (angular, _, config, $) { $scope.searchDashboards(); }; - $scope.deleteDashboard = function(dash, evt) { - evt.stopPropagation(); - $scope.appEvent('delete-dashboard', { slug: dash.slug, title: dash.title }); - }; - - $scope.dashboardDeleted = function(evt, payload) { - var dash = _.findWhere($scope.results.dashboards, { slug: payload.slug }); - $scope.results.dashboards = _.without($scope.results.dashboards, dash); - }; - $scope.addMetricToCurrentDashboard = function (metricId) { $scope.dashboard.rows.push({ title: '', diff --git a/src/app/features/dashboard/dashboardNavCtrl.js b/src/app/features/dashboard/dashboardNavCtrl.js index b46324869af..4955c2e5185 100644 --- a/src/app/features/dashboard/dashboardNavCtrl.js +++ b/src/app/features/dashboard/dashboardNavCtrl.js @@ -103,23 +103,21 @@ function (angular, _, moment, config, store) { }); }; - $scope.deleteDashboard = function(evt, options) { + $scope.deleteDashboard = function() { if (!$scope.isAdmin()) { return false; } $scope.appEvent('confirm-modal', { title: 'Delete dashboard', - text: 'Do you want to delete dashboard ' + options.title + '?', + text: 'Do you want to delete dashboard ' + $scope.dashboard.title + '?', onConfirm: function() { - $scope.deleteDashboardConfirmed(options); + $scope.deleteDashboardConfirmed(); } }); }; - $scope.deleteDashboardConfirmed = function(options) { - var slug = options.slug; - $scope.db.deleteDashboard(slug).then(function() { - $scope.appEvent('dashboard-deleted', options); - $scope.appEvent('alert-success', ['Dashboard Deleted', options.title + ' has been deleted']); + $scope.deleteDashboardConfirmed = function() { + $scope.db.deleteDashboard($scope.dashboardMeta.slug).then(function() { + $scope.appEvent('alert-success', ['Dashboard Deleted', $scope.dashboard.title + ' has been deleted']); }, function(err) { $scope.appEvent('alert-error', ['Deleted failed', err]); }); diff --git a/src/app/partials/dashboard_topnav.html b/src/app/partials/dashboard_topnav.html index a5ab843ff02..f95a21362ac 100644 --- a/src/app/partials/dashboard_topnav.html +++ b/src/app/partials/dashboard_topnav.html @@ -43,6 +43,7 @@