From 13d58107b8700738ede0d9a08e78f71e892b305c Mon Sep 17 00:00:00 2001 From: Jared Tabor Date: Fri, 11 May 2018 10:51:55 -0700 Subject: [PATCH] Moves scheduler to related tab for workflows and updates all links to point to updated state --- .../templates/templatesList.controller.js | 2 +- awx/ui/client/src/scheduler/main.js | 94 +----------------- .../src/scheduler/schedulerAdd.controller.js | 4 +- .../src/scheduler/schedulerEdit.controller.js | 4 +- .../src/scheduler/schedulerList.controller.js | 6 +- .../client/src/scheduler/schedules.route.js | 97 ++++++++++++++++++- awx/ui/client/src/templates/main.js | 10 +- awx/ui/client/src/templates/workflows.form.js | 5 + 8 files changed, 119 insertions(+), 103 deletions(-) diff --git a/awx/ui/client/features/templates/templatesList.controller.js b/awx/ui/client/features/templates/templatesList.controller.js index c2d43caed5..5ad7388fd4 100644 --- a/awx/ui/client/features/templates/templatesList.controller.js +++ b/awx/ui/client/features/templates/templatesList.controller.js @@ -100,7 +100,7 @@ function ListTemplatesController( if (isJobTemplate(template)) { $state.go('templates.editJobTemplate.schedules', { job_template_id: template.id }); } else if (isWorkflowTemplate(template)) { - $state.go('workflowJobTemplateSchedules', { id: template.id }); + $state.go('templates.editWorkflowJobTemplate.schedules', { workflow_job_template_id: template.id }); } else { Alert(strings.get('error.UNKNOWN'), strings.get('alert.UNKNOWN_SCHEDULE')); } diff --git a/awx/ui/client/src/scheduler/main.js b/awx/ui/client/src/scheduler/main.js index fac66d2da3..76f3b91ad8 100644 --- a/awx/ui/client/src/scheduler/main.js +++ b/awx/ui/client/src/scheduler/main.js @@ -33,98 +33,8 @@ export default .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 - - // 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)}
` + 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 $stateExtender.addState({ searchPrefix: 'schedule', diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index 5e1de11991..e8ac324962 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -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(); $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 === 'inventories.edit.inventory_sources.edit.schedules.add' ){ diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index e3f9d13ec4..f7441e0f7f 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -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(); $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 === 'projectSchedules.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; } else { diff --git a/awx/ui/client/src/scheduler/schedulerList.controller.js b/awx/ui/client/src/scheduler/schedulerList.controller.js index 36fab4d9c7..ab4198f3aa 100644 --- a/awx/ui/client/src/scheduler/schedulerList.controller.js +++ b/awx/ui/client/src/scheduler/schedulerList.controller.js @@ -167,7 +167,7 @@ export default [ deferred.resolve({ name: 'templates.editJobTemplate.schedules.edit', params: { - id: schedule.unified_job_template, + job_template_id: schedule.unified_job_template, schedule_id: schedule.id } }); @@ -175,9 +175,9 @@ export default [ case 'workflow_job': deferred.resolve({ - name: 'workflowJobTemplateSchedules.edit', + name: 'templates.editWorkflowJobTemplate.schedules.edit', params: { - id: schedule.unified_job_template, + workflow_job_template_id: schedule.unified_job_template, schedule_id: schedule.id } }); diff --git a/awx/ui/client/src/scheduler/schedules.route.js b/awx/ui/client/src/scheduler/schedules.route.js index 35513676da..2f54060d9f 100644 --- a/awx/ui/client/src/scheduler/schedules.route.js +++ b/awx/ui/client/src/scheduler/schedules.route.js @@ -93,8 +93,103 @@ const jobTemplatesSchedulesEditRoute = { 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 { jobTemplatesSchedulesListRoute, jobTemplatesSchedulesAddRoute, - jobTemplatesSchedulesEditRoute + jobTemplatesSchedulesEditRoute, + workflowSchedulesRoute, + workflowSchedulesAddRoute, + workflowSchedulesEditRoute }; diff --git a/awx/ui/client/src/templates/main.js b/awx/ui/client/src/templates/main.js index 8196cf527d..7b05bde077 100644 --- a/awx/ui/client/src/templates/main.js +++ b/awx/ui/client/src/templates/main.js @@ -24,7 +24,10 @@ import workflowJobTemplateCompletedJobsRoute from '~features/jobs/routes/workflo import { jobTemplatesSchedulesListRoute, jobTemplatesSchedulesAddRoute, - jobTemplatesSchedulesEditRoute + jobTemplatesSchedulesEditRoute, + workflowSchedulesRoute, + workflowSchedulesAddRoute, + workflowSchedulesEditRoute } from '../scheduler/schedules.route'; export default @@ -756,7 +759,10 @@ angular.module('templates', [surveyMaker.name, jobTemplates.name, labels.name, p stateExtender.buildDefinition(workflowMaker), stateExtender.buildDefinition(jobTemplatesSchedulesListRoute), stateExtender.buildDefinition(jobTemplatesSchedulesAddRoute), - stateExtender.buildDefinition(jobTemplatesSchedulesEditRoute) + stateExtender.buildDefinition(jobTemplatesSchedulesEditRoute), + stateExtender.buildDefinition(workflowSchedulesRoute), + stateExtender.buildDefinition(workflowSchedulesAddRoute), + stateExtender.buildDefinition(workflowSchedulesEditRoute) ]) }; }); diff --git a/awx/ui/client/src/templates/workflows.form.js b/awx/ui/client/src/templates/workflows.form.js index 5812ed7435..42face36b2 100644 --- a/awx/ui/client/src/templates/workflows.form.js +++ b/awx/ui/client/src/templates/workflows.form.js @@ -181,6 +181,11 @@ export default ['NotificationsList', 'i18n', function(NotificationsList, i18n) { title: i18n._('Completed Jobs'), skipGenerator: true, ngClick: "$state.go('templates.editWorkflowJobTemplate.completed_jobs')" + }, + "schedules": { + title: i18n._('Schedules'), + skipGenerator: true, + ngClick: "$state.go('templates.editWorkflowJobTemplate.schedules')" } },