diff --git a/awx/ui/client/src/helpers/PaginationHelpers.js b/awx/ui/client/src/helpers/PaginationHelpers.js index 652e17c7f2..d2019af8fc 100644 --- a/awx/ui/client/src/helpers/PaginationHelpers.js +++ b/awx/ui/client/src/helpers/PaginationHelpers.js @@ -147,6 +147,7 @@ export default new_url += (scope[iterator + 'SearchParams']) ? '&' + scope[iterator + 'SearchParams'] + '&page_size=' + scope[iterator + '_page_size'] : '&page_size=' + scope[iterator + 'PageSize']; Wait('start'); + scope.getNewPage = true; Refresh({ scope: scope, set: set, iterator: iterator, url: new_url }); }; diff --git a/awx/ui/client/src/helpers/refresh.js b/awx/ui/client/src/helpers/refresh.js index 23a1f905e5..e9821d366b 100644 --- a/awx/ui/client/src/helpers/refresh.js +++ b/awx/ui/client/src/helpers/refresh.js @@ -24,8 +24,8 @@ export default angular.module('RefreshHelper', ['RestServices', 'Utilities', 'PaginationHelpers']) - .factory('Refresh', ['ProcessErrors', 'Rest', 'Wait', 'Empty', 'PageRangeSetup', - function (ProcessErrors, Rest, Wait, Empty, PageRangeSetup) { + .factory('Refresh', ['$location', 'ProcessErrors', 'Rest', 'Wait', 'Empty', 'PageRangeSetup', + function ($location, ProcessErrors, Rest, Wait, Empty, PageRangeSetup) { return function (params) { var scope = params.scope, @@ -34,37 +34,87 @@ export default url = params.url, deferWaitStop = params.deferWaitStop; - scope.current_url = url; - Rest.setUrl(url); - Rest.get() - .success(function (data) { - var i, modifier; - PageRangeSetup({ - scope: scope, - count: data.count, - next: data.next, - previous: data.previous, - iterator: iterator + if ($location.$$url.split("/")[2] && !scope.getNewPage) { + var id = $location.$$url.split("/")[2]; + Rest.setUrl(params.url.split("?")[0] + "?id=" + id); + Rest.get() + .then(function (data) { + var name = data.data.results[0].name; + Rest.setUrl(params.url.split("?")[0] + "?name__lte=" + name); + Rest.get() + .then(function (data) { + var currentPage = Math.ceil(data.data.count/scope[iterator + '_page_size']); + scope[iterator + '_page'] = currentPage; + params.url = params.url + "&page=" + currentPage; + scope.current_url = params.url; + Rest.setUrl(params.url); + Rest.get() + .success(function (data) { + var i, modifier; + PageRangeSetup({ + scope: scope, + count: data.count, + next: data.next, + previous: data.previous, + iterator: iterator + }); + for (i = 1; i <= 3; i++) { + modifier = (i === 1) ? '' : i; + scope[iterator + 'HoldInput' + modifier] = false; + } + scope[set] = data.results; + scope[iterator + 'Loading'] = false; + scope[iterator + 'HidePaginator'] = false; + if (!deferWaitStop) { + Wait('stop'); + } + scope.$emit('PostRefresh', set); + }) + .error(function (data, status) { + scope[iterator + 'HoldInput'] = false; + ProcessErrors(scope, data, status, null, { + hdr: 'Error!', + msg: 'Failed to retrieve ' + set + '. GET returned status: ' + status + }); + }); + }); }); - for (i = 1; i <= 3; i++) { - modifier = (i === 1) ? '' : i; - scope[iterator + 'HoldInput' + modifier] = false; - } - scope[set] = data.results; - scope[iterator + 'Loading'] = false; - scope[iterator + 'HidePaginator'] = false; - if (!deferWaitStop) { - Wait('stop'); - } - scope.$emit('PostRefresh', set); - }) - .error(function (data, status) { - scope[iterator + 'HoldInput'] = false; - ProcessErrors(scope, data, status, null, { - hdr: 'Error!', - msg: 'Failed to retrieve ' + set + '. GET returned status: ' + status + } else { + scope.current_url = url; + Rest.setUrl(url); + Rest.get() + .success(function (data) { + var i, modifier; + PageRangeSetup({ + scope: scope, + count: data.count, + next: data.next, + previous: data.previous, + iterator: iterator + }); + for (i = 1; i <= 3; i++) { + modifier = (i === 1) ? '' : i; + scope[iterator + 'HoldInput' + modifier] = false; + } + scope[set] = data.results; + scope[iterator + 'Loading'] = false; + scope[iterator + 'HidePaginator'] = false; + if (!deferWaitStop) { + Wait('stop'); + } + scope.$emit('PostRefresh', set); + }) + .error(function (data, status) { + scope[iterator + 'HoldInput'] = false; + ProcessErrors(scope, data, status, null, { + hdr: 'Error!', + msg: 'Failed to retrieve ' + set + '. GET returned status: ' + status + }); }); - }); + scope.getNewPage = false; + } }; + + } ]);