diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 3a9f5eee2d..4bcfac154e 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -53,6 +53,7 @@ import organizations from './organizations/main'; import managementJobs from './management-jobs/main'; import jobDetail from './job-detail/main'; import workflowResults from './workflow-results/main'; +import jobResults from './job-results/main'; import jobSubmission from './job-submission/main'; import notifications from './notifications/main'; import about from './about/main'; @@ -123,6 +124,7 @@ var tower = angular.module('Tower', [ footer.name, jobDetail.name, workflowResults.name, + jobResults.name, jobSubmission.name, notifications.name, standardOut.name, diff --git a/awx/ui/client/src/job-detail/job-detail.route.js b/awx/ui/client/src/job-detail/job-detail.route.js index abd45101a1..dd8a7ff5ba 100644 --- a/awx/ui/client/src/job-detail/job-detail.route.js +++ b/awx/ui/client/src/job-detail/job-detail.route.js @@ -1,26 +1,82 @@ +//<<<<<<< bc59236851902d7c768aa26abdb7dc9c9dc27a5a /************************************************* * Copyright (c) 2016 Ansible, Inc. * * All Rights Reserved *************************************************/ -import { templateUrl } from '../shared/template-url/template-url.factory'; - -export default { - name: 'jobDetail', - url: '/jobs/{id: int}', - ncyBreadcrumb: { - parent: 'jobs', - label: "{{ job.id }} - {{ job.name }}" - }, - data: { - socket: { - "groups": { - "jobs": ["status_changed", "summary"], - "job_events": [] - } - } - }, - templateUrl: templateUrl('job-detail/job-detail'), - controller: 'JobDetailController' -}; +// <<<<<<< a3d9eea2c9ddb4e16deec9ec38dea16bf37c559d +// import { templateUrl } from '../shared/template-url/template-url.factory'; +// +// export default { +// name: 'jobDetail', +// url: '/jobs/{id: int}', +// ncyBreadcrumb: { +// parent: 'jobs', +// label: "{{ job.id }} - {{ job.name }}" +// }, +// data: { +// socket: { +// "groups": { +// "jobs": ["status_changed", "summary"], +// "job_events": [] +// } +// } +// }, +// templateUrl: templateUrl('job-detail/job-detail'), +// controller: 'JobDetailController' +// }; +// ======= +// import {templateUrl} from '../shared/template-url/template-url.factory'; +// +// export default { +// name: 'jobDetail', +// url: '/jobs/:id', +// ncyBreadcrumb: { +// parent: 'jobs', +// label: "{{ job.id }} - {{ job.name }}" +// }, +// socket: { +// "groups":{ +// "jobs": ["status_changed", "summary"], +// "job_events": [] +// } +// }, +// templateUrl: templateUrl('job-detail/job-detail'), +// controller: 'JobDetailController' +// }; +//======= +// /************************************************* +// * Copyright (c) 2016 Ansible, Inc. +// * +// * All Rights Reserved +// *************************************************/ +// +// import {templateUrl} from '../shared/template-url/template-url.factory'; +// +// export default { +// name: 'jobDetail', +// url: '/jobs/:id', +// ncyBreadcrumb: { +// parent: 'jobs', +// label: "{{ job.id }} - {{ job.name }}" +// }, +// resolve: { +// jobEventsSocket: ['Socket', '$rootScope', function(Socket, $rootScope) { +// if (!$rootScope.event_socket) { +// $rootScope.event_socket = Socket({ +// scope: $rootScope, +// endpoint: "job_events" +// }); +// $rootScope.event_socket.init(); +// // returns should really be providing $rootScope.event_socket +// // otherwise, we have to inject the entire $rootScope into the controller +// return true; +// } else { +// return true; +// } +// }] +// }, +// templateUrl: templateUrl('job-detail/job-detail'), +// controller: 'JobDetailController' +// }; diff --git a/awx/ui/client/src/job-detail/main.js b/awx/ui/client/src/job-detail/main.js index 891bfe373b..1307554b6e 100644 --- a/awx/ui/client/src/job-detail/main.js +++ b/awx/ui/client/src/job-detail/main.js @@ -4,7 +4,7 @@ * All Rights Reserved *************************************************/ -import route from './job-detail.route'; +// import route from './job-detail.route'; import controller from './job-detail.controller'; import service from './job-detail.service'; import hostEvents from './host-events/main'; @@ -19,6 +19,6 @@ export default ]) .controller('JobDetailController', controller) .service('JobDetailService', service) - .run(['$stateExtender', function($stateExtender) { - $stateExtender.addState(route); - }]); + // .run(['$stateExtender', function($stateExtender) { + // $stateExtender.addState(route); + // }]); diff --git a/awx/ui/client/src/job-results/job-results.route.js b/awx/ui/client/src/job-results/job-results.route.js new file mode 100644 index 0000000000..aac4d48f1d --- /dev/null +++ b/awx/ui/client/src/job-results/job-results.route.js @@ -0,0 +1,41 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +import {templateUrl} from '../shared/template-url/template-url.factory'; + +export default { + name: 'jobDetail', + url: '/jobs/:id', + ncyBreadcrumb: { + parent: 'jobs', + label: '{{ job.id }} - {{ job.name }}' + }, + resolve: { + jobData: ['Rest', 'GetBasePath', '$stateParams', '$q', '$state', 'Alert', function(Rest, GetBasePath, $stateParams, $q, $state, Alert) { + Rest.setUrl(GetBasePath('jobs') + $stateParams.id); + var val = $q.defer(); + Rest.get() + .then(function(data) { + val.resolve(data.data); + }, function(data) { + val.reject(data); + + if (data.status === 404) { + Alert('Job Not Found', 'Cannot find job.', 'alert-info'); + } else if (data.status === 403) { + Alert('Insufficient Permissions', 'You do not have permission to view this job.', 'alert-info'); + } + + $state.go('jobs'); + }); + return val.promise; + }] + }, + templateUrl: templateUrl('job-results/job-results'), + controller: ['jobData', '$scope', function(jobData, $scope) { + $scope.job = jobData; + }] +}; diff --git a/awx/ui/client/src/job-results/main.js b/awx/ui/client/src/job-results/main.js new file mode 100644 index 0000000000..71e2e13c7c --- /dev/null +++ b/awx/ui/client/src/job-results/main.js @@ -0,0 +1,13 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +import route from './job-results.route.js'; + +export default + angular.module('jobResults', []) + .run(['$stateExtender', function($stateExtender) { + $stateExtender.addState(route); + }]);