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 @@
  • Templating
  • Export
  • View JSON
  • +
  • Delete dashboard
  • diff --git a/src/app/partials/search.html b/src/app/partials/search.html index 8483ec0cf41..a595c2309f0 100644 --- a/src/app/partials/search.html +++ b/src/app/partials/search.html @@ -7,11 +7,11 @@
    - + starred | - + tags @@ -43,28 +43,22 @@
    No dashboards matching your query were found.
    - + +
    diff --git a/src/css/less/search.less b/src/css/less/search.less index 1d4c507a3ae..28e0b48d5cb 100644 --- a/src/css/less/search.less +++ b/src/css/less/search.less @@ -3,11 +3,16 @@ top: 33px; margin: 15px; z-index: 1000; - position: fixed; + position: absolute; width: 700px; box-shadow: 0px 0px 55px 0px black; padding: 10px; - font-size: 16px; + + .label-tag { + margin-left: 6px; + font-size: 11px; + padding: 2px 6px; + } } // Search @@ -34,9 +39,7 @@ line-height: 28px; .search-result-item:hover, .search-result-item.selected { - .search-result-link, .search-result-link > .fa { - color: @grafanaListHighlight; - } + background-color: @grafanaListHighlight; } .selected { @@ -56,30 +59,21 @@ .search-result-link { color: @grafanaListMainLinkColor; - .fa-th-large { + .fa { padding-right: 10px; - color: @grafanaListHighlightContrast; } } - .search-result-item:nth-child(odd) { - background-color: @grafanaListAccent; - } - .search-result-item { + display: block; padding: 3px 10px; white-space: nowrap; - border-bottom: 1px solid @grafanaListBorderBottom; - border-top: 1px solid @grafanaListBorderTop; + background-color: @grafanaListBackground; + margin-bottom: 4px; } .search-result-tags { float: right; - .label-tag { - margin-left: 6px; - font-size: 11px; - padding: 2px 6px; - } } .search-result-actions { diff --git a/src/css/less/variables.dark.less b/src/css/less/variables.dark.less index 956fad6e074..af8b72360d8 100644 --- a/src/css/less/variables.dark.less +++ b/src/css/less/variables.dark.less @@ -85,13 +85,12 @@ @borderRadiusSmall: 2px; // Lists -@grafanaListBackground: transparent; +@grafanaListBackground: #262626; @grafanaListAccent: lighten(@grayDarker, 2%); @grafanaListBorderTop: @grayDark; @grafanaListBorderBottom: @black; -@grafanaListHighlight: @blue; -@grafanaListHighlightContrast: #4F4F4F; -@grafanaListMainLinkColor: @linkColor; +@grafanaListHighlight: #343434; +@grafanaListMainLinkColor: @textColor; // Scrollbars @scrollbarBackground: #3a3a3a;