diff --git a/awx/ui/client/src/forms/Inventories.js b/awx/ui/client/src/forms/Inventories.js
index 746c8a49a9..aa6d6f06e3 100644
--- a/awx/ui/client/src/forms/Inventories.js
+++ b/awx/ui/client/src/forms/Inventories.js
@@ -79,6 +79,7 @@ export default
related: {
scan_job_templates: {
+ basePath: 'inventories/:id/scan_job_templates',
type: 'collection',
title: 'Scan Job Templates',
iterator: 'scan_job_template',
diff --git a/awx/ui/client/src/lists/InventoryGroups.js b/awx/ui/client/src/lists/InventoryGroups.js
index 53881f3d7c..db3f2bc7a0 100644
--- a/awx/ui/client/src/lists/InventoryGroups.js
+++ b/awx/ui/client/src/lists/InventoryGroups.js
@@ -73,7 +73,7 @@ export default
},
last_update_failed: {
label: 'Update failed?',
- searchType: 'select',
+ searchType: 'boolean',
searchSingleValue: true,
searchValue: 'failed',
searchOnly: true,
diff --git a/awx/ui/client/src/search/getSearchHtml.service.js b/awx/ui/client/src/search/getSearchHtml.service.js
index 82484abfc9..8570237b32 100644
--- a/awx/ui/client/src/search/getSearchHtml.service.js
+++ b/awx/ui/client/src/search/getSearchHtml.service.js
@@ -9,6 +9,7 @@ export default ['GetBasePath', function(GetBasePath) {
.searchable !== false);
}).map(function(i) {
delete f[i].awToolTip;
+ delete f[i].ngClass;
return {[i]: f[i]};
}).reduce(function (acc, i) {
var key = Object.keys(i);
diff --git a/awx/ui/client/src/search/tagSearch.partial.html b/awx/ui/client/src/search/tagSearch.partial.html
index 0e557dca2a..de379cf3d9 100644
--- a/awx/ui/client/src/search/tagSearch.partial.html
+++ b/awx/ui/client/src/search/tagSearch.partial.html
@@ -3,9 +3,10 @@
-
- {{ currentSearchType.label || "Foo bar"}}
+ ng-class="{'is-open': showTypeDropdown}"
+ ng-cloak>
+
+ {{ currentSearchType.label }}
diff --git a/awx/ui/client/src/search/tagSearch.service.js b/awx/ui/client/src/search/tagSearch.service.js
index 93348d89c3..93d4819901 100644
--- a/awx/ui/client/src/search/tagSearch.service.js
+++ b/awx/ui/client/src/search/tagSearch.service.js
@@ -1,4 +1,4 @@
-export default ['Rest', '$q', 'GetBasePath', function(Rest, $q, GetBasePath) {
+export default ['Rest', '$q', 'GetBasePath', 'Wait', 'ProcessErrors', function(Rest, $q, GetBasePath, Wait, ProcessErrors) {
var that = this;
// parse the field config object to return
// one of the searchTypes (for the left dropdown)
@@ -18,7 +18,7 @@ export default ['Rest', '$q', 'GetBasePath', function(Rest, $q, GetBasePath) {
var type, typeOptions;
if (field.searchType === 'select') {
type = 'select';
- typeOptions = [];
+ typeOptions = field.searchOptions || [];
} else if (field.searchType === 'boolean') {
type = 'select';
typeOptions = [{label: "Yes", value: true},
@@ -49,6 +49,7 @@ export default ['Rest', '$q', 'GetBasePath', function(Rest, $q, GetBasePath) {
// given the fields that are searchable,
// return searchTypes in the format the view can use
this.getSearchTypes = function(list, basePath) {
+ Wait("start");
var defer = $q.defer();
var options = Object
@@ -95,11 +96,17 @@ export default ['Rest', '$q', 'GetBasePath', function(Rest, $q, GetBasePath) {
});
return option;
+ })
+ .error(function (data, status) {
+ ProcessErrors(null, data, status, null, {
+ hdr: 'Error!',
+ msg: 'Getting type options failed'});
});
-
+ Wait("stop");
defer.resolve(joinOptions());
});
} else {
+ Wait("stop");
defer.resolve(joinOptions());
}