mirror of
https://github.com/ansible/awx.git
synced 2026-01-29 15:24:42 -03:30
371 lines
17 KiB
JavaScript
371 lines
17 KiB
JavaScript
/*************************************************
|
|
* Copyright (c) 2015 Ansible, Inc.
|
|
*
|
|
* All Rights Reserved
|
|
*************************************************/
|
|
|
|
import listController from './schedulerList.controller';
|
|
import addController from './schedulerAdd.controller';
|
|
import editController from './schedulerEdit.controller';
|
|
import {templateUrl} from '../shared/template-url/template-url.factory';
|
|
import schedulerDatePicker from './schedulerDatePicker.directive';
|
|
import { N_ } from '../i18n';
|
|
import AddSchedule from './factories/add-schedule.factory';
|
|
import DeleteSchedule from './factories/delete-schedule.factory';
|
|
import EditSchedule from './factories/edit-schedule.factory';
|
|
import RRuleToAPI from './factories/r-rule-to-api.factory';
|
|
import SchedulePost from './factories/schedule-post.factory';
|
|
import ToggleSchedule from './factories/toggle-schedule.factory';
|
|
import SchedulesList from './schedules.list';
|
|
import ScheduledJobsList from './scheduled-jobs.list';
|
|
|
|
export default
|
|
angular.module('scheduler', [])
|
|
.controller('schedulerListController', listController)
|
|
.controller('schedulerAddController', addController)
|
|
.controller('schedulerEditController', editController)
|
|
.factory('AddSchedule', AddSchedule)
|
|
.factory('DeleteSchedule', DeleteSchedule)
|
|
.factory('EditSchedule', EditSchedule)
|
|
.factory('RRuleToAPI', RRuleToAPI)
|
|
.factory('SchedulePost', SchedulePost)
|
|
.factory('ToggleSchedule', ToggleSchedule)
|
|
.factory('SchedulesList', SchedulesList)
|
|
.factory('ScheduledJobsList', ScheduledJobsList)
|
|
.directive('schedulerDatePicker', schedulerDatePicker)
|
|
.run(['$stateExtender', function($stateExtender) {
|
|
// 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
|
|
|
|
// job templates
|
|
$stateExtender.addState({
|
|
searchPrefix: 'schedule',
|
|
name: 'jobTemplateSchedules',
|
|
route: '/templates/job_template/:id/schedules',
|
|
data: {
|
|
activityStream: true,
|
|
activityStreamTarget: 'job_template',
|
|
activityStreamId: 'id'
|
|
},
|
|
ncyBreadcrumb: {
|
|
parent: 'templates.editJobTemplate({job_template_id: parentObject.id})',
|
|
label: N_('SCHEDULES')
|
|
},
|
|
resolve: {
|
|
Dataset: ['ScheduleList', 'QuerySet', '$stateParams', 'GetBasePath',
|
|
function(list, qs, $stateParams, GetBasePath) {
|
|
let path = `${GetBasePath('job_templates')}${$stateParams.id}/schedules`;
|
|
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
|
}
|
|
],
|
|
ParentObject: ['$stateParams', 'Rest', 'GetBasePath', function($stateParams, Rest, GetBasePath){
|
|
let path = `${GetBasePath('job_templates')}${$stateParams.id}`;
|
|
Rest.setUrl(path);
|
|
return Rest.get(path).then((res) => res.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('job_templates') + $stateParams.id + '/schedules/';
|
|
return list;
|
|
}
|
|
]
|
|
},
|
|
views: {
|
|
'@': {
|
|
templateProvider: function(ScheduleList, generateList, ParentObject){
|
|
// include name of parent resource in listTitle
|
|
ScheduleList.listTitle = `${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: 'jobTemplateSchedules.add',
|
|
route: '/add',
|
|
views: {
|
|
'form': {
|
|
controller: 'schedulerAddController',
|
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
}
|
|
},
|
|
ncyBreadcrumb: {
|
|
parent: 'jobTemplateSchedules',
|
|
label: N_('CREATE SCHEDULE')
|
|
}
|
|
});
|
|
$stateExtender.addState({
|
|
name: 'jobTemplateSchedules.edit',
|
|
route: '/:schedule_id',
|
|
views: {
|
|
'form': {
|
|
controller: 'schedulerEditController',
|
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
}
|
|
},
|
|
ncyBreadcrumb: {
|
|
parent: 'jobTemplateSchedules',
|
|
label: '{{schedule_obj.name}}'
|
|
}
|
|
});
|
|
|
|
// workflows
|
|
$stateExtender.addState({
|
|
searchPrefix: 'schedule',
|
|
name: 'workflowJobTemplateSchedules',
|
|
route: '/templates/workflow_job_template/:id/schedules',
|
|
templateUrl: templateUrl("scheduler/scheduler"),
|
|
controller: 'schedulerController',
|
|
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((res) => res.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){
|
|
// include name of parent resource in listTitle
|
|
ScheduleList.listTitle = `${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}}'
|
|
}
|
|
});
|
|
// projects
|
|
$stateExtender.addState({
|
|
searchPrefix: 'schedule',
|
|
name: 'projectSchedules',
|
|
route: '/projects/:id/schedules',
|
|
data: {
|
|
activityStream: true,
|
|
activityStreamTarget: 'project',
|
|
activityStreamId: 'id'
|
|
},
|
|
ncyBreadcrumb: {
|
|
parent: 'projects.edit({project_id: parentObject.id})',
|
|
label: N_('SCHEDULES')
|
|
},
|
|
resolve: {
|
|
Dataset: ['ScheduleList', 'QuerySet', '$stateParams', 'GetBasePath',
|
|
function(list, qs, $stateParams, GetBasePath) {
|
|
let path = `${GetBasePath('projects')}${$stateParams.id}/schedules`;
|
|
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
|
}
|
|
],
|
|
ParentObject: ['$stateParams', 'Rest', 'GetBasePath', function($stateParams, Rest, GetBasePath){
|
|
let path = `${GetBasePath('projects')}${$stateParams.id}`;
|
|
Rest.setUrl(path);
|
|
return Rest.get(path).then((res) => res.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('projects') + $stateParams.id + '/schedules/';
|
|
return list;
|
|
}
|
|
]
|
|
},
|
|
views: {
|
|
'@': {
|
|
templateProvider: function(ScheduleList, generateList, ParentObject){
|
|
// include name of parent resource in listTitle
|
|
ScheduleList.listTitle = `${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: 'projectSchedules.add',
|
|
route: '/add',
|
|
ncyBreadcrumb: {
|
|
label: N_('CREATE SCHEDULE')
|
|
},
|
|
views: {
|
|
'form': {
|
|
controller: 'schedulerAddController',
|
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
}
|
|
}
|
|
});
|
|
$stateExtender.addState({
|
|
name: 'projectSchedules.edit',
|
|
route: '/:schedule_id',
|
|
ncyBreadcrumb: {
|
|
label: '{{schedule_obj.name}}'
|
|
},
|
|
views: {
|
|
'form': {
|
|
controller: 'schedulerEditController',
|
|
templateUrl: templateUrl("scheduler/schedulerForm"),
|
|
}
|
|
}
|
|
});
|
|
// upcoming scheduled jobs
|
|
$stateExtender.addState({
|
|
searchPrefix: 'schedule',
|
|
name: 'jobs.schedules',
|
|
route: '/schedules',
|
|
params: {
|
|
schedule_search: {
|
|
value: {
|
|
next_run__isnull: 'false',
|
|
order_by: 'unified_job_template__polymorphic_ctype__model'
|
|
}
|
|
}
|
|
},
|
|
data: {
|
|
activityStream: false,
|
|
},
|
|
ncyBreadcrumb: {
|
|
parent: 'jobs',
|
|
label: N_('SCHEDULED')
|
|
},
|
|
resolve: {
|
|
ScheduleList: ['ScheduledJobsList', function(list){
|
|
return list;
|
|
}],
|
|
Dataset: ['ScheduleList', 'QuerySet', '$stateParams', 'GetBasePath',
|
|
function(list, qs, $stateParams, GetBasePath) {
|
|
let path = GetBasePath('schedules');
|
|
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
|
}
|
|
],
|
|
ParentObject: ['GetBasePath', (GetBasePath) =>{return {endpoint:GetBasePath('schedules')}; }],
|
|
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;
|
|
}]
|
|
},
|
|
views: {
|
|
'list@jobs': {
|
|
templateProvider: function(ScheduleList, generateList){
|
|
let html = generateList.build({
|
|
list: ScheduleList,
|
|
mode: 'edit',
|
|
title: false
|
|
});
|
|
return html;
|
|
},
|
|
controller: 'schedulerListController'
|
|
}
|
|
}
|
|
});
|
|
}]);
|