diff --git a/awx/ui/client/src/shared/main.js b/awx/ui/client/src/shared/main.js index eccf67be4e..3fdf3bdf95 100644 --- a/awx/ui/client/src/shared/main.js +++ b/awx/ui/client/src/shared/main.js @@ -23,6 +23,7 @@ import apiLoader from './api-loader'; import variables from './variables/main'; import parse from './parse/main'; import loadconfig from './load-config/main'; +import nextpage from './next-page/main'; import Modal from './Modal'; import moment from './moment/main'; import config from './config/main'; @@ -50,6 +51,7 @@ angular.module('shared', [listGenerator.name, variables.name, parse.name, loadconfig.name, + nextpage.name, Modal.name, moment.name, config.name, diff --git a/awx/ui/client/src/shared/next-page/main.js b/awx/ui/client/src/shared/next-page/main.js new file mode 100644 index 0000000000..8d9e83f28a --- /dev/null +++ b/awx/ui/client/src/shared/next-page/main.js @@ -0,0 +1,5 @@ +import NextPage from './next-page.factory'; + +export default + angular.module('nextpage', []) + .factory('NextPage', NextPage); diff --git a/awx/ui/client/src/shared/next-page/next-page.factory.js b/awx/ui/client/src/shared/next-page/next-page.factory.js new file mode 100644 index 0000000000..fa5bce3dc7 --- /dev/null +++ b/awx/ui/client/src/shared/next-page/next-page.factory.js @@ -0,0 +1,28 @@ +export default + function NextPage(Rest, $q) { + return function(params) { + + let getNext = function(getNextParams){ + Rest.setUrl(getNextParams.url); + return Rest.get() + .then(function (res) { + if (res.data.next) { + return getNext({ + url: res.data.next, + arrayOfValues: getNextParams.arrayOfValues.concat(res.data.results) + }); + } else { + return $q.resolve(getNextParams.arrayOfValues.concat(res.data.results)); + } + }) + .catch(function(response) { + return $q.reject( response ); + }); + }; + + return getNext(params); + + }; + } + +NextPage.$inject = ['Rest', '$q']; diff --git a/awx/ui/client/src/templates/main.js b/awx/ui/client/src/templates/main.js index 945d52dab2..ecb07913c9 100644 --- a/awx/ui/client/src/templates/main.js +++ b/awx/ui/client/src/templates/main.js @@ -78,37 +78,11 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. }); } }], - availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService', - function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - - return TemplatesService.getLabelOptions() - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + availableLabels: ['ProcessErrors', 'TemplatesService', + function(ProcessErrors, TemplatesService) { + return TemplatesService.getAllLabelOptions() + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', @@ -175,35 +149,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. }], availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService', function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - - return TemplatesService.getLabelOptions() - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + return TemplatesService.getAllLabelOptions() + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', @@ -214,38 +162,13 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. }], selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors', function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - return TemplatesService.getJobTemplateLabels($stateParams.job_template_id) - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + return TemplatesService.getAllJobTemplateLabels($stateParams.job_template_id) + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + + msg: 'Failed to get workflow job template labels. GET returned status: ' + response.status }); }); @@ -266,35 +189,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. add: { availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService', function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - - return TemplatesService.getLabelOptions() - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + return TemplatesService.getAllLabelOptions() + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', @@ -340,35 +237,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. edit: { availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService', function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - - return TemplatesService.getLabelOptions() - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + return TemplatesService.getAllLabelOptions() + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', @@ -379,38 +250,13 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates. }], selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors', function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) { - var getNext = function(data, arr) { - Rest.setUrl(data.next); - return Rest.get() - .then(function (res) { - if (res.data.next) { - return getNext(res.data, arr.concat(res.data.results)); - } else { - return arr.concat(res.data.results); - } - }); - }; - return TemplatesService.getWorkflowJobTemplateLabels($stateParams.workflow_job_template_id) - .then(function(res) { - if (res.next) { - return getNext(res, res.results) - .then(function(labels) { - return labels; - }).catch(function(response){ - ProcessErrors(null, response.data, response.status, null, { - hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + - response.status - }); - }); - } - else { - return res.results; - } + return TemplatesService.getAllWorkflowJobTemplateLabels($stateParams.workflow_job_template_id) + .then(function(labels){ + return labels; }).catch(function(response){ ProcessErrors(null, response.data, response.status, null, { hdr: 'Error!', - msg: 'Failed to get labels. GET returned status: ' + + msg: 'Failed to get workflow job template labels. GET returned status: ' + response.status }); }); diff --git a/awx/ui/client/src/templates/templates.service.js b/awx/ui/client/src/templates/templates.service.js index c740d6663d..1c9940cb0f 100644 --- a/awx/ui/client/src/templates/templates.service.js +++ b/awx/ui/client/src/templates/templates.service.js @@ -4,7 +4,7 @@ * All Rights Reserved *************************************************/ -export default ['Rest', 'GetBasePath', '$q', function(Rest, GetBasePath, $q){ +export default ['Rest', 'GetBasePath', '$q', 'NextPage', function(Rest, GetBasePath, $q, NextPage){ return { deleteJobTemplate: function(id){ var url = GetBasePath('job_templates'); @@ -34,51 +34,69 @@ export default ['Rest', 'GetBasePath', '$q', function(Rest, GetBasePath, $q){ Rest.setUrl(url); return Rest.post(data); }, - getLabelOptions: function(){ - var url = GetBasePath('labels') + '?page_size=200'; - - var deferred = $q.defer(); - - Rest.setUrl(url); - Rest.get() - .success(function(data) { - deferred.resolve(data); - }).error(function(msg, code) { - deferred.reject(msg, code); - }); - - return deferred.promise; - + getAllLabelOptions: function() { + Rest.setUrl(GetBasePath('labels') + '?page_size=200'); + return Rest.get() + .then(function(res) { + if (res.data.next) { + return NextPage({ + url: res.data.next, + arrayOfValues: res.data.results + }).then(function(labels) { + return labels; + }).catch(function(response){ + return $q.reject( response ); + }); + } + else { + return $q.resolve( res.data.results ); + } + }).catch(function(response){ + return $q.reject( response ); + }); }, - getJobTemplateLabels: function(id) { - var url = GetBasePath('job_templates') + id + "/labels?page_size=200"; - - var deferred = $q.defer(); - - Rest.setUrl(url); - Rest.get() - .success(function(data) { - deferred.resolve(data); - }).error(function(msg, code) { - deferred.reject(msg, code); - }); - - return deferred.promise; + getAllJobTemplateLabels: function(id) { + Rest.setUrl(GetBasePath('job_templates') + id + "/labels?page_size=20"); + return Rest.get() + .then(function(res) { + if (res.data.next) { + return NextPage({ + url: res.data.next, + arrayOfValues: res.data.results + }).then(function(labels) { + return labels; + }).catch(function(response){ + return $q.reject( response ); + }); + } + else { + return $q.resolve( res.data.results ); + } + }).catch(function(response){ + return $q.reject( response ); + }); }, - getWorkflowJobTemplateLabels: function(id) { - var url = GetBasePath('workflow_job_templates') + id + "/labels?page_size=200"; - var deferred = $q.defer(); - - Rest.setUrl(url); - Rest.get() - .success(function(data) { - deferred.resolve(data); - }).error(function(msg, code) { - deferred.reject(msg, code); - }); - - return deferred.promise; + getAllWorkflowJobTemplateLabels: function(id) { + Rest.setUrl(GetBasePath('workflow_job_templates') + id + "/labels?page_size=200"); + return Rest.get() + .then(function(res) { + if (res.data.next) { + return NextPage({ + url: res.data.next, + arrayOfValues: res.data.results + }).then(function(labels) { + return labels; + }).catch(function(response){ + return $q.reject( response ); + }); + } + else { + return $q.resolve( res.data.results ); + } + }).catch(function(response){ + return $q.reject( response ); + }); }, getJobTemplate: function(id) { var url = GetBasePath('job_templates');