mirror of
https://github.com/ansible/awx.git
synced 2026-05-12 11:57:37 -02:30
Moves scheduler to related tab for workflows
and updates all links to point to updated state
This commit is contained in:
@@ -100,7 +100,7 @@ function ListTemplatesController(
|
|||||||
if (isJobTemplate(template)) {
|
if (isJobTemplate(template)) {
|
||||||
$state.go('templates.editJobTemplate.schedules', { job_template_id: template.id });
|
$state.go('templates.editJobTemplate.schedules', { job_template_id: template.id });
|
||||||
} else if (isWorkflowTemplate(template)) {
|
} else if (isWorkflowTemplate(template)) {
|
||||||
$state.go('workflowJobTemplateSchedules', { id: template.id });
|
$state.go('templates.editWorkflowJobTemplate.schedules', { workflow_job_template_id: template.id });
|
||||||
} else {
|
} else {
|
||||||
Alert(strings.get('error.UNKNOWN'), strings.get('alert.UNKNOWN_SCHEDULE'));
|
Alert(strings.get('error.UNKNOWN'), strings.get('alert.UNKNOWN_SCHEDULE'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,97 +34,7 @@ export default
|
|||||||
// Inventory sync schedule states registered in: awx/ui/client/src/inventories/manage/groups/main.js
|
// Inventory sync schedule states registered in: awx/ui/client/src/inventories/manage/groups/main.js
|
||||||
// Scheduled jobs states registered in awx/uiclient/src/job-detail/main.js
|
// Scheduled jobs states registered in awx/uiclient/src/job-detail/main.js
|
||||||
|
|
||||||
// workflows
|
|
||||||
$stateExtender.addState({
|
|
||||||
searchPrefix: 'schedule',
|
|
||||||
name: 'workflowJobTemplateSchedules',
|
|
||||||
route: '/templates/workflow_job_template/:id/schedules',
|
|
||||||
data: {
|
|
||||||
activityStream: true,
|
|
||||||
activityStreamTarget: 'job_template',
|
|
||||||
activityStreamId: 'id'
|
|
||||||
},
|
|
||||||
ncyBreadcrumb: {
|
|
||||||
parent: 'templates.editWorkflowJobTemplate({workflow_job_template_id: parentObject.id})',
|
|
||||||
label: N_('SCHEDULES')
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
Dataset: ['ScheduleList', 'QuerySet', '$stateParams', 'GetBasePath',
|
|
||||||
function(list, qs, $stateParams, GetBasePath) {
|
|
||||||
let path = `${GetBasePath('workflow_job_templates')}${$stateParams.id}/schedules`;
|
|
||||||
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
|
||||||
}
|
|
||||||
],
|
|
||||||
ParentObject: ['$stateParams', 'Rest', 'GetBasePath', function($stateParams, Rest, GetBasePath){
|
|
||||||
let path = `${GetBasePath('workflow_job_templates')}${$stateParams.id}`;
|
|
||||||
Rest.setUrl(path);
|
|
||||||
return Rest.get(path).then(response => response.data);
|
|
||||||
}],
|
|
||||||
UnifiedJobsOptions: ['Rest', 'GetBasePath', '$stateParams', '$q',
|
|
||||||
function(Rest, GetBasePath, $stateParams, $q) {
|
|
||||||
Rest.setUrl(GetBasePath('unified_jobs'));
|
|
||||||
var val = $q.defer();
|
|
||||||
Rest.options()
|
|
||||||
.then(function(data) {
|
|
||||||
val.resolve(data.data);
|
|
||||||
}, function(data) {
|
|
||||||
val.reject(data);
|
|
||||||
});
|
|
||||||
return val.promise;
|
|
||||||
}],
|
|
||||||
ScheduleList: ['SchedulesList', 'GetBasePath', '$stateParams',
|
|
||||||
(SchedulesList, GetBasePath, $stateParams) => {
|
|
||||||
let list = _.cloneDeep(SchedulesList);
|
|
||||||
list.basePath = GetBasePath('workflow_job_templates') + $stateParams.id + '/schedules/';
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
views: {
|
|
||||||
'@': {
|
|
||||||
templateProvider: function(ScheduleList, generateList, ParentObject, $filter){
|
|
||||||
// include name of parent resource in listTitle
|
|
||||||
ScheduleList.listTitle = `${$filter('sanitize')(ParentObject.name)}<div class='List-titleLockup'></div>` + N_('SCHEDULES');
|
|
||||||
let html = generateList.build({
|
|
||||||
list: ScheduleList,
|
|
||||||
mode: 'edit'
|
|
||||||
});
|
|
||||||
html = generateList.wrapPanel(html);
|
|
||||||
return generateList.insertFormView() + html;
|
|
||||||
},
|
|
||||||
controller: 'schedulerListController'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$stateExtender.addState({
|
|
||||||
name: 'workflowJobTemplateSchedules.add',
|
|
||||||
route: '/add',
|
|
||||||
views: {
|
|
||||||
'form': {
|
|
||||||
controller: 'schedulerAddController',
|
|
||||||
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ncyBreadcrumb: {
|
|
||||||
parent: 'workflowJobTemplateSchedules',
|
|
||||||
label: N_('CREATE SCHEDULE')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$stateExtender.addState({
|
|
||||||
name: 'workflowJobTemplateSchedules.edit',
|
|
||||||
route: '/:schedule_id',
|
|
||||||
views: {
|
|
||||||
'form': {
|
|
||||||
controller: 'schedulerEditController',
|
|
||||||
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ncyBreadcrumb: {
|
|
||||||
parent: 'workflowJobTemplateSchedules',
|
|
||||||
label: '{{schedule_obj.name}}'
|
|
||||||
},
|
|
||||||
resolve: editScheduleResolve()
|
|
||||||
});
|
|
||||||
// projects
|
// projects
|
||||||
$stateExtender.addState({
|
$stateExtender.addState({
|
||||||
searchPrefix: 'schedule',
|
searchPrefix: 'schedule',
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait',
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if ($state.current.name === 'workflowJobTemplateSchedules.add'){
|
} else if ($state.current.name === 'templates.editWorkflowJobTemplate.schedules.add'){
|
||||||
let workflowJobTemplate = new WorkflowJobTemplate();
|
let workflowJobTemplate = new WorkflowJobTemplate();
|
||||||
|
|
||||||
$q.all([workflowJobTemplate.optionsLaunch(ParentObject.id), workflowJobTemplate.getLaunch(ParentObject.id)])
|
$q.all([workflowJobTemplate.optionsLaunch(ParentObject.id), workflowJobTemplate.getLaunch(ParentObject.id)])
|
||||||
@@ -276,7 +276,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait',
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($state.current.name === 'workflowJobTemplateSchedules.add' ||
|
if ($state.current.name === 'templates.editWorkflowJobTemplate.schedules.add' ||
|
||||||
$state.current.name === 'projectSchedules.add' ||
|
$state.current.name === 'projectSchedules.add' ||
|
||||||
$state.current.name === 'inventories.edit.inventory_sources.edit.schedules.add'
|
$state.current.name === 'inventories.edit.inventory_sources.edit.schedules.add'
|
||||||
){
|
){
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if ($state.current.name === 'workflowJobTemplateSchedules.edit') {
|
} else if ($state.current.name === 'templates.editWorkflowJobTemplate.schedules.edit') {
|
||||||
let workflowJobTemplate = new WorkflowJobTemplate();
|
let workflowJobTemplate = new WorkflowJobTemplate();
|
||||||
|
|
||||||
$q.all([workflowJobTemplate.optionsLaunch(ParentObject.id), workflowJobTemplate.getLaunch(ParentObject.id)])
|
$q.all([workflowJobTemplate.optionsLaunch(ParentObject.id), workflowJobTemplate.getLaunch(ParentObject.id)])
|
||||||
@@ -453,7 +453,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment,
|
|||||||
if ($state.current.name !== 'managementJobsList.schedule.add' && $state.current.name !== 'managementJobsList.schedule.edit'){
|
if ($state.current.name !== 'managementJobsList.schedule.add' && $state.current.name !== 'managementJobsList.schedule.edit'){
|
||||||
if ($state.current.name === 'projectSchedules.edit' ||
|
if ($state.current.name === 'projectSchedules.edit' ||
|
||||||
$state.current.name === 'inventories.edit.inventory_sources.edit.schedules.edit' ||
|
$state.current.name === 'inventories.edit.inventory_sources.edit.schedules.edit' ||
|
||||||
$state.current.name === 'workflowJobTemplateSchedules.add'
|
$state.current.name === 'templates.editWorkflowJobTemplate.schedules.add'
|
||||||
){
|
){
|
||||||
$scope.noVars = true;
|
$scope.noVars = true;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ export default [
|
|||||||
deferred.resolve({
|
deferred.resolve({
|
||||||
name: 'templates.editJobTemplate.schedules.edit',
|
name: 'templates.editJobTemplate.schedules.edit',
|
||||||
params: {
|
params: {
|
||||||
id: schedule.unified_job_template,
|
job_template_id: schedule.unified_job_template,
|
||||||
schedule_id: schedule.id
|
schedule_id: schedule.id
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -175,9 +175,9 @@ export default [
|
|||||||
|
|
||||||
case 'workflow_job':
|
case 'workflow_job':
|
||||||
deferred.resolve({
|
deferred.resolve({
|
||||||
name: 'workflowJobTemplateSchedules.edit',
|
name: 'templates.editWorkflowJobTemplate.schedules.edit',
|
||||||
params: {
|
params: {
|
||||||
id: schedule.unified_job_template,
|
workflow_job_template_id: schedule.unified_job_template,
|
||||||
schedule_id: schedule.id
|
schedule_id: schedule.id
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -93,8 +93,103 @@ const jobTemplatesSchedulesEditRoute = {
|
|||||||
resolve: editScheduleResolve()
|
resolve: editScheduleResolve()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// workflows
|
||||||
|
const workflowSchedulesRoute = {
|
||||||
|
searchPrefix: 'schedule',
|
||||||
|
name: 'templates.editWorkflowJobTemplate.schedules',
|
||||||
|
route: '/schedules',
|
||||||
|
data: {
|
||||||
|
activityStream: true,
|
||||||
|
activityStreamTarget: 'job_template',
|
||||||
|
activityStreamId: 'id'
|
||||||
|
},
|
||||||
|
ncyBreadcrumb: {
|
||||||
|
parent: 'templates.editWorkflowJobTemplate({workflow_job_template_id: parentObject.id})',
|
||||||
|
label: N_('SCHEDULES')
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
Dataset: ['ScheduleList', 'QuerySet', '$stateParams', 'GetBasePath',
|
||||||
|
function(list, qs, $stateParams, GetBasePath) {
|
||||||
|
let path = `${GetBasePath('workflow_job_templates')}${$stateParams.workflow_job_template_id}/schedules`;
|
||||||
|
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ParentObject: ['$stateParams', 'Rest', 'GetBasePath', function($stateParams, Rest, GetBasePath){
|
||||||
|
let path = `${GetBasePath('workflow_job_templates')}${$stateParams.workflow_job_template_id}`;
|
||||||
|
Rest.setUrl(path);
|
||||||
|
return Rest.get(path).then(response => response.data);
|
||||||
|
}],
|
||||||
|
UnifiedJobsOptions: ['Rest', 'GetBasePath', '$stateParams', '$q',
|
||||||
|
function(Rest, GetBasePath, $stateParams, $q) {
|
||||||
|
Rest.setUrl(GetBasePath('unified_jobs'));
|
||||||
|
var val = $q.defer();
|
||||||
|
Rest.options()
|
||||||
|
.then(function(data) {
|
||||||
|
val.resolve(data.data);
|
||||||
|
}, function(data) {
|
||||||
|
val.reject(data);
|
||||||
|
});
|
||||||
|
return val.promise;
|
||||||
|
}],
|
||||||
|
ScheduleList: ['SchedulesList', 'GetBasePath', '$stateParams',
|
||||||
|
(SchedulesList, GetBasePath, $stateParams) => {
|
||||||
|
let list = _.cloneDeep(SchedulesList);
|
||||||
|
list.basePath = GetBasePath('workflow_job_templates') + $stateParams.workflow_job_template_id + '/schedules/';
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
views: {
|
||||||
|
related: {
|
||||||
|
templateProvider: function(ScheduleList, generateList, ParentObject, $filter){
|
||||||
|
ScheduleList.title = false;
|
||||||
|
let html = generateList.build({
|
||||||
|
list: ScheduleList,
|
||||||
|
mode: 'edit'
|
||||||
|
});
|
||||||
|
return html;
|
||||||
|
},
|
||||||
|
controller: 'schedulerListController'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const workflowSchedulesAddRoute = {
|
||||||
|
name: 'templates.editWorkflowJobTemplate.schedules.add',
|
||||||
|
route: '/add',
|
||||||
|
views: {
|
||||||
|
'scheduler@templates': {
|
||||||
|
controller: 'schedulerAddController',
|
||||||
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ncyBreadcrumb: {
|
||||||
|
parent: 'templates.editWorkflowJobTemplate({workflow_job_template_id: parentObject.id})',
|
||||||
|
label: N_('CREATE SCHEDULE')
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const workflowSchedulesEditRoute = {
|
||||||
|
name: 'templates.editWorkflowJobTemplate.schedules.edit',
|
||||||
|
route: '/:schedule_id',
|
||||||
|
views: {
|
||||||
|
'scheduler@templates': {
|
||||||
|
controller: 'schedulerEditController',
|
||||||
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ncyBreadcrumb: {
|
||||||
|
parent: 'templates.editWorkflowJobTemplate({workflow_job_template_id: parentObject.id})',
|
||||||
|
label: '{{schedule_obj.name}}'
|
||||||
|
},
|
||||||
|
resolve: editScheduleResolve()
|
||||||
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
jobTemplatesSchedulesListRoute,
|
jobTemplatesSchedulesListRoute,
|
||||||
jobTemplatesSchedulesAddRoute,
|
jobTemplatesSchedulesAddRoute,
|
||||||
jobTemplatesSchedulesEditRoute
|
jobTemplatesSchedulesEditRoute,
|
||||||
|
workflowSchedulesRoute,
|
||||||
|
workflowSchedulesAddRoute,
|
||||||
|
workflowSchedulesEditRoute
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ import workflowJobTemplateCompletedJobsRoute from '~features/jobs/routes/workflo
|
|||||||
import {
|
import {
|
||||||
jobTemplatesSchedulesListRoute,
|
jobTemplatesSchedulesListRoute,
|
||||||
jobTemplatesSchedulesAddRoute,
|
jobTemplatesSchedulesAddRoute,
|
||||||
jobTemplatesSchedulesEditRoute
|
jobTemplatesSchedulesEditRoute,
|
||||||
|
workflowSchedulesRoute,
|
||||||
|
workflowSchedulesAddRoute,
|
||||||
|
workflowSchedulesEditRoute
|
||||||
} from '../scheduler/schedules.route';
|
} from '../scheduler/schedules.route';
|
||||||
|
|
||||||
export default
|
export default
|
||||||
@@ -756,7 +759,10 @@ angular.module('templates', [surveyMaker.name, jobTemplates.name, labels.name, p
|
|||||||
stateExtender.buildDefinition(workflowMaker),
|
stateExtender.buildDefinition(workflowMaker),
|
||||||
stateExtender.buildDefinition(jobTemplatesSchedulesListRoute),
|
stateExtender.buildDefinition(jobTemplatesSchedulesListRoute),
|
||||||
stateExtender.buildDefinition(jobTemplatesSchedulesAddRoute),
|
stateExtender.buildDefinition(jobTemplatesSchedulesAddRoute),
|
||||||
stateExtender.buildDefinition(jobTemplatesSchedulesEditRoute)
|
stateExtender.buildDefinition(jobTemplatesSchedulesEditRoute),
|
||||||
|
stateExtender.buildDefinition(workflowSchedulesRoute),
|
||||||
|
stateExtender.buildDefinition(workflowSchedulesAddRoute),
|
||||||
|
stateExtender.buildDefinition(workflowSchedulesEditRoute)
|
||||||
])
|
])
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -181,6 +181,11 @@ export default ['NotificationsList', 'i18n', function(NotificationsList, i18n) {
|
|||||||
title: i18n._('Completed Jobs'),
|
title: i18n._('Completed Jobs'),
|
||||||
skipGenerator: true,
|
skipGenerator: true,
|
||||||
ngClick: "$state.go('templates.editWorkflowJobTemplate.completed_jobs')"
|
ngClick: "$state.go('templates.editWorkflowJobTemplate.completed_jobs')"
|
||||||
|
},
|
||||||
|
"schedules": {
|
||||||
|
title: i18n._('Schedules'),
|
||||||
|
skipGenerator: true,
|
||||||
|
ngClick: "$state.go('templates.editWorkflowJobTemplate.schedules')"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user