request job details and initial events dataset concurrently

This commit is contained in:
Jake McDermott 2018-06-08 22:23:54 -04:00
parent 4c93c68a29
commit 5e9da2d772
No known key found for this signature in database
GPG Key ID: 3B02CAD476EECB35

View File

@ -26,19 +26,20 @@ const PAGE_LIMIT = 5;
const PAGE_SIZE = 50;
const ORDER_BY = 'counter';
const WS_PREFIX = 'ws';
const API_ROOT = '/api/v2/';
function resolveResource (
$state,
$stateParams,
Job,
ProjectUpdate,
AdHocCommand,
SystemJob,
WorkflowJob,
InventoryUpdate,
$stateParams,
qs,
Wait,
eventsApi,
Events,
) {
const { id, type, handleErrors } = $stateParams;
const { job_event_search } = $stateParams; // eslint-disable-line camelcase
@ -46,24 +47,28 @@ function resolveResource (
const { name, key } = getWebSocketResource(type);
let Resource;
let related = 'events';
let related;
switch (type) {
case 'project':
Resource = ProjectUpdate;
related = `project_updates/${id}/events/`;
break;
case 'playbook':
Resource = Job;
related = 'job_events';
related = `jobs/${id}/job_events/`;
break;
case 'command':
Resource = AdHocCommand;
related = `ad_hoc_commands/${id}/events/`;
break;
case 'system':
Resource = SystemJob;
related = `system_jobs/${id}/events/`;
break;
case 'inventory':
Resource = InventoryUpdate;
related = `inventory_updates/${id}/events/`;
break;
// case 'workflow':
// todo: integrate workflow chart components into this view
@ -89,21 +94,15 @@ function resolveResource (
Object.assign(config.params, query);
}
Wait('start');
const resourcePromise = new Resource(['get', 'options'], [id, id])
.then(model => {
const endpoint = `${model.get('url')}${related}/`;
eventsApi.init(endpoint, config.params);
Events.init(`${API_ROOT}${related}`, config.params);
return eventsApi.fetch()
.then(events => ([model, events]));
})
Wait('start');
const promise = Promise.all([new Resource(['get', 'options'], [id, id]), Events.fetch()])
.then(([model, events]) => ({
id,
type,
model,
events,
related,
ws: {
events: `${WS_PREFIX}-${key}-${id}`,
status: `${WS_PREFIX}-${name}`,
@ -116,13 +115,14 @@ function resolveResource (
}));
if (!handleErrors) {
return resourcePromise
return promise
.finally(() => Wait('stop'));
}
return resourcePromise
return promise
.catch(({ data, status }) => {
qs.error(data, status);
return $state.go($state.current, $state.params, { reload: true });
})
.finally(() => Wait('stop'));
@ -209,13 +209,13 @@ function JobsRun ($stateRegistry, $filter, strings) {
],
resource: [
'$state',
'$stateParams',
'JobModel',
'ProjectUpdateModel',
'AdHocCommandModel',
'SystemJobModel',
'WorkflowJobModel',
'InventoryUpdateModel',
'$stateParams',
'QuerySet',
'Wait',
'JobEventsApiService',