diff --git a/awx/ui/client/src/shared/directives.js b/awx/ui/client/src/shared/directives.js index 3c938d343e..4e8f8f38a8 100644 --- a/awx/ui/client/src/shared/directives.js +++ b/awx/ui/client/src/shared/directives.js @@ -1151,4 +1151,21 @@ angular.module('AWDirectives', ['RestServices', 'Utilities', 'JobsHelper']) }); } }; +}]) + +.directive('awEnterKey', [function() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + element.bind("keydown keypress", function(event) { + var keyCode = event.which || event.keyCode; + if (keyCode === 13) { + scope.$apply(function() { + scope.$eval(attrs.awEnterKey); + }); + event.preventDefault(); + } + }); + } + }; }]); diff --git a/awx/ui/client/src/shared/smart-search/smart-search.controller.js b/awx/ui/client/src/shared/smart-search/smart-search.controller.js index 3352cb5495..4b3e3685cd 100644 --- a/awx/ui/client/src/shared/smart-search/smart-search.controller.js +++ b/awx/ui/client/src/shared/smart-search/smart-search.controller.js @@ -76,7 +76,8 @@ export default ['$stateParams', '$scope', '$state', 'QuerySet', 'GetBasePath', ' // add a search tag, merge new queryset, $state.go() $scope.add = function(terms) { - let params = {}; + let params = {}, + origQueryset = _.clone(queryset); _.forEach(terms.split(' '), (term) => { // if only a value is provided, search using default keys @@ -114,6 +115,25 @@ export default ['$stateParams', '$scope', '$state', 'QuerySet', 'GetBasePath', ' // https://ui-router.github.io/docs/latest/interfaces/params.paramdeclaration.html#dynamic // This transition will not reload controllers/resolves/views // but will register new $stateParams[$scope.iterator + '_search'] terms + $state.go('.', { + [$scope.iterator + '_search']: queryset }); + qs.search(path, queryset).then((res) => { + $scope.dataset = res.data; + $scope.collection = res.data.results; + }) + .catch(function() { + $scope.revertSearch(origQueryset); + }); + + $scope.searchTerm = null; + $scope.searchTags = stripDefaultParams(queryset); + }; + + $scope.revertSearch = function(queryToBeRestored) { + queryset = queryToBeRestored; + // https://ui-router.github.io/docs/latest/interfaces/params.paramdeclaration.html#dynamic + // This transition will not reload controllers/resolves/views + // but will register new $stateParams[$scope.iterator + '_search'] terms $state.go('.', { [$scope.iterator + '_search']: queryset }); qs.search(path, queryset).then((res) => { diff --git a/awx/ui/client/src/shared/smart-search/smart-search.partial.html b/awx/ui/client/src/shared/smart-search/smart-search.partial.html index 3c0061fa33..073cb6f8d1 100644 --- a/awx/ui/client/src/shared/smart-search/smart-search.partial.html +++ b/awx/ui/client/src/shared/smart-search/smart-search.partial.html @@ -3,7 +3,7 @@
-
+