Merge pull request #1594 from leigh-johnson/ProviderForScheduler

Fix project/management job > schedules > add
This commit is contained in:
Leigh
2016-04-20 09:24:52 -04:00
4 changed files with 76 additions and 63 deletions

View File

@@ -40,7 +40,7 @@ export default
}); });
$stateExtender.addState({ $stateExtender.addState({
name: 'managementJobSchedules.edit', name: 'managementJobSchedules.edit',
route: '/add', route: '/edit/:schedule_id',
templateUrl: templateUrl('management-jobs/scheduler/schedulerForm'), templateUrl: templateUrl('management-jobs/scheduler/schedulerForm'),
controller: 'managementJobEditController', controller: 'managementJobEditController',
resolve: { resolve: {

View File

@@ -34,15 +34,7 @@ export default
resolve: { resolve: {
features: ['FeaturesService', function(FeaturesService) { features: ['FeaturesService', function(FeaturesService) {
return FeaturesService.get(); 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({ $stateExtender.addState({

View File

@@ -1,8 +1,7 @@
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.$on("ScheduleFormCreated", function(e, scope) {
$scope.hideForm = false; $scope.hideForm = false;
$scope = angular.extend($scope, scope); $scope = angular.extend($scope, scope);
$scope.$on("formUpdated", function() { $scope.$on("formUpdated", function() {
$rootScope.$broadcast("loadSchedulerDetailPane"); $rootScope.$broadcast("loadSchedulerDetailPane");
}); });
@@ -46,29 +45,47 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s
$state.go("^"); $state.go("^");
}; };
$scope.parseType = 'yaml'; // extra_data field is not manifested in the UI when scheduling a Management Job
$scope.extraVars = JobTemplateExtraVars === '' ? '---' : JobTemplateExtraVars; if ($state.current.name === 'jobTemplateSchedules.add'){
ParseTypeChange({ $scope.parseType = 'yaml';
scope: $scope, var defaultUrl = GetBasePath('job_templates') + $stateParams.id + '/';
variable: 'extraVars', Rest.setUrl(defaultUrl);
parse_variable: 'parseType', Rest.get().then(function(res){
field_id: 'SchedulerForm-extraVars' // sanitize
}); var data = JSON.parse(JSON.stringify(res.data.extra_vars));
$scope.extraVars = data === '' ? '---' : data;
$scope.$watch('extraVars', function(){ ParseTypeChange({
if ($scope.parseType === 'yaml'){ scope: $scope,
try{ variable: 'extraVars',
$scope.serializedExtraVars = jsyaml.safeLoad($scope.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; }
} }
catch(err){ return; } else if ($scope.parseType === 'json'){
} try{
else if ($scope.parseType === 'json'){ $scope.serializedExtraVars = JSON.parse($scope.extraVars);
try{ }
$scope.serializedExtraVars = JSON.parse($scope.extraVars); catch(err){ return; }
} }
catch(err){ return; } });
} }
}); 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({ AddSchedule({
scope: $scope, scope: $scope,
@@ -88,4 +105,5 @@ export default ['$compile', '$state', '$stateParams', 'AddSchedule', 'Wait', '$s
}); });
callSelect2(); callSelect2();
}]; }];

View File

@@ -48,41 +48,44 @@ export default ['$compile', '$state', '$stateParams', 'EditSchedule', 'Wait', '$
$state.go("^"); $state.go("^");
} }
$scope.$on('ScheduleFound', function(){ // extra_data field is not manifested in the UI when scheduling a Management Job
if ($scope.parseType === 'yaml'){ if ($state.current.name !== ('managementJobSchedules.add' || 'managementJobSchedules.edit')){
try{ $scope.$on('ScheduleFound', function(){
$scope.extraVars = '---\n' + jsyaml.safeDump($scope.serializedExtraVars); if ($scope.parseType === 'yaml'){
try{
$scope.extraVars = '---\n' + jsyaml.safeDump($scope.serializedExtraVars);
}
catch(err){ return; }
} }
catch(err){ return; } else if ($scope.parseType === 'json'){
} try{
else if ($scope.parseType === 'json'){ $scope.extraVars = JSON.stringify($scope.serializedExtraVars, null, ' ');
try{ }
$scope.extraVars = JSON.stringify($scope.serializedExtraVars, null, ' '); catch(err){ return; }
} }
catch(err){ return; } ParseTypeChange({
} scope: $scope,
ParseTypeChange({ variable: 'extraVars',
scope: $scope, parse_variable: 'parseType',
variable: 'extraVars', field_id: 'SchedulerForm-extraVars'
parse_variable: 'parseType', });
field_id: 'SchedulerForm-extraVars'
}); });
});
$scope.$watch('extraVars', function(){
$scope.$watch('extraVars', function(){ if ($scope.parseType === 'yaml'){
if ($scope.parseType === 'yaml'){ try{
try{ $scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars);
$scope.serializedExtraVars = jsyaml.safeLoad($scope.extraVars); }
catch(err){ return; }
} }
catch(err){ return; } else if ($scope.parseType === 'json'){
} try{
else if ($scope.parseType === 'json'){ $scope.serializedExtraVars = JSON.parse($scope.extraVars);
try{ }
$scope.serializedExtraVars = JSON.parse($scope.extraVars); catch(err){ return; }
} }
catch(err){ return; } });
} }
});
EditSchedule({ EditSchedule({
scope: $scope, scope: $scope,