From 1b51021a58df8d021f739eb7640aa78316a50d63 Mon Sep 17 00:00:00 2001 From: Leigh Johnson Date: Tue, 19 Apr 2016 12:50:13 -0400 Subject: [PATCH 1/2] supply missing providers, resolves #1590 --- .../src/management-jobs/scheduler/main.js | 7 ++- awx/ui/client/src/scheduler/main.js | 12 +++- .../src/scheduler/schedulerAdd.controller.js | 49 ++++++++------- .../src/scheduler/schedulerEdit.controller.js | 63 ++++++++++--------- 4 files changed, 73 insertions(+), 58 deletions(-) diff --git a/awx/ui/client/src/management-jobs/scheduler/main.js b/awx/ui/client/src/management-jobs/scheduler/main.js index 49498debbd..88a57c372a 100644 --- a/awx/ui/client/src/management-jobs/scheduler/main.js +++ b/awx/ui/client/src/management-jobs/scheduler/main.js @@ -35,12 +35,15 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService){ return FeaturesService.get(); - }] + }], + JobTemplateExtraVars: function(){ + return null; + } } }); $stateExtender.addState({ name: 'managementJobSchedules.edit', - route: '/add', + route: '/edit/:schedule_id', templateUrl: templateUrl('management-jobs/scheduler/schedulerForm'), controller: 'managementJobEditController', resolve: { diff --git a/awx/ui/client/src/scheduler/main.js b/awx/ui/client/src/scheduler/main.js index 5d322e828f..acd3797bae 100644 --- a/awx/ui/client/src/scheduler/main.js +++ b/awx/ui/client/src/scheduler/main.js @@ -40,7 +40,7 @@ export default Rest.setUrl(defaultUrl); return Rest.get().then(function(res){ // handle unescaped newlines - return JSON.parse(JSON.stringify(res.data.extra_vars)) + return JSON.parse(JSON.stringify(res.data.extra_vars)); }); }] } @@ -64,7 +64,10 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); - }] + }], + JobTemplateExtraVars: function(){ + return null; + } } }); $stateExtender.addState({ @@ -75,7 +78,10 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); - }] + }], + JobTemplateExtraVars: function(){ + return null; + } } }); $stateExtender.addState({ diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index 3022092a6f..39544a6ffe 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -2,7 +2,6 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s $scope.$on("ScheduleFormCreated", function(e, scope) { $scope.hideForm = false; $scope = angular.extend($scope, scope); - $scope.$on("formUpdated", function() { $rootScope.$broadcast("loadSchedulerDetailPane"); }); @@ -46,29 +45,32 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s $state.go("^"); }; - $scope.parseType = 'yaml'; - $scope.extraVars = JobTemplateExtraVars === '' ? '---' : JobTemplateExtraVars; - ParseTypeChange({ - scope: $scope, - variable: 'extraVars', - parse_variable: 'parseType', - field_id: 'SchedulerForm-extraVars' - }); + // extra_data field is not manifested in the UI when scheduling a Management Job + if ($state.current.name !== ('managementJobSchedules.add' || 'managementJobSchedules.edit')){ + $scope.parseType = 'yaml'; + $scope.extraVars = JobTemplateExtraVars === '' || JobTemplateExtraVars === null ? '---' : JobTemplateExtraVars; + ParseTypeChange({ + scope: $scope, + variable: 'extraVars', + parse_variable: 'parseType', + field_id: 'SchedulerForm-extraVars' + }); + $scope.$watch('extraVars', function(){ + if ($scope.parseType === 'yaml'){ + try{ + $scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars); + } + catch(err){ return; } + } + else if ($scope.parseType === 'json'){ + try{ + $scope.serializedExtraVars = JSON.parse($scope.extraVars); + } + catch(err){ return; } + } + }); + } - $scope.$watch('extraVars', function(){ - if ($scope.parseType === 'yaml'){ - try{ - $scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars); - } - catch(err){ return; } - } - else if ($scope.parseType === 'json'){ - try{ - $scope.serializedExtraVars = JSON.parse($scope.extraVars); - } - catch(err){ return; } - } - }); AddSchedule({ scope: $scope, @@ -88,4 +90,5 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s }); callSelect2(); + }]; diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index 48b57151ec..f75b47a51f 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -48,41 +48,44 @@ export default ['$compile', '$state', '$stateParams', 'EditSchedule', 'Wait', '$ $state.go("^"); } - $scope.$on('ScheduleFound', function(){ - if ($scope.parseType === 'yaml'){ - try{ - $scope.extraVars = '---\n' + jsyaml.safeDump($scope.serializedExtraVars); + // extra_data field is not manifested in the UI when scheduling a Management Job + if ($state.current.name !== ('managementJobSchedules.add' || 'managementJobSchedules.edit')){ + $scope.$on('ScheduleFound', function(){ + if ($scope.parseType === 'yaml'){ + try{ + $scope.extraVars = '---\n' + jsyaml.safeDump($scope.serializedExtraVars); + } + catch(err){ return; } } - catch(err){ return; } - } - else if ($scope.parseType === 'json'){ - try{ - $scope.extraVars = JSON.stringify($scope.serializedExtraVars, null, ' '); + else if ($scope.parseType === 'json'){ + try{ + $scope.extraVars = JSON.stringify($scope.serializedExtraVars, null, ' '); + } + catch(err){ return; } } - catch(err){ return; } - } - ParseTypeChange({ - scope: $scope, - variable: 'extraVars', - parse_variable: 'parseType', - field_id: 'SchedulerForm-extraVars' + ParseTypeChange({ + scope: $scope, + variable: 'extraVars', + parse_variable: 'parseType', + field_id: 'SchedulerForm-extraVars' + }); }); - }); - - $scope.$watch('extraVars', function(){ - if ($scope.parseType === 'yaml'){ - try{ - $scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars); + + $scope.$watch('extraVars', function(){ + if ($scope.parseType === 'yaml'){ + try{ + $scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars); + } + catch(err){ return; } } - catch(err){ return; } - } - else if ($scope.parseType === 'json'){ - try{ - $scope.serializedExtraVars = JSON.parse($scope.extraVars); + else if ($scope.parseType === 'json'){ + try{ + $scope.serializedExtraVars = JSON.parse($scope.extraVars); + } + catch(err){ return; } } - catch(err){ return; } - } - }); + }); + } EditSchedule({ scope: $scope, From f59cb5f5a3104d47d701701879ecf3d1e2c140b1 Mon Sep 17 00:00:00 2001 From: Leigh Johnson Date: Tue, 19 Apr 2016 16:45:32 -0400 Subject: [PATCH 2/2] remove JobTemplateExtraVars provision & replace with REST requests in schedulerAddController --- .../src/management-jobs/scheduler/main.js | 5 +-- awx/ui/client/src/scheduler/main.js | 20 ++--------- .../src/scheduler/schedulerAdd.controller.js | 33 ++++++++++++++----- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/awx/ui/client/src/management-jobs/scheduler/main.js b/awx/ui/client/src/management-jobs/scheduler/main.js index 88a57c372a..4a9bc10217 100644 --- a/awx/ui/client/src/management-jobs/scheduler/main.js +++ b/awx/ui/client/src/management-jobs/scheduler/main.js @@ -35,10 +35,7 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService){ return FeaturesService.get(); - }], - JobTemplateExtraVars: function(){ - return null; - } + }] } }); $stateExtender.addState({ diff --git a/awx/ui/client/src/scheduler/main.js b/awx/ui/client/src/scheduler/main.js index acd3797bae..46fa46d94e 100644 --- a/awx/ui/client/src/scheduler/main.js +++ b/awx/ui/client/src/scheduler/main.js @@ -34,15 +34,7 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); - }], - JobTemplateExtraVars: ['Rest', 'GetBasePath', 'ToJSON', '$stateParams', function(Rest, GetBasePath, ToJSON, $stateParams) { - var defaultUrl = GetBasePath('job_templates') + $stateParams.id + '/'; - Rest.setUrl(defaultUrl); - return Rest.get().then(function(res){ - // handle unescaped newlines - return JSON.parse(JSON.stringify(res.data.extra_vars)); - }); - }] + }] } }); $stateExtender.addState({ @@ -64,10 +56,7 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); - }], - JobTemplateExtraVars: function(){ - return null; - } + }] } }); $stateExtender.addState({ @@ -78,10 +67,7 @@ export default resolve: { features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); - }], - JobTemplateExtraVars: function(){ - return null; - } + }] } }); $stateExtender.addState({ diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index 39544a6ffe..4bb6cd9ac1 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -1,4 +1,4 @@ -export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$scope', '$rootScope', 'CreateSelect2', 'ParseTypeChange', 'JobTemplateExtraVars', function($compile, $state, $stateParams, AddSchedule, Wait, $scope, $rootScope, CreateSelect2, ParseTypeChange, JobTemplateExtraVars) { +export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$scope', '$rootScope', 'CreateSelect2', 'ParseTypeChange', 'GetBasePath', 'Rest', function($compile, $state, $stateParams, AddSchedule, Wait, $scope, $rootScope, CreateSelect2, ParseTypeChange, GetBasePath, Rest) { $scope.$on("ScheduleFormCreated", function(e, scope) { $scope.hideForm = false; $scope = angular.extend($scope, scope); @@ -46,14 +46,20 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s }; // extra_data field is not manifested in the UI when scheduling a Management Job - if ($state.current.name !== ('managementJobSchedules.add' || 'managementJobSchedules.edit')){ + if ($state.current.name === 'jobTemplateSchedules.add'){ $scope.parseType = 'yaml'; - $scope.extraVars = JobTemplateExtraVars === '' || JobTemplateExtraVars === null ? '---' : JobTemplateExtraVars; - ParseTypeChange({ - scope: $scope, - variable: 'extraVars', - parse_variable: 'parseType', - field_id: 'SchedulerForm-extraVars' + var defaultUrl = GetBasePath('job_templates') + $stateParams.id + '/'; + Rest.setUrl(defaultUrl); + Rest.get().then(function(res){ + // sanitize + var data = JSON.parse(JSON.stringify(res.data.extra_vars)); + $scope.extraVars = data === '' ? '---' : data; + ParseTypeChange({ + scope: $scope, + variable: 'extraVars', + parse_variable: 'parseType', + field_id: 'SchedulerForm-extraVars' + }); }); $scope.$watch('extraVars', function(){ if ($scope.parseType === 'yaml'){ @@ -70,7 +76,16 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s } }); } - + else if ($state.current.name === 'projectSchedules.add'){ + $scope.extraVars = '---'; + $scope.parseType = 'yaml'; + ParseTypeChange({ + scope: $scope, + variable: 'extraVars', + parse_variable: 'parseType', + field_id: 'SchedulerForm-extraVars' + }); + } AddSchedule({ scope: $scope,