diff --git a/public/app/core/components/search/search.html b/public/app/core/components/search/search.html index bbd4c66b170..7a78f1a4a3e 100644 --- a/public/app/core/components/search/search.html +++ b/public/app/core/components/search/search.html @@ -16,7 +16,7 @@ | - + {{tagName}} @@ -28,7 +28,7 @@
-
@@ -47,7 +47,7 @@ ng-class="{'selected': $index == selectedIndex}" ng-href="{{row.url}}"> - + {{tag}} diff --git a/public/app/core/components/search/search.ts b/public/app/core/components/search/search.ts index 39c8686bbe3..e28f80a9099 100644 --- a/public/app/core/components/search/search.ts +++ b/public/app/core/components/search/search.ts @@ -14,6 +14,7 @@ export class SearchCtrl { currentSearchId: number; tagsMode: boolean; showImport: boolean; + dismiss: any; /** @ngInject */ constructor(private $scope, private $location, private $timeout, private backendSrv, private contextSrv) { @@ -32,7 +33,7 @@ export class SearchCtrl { keyDown(evt) { if (evt.keyCode === 27) { - this.$scope.dismiss(); + this.dismiss(); } if (evt.keyCode === 40) { this.moveSelection(1); @@ -107,9 +108,12 @@ export class SearchCtrl { getTags() { return this.backendSrv.get('/api/dashboards/tags').then((results) => { - this.tagsMode = true; + this.tagsMode = !this.tagsMode; this.results = results; this.giveSearchFocus = this.giveSearchFocus + 1; + if ( !this.tagsMode ) { + this.search(); + } }); }; @@ -137,7 +141,9 @@ export function searchDirective() { controller: SearchCtrl, bindToController: true, controllerAs: 'ctrl', - scope: {}, + scope: { + dismiss: '&' + }, }; } diff --git a/public/app/core/controllers/all.js b/public/app/core/controllers/all.js index 5c4184e609a..54631586c2f 100644 --- a/public/app/core/controllers/all.js +++ b/public/app/core/controllers/all.js @@ -1,5 +1,4 @@ define([ - './search_ctrl', './inspect_ctrl', './json_editor_ctrl', './login_ctrl', diff --git a/public/app/core/controllers/search_ctrl.js b/public/app/core/controllers/search_ctrl.js deleted file mode 100644 index 589a9ce840f..00000000000 --- a/public/app/core/controllers/search_ctrl.js +++ /dev/null @@ -1,127 +0,0 @@ -define([ - 'angular', - 'lodash', - '../core_module', - 'app/core/config', -], -function (angular, _, coreModule, config) { - 'use strict'; - - coreModule.default.controller('SearchCtrl', function($scope, $location, $timeout, backendSrv) { - - $scope.init = function() { - $scope.giveSearchFocus = 0; - $scope.selectedIndex = -1; - $scope.results = []; - $scope.query = { query: '', tag: [], starred: false }; - $scope.currentSearchId = 0; - - $timeout(function() { - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - $scope.query.query = ''; - $scope.search(); - }, 100); - }; - - $scope.keyDown = function (evt) { - if (evt.keyCode === 27) { - $scope.dismiss(); - } - if (evt.keyCode === 40) { - $scope.moveSelection(1); - } - if (evt.keyCode === 38) { - $scope.moveSelection(-1); - } - if (evt.keyCode === 13) { - if ($scope.tagMode) { - var tag = $scope.results[$scope.selectedIndex]; - if (tag) { - $scope.filterByTag(tag.term); - } - return; - } - - var selectedDash = $scope.results[$scope.selectedIndex]; - if (selectedDash) { - $location.search({}); - $location.path(selectedDash.url); - } - } - }; - - $scope.moveSelection = function(direction) { - var max = ($scope.results || []).length; - var newIndex = $scope.selectedIndex + direction; - $scope.selectedIndex = ((newIndex %= max) < 0) ? newIndex + max : newIndex; - }; - - $scope.searchDashboards = function() { - $scope.tagsMode = false; - $scope.currentSearchId = $scope.currentSearchId + 1; - var localSearchId = $scope.currentSearchId; - - return backendSrv.search($scope.query).then(function(results) { - if (localSearchId < $scope.currentSearchId) { return; } - - $scope.results = _.map(results, function(dash) { - dash.url = 'dashboard/' + dash.uri; - return dash; - }); - - if ($scope.queryHasNoFilters()) { - $scope.results.unshift({ title: 'Home', url: config.appSubUrl + '/', type: 'dash-home' }); - } - }); - }; - - $scope.queryHasNoFilters = function() { - var query = $scope.query; - return query.query === '' && query.starred === false && query.tag.length === 0; - }; - - $scope.filterByTag = function(tag, evt) { - $scope.query.tag.push(tag); - $scope.search(); - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - if (evt) { - evt.stopPropagation(); - evt.preventDefault(); - } - }; - - $scope.removeTag = function(tag, evt) { - $scope.query.tag = _.without($scope.query.tag, tag); - $scope.search(); - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - evt.stopPropagation(); - evt.preventDefault(); - }; - - $scope.getTags = function() { - return backendSrv.get('/api/dashboards/tags').then(function(results) { - $scope.tagsMode = true; - $scope.results = results; - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - }); - }; - - $scope.showStarred = function() { - $scope.query.starred = !$scope.query.starred; - $scope.giveSearchFocus = $scope.giveSearchFocus + 1; - $scope.search(); - }; - - $scope.search = function() { - $scope.showImport = false; - $scope.selectedIndex = 0; - $scope.searchDashboards(); - }; - - $scope.newDashboard = function() { - $location.url('dashboard/new'); - }; - - }); - -}); diff --git a/public/app/features/dashboard/directives/dashSearchView.js b/public/app/features/dashboard/directives/dashSearchView.js index cbc38a98901..cee97fee758 100644 --- a/public/app/features/dashboard/directives/dashSearchView.js +++ b/public/app/features/dashboard/directives/dashSearchView.js @@ -29,7 +29,7 @@ function (angular, $) { editorScope = null; }; - var view = $(''); + var view = $(''); elem.append(view); $compile(elem.contents())(editorScope); diff --git a/public/app/plugins/datasource/elasticsearch/datasource.js b/public/app/plugins/datasource/elasticsearch/datasource.js index da31c6b50bb..0d2fd174c4d 100644 --- a/public/app/plugins/datasource/elasticsearch/datasource.js +++ b/public/app/plugins/datasource/elasticsearch/datasource.js @@ -146,7 +146,7 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes return { status: "success", message: "Data source is working", title: "Success" }; }, function(err) { if (err.data && err.data.error) { - return { status: "error", message: err.data.error, title: "Error" }; + return { status: "error", message: angular.toJson(err.data.error), title: "Error" }; } else { return { status: "error", message: err.status, title: "Error" }; }