diff --git a/awx/ui/client/src/instance-groups/instances/instances.controller.js b/awx/ui/client/src/instance-groups/instances/instances.controller.js
index 2db2eb6fc4..329ee1ad19 100644
--- a/awx/ui/client/src/instance-groups/instances/instances.controller.js
+++ b/awx/ui/client/src/instance-groups/instances/instances.controller.js
@@ -1,4 +1,4 @@
-function InstancesController ($scope, $state, $http, models, strings, Dataset, ProcessErrors) {
+function InstancesController ($scope, $state, $http, $transitions, models, strings, Dataset, ProcessErrors) {
const { instanceGroup } = models;
const vm = this || {};
let paginateQuerySet = {};
@@ -21,6 +21,7 @@ function InstancesController ($scope, $state, $http, models, strings, Dataset, P
value: 'hostname'
};
+ vm.toolbarSortValue = toolbarSortDefault;
vm.toolbarSortOptions = [
toolbarSortDefault,
{
@@ -29,9 +30,7 @@ function InstancesController ($scope, $state, $http, models, strings, Dataset, P
}
];
- vm.toolbarSortValue = toolbarSortDefault;
-
- $scope.$watchCollection('$state.params', () => {
+ const removeStateParamsListener = $scope.$watchCollection('$state.params', () => {
setToolbarSort();
});
@@ -124,17 +123,32 @@ function InstancesController ($scope, $state, $http, models, strings, Dataset, P
return id === selected;
};
- $scope.$on('updateDataset', (e, dataset, queryset) => {
+ const removeUpdateDatasetListener = $scope.$on('updateDataset', (e, dataset, queryset) => {
vm.instances = dataset.results;
vm.instance_dataset = dataset;
paginateQuerySet = queryset;
});
+
+ const removeStateChangeListener = $transitions.onSuccess({}, function(trans) {
+ if (trans.to().name === 'instanceGroups.instances.modal.add') {
+ removeUpdateDatasetListener();
+ removeStateChangeListener();
+ removeStateParamsListener();
+ }
+ });
+
+ $scope.$on('$destroy', function() {
+ removeUpdateDatasetListener();
+ removeStateChangeListener();
+ removeStateParamsListener();
+ });
}
InstancesController.$inject = [
'$scope',
'$state',
'$http',
+ '$transitions',
'resolvedModels',
'InstanceGroupsStrings',
'Dataset',
diff --git a/awx/ui/client/src/instance-groups/list/instance-groups-list.partial.html b/awx/ui/client/src/instance-groups/list/instance-groups-list.partial.html
index d239a7124d..962d406a7b 100644
--- a/awx/ui/client/src/instance-groups/list/instance-groups-list.partial.html
+++ b/awx/ui/client/src/instance-groups/list/instance-groups-list.partial.html
@@ -51,7 +51,7 @@
diff --git a/awx/ui/client/src/instance-groups/main.js b/awx/ui/client/src/instance-groups/main.js
index 9c8328aea8..ea822235f1 100644
--- a/awx/ui/client/src/instance-groups/main.js
+++ b/awx/ui/client/src/instance-groups/main.js
@@ -183,6 +183,7 @@ function InstanceGroupsRun ($stateExtender, strings) {
$stateExtender.addState({
name: 'instanceGroups.instances',
url: '/:instance_group_id/instances',
+ searchPrefix: 'instance',
ncyBreadcrumb: {
parent: 'instanceGroups.edit',
label: strings.get('state.INSTANCES_BREADCRUMB_LABEL')
@@ -230,11 +231,13 @@ function InstanceGroupsRun ($stateExtender, strings) {
$stateExtender.addState({
name: 'instanceGroups.instances.modal.add',
+ url: '/add',
ncyBreadcrumb: {
skip: true,
},
+ searchPrefix: 'add_instance',
params: {
- instance_search: {
+ add_instance_search: {
value: {
page_size: '10',
order_by: 'hostname'
@@ -254,7 +257,7 @@ function InstanceGroupsRun ($stateExtender, strings) {
Dataset: ['GetBasePath', 'QuerySet', '$stateParams',
function(GetBasePath, qs, $stateParams) {
let path = `${GetBasePath('instances')}`;
- return qs.search(path, $stateParams[`instance_search`]);
+ return qs.search(path, $stateParams[`add_instance_search`]);
}
]
}