diff --git a/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.directive.js b/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.directive.js index 897261c9c5..6b9111ab23 100644 --- a/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.directive.js +++ b/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.directive.js @@ -4,24 +4,29 @@ function InstanceListPolicyLink (scope, el, attrs, controllers) { const instancePolicyController = controllers[0]; const formController = controllers[1]; const models = scope.$resolve.resolvedModels; + const Dataset = scope.$resolve.Dataset; - instancePolicyController.init(formController, models); + instancePolicyController.init(formController, models, Dataset); } - function InstanceListPolicyController ($scope, $state, strings) { const vm = this || {}; let form; - let instance; let instanceGroup; + vm.strings = strings; - vm.init = (_form_, _models_) => { + vm.init = (_form_, _models_, Dataset) => { form = _form_; - ({ instance, instanceGroup} = _models_); + ({ instanceGroup } = _models_); - vm.strings = strings; vm.instanceGroupId = instanceGroup.get('id'); - vm.defaultParams = { page_size: '10', order_by: 'hostname' }; + + $scope.list = { + name: 'instances', + iterator: 'instance' + }; + $scope.instance_dataset = Dataset.data; + $scope.instances = Dataset.data.results; if (vm.instanceGroupId === undefined) { vm.setInstances(); @@ -31,25 +36,24 @@ function InstanceListPolicyController ($scope, $state, strings) { }; vm.setInstances = () => { - vm.instances = instance.get('results').map(instance => { + $scope.instances = $scope.instances.map(instance => { instance.isSelected = false; return instance; }); }; vm.setRelatedInstances = () => { - vm.instanceGroupName = instanceGroup.get('name'); vm.relatedInstances = instanceGroup.get('policy_instance_list'); - vm.instances = instance.get('results').map(instance => { + $scope.instances = $scope.instances.map(instance => { instance.isSelected = vm.relatedInstances.includes(instance.hostname); return instance; }); }; - $scope.$watch('vm.instances', function() { - vm.selectedRows = _.filter(vm.instances, 'isSelected'); - vm.deselectedRows = _.filter(vm.instances, 'isSelected', false); + $scope.$watch('instances', function() { + vm.selectedRows = _.filter($scope.instances, 'isSelected'); + vm.deselectedRows = _.filter($scope.instances, 'isSelected', false); }, true); vm.submit = () => { diff --git a/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.partial.html b/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.partial.html index 218e61421d..821bbffc64 100644 --- a/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.partial.html +++ b/awx/ui/client/src/instance-groups/add-edit/instance-list-policy.partial.html @@ -3,7 +3,7 @@ {{:: vm.strings.get('instance.PANEL_TITLE') }} - +
+ search-tags="searchTags" + query-set="querySet">
- - + instance.extend('get', 'jobs', {params: {page_size: "10", order_by: "-finished"}})); - return $q.all(promises); } @@ -111,6 +108,14 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { ncyBreadcrumb: { label: strings.get('state.ADD_BREADCRUMB_LABEL') }, + params: { + instance_search: { + value: { + order_by: 'hostname', + page_size: '10' + } + } + }, views: { 'add@instanceGroups': { templateUrl: AddEditTemplate, @@ -119,7 +124,17 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { } }, resolve: { - resolvedModels: InstanceGroupsResolve + resolvedModels: InstanceGroupsResolve, + Dataset: [ + '$stateParams', + 'GetBasePath', + 'QuerySet', + ($stateParams, GetBasePath, qs) => { + const searchParams = $stateParams.instance_search; + const searchPath = GetBasePath('instances'); + return qs.search(searchPath, searchParams); + } + ] } }); @@ -146,8 +161,7 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { "modal": { template: '', } - }, - resolvedModels: InstanceGroupsResolve + } }); $stateExtender.addState({ @@ -156,6 +170,14 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { ncyBreadcrumb: { label: strings.get('state.EDIT_BREADCRUMB_LABEL') }, + params: { + instance_search: { + value: { + order_by: 'hostname', + page_size: '10' + } + } + }, views: { 'edit@instanceGroups': { templateUrl: AddEditTemplate, @@ -164,7 +186,17 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { } }, resolve: { - resolvedModels: InstanceGroupsResolve + resolvedModels: InstanceGroupsResolve, + Dataset: [ + '$stateParams', + 'GetBasePath', + 'QuerySet', + ($stateParams, GetBasePath, qs) => { + const searchParams = $stateParams.instance_search; + const searchPath = GetBasePath('instances'); + return qs.search(searchPath, searchParams); + } + ] } }); @@ -192,8 +224,7 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) { "modal": { template: '', } - }, - resolvedModels: InstanceGroupsResolve + } }); $stateExtender.addState({