From f7cbd0a02134834b4514a18b50045d95cfed3bbe Mon Sep 17 00:00:00 2001 From: Leigh Johnson Date: Thu, 1 Dec 2016 20:32:49 -0500 Subject: [PATCH] Hooks up job_template and workflow_job_template scheduler routes, #3882 (#4215) --- awx/ui/client/src/helpers/Schedules.js | 3 +- awx/ui/client/src/scheduler/main.js | 98 ++++++++++++++++++++++---- 2 files changed, 86 insertions(+), 15 deletions(-) diff --git a/awx/ui/client/src/helpers/Schedules.js b/awx/ui/client/src/helpers/Schedules.js index b56d966e4f..c166e5c81c 100644 --- a/awx/ui/client/src/helpers/Schedules.js +++ b/awx/ui/client/src/helpers/Schedules.js @@ -177,8 +177,7 @@ export default base = params.base || $location.path().replace(/^\//, '').split('/')[0], url = params.url || null, scheduler; - - if (!Empty($stateParams.id) && base !== 'system_job_templates' && base !== 'inventories') { + if (!Empty($stateParams.id) && base !== 'system_job_templates' && base !== 'inventories' && !url) { url = GetBasePath(base) + $stateParams.id + '/schedules/'; } else if(base === "inventories"){ diff --git a/awx/ui/client/src/scheduler/main.js b/awx/ui/client/src/scheduler/main.js index 7cb521f3c2..3acd6a4d79 100644 --- a/awx/ui/client/src/scheduler/main.js +++ b/awx/ui/client/src/scheduler/main.js @@ -22,25 +22,56 @@ export default // job templates $stateExtender.addState({ + searchPrefix: 'schedule', name: 'jobTemplateSchedules', route: '/templates/job_template/:id/schedules', - templateUrl: templateUrl("scheduler/scheduler"), - controller: 'schedulerListController', data: { activityStream: true, activityStreamTarget: 'job_template', activityStreamId: 'id' }, ncyBreadcrumb: { - parent: 'templates.editJobTemplate', + parent: 'templates.editJobTemplate({job_template_id: parentObject.id})', label: 'SCHEDULES' + }, + resolve: { + Dataset: ['SchedulesList', '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); + }] + }, + views: { + '@': { + templateProvider: function(SchedulesList, generateList, ParentObject){ + // include name of parent resource in listTitle + SchedulesList.listTitle = `${ParentObject.name}
Schedules`; + let html = generateList.build({ + list: SchedulesList, + mode: 'edit' + }); + html = generateList.wrapPanel(html); + return generateList.insertFormView() + html; + }, + controller: 'schedulerListController' + } } }); $stateExtender.addState({ name: 'jobTemplateSchedules.add', route: '/add', - templateUrl: templateUrl("scheduler/schedulerForm"), - controller: 'schedulerAddController', + views: { + 'form': { + controller: 'schedulerAddController', + templateUrl: templateUrl("scheduler/schedulerForm"), + } + }, ncyBreadcrumb: { parent: 'jobTemplateSchedules', label: 'CREATE SCHEDULE' @@ -49,8 +80,12 @@ export default $stateExtender.addState({ name: 'jobTemplateSchedules.edit', route: '/:schedule_id', - templateUrl: templateUrl("scheduler/schedulerForm"), - controller: 'schedulerEditController', + views: { + 'form': { + controller: 'schedulerEditController', + templateUrl: templateUrl("scheduler/schedulerForm"), + } + }, ncyBreadcrumb: { parent: 'jobTemplateSchedules', label: '{{schedule_obj.name}}' @@ -59,6 +94,7 @@ export default // workflows $stateExtender.addState({ + searchPrefix: 'schedule', name: 'workflowJobTemplateSchedules', route: '/templates/workflow_job_template/:id/schedules', templateUrl: templateUrl("scheduler/scheduler"), @@ -69,15 +105,47 @@ export default activityStreamId: 'id' }, ncyBreadcrumb: { - parent: 'templates.editWorkflowJobTemplate', + parent: 'templates.editWorkflowJobTemplate({workflow_job_template_id: parentObject.id})', label: 'SCHEDULES' + }, + resolve: { + Dataset: ['SchedulesList', '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); + }] + }, + views: { + '@': { + templateProvider: function(SchedulesList, generateList, ParentObject){ + // include name of parent resource in listTitle + SchedulesList.listTitle = `${ParentObject.name}
Schedules`; + let html = generateList.build({ + list: SchedulesList, + mode: 'edit' + }); + html = generateList.wrapPanel(html); + return generateList.insertFormView() + html; + }, + controller: 'schedulerListController' + } } }); $stateExtender.addState({ name: 'workflowJobTemplateSchedules.add', route: '/add', - templateUrl: templateUrl("scheduler/schedulerForm"), - controller: 'schedulerAddController', + views: { + 'form': { + controller: 'schedulerAddController', + templateUrl: templateUrl("scheduler/schedulerForm"), + } + }, ncyBreadcrumb: { parent: 'workflowJobTemplateSchedules', label: 'CREATE SCHEDULE' @@ -86,8 +154,12 @@ export default $stateExtender.addState({ name: 'workflowJobTemplateSchedules.edit', route: '/:schedule_id', - templateUrl: templateUrl("scheduler/schedulerForm"), - controller: 'schedulerEditController', + views: { + 'form': { + controller: 'schedulerEditController', + templateUrl: templateUrl("scheduler/schedulerForm"), + } + }, ncyBreadcrumb: { parent: 'workflowJobTemplateSchedules', label: '{{schedule_obj.name}}' @@ -95,7 +167,7 @@ export default }); // projects $stateExtender.addState({ - searchPrefix: 'schedule', + searchPrefix: 'schedule', name: 'projectSchedules', route: '/projects/:id/schedules', data: {