Merge pull request #1255 from mabashian/templates-forms-disabled

Fixed bug where job/workflow templates add forms were disabled
This commit is contained in:
Michael Abashian
2018-04-05 14:13:30 -04:00
committed by GitHub
3 changed files with 73 additions and 59 deletions

View File

@@ -10,14 +10,14 @@
'ProcessErrors', 'GetBasePath', 'md5Setup', 'ParseTypeChange', 'Wait', 'ProcessErrors', 'GetBasePath', 'md5Setup', 'ParseTypeChange', 'Wait',
'Empty', 'ToJSON', 'CallbackHelpInit', 'GetChoices', '$state', 'availableLabels', 'Empty', 'ToJSON', 'CallbackHelpInit', 'GetChoices', '$state', 'availableLabels',
'CreateSelect2', '$q', 'i18n', 'Inventory', 'Project', 'InstanceGroupsService', 'CreateSelect2', '$q', 'i18n', 'Inventory', 'Project', 'InstanceGroupsService',
'MultiCredentialService', 'ConfigData', 'MultiCredentialService', 'ConfigData', 'resolvedModels',
function( function(
$filter, $scope, $filter, $scope,
$stateParams, JobTemplateForm, GenerateForm, Rest, Alert, $stateParams, JobTemplateForm, GenerateForm, Rest, Alert,
ProcessErrors, GetBasePath, md5Setup, ParseTypeChange, Wait, ProcessErrors, GetBasePath, md5Setup, ParseTypeChange, Wait,
Empty, ToJSON, CallbackHelpInit, GetChoices, Empty, ToJSON, CallbackHelpInit, GetChoices,
$state, availableLabels, CreateSelect2, $q, i18n, Inventory, Project, InstanceGroupsService, $state, availableLabels, CreateSelect2, $q, i18n, Inventory, Project, InstanceGroupsService,
MultiCredentialService, ConfigData MultiCredentialService, ConfigData, resolvedModels
) { ) {
// Inject dynamic view // Inject dynamic view
@@ -28,37 +28,38 @@
selectPlaybook, checkSCMStatus, selectPlaybook, checkSCMStatus,
callback; callback;
init(); const jobTemplate = resolvedModels[0];
function init(){
// apply form definition's default field values
GenerateForm.applyDefaults(form, $scope);
$scope.can_edit = true; $scope.canAddJobTemplate = jobTemplate.options('actions.POST');
$scope.allow_callbacks = false;
$scope.playbook_options = [];
$scope.mode = "add";
$scope.parseType = 'yaml';
$scope.credentialNotPresent = false;
$scope.canGetAllRelatedResources = true;
md5Setup({ // apply form definition's default field values
scope: $scope, GenerateForm.applyDefaults(form, $scope);
master: master,
check_field: 'allow_callbacks',
default_val: false
});
CallbackHelpInit({ scope: $scope });
$scope.surveyTooltip = i18n._('Please save before adding a survey to this job template.'); $scope.can_edit = true;
$scope.allow_callbacks = false;
$scope.playbook_options = [];
$scope.mode = "add";
$scope.parseType = 'yaml';
$scope.credentialNotPresent = false;
$scope.canGetAllRelatedResources = true;
MultiCredentialService.getCredentialTypes() md5Setup({
.then(({ data }) => { scope: $scope,
$scope.multiCredential = { master: master,
credentialTypes: data.results, check_field: 'allow_callbacks',
selectedCredentials: [] default_val: false
}; });
}); CallbackHelpInit({ scope: $scope });
}
$scope.surveyTooltip = i18n._('Please save before adding a survey to this job template.');
MultiCredentialService.getCredentialTypes()
.then(({ data }) => {
$scope.multiCredential = {
credentialTypes: data.results,
selectedCredentials: []
};
});
callback = function() { callback = function() {
// Make sure the form controller knows there was a change // Make sure the form controller knows there was a change

View File

@@ -8,43 +8,47 @@ export default [
'$scope', 'WorkflowForm', 'GenerateForm', 'Alert', 'ProcessErrors', '$scope', 'WorkflowForm', 'GenerateForm', 'Alert', 'ProcessErrors',
'Wait', '$state', 'CreateSelect2', 'TemplatesService', 'Wait', '$state', 'CreateSelect2', 'TemplatesService',
'ToJSON', 'ParseTypeChange', '$q', 'Rest', 'GetBasePath', 'availableLabels', 'i18n', 'ToJSON', 'ParseTypeChange', '$q', 'Rest', 'GetBasePath', 'availableLabels', 'i18n',
'resolvedModels',
function($scope, WorkflowForm, GenerateForm, Alert, ProcessErrors, function($scope, WorkflowForm, GenerateForm, Alert, ProcessErrors,
Wait, $state, CreateSelect2, TemplatesService, ToJSON, Wait, $state, CreateSelect2, TemplatesService, ToJSON,
ParseTypeChange, $q, Rest, GetBasePath, availableLabels, i18n) { ParseTypeChange, $q, Rest, GetBasePath, availableLabels, i18n,
resolvedModels) {
// Inject dynamic view // Inject dynamic view
let form = WorkflowForm(), let form = WorkflowForm(),
generator = GenerateForm; generator = GenerateForm;
function init() { const workflowTemplate = resolvedModels[1];
$scope.canEditOrg = true;
$scope.parseType = 'yaml';
$scope.can_edit = true;
// apply form definition's default field values
GenerateForm.applyDefaults(form, $scope);
// Make the variables textarea look pretty $scope.canAddWorkflowJobTemplate = workflowTemplate.options('actions.POST');
ParseTypeChange({
scope: $scope,
field_id: 'workflow_job_template_variables',
onChange: function() {
// Make sure the form controller knows there was a change
$scope[form.name + '_form'].$setDirty();
}
});
$scope.labelOptions = availableLabels $scope.canEditOrg = true;
.map((i) => ({label: i.name, value: i.id})); $scope.parseType = 'yaml';
$scope.can_edit = true;
// apply form definition's default field values
GenerateForm.applyDefaults(form, $scope);
CreateSelect2({ // Make the variables textarea look pretty
element:'#workflow_job_template_labels', ParseTypeChange({
multiple: true, scope: $scope,
addNew: true field_id: 'workflow_job_template_variables',
}); onChange: function() {
// Make sure the form controller knows there was a change
$scope[form.name + '_form'].$setDirty();
}
});
$scope.workflowEditorTooltip = i18n._("Please save before defining the workflow graph."); $scope.labelOptions = availableLabels
$scope.surveyTooltip = i18n._('Please save before adding a survey to this workflow.'); .map((i) => ({label: i.name, value: i.id}));
}
CreateSelect2({
element:'#workflow_job_template_labels',
multiple: true,
addNew: true
});
$scope.workflowEditorTooltip = i18n._("Please save before defining the workflow graph.");
$scope.surveyTooltip = i18n._('Please save before adding a survey to this workflow.');
$scope.formSave = function () { $scope.formSave = function () {
let fld, data = {}; let fld, data = {};
@@ -167,7 +171,5 @@ export default [
$scope.formCancel = function () { $scope.formCancel = function () {
$state.transitionTo('templates'); $state.transitionTo('templates');
}; };
init();
} }
]; ];

View File

@@ -16,7 +16,8 @@ describe('Controller: WorkflowAdd', () => {
Wait, Wait,
ParseTypeChange, ParseTypeChange,
ToJSON, ToJSON,
availableLabels; availableLabels,
resolvedModels;
beforeEach(angular.mock.module('awApp')); beforeEach(angular.mock.module('awApp'));
beforeEach(angular.mock.module('RestServices')); beforeEach(angular.mock.module('RestServices'));
@@ -49,6 +50,15 @@ describe('Controller: WorkflowAdd', () => {
id: "1" id: "1"
}]; }];
resolvedModels = [
{},
{
options: () => {
return true;
}
}
];
Alert = jasmine.createSpy('Alert'); Alert = jasmine.createSpy('Alert');
ProcessErrors = jasmine.createSpy('ProcessErrors'); ProcessErrors = jasmine.createSpy('ProcessErrors');
CreateSelect2 = jasmine.createSpy('CreateSelect2'); CreateSelect2 = jasmine.createSpy('CreateSelect2');
@@ -65,6 +75,7 @@ describe('Controller: WorkflowAdd', () => {
$provide.value('ParseTypeChange', ParseTypeChange); $provide.value('ParseTypeChange', ParseTypeChange);
$provide.value('ToJSON', ToJSON); $provide.value('ToJSON', ToJSON);
$provide.value('availableLabels', availableLabels); $provide.value('availableLabels', availableLabels);
$provide.value('resolvedModels', resolvedModels);
})); }));
beforeEach(angular.mock.inject( ($rootScope, $controller, $q, $httpBackend, _state_, _ConfigService_, _GetChoices_, _Alert_, _GenerateForm_, _ProcessErrors_, _CreateSelect2_, _Wait_, _ParseTypeChange_, _ToJSON_, _availableLabels_) => { beforeEach(angular.mock.inject( ($rootScope, $controller, $q, $httpBackend, _state_, _ConfigService_, _GetChoices_, _Alert_, _GenerateForm_, _ProcessErrors_, _CreateSelect2_, _Wait_, _ParseTypeChange_, _ToJSON_, _availableLabels_) => {