mirror of
https://github.com/ansible/awx.git
synced 2026-03-09 05:29:26 -02: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:
@@ -23,6 +23,7 @@ import apiLoader from './api-loader';
|
|||||||
import variables from './variables/main';
|
import variables from './variables/main';
|
||||||
import parse from './parse/main';
|
import parse from './parse/main';
|
||||||
import loadconfig from './load-config/main';
|
import loadconfig from './load-config/main';
|
||||||
|
import nextpage from './next-page/main';
|
||||||
import Modal from './Modal';
|
import Modal from './Modal';
|
||||||
import moment from './moment/main';
|
import moment from './moment/main';
|
||||||
import config from './config/main';
|
import config from './config/main';
|
||||||
@@ -50,6 +51,7 @@ angular.module('shared', [listGenerator.name,
|
|||||||
variables.name,
|
variables.name,
|
||||||
parse.name,
|
parse.name,
|
||||||
loadconfig.name,
|
loadconfig.name,
|
||||||
|
nextpage.name,
|
||||||
Modal.name,
|
Modal.name,
|
||||||
moment.name,
|
moment.name,
|
||||||
config.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',
|
availableLabels: ['ProcessErrors', 'TemplatesService',
|
||||||
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
function(ProcessErrors, TemplatesService) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllLabelOptions()
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
@@ -175,35 +149,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
}],
|
}],
|
||||||
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
||||||
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllLabelOptions()
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
@@ -214,38 +162,13 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
}],
|
}],
|
||||||
selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors',
|
selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors',
|
||||||
function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) {
|
function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllJobTemplateLabels($stateParams.job_template_id)
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
msg: 'Failed to get labels. GET returned status: ' +
|
msg: 'Failed to get workflow job template labels. GET returned status: ' +
|
||||||
response.status
|
response.status
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -266,35 +189,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
add: {
|
add: {
|
||||||
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
||||||
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllLabelOptions()
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
@@ -340,35 +237,9 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
edit: {
|
edit: {
|
||||||
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
|
||||||
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllLabelOptions()
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
@@ -379,38 +250,13 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplates.
|
|||||||
}],
|
}],
|
||||||
selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors',
|
selectedLabels: ['Rest', '$stateParams', 'GetBasePath', 'TemplatesService', 'ProcessErrors',
|
||||||
function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) {
|
function(Rest, $stateParams, GetBasePath, TemplatesService, ProcessErrors) {
|
||||||
var getNext = function(data, arr) {
|
return TemplatesService.getAllWorkflowJobTemplateLabels($stateParams.workflow_job_template_id)
|
||||||
Rest.setUrl(data.next);
|
.then(function(labels){
|
||||||
return Rest.get()
|
return labels;
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}).catch(function(response){
|
}).catch(function(response){
|
||||||
ProcessErrors(null, response.data, response.status, null, {
|
ProcessErrors(null, response.data, response.status, null, {
|
||||||
hdr: 'Error!',
|
hdr: 'Error!',
|
||||||
msg: 'Failed to get labels. GET returned status: ' +
|
msg: 'Failed to get workflow job template labels. GET returned status: ' +
|
||||||
response.status
|
response.status
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*************************************************/
|
*************************************************/
|
||||||
|
|
||||||
export default ['Rest', 'GetBasePath', '$q', function(Rest, GetBasePath, $q){
|
export default ['Rest', 'GetBasePath', '$q', 'NextPage', function(Rest, GetBasePath, $q, NextPage){
|
||||||
return {
|
return {
|
||||||
deleteJobTemplate: function(id){
|
deleteJobTemplate: function(id){
|
||||||
var url = GetBasePath('job_templates');
|
var url = GetBasePath('job_templates');
|
||||||
@@ -34,51 +34,69 @@ export default ['Rest', 'GetBasePath', '$q', function(Rest, GetBasePath, $q){
|
|||||||
Rest.setUrl(url);
|
Rest.setUrl(url);
|
||||||
return Rest.post(data);
|
return Rest.post(data);
|
||||||
},
|
},
|
||||||
getLabelOptions: function(){
|
getAllLabelOptions: function() {
|
||||||
var url = GetBasePath('labels') + '?page_size=200';
|
Rest.setUrl(GetBasePath('labels') + '?page_size=200');
|
||||||
|
return Rest.get()
|
||||||
var deferred = $q.defer();
|
.then(function(res) {
|
||||||
|
if (res.data.next) {
|
||||||
Rest.setUrl(url);
|
return NextPage({
|
||||||
Rest.get()
|
url: res.data.next,
|
||||||
.success(function(data) {
|
arrayOfValues: res.data.results
|
||||||
deferred.resolve(data);
|
}).then(function(labels) {
|
||||||
}).error(function(msg, code) {
|
return labels;
|
||||||
deferred.reject(msg, code);
|
}).catch(function(response){
|
||||||
});
|
return $q.reject( response );
|
||||||
|
});
|
||||||
return deferred.promise;
|
}
|
||||||
|
else {
|
||||||
|
return $q.resolve( res.data.results );
|
||||||
|
}
|
||||||
|
}).catch(function(response){
|
||||||
|
return $q.reject( response );
|
||||||
|
});
|
||||||
},
|
},
|
||||||
getJobTemplateLabels: function(id) {
|
getAllJobTemplateLabels: function(id) {
|
||||||
var url = GetBasePath('job_templates') + id + "/labels?page_size=200";
|
Rest.setUrl(GetBasePath('job_templates') + id + "/labels?page_size=20");
|
||||||
|
return Rest.get()
|
||||||
var deferred = $q.defer();
|
.then(function(res) {
|
||||||
|
if (res.data.next) {
|
||||||
Rest.setUrl(url);
|
return NextPage({
|
||||||
Rest.get()
|
url: res.data.next,
|
||||||
.success(function(data) {
|
arrayOfValues: res.data.results
|
||||||
deferred.resolve(data);
|
}).then(function(labels) {
|
||||||
}).error(function(msg, code) {
|
return labels;
|
||||||
deferred.reject(msg, code);
|
}).catch(function(response){
|
||||||
});
|
return $q.reject( response );
|
||||||
|
});
|
||||||
return deferred.promise;
|
}
|
||||||
|
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();
|
getAllWorkflowJobTemplateLabels: function(id) {
|
||||||
|
Rest.setUrl(GetBasePath('workflow_job_templates') + id + "/labels?page_size=200");
|
||||||
Rest.setUrl(url);
|
return Rest.get()
|
||||||
Rest.get()
|
.then(function(res) {
|
||||||
.success(function(data) {
|
if (res.data.next) {
|
||||||
deferred.resolve(data);
|
return NextPage({
|
||||||
}).error(function(msg, code) {
|
url: res.data.next,
|
||||||
deferred.reject(msg, code);
|
arrayOfValues: res.data.results
|
||||||
});
|
}).then(function(labels) {
|
||||||
|
return labels;
|
||||||
return deferred.promise;
|
}).catch(function(response){
|
||||||
|
return $q.reject( response );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $q.resolve( res.data.results );
|
||||||
|
}
|
||||||
|
}).catch(function(response){
|
||||||
|
return $q.reject( response );
|
||||||
|
});
|
||||||
},
|
},
|
||||||
getJobTemplate: function(id) {
|
getJobTemplate: function(id) {
|
||||||
var url = GetBasePath('job_templates');
|
var url = GetBasePath('job_templates');
|
||||||
|
|||||||
Reference in New Issue
Block a user