mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 11:00:03 -03:30
Moved recursive label gathering out into a service. Added NextPage factory that can be leveraged when fetching a resource with multiple pages (like labels)
This commit is contained in:
parent
7fd2cbe500
commit
1be8f0e17a
@ -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,
|
||||
|
||||
5
awx/ui/client/src/shared/next-page/main.js
Normal file
5
awx/ui/client/src/shared/next-page/main.js
Normal file
@ -0,0 +1,5 @@
|
||||
import NextPage from './next-page.factory';
|
||||
|
||||
export default
|
||||
angular.module('nextpage', [])
|
||||
.factory('NextPage', NextPage);
|
||||
28
awx/ui/client/src/shared/next-page/next-page.factory.js
Normal file
28
awx/ui/client/src/shared/next-page/next-page.factory.js
Normal file
@ -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'];
|
||||
@ -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
|
||||
});
|
||||
});
|
||||
|
||||
@ -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');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user