diff --git a/src/app/controllers/dashboardNavCtrl.js b/src/app/controllers/dashboardNavCtrl.js index ce5b9934efd..fadb9392a2a 100644 --- a/src/app/controllers/dashboardNavCtrl.js +++ b/src/app/controllers/dashboardNavCtrl.js @@ -68,6 +68,10 @@ function (angular, _, moment, config, store) { return false; }; + $scope.openSearch = function() { + $scope.emitAppEvent('show-dash-editor', { src: 'app/partials/search.html' }); + }; + $scope.saveDashboard = function() { if (!this.isAdmin()) { return false; } diff --git a/src/app/controllers/search.js b/src/app/controllers/search.js index 3d11bc68750..55f44b017ad 100644 --- a/src/app/controllers/search.js +++ b/src/app/controllers/search.js @@ -9,7 +9,7 @@ function (angular, _, config, $) { var module = angular.module('grafana.controllers'); - module.controller('SearchCtrl', function($scope, $rootScope, $element, $location, datasourceSrv) { + module.controller('SearchCtrl', function($scope, $rootScope, $element, $location, datasourceSrv, $timeout) { $scope.init = function() { $scope.giveSearchFocus = 0; @@ -17,7 +17,13 @@ function (angular, _, config, $) { $scope.results = {dashboards: [], tags: [], metrics: []}; $scope.query = { query: 'title:' }; $scope.db = datasourceSrv.getGrafanaDB(); - $scope.onAppEvent('open-search', $scope.openSearch); + + $timeout(function() { + $scope.giveSearchFocus = $scope.giveSearchFocus + 1; + $scope.query.query = 'title:'; + $scope.search(); + }, 100); + }; $scope.keyDown = function (evt) { @@ -94,22 +100,11 @@ function (angular, _, config, $) { $scope.search = function() { $scope.showImport = false; - $scope.selectedIndex = -1; + $scope.selectedIndex = 0; $scope.searchDashboards($scope.query.query); }; - $scope.openSearch = function (evt) { - if (evt) { - $element.next().find('.dropdown-toggle').dropdown('toggle'); - } - - $scope.searchOpened = true; - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - $scope.query.query = 'title:'; - $scope.search(); - }; - $scope.addMetricToCurrentDashboard = function (metricId) { $scope.dashboard.rows.push({ title: '', diff --git a/src/app/directives/dashEditLink.js b/src/app/directives/dashEditLink.js index 6baf3f05de7..4b49f0e2456 100644 --- a/src/app/directives/dashEditLink.js +++ b/src/app/directives/dashEditLink.js @@ -15,7 +15,6 @@ function (angular, $) { elem.bind('click',function() { $timeout(function() { - scope.exitFullscreen(); scope.emitAppEvent('show-dash-editor', { src: partial, scope: scope }); }); }); @@ -32,22 +31,31 @@ function (angular, $) { var editorScope; var lastEditor; + scope.onAppEvent('hide-dash-editor', function() { + if (editorScope) { + editorScope.dismiss(); + } + }); + scope.onAppEvent('show-dash-editor', function(evt, payload) { if (lastEditor === payload.src) { editorScope.dismiss(); return; } - if (lastEditor) { + if (editorScope) { editorScope.dismiss(); } + scope.exitFullscreen(); + lastEditor = payload.src; - editorScope = payload.scope.$new(); + editorScope = payload.scope ? payload.scope.$new() : scope.$new(); editorScope.dismiss = function() { editorScope.$destroy(); elem.empty(); lastEditor = null; + editorScope = null; }; var src = "'" + payload.src + "'"; diff --git a/src/app/partials/dashboard.html b/src/app/partials/dashboard.html index e11d5cd85a8..a68b4d334c5 100644 --- a/src/app/partials/dashboard.html +++ b/src/app/partials/dashboard.html @@ -1,4 +1,4 @@ -