mirror of
https://github.com/ansible/awx.git
synced 2026-01-27 00:21:30 -03:30
Fixes routing to scheduled jobs view (#4280)
* Issue #4267 * Fixes routing issues to upcoming scheduled jobs view * Fixes edit schedule routing from scheduled jobs list view * re-enable jobDetails route, match jobDetais route only when url is /jobs/integer/
This commit is contained in:
parent
824fb21b3f
commit
e895c0989a
@ -83,7 +83,7 @@ angular.module('inventory', [
|
||||
mode: 'edit'
|
||||
});
|
||||
html = generateList.wrapPanel(html);
|
||||
return html;
|
||||
return generateList.insertFormView() + html;
|
||||
},
|
||||
controller: 'schedulerListController'
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ export default
|
||||
name: {
|
||||
key: true,
|
||||
label: 'Name',
|
||||
ngClick: "editSchedule(schedule.id)",
|
||||
ngClick: "editSchedule(schedule)",
|
||||
columnClass: "col-md-3 col-sm-3 col-xs-6"
|
||||
},
|
||||
dtstart: {
|
||||
@ -73,7 +73,7 @@ export default
|
||||
fieldActions: {
|
||||
edit: {
|
||||
label: 'Edit',
|
||||
ngClick: "editSchedule(schedule.id)",
|
||||
ngClick: "editSchedule(schedule)",
|
||||
icon: 'icon-edit',
|
||||
awToolTip: 'Edit schedule',
|
||||
dataPlacement: 'top',
|
||||
@ -81,7 +81,7 @@ export default
|
||||
},
|
||||
view: {
|
||||
label: 'View',
|
||||
ngClick: "editSchedule(schedule.id)",
|
||||
ngClick: "editSchedule(schedule)",
|
||||
awToolTip: 'View schedule',
|
||||
dataPlacement: 'top',
|
||||
ngShow: '!schedule.summary_fields.user_capabilities.edit'
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<div class="Form-tab" id="active_jobs_link" ng-class="{'is-selected': $state.is('jobs')}" ng-click="$state.go('jobs')">
|
||||
<translate>Jobs</translate>
|
||||
</div>
|
||||
<div id="scheduled_jobs_link" class="Form-tab" ng-class="{'is-selected': $state.is('jobs.scheduled')}" ng-click="$state.go('.scheduled')">
|
||||
<div id="scheduled_jobs_link" class="Form-tab" ng-class="{'is-selected': $state.is('jobs.schedules')}" ng-click="$state.go('.schedules')">
|
||||
<translate>Schedules</translate>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -238,13 +238,13 @@ export default
|
||||
// upcoming scheduled jobs
|
||||
$stateExtender.addState({
|
||||
searchPrefix: 'schedule',
|
||||
name: 'jobs.scheduled',
|
||||
route: '/scheduled',
|
||||
name: 'jobs.schedules',
|
||||
route: '/schedules',
|
||||
params: {
|
||||
schedule_search: {
|
||||
value: {
|
||||
next_run__isnull: 'false',
|
||||
order_by: 'next_run'
|
||||
order_by: 'unified_job_template__polymorphic_ctype__model'
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -258,13 +258,16 @@ export default
|
||||
label: 'SCHEDULED'
|
||||
},
|
||||
resolve: {
|
||||
SchedulesList: ['ScheduledJobsList', function(list){
|
||||
return list;
|
||||
}],
|
||||
Dataset: ['SchedulesList', 'QuerySet', '$stateParams', 'GetBasePath',
|
||||
function(list, qs, $stateParams, GetBasePath) {
|
||||
let path = GetBasePath('schedules');
|
||||
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
||||
}
|
||||
],
|
||||
ParentObject: [() =>{return null;}]
|
||||
ParentObject: [() =>{return {endpoint:'/api/v1/schedules'}; }],
|
||||
},
|
||||
views: {
|
||||
'list@jobs': {
|
||||
|
||||
@ -31,7 +31,7 @@ export default [
|
||||
function init() {
|
||||
if (ParentObject){
|
||||
$scope.parentObject = ParentObject;
|
||||
scheduleEndpoint = ParentObject.related.schedules || `${ParentObject.related.inventory_source}schedules`;
|
||||
scheduleEndpoint = ParentObject.endpoint|| ParentObject.related.schedules || `${ParentObject.related.inventory_source}schedules`;
|
||||
$scope.canAdd = false;
|
||||
rbacUiControlService.canAdd(scheduleEndpoint)
|
||||
.then(function(canAdd) {
|
||||
@ -67,8 +67,77 @@ export default [
|
||||
$state.go('.add');
|
||||
};
|
||||
|
||||
$scope.editSchedule = function(schedule_id) {
|
||||
$state.go('.edit', { schedule_id: schedule_id });
|
||||
$scope.editSchedule = function(schedule) {
|
||||
if ($state.is('jobs.schedules')){
|
||||
routeToScheduleForm(schedule, 'edit');
|
||||
}
|
||||
else {
|
||||
$state.go('.edit', { schedule_id: schedule.id });
|
||||
}
|
||||
|
||||
function buildStateMap(schedule){
|
||||
|
||||
let deferred = $q.defer();
|
||||
|
||||
switch(schedule.summary_fields.unified_job_template.unified_job_type){
|
||||
case 'inventory_update':
|
||||
Rest.setUrl(schedule.related.unified_job_template);
|
||||
Rest.get().then( (res) => {
|
||||
deferred.resolve({
|
||||
name: 'inventoryManage.editGroup.schedules.edit',
|
||||
params: {
|
||||
group_id: res.data.group,
|
||||
inventory_id: res.data.inventory,
|
||||
schedule_id: schedule.id,
|
||||
}
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
||||
case 'project_update':
|
||||
deferred.resolve({
|
||||
name: 'projectSchedules.edit',
|
||||
params: {
|
||||
id: schedule.unified_job_template,
|
||||
schedule_id: schedule.id
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'system_job':
|
||||
deferred.resolve({
|
||||
name: 'managementJobSchedules.edit',
|
||||
params: {
|
||||
id: schedule.unified_job_template,
|
||||
schedule_id: schedule.id
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function routeToScheduleForm(schedule){
|
||||
|
||||
buildStateMap(schedule).then( (state) =>{
|
||||
$state.go(state.name, state.params).catch((err) =>{
|
||||
// stateDefinition.lazyLoad'd state name matcher is not configured to match inventoryManage.* state names
|
||||
// However, the stateDefinition.lazyLoad url matcher will load the correct tree.
|
||||
// Expected error:
|
||||
// Transition rejection error
|
||||
// type: 4 // SUPERSEDED = 2, ABORTED = 3, INVALID = 4, IGNORED = 5, ERROR = 6
|
||||
// detail : "Could not resolve 'inventoryManage.editGroup.schedules.edit' from state 'jobs.schedules'"
|
||||
// message: "This transition is invalid"
|
||||
if (err.type === 4 && err.detail.includes('inventoryManage.editGroup.schedules.edit')){
|
||||
$location.path(`/inventories/${state.params.inventory_id}/manage/edit-group/${state.params.group_id}/schedules/${state.params.schedule_id}`);
|
||||
}
|
||||
else {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.toggleSchedule = function(event, id) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user