mirror of
https://github.com/ansible/awx.git
synced 2024-11-02 09:51:09 +03:00
full commit of fixes to the survey by jared
This commit is contained in:
parent
4a7b16ca05
commit
d01ae1af6a
@ -24,250 +24,255 @@ export default
|
||||
twoColumns: true,
|
||||
breadcrumbs: false,
|
||||
|
||||
fields: {
|
||||
question_name: {
|
||||
realName: 'question_text',
|
||||
label: 'Name',
|
||||
type: 'text',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 1,
|
||||
awSurveyQuestion: true
|
||||
},
|
||||
question_description: {
|
||||
realName: 'question_description',
|
||||
label: 'Description',
|
||||
type: 'text',
|
||||
// rows: 2,
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 1
|
||||
},
|
||||
// variable: {
|
||||
// label: 'Answer Variable Name',
|
||||
// type: 'text',
|
||||
// addRequired: true,
|
||||
// editRequired: true,
|
||||
// column: 1,
|
||||
// awPopOver: '<p>The suggested format for variable names are lowercase, underscore-separated descriptive nouns.</p>'+
|
||||
// '<p>For example: <br>foo_bar<br>\n user_id<br>\n host_name<br>' ,
|
||||
// dataTitle: 'Answer Variable Name',
|
||||
// dataPlacement: 'right',
|
||||
// dataContainer: "body"
|
||||
// },
|
||||
variable: {
|
||||
ealName: 'variable',
|
||||
type: 'custom',
|
||||
control:'<label for="variable"><span class="label-text prepend-asterisk">Answer Variable Name</span>'+
|
||||
'<a id="awp-variable" href="" aw-pop-over="<p>The suggested format for variable names is lowercase and underscore-separated. Also note that this field cannot accept variable names with spaces.</p><p>For example: <br>foo_bar<br>'+
|
||||
'user_id<br>host_name<br><div class="popover-footer"><span class="key">esc</span> or click to close</div>" '+
|
||||
'data-placement="right" data-container="body" data-title="Answer Variable Name" class="help-link" data-original-title="" title="" tabindex="-1"><i class="fa fa-question-circle"></i></a> </label>'+
|
||||
'<div><input type="text" ng-model="variable" name="variable" id="survey_question_variable" class="form-control ng-pristine ng-invalid ng-invalid-required" required="" aw-survey-variable-name>'+
|
||||
'<div class="error ng-hide" id="survey_question-variable-required-error" ng-show="survey_question_form.variable.$dirty && survey_question_form.variable.$error.required">Please enter an answer variable name.</div>'+
|
||||
'<div class="error ng-hide" id="survey_question-variable-variable-error" ng-show="survey_question_form.variable.$dirty && survey_question_form.variable.$error.variable">Please remove the illegal character from the survey question variable name.</div>'+
|
||||
'<div class="error ng-hide" id=survey_question-variable-duplicate-error" ng-show="duplicate">This question variable is already in use. Please enter a different variable name.</div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-variable-api-error" ng-bind="variable_api_error"></div>'+
|
||||
'</div>',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 1
|
||||
},
|
||||
type: {
|
||||
realName: 'answer_type',
|
||||
label: 'Answer Type',
|
||||
type: 'select',
|
||||
defaultText: 'Choose an answer type',
|
||||
ngOptions: 'answer_types.name for answer_types in answer_types track by answer_types.type',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2,
|
||||
ngChange: 'typeChange()'
|
||||
},
|
||||
choices: {
|
||||
realName: 'answer_options',
|
||||
label: 'Multiple Choice Options',
|
||||
type: 'textarea',
|
||||
rows: 3,
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
ngRequired: "type.type=== 'multiselect' || type.type=== 'multiplechoice' " ,
|
||||
ngShow: 'type.type=== "multiselect" || type.type=== "multiplechoice" ',
|
||||
awPopOver: '<p>Type an option on each line.</p>'+
|
||||
'<p>For example the following input:<br><br>Apple<br>\n Banana<br>\n Cherry<br><br>would be displayed as:</p>\n'+
|
||||
'<ol><li>Apple</li><li>Banana</li><li>Cherry</li></ol>',
|
||||
dataTitle: 'Multiple Choice Options',
|
||||
dataPlacement: 'right',
|
||||
dataContainer: "body",
|
||||
column: 2
|
||||
},
|
||||
text_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="text_min"><span class="label-text">Minimum Length</span></label><input id="text_min" type="number" name="text_min" ng-model="text_min" min=0 aw-min="0" aw-max="text_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.number || survey_question_form.text_min.$error.integer">The minimum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.awMax">The minimium length is too high. Please enter a lower number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.awMin">The minimum length is too low. Please enter a positive number.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="text_max"><span class="label-text">Maximum Length</span></label><input id="text_max" type="number" name="text_max" ng-model="text_max" aw-min="text_min || 0" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.text_max.$error.number || survey_question_form.text_max.$error.integer">The maximum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_max.$error.awMin">The maximum length is too low. Please enter a number larger than the minimum length you set.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="text" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
textarea_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="textarea_min"><span class="label-text">Minimum Length</span></label><input id="textarea_min" type="number" name="textarea_min" ng-model="textarea_min" min=0 aw-min="0" aw-max="textarea_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.number || survey_question_form.textarea_min.$error.integer">The minimum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.awMax">The minimium length is too high. Please enter a lower number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.awMin">The minimum length is too low. Please enter a positive number.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="textarea_max"><span class="label-text">Maximum Length</span></label><input id="textarea_max" type="number" name="textarea_max" ng-model="textarea_max" aw-min="textarea_min || 0" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_max.$error.number || survey_question_form.textarea_max.$error.integer">The maximum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_max.$error.awMin">The maximum length is too low. Please enter a number larger than the minimum length you set.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="textarea" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
int_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Minimum</span></label><input id="int_min" type="number" name="int_min" ng-model="int_min" aw-max="int_max" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.int_min.$error.number || survey_question_form.int_min.$error.integer">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.int_min.$error.awMax">Please enter a smaller integer.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Maximum</span></label><input id="int_max" type="number" name="int_max" ng-model="int_max" aw-min="int_min" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.int_max.$error.number || survey_question_form.int_max.$error.integer">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.int_max.$error.awMin">Please enter a larger integer.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="integer" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
float_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control: '<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Minimum</span></label><input id="float_min" type="number" name="float_min" ng-model="float_min" class="form-control" smart-float aw-max="float_max">'+
|
||||
'<div class="error" ng-show="survey_question_form.float_min.$error.float">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.float_min.$error.awMax">Please enter a smaller float.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="maximum"><span class="label-text">Maximum</span></label><input id="float_max" type="number" name="float_max" ng-model="float_max" class="form-control" smart-float aw-min="float_min">'+
|
||||
'<div class="error" ng-show="survey_question_form.float_max.$error.float">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.float_max.$error.awMin">Please enter a larger float.</div>'+
|
||||
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="float" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
default: {
|
||||
realName: 'default_answer',
|
||||
label: 'Default Answer',
|
||||
type: 'text',
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 2,
|
||||
ngHide: 'type.type === "textarea" || type.type === "multiselect" || type.type === "integer" || type.type === "float" '
|
||||
},
|
||||
// default_text: {
|
||||
// realName: 'default_answer',
|
||||
// type: 'custom',
|
||||
// control: '<div>'+
|
||||
// '<label for="default_text"><span class="label-text">Default Answer</span></label>'+
|
||||
// '<input type="text" ng-model="default_text" name="default_text" class="form-control" />'+
|
||||
// '<div class="error" ng-show="survey_question_form.default_text.$error.minlength || survey_question_form.default_text.$error.maxlength"> The answer must be between {{text_min}} to {{text_max}} characters long!</div>'+
|
||||
// '</div>',
|
||||
// column: 2,
|
||||
// ngShow: 'type.type === "text" '
|
||||
// },
|
||||
default_multiselect: {
|
||||
realName: 'default_answer',
|
||||
label: 'Default Answer',
|
||||
type: 'textarea',
|
||||
rows: 3,
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 2,
|
||||
ngShow: 'type.type === "multiselect" '
|
||||
},
|
||||
default_int: {
|
||||
realName: 'default_answer',
|
||||
type: 'custom',
|
||||
control: '<div>'+
|
||||
'<label for="default_int"><span class="label-text">Default Answer</span></label>'+
|
||||
'<input type="number" ng-model="default_int" name="default_int" aw-min="int_min" aw-max="int_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.default_int.$error.number || survey_question_form.default_int.$error.integer">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.default_int.$error.awMin || survey_question_form.default_int.$error.awMax"> Please enter a value in the range of {{int_min}} to {{int_max}}.</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngShow: 'type.type === "integer" '
|
||||
},
|
||||
default_float: {
|
||||
realName: 'default_answer',
|
||||
type: 'custom',
|
||||
control: '<div>'+
|
||||
'<label for="default_float"><span class="label-text">Default Answer</span></label>'+
|
||||
'<input type="number" ng-model="default_float" name="default_float" aw-min="float_min" aw-max="float_max" class="form-control" />'+
|
||||
'<div class="error" ng-show="survey_question_form.default_float.$error.number || survey_question_form.default_float.$error.float">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.default_float.$error.awMin || survey_question_form.default_float.$error.awMax"> Please enter a value in the range of {{float_min}} to {{float_max}}!</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngShow: 'type.type=== "float" '
|
||||
},
|
||||
default_textarea: {
|
||||
realName: 'default_answer',
|
||||
label: 'Default Answer',
|
||||
type: 'textarea',
|
||||
rows: 3,
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 2,
|
||||
ngShow: 'type.type === "textarea" '
|
||||
},
|
||||
required: {
|
||||
realName: 'required_answer',
|
||||
label: 'Required',
|
||||
type: 'checkbox',
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 2
|
||||
}
|
||||
fields: {
|
||||
question_name: {
|
||||
realName: 'question_text',
|
||||
label: 'Name',
|
||||
type: 'text',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 1,
|
||||
awSurveyQuestion: true
|
||||
},
|
||||
buttons: {
|
||||
question_cancel : {
|
||||
label: 'Cancel',
|
||||
'class' : 'btn btn-default',
|
||||
ngClick: 'cancelQuestion($event)'
|
||||
},
|
||||
submit_question: {
|
||||
ngClick: 'submitQuestion($event)',
|
||||
ngDisabled: true, //'survey_question.$valid', //"!question_name || !variable || !type || ((type.type==='multiplechoice' || type.type === 'multiselect' ) && !choices)", //|| type.type===multiselect ',//'!question_name || !variable || !type' ,
|
||||
'class': 'btn btn-sm btn-primary',
|
||||
label: 'Add Question'
|
||||
}
|
||||
}
|
||||
question_description: {
|
||||
realName: 'question_description',
|
||||
label: 'Description',
|
||||
type: 'text',
|
||||
// rows: 2,
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 1
|
||||
},
|
||||
// variable: {
|
||||
// label: 'Answer Variable Name',
|
||||
// type: 'text',
|
||||
// addRequired: true,
|
||||
// editRequired: true,
|
||||
// column: 1,
|
||||
// awPopOver: '<p>The suggested format for variable names are lowercase, underscore-separated descriptive nouns.</p>'+
|
||||
// '<p>For example: <br>foo_bar<br>\n user_id<br>\n host_name<br>' ,
|
||||
// dataTitle: 'Answer Variable Name',
|
||||
// dataPlacement: 'right',
|
||||
// dataContainer: "body"
|
||||
// },
|
||||
variable: {
|
||||
ealName: 'variable',
|
||||
type: 'custom',
|
||||
control:'<label for="variable"><span class="label-text prepend-asterisk">Answer Variable Name</span>'+
|
||||
'<a id="awp-variable" href="" aw-pop-over="<p>The suggested format for variable names is lowercase and underscore-separated. Also note that this field cannot accept variable names with spaces.</p><p>For example: <br>foo_bar<br>'+
|
||||
'user_id<br>host_name<br><div class="popover-footer"><span class="key">esc</span> or click to close</div>" '+
|
||||
'data-placement="right" data-container="body" data-title="Answer Variable Name" class="help-link" data-original-title="" title="" tabindex="-1"><i class="fa fa-question-circle"></i></a> </label>'+
|
||||
'<div><input type="text" ng-model="variable" name="variable" id="survey_question_variable" class="form-control ng-pristine ng-invalid ng-invalid-required" required="" aw-survey-variable-name>'+
|
||||
'<div class="error ng-hide" id="survey_question-variable-required-error" ng-show="survey_question_form.variable.$dirty && survey_question_form.variable.$error.required">Please enter an answer variable name.</div>'+
|
||||
'<div class="error ng-hide" id="survey_question-variable-variable-error" ng-show="survey_question_form.variable.$dirty && survey_question_form.variable.$error.variable">Please remove the illegal character from the survey question variable name.</div>'+
|
||||
'<div class="error ng-hide" id=survey_question-variable-duplicate-error" ng-show="duplicate">This question variable is already in use. Please enter a different variable name.</div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-variable-api-error" ng-bind="variable_api_error"></div>'+
|
||||
'</div>',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 1
|
||||
},
|
||||
type: {
|
||||
realName: 'answer_type',
|
||||
label: 'Answer Type',
|
||||
type: 'select',
|
||||
defaultText: 'Choose an answer type',
|
||||
ngOptions: 'answer_types.name for answer_types in answer_types track by answer_types.type',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2,
|
||||
ngChange: 'typeChange()'
|
||||
},
|
||||
choices: {
|
||||
realName: 'answer_options',
|
||||
label: 'Multiple Choice Options',
|
||||
type: 'textarea',
|
||||
rows: 3,
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
ngRequired: "type.type=== 'multiselect' || type.type=== 'multiplechoice' " ,
|
||||
ngShow: 'type.type=== "multiselect" || type.type=== "multiplechoice" ',
|
||||
awPopOver: '<p>Type an option on each line.</p>'+
|
||||
'<p>For example the following input:<br><br>Apple<br>\n Banana<br>\n Cherry<br><br>would be displayed as:</p>\n'+
|
||||
'<ol><li>Apple</li><li>Banana</li><li>Cherry</li></ol>',
|
||||
dataTitle: 'Multiple Choice Options',
|
||||
dataPlacement: 'right',
|
||||
dataContainer: "body",
|
||||
column: 2
|
||||
},
|
||||
text_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="text_min"><span class="label-text">Minimum Length</span></label><input id="text_min" type="number" name="text_min" ng-model="text_min" min=0 aw-min="0" aw-max="text_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.number">The minimum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.awMax">The minimium length is too high. Please enter a lower number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_min.$error.awMin">The minimum length is too low. Please enter a positive number.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="text_max"><span class="label-text">Maximum Length</span></label><input id="text_max" type="number" name="text_max" ng-model="text_max" aw-min="text_min || 0" min=0 class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.text_max.$error.number">The maximum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.text_max.$error.awMin">The maximum length is too low. Please enter a number larger than the minimum length you set.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="text" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
textarea_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="textarea_min"><span class="label-text">Minimum Length</span></label><input id="textarea_min" type="number" name="textarea_min" ng-model="textarea_min" min=0 aw-min="0" aw-max="textarea_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.number">The minimum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.awMax">The minimium length is too high. Please enter a lower number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_min.$error.awMin">The minimum length is too low. Please enter a positive number.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="textarea_max"><span class="label-text">Maximum Length</span></label><input id="textarea_max" type="number" name="textarea_max" ng-model="textarea_max" aw-min="textarea_min || 0" min=0 class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_max.$error.number">The maximum length you entered is not a number. Please enter a number.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.textarea_max.$error.awMin">The maximum length is too low. Please enter a number larger than the minimum length you set.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="textarea" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
int_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control:'<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Minimum</span></label><input id="int_min" type="number" name="int_min" ng-model="int_min" aw-max="int_max" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.int_min.$error.integer || survey_question_form.int_min.$error.number">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.int_min.$error.awMax">Please enter a smaller integer.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Maximum</span></label><input id="int_max" type="number" name="int_max" ng-model="int_max" aw-min="int_min" class="form-control" integer >'+
|
||||
'<div class="error" ng-show="survey_question_form.int_max.$error.integer || survey_question_form.int_max.$error.number">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.int_max.$error.awMin">Please enter a larger integer.</div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="integer" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
float_options: {
|
||||
realName: 'answer_options',
|
||||
type: 'custom',
|
||||
control: '<div class="row">'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="minimum"><span class="label-text">Minimum</span></label><input id="float_min" type="number" name="float_min" ng-model="float_min" class="form-control" smart-float aw-max="float_max">'+
|
||||
'<div class="error" ng-show="survey_question_form.float_min.$error.float || survey_question_form.float_min.$error.number">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.float_min.$error.awMax">Please enter a smaller float.</div>'+
|
||||
'</div>'+
|
||||
'<div class="col-xs-6">'+
|
||||
'<label for="maximum"><span class="label-text">Maximum</span></label><input id="float_max" type="number" name="float_max" ng-model="float_max" class="form-control" smart-float aw-min="float_min">'+
|
||||
'<div class="error" ng-show="survey_question_form.float_max.$error.float">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.float_max.$error.awMin">Please enter a larger float.</div>'+
|
||||
|
||||
});
|
||||
'</div>'+
|
||||
'</div>',
|
||||
ngShow: 'type.type==="float" ',
|
||||
addRequired: true,
|
||||
editRequired: true,
|
||||
column: 2
|
||||
},
|
||||
default:{
|
||||
realName: 'default_answer',
|
||||
type: 'custom' ,
|
||||
control: '<div class="form-group" >'+
|
||||
'<label for="default"><span class="label-text">Default Answer</span></label>'+
|
||||
'<div>'+
|
||||
'<input type="text" ng-model="default" name="default" id="default" class="form-control ng-valid ng-dirty">'+
|
||||
'<div class="error ng-hide" id=survey_question-default-duplicate-error" ng-show="invalidChoice">Please enter an answer for the choices listed.</div>' +
|
||||
'<div class="error ng-hide" id=survey_question-default-duplicate-error" ng-show="minTextError">The answer is shorter than the minimium length. Please make the answer longer. </div>' +
|
||||
'<div class="error ng-hide" id=survey_question-default-duplicate-error" ng-show="maxTextError">The answer is longer than the maximum length. Please make the answer shorter. </div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-default-api-error" ng-bind="default_api_error"></div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngHide: 'type.type === "textarea" || type.type === "multiselect" || type.type === "integer" || type.type === "float" '
|
||||
},
|
||||
default_multiselect: {
|
||||
realName: 'default_answer' ,
|
||||
type: 'custom',
|
||||
control: '<div class="form-group">'+
|
||||
'<label for="default_multiselect"><span class="label-text">Default Answer</span></label>'+
|
||||
'<div>'+
|
||||
'<textarea rows="3" ng-model="default_multiselect" name="default_multiselect" class="form-control ng-pristine ng-valid" id="default_multiselect" aw-watch=""></textarea>'+
|
||||
'<div class="error ng-hide" id=survey_question-default_multiselect-duplicate-error" ng-show="invalidChoice">Please enter an answer/answers for the choices listed.</div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-default_multiselect-api-error" ng-bind="default_multiselect_api_error"></div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngShow: 'type.type==="multiselect" '
|
||||
},
|
||||
default_int: {
|
||||
realName: 'default_answer',
|
||||
type: 'custom',
|
||||
control: '<div>'+
|
||||
'<label for="default_int"><span class="label-text">Default Answer</span></label>'+
|
||||
'<input type="number" ng-model="default_int" name="default_int" aw-min="int_min" aw-max="int_max" class="form-control" integer />'+
|
||||
'<div class="error" ng-show="survey_question_form.default_int.$error.number || survey_question_form.default_int.$error.integer">Please enter a valid integer.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.default_int.$error.awMin || survey_question_form.default_int.$error.awMax"> Please enter a value in the range of {{int_min}} to {{int_max}}.</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngShow: 'type.type === "integer" '
|
||||
},
|
||||
default_float: {
|
||||
realName: 'default_answer',
|
||||
type: 'custom',
|
||||
control: '<div>'+
|
||||
'<label for="default_float"><span class="label-text">Default Answer</span></label>'+
|
||||
'<input type="number" ng-model="default_float" name="default_float" aw-min="float_min" aw-max="float_max" class="form-control" />'+
|
||||
'<div class="error" ng-show="survey_question_form.default_float.$error.number || survey_question_form.default_float.$error.float">Please enter a valid float.</div>'+
|
||||
'<div class="error" ng-show="survey_question_form.default_float.$error.awMin || survey_question_form.default_float.$error.awMax"> Please enter a value in the range of {{float_min}} to {{float_max}}!</div>'+
|
||||
'</div>',
|
||||
column: 2,
|
||||
ngShow: 'type.type=== "float" '
|
||||
},
|
||||
default_textarea: {
|
||||
realName: "default_answer" ,
|
||||
type: 'custom',
|
||||
control: '<div class="form-group">'+
|
||||
'<label for="default_textarea"><span class="label-text">Default Answer</span></label>'+
|
||||
'<div>'+
|
||||
'<textarea rows="3" ng-model="default_textarea" name="default_textarea" class="form-control ng-valid ng-dirty" id="default_textarea" aw-watch=""></textarea>'+
|
||||
'<div class="error ng-hide" id=survey_question-default-duplicate-error" ng-show="minTextError">The answer is shorter than the minimium length. Please make the answer longer. </div>' +
|
||||
'<div class="error ng-hide" id=survey_question-default-duplicate-error" ng-show="maxTextError">The answer is longer than the maximum length. Please make the answer shorter. </div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-default_textarea-api-error" ng-bind="default_textarea_api_error"></div>'+
|
||||
'</div>'+
|
||||
'</div>',
|
||||
column : 2,
|
||||
ngShow: 'type.type === "textarea" '
|
||||
},
|
||||
required: {
|
||||
realName: 'required_answer',
|
||||
label: 'Required',
|
||||
type: 'checkbox',
|
||||
addRequired: false,
|
||||
editRequired: false,
|
||||
column: 2
|
||||
}
|
||||
},
|
||||
buttons: {
|
||||
question_cancel : {
|
||||
label: 'Cancel',
|
||||
'class' : 'btn btn-default',
|
||||
ngClick: 'cancelQuestion($event)'
|
||||
},
|
||||
submit_question: {
|
||||
ngClick: 'submitQuestion($event)',
|
||||
ngDisabled: true, //'survey_question.$valid', //"!question_name || !variable || !type || ((type.type==='multiplechoice' || type.type === 'multiselect' ) && !choices)", //|| type.type===multiselect ',//'!question_name || !variable || !type' ,
|
||||
'class': 'btn btn-sm btn-primary',
|
||||
label: 'Add Question'
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -72,12 +72,18 @@ angular.module('JobSubmissionHelper', [ 'RestServices', 'Utilities', 'Credential
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(scope.survey_enabled===true){
|
||||
for (var fld in scope.job_launch_form){
|
||||
//grab only survey question fields, including those that are zero or a blank answer (for optional questions)
|
||||
if((scope[fld] || scope[fld] === 0 || scope[fld]==="") && scope.passwords_needed_to_start.indexOf(fld) === -1 && fld !== 'extra_vars'){
|
||||
for (var i=0; i < scope.survey_questions.length; i++){
|
||||
var fld = scope.survey_questions[i].variable;
|
||||
// grab all survey questions that have answers
|
||||
if(scope[fld]) {
|
||||
job_launch_data.extra_vars[fld] = scope[fld];
|
||||
}
|
||||
// for optional text and text-areas, submit a blank string if min length is 0
|
||||
if(scope.survey_questions[i].required === false && (scope.survey_questions[i].type === "text" || scope.survey_questions[i].type === "textarea") && scope.survey_questions[i].min === 0 && scope[fld] ===""){
|
||||
job_launch_data.extra_vars[fld] = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,18 +256,18 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
return function(params) {
|
||||
|
||||
var scope = params.scope,
|
||||
// id = params.id,
|
||||
question = params.question,
|
||||
index = params.index,
|
||||
required,
|
||||
element, choices, i, checked,
|
||||
max, min, defaultValue,
|
||||
|
||||
html = "";
|
||||
|
||||
// if(scope.survey_questions.length>0){
|
||||
// $('#survey-save-button').removeAttr('disabled')
|
||||
// }
|
||||
element,
|
||||
choices,
|
||||
i,
|
||||
checked,
|
||||
max,
|
||||
min,
|
||||
defaultValue,
|
||||
answers,
|
||||
html = "";
|
||||
|
||||
question.index = index;
|
||||
question.question_name = question.question_name.replace(/</g, "<");
|
||||
@ -286,7 +286,6 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
if(!Empty(question.question_description)){
|
||||
html += '<div class="col-xs-12 description"><i>'+question.question_description+'</i></div>\n';
|
||||
}
|
||||
// defaultValue = (question.default) ? question.default : "";
|
||||
|
||||
if(question.type === 'text' ){
|
||||
defaultValue = (question.default) ? question.default : "";
|
||||
@ -312,9 +311,10 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
choices = question.choices.split(/\n/);
|
||||
element = (question.type==="multiselect") ? "checkbox" : 'radio';
|
||||
question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ;
|
||||
answers = question.default.split(/\n/);
|
||||
html += '<div class="input_area">';
|
||||
for( i = 0; i<choices.length; i++){
|
||||
checked = (!Empty(question.default) && question.default.indexOf(choices[i])!==-1) ? "checked" : "";
|
||||
checked = (!Empty(question.default) && $.inArray(choices[i], answers) !== -1) ? "checked" : "";
|
||||
choices[i] = choices[i] .replace(/</g, "<");
|
||||
choices[i] = choices[i] .replace(/>/g, ">");
|
||||
choices[i] = scope.serialize(choices[i]);
|
||||
@ -364,17 +364,42 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
$('#add_question_btn').focus();
|
||||
$('#survey_maker_save_btn').removeAttr('disabled');
|
||||
|
||||
// Sometimes the $event.target returns the anchor element that wraps the icon, and sometimes the icon itself
|
||||
// is returned. So for each icon click event we check to see which target the user clicked, and depending no which one
|
||||
// they clicked, we move up the dom hierarchy to get the index on the question. Ultimatley the object that is passed to
|
||||
// each one of these functions should be the index of the question that the user is trying to perform an action on.
|
||||
$('#delete-question_'+question.index+'').on('click', function($event){
|
||||
scope.deleteQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
if($event.target.nodeName==="A"){
|
||||
scope.deleteQuestion($event.target.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
else if($event.target.nodeName === "I"){
|
||||
scope.deleteQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
});
|
||||
$('#edit-question_'+question.index+'').on('click', function($event){
|
||||
scope.editQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
if($event.target.nodeName==="A"){
|
||||
scope.editQuestion($event.target.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
else if($event.target.nodeName === "I"){
|
||||
scope.editQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
});
|
||||
$('#question-up_'+question.index+'').on('click', function($event){
|
||||
scope.questionUp($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
if($event.target.nodeName==="A"){
|
||||
scope.questionUp($event.target.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
else if($event.target.nodeName === "I"){
|
||||
scope.questionUp($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
});
|
||||
$('#question-down_'+question.index+'').on('click', function($event){
|
||||
scope.questionDown($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
if($event.target.nodeName==="A"){
|
||||
scope.questionDown($event.target.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
else if($event.target.nodeName === "I"){
|
||||
scope.questionDown($event.target.parentElement.parentElement.parentElement.id.split('_')[1]);
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
}])
|
||||
@ -701,6 +726,8 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
};
|
||||
|
||||
scope.typeChange = function() {
|
||||
scope.minTextError = false;
|
||||
scope.maxTextError = false;
|
||||
scope.default = "";
|
||||
scope.default_multiselect = "";
|
||||
scope.default_float = "";
|
||||
@ -721,13 +748,63 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
scope.survey_question_form.default_int.$setPristine();
|
||||
scope.survey_question_form.default_textarea.$setPristine();
|
||||
scope.survey_question_form.choices.$setPristine();
|
||||
scope.survey_question_form.int_min.$setPristine();
|
||||
scope.survey_question_form.int_max.$setPristine();
|
||||
};
|
||||
|
||||
scope.submitQuestion = function(event){
|
||||
var data = {},
|
||||
fld,
|
||||
fld, i,
|
||||
choiceArray,
|
||||
answerArray,
|
||||
key, elementID;
|
||||
Wait('start');
|
||||
// Wait('start');
|
||||
scope.invalidChoice = false;
|
||||
scope.duplicate = false;
|
||||
scope.minTextError = false;
|
||||
scope.maxTextError = false;
|
||||
|
||||
if(scope.type.type==="text"){
|
||||
if(scope.default.trim() !== ""){
|
||||
if(scope.default.trim().length < scope.text_min && scope.text_min !== "" ){
|
||||
scope.minTextError = true;
|
||||
}
|
||||
if(scope.text_max < scope.default.trim().length && scope.text_max !== "" ){
|
||||
scope.maxTextError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(scope.type.type==="textarea"){
|
||||
if(scope.default_textarea.trim() !== ""){
|
||||
if(scope.default_textarea.trim().length < scope.textarea_min && scope.textarea_min !== "" ){
|
||||
scope.minTextError = true;
|
||||
}
|
||||
if(scope.textarea_max < scope.default_textarea.trim().length && scope.textarea_max !== "" ){
|
||||
scope.maxTextError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(scope.type.type==="multiselect" && scope.default_multiselect.trim() !== ""){
|
||||
choiceArray = scope.choices.split(/\n/);
|
||||
answerArray = scope.default_multiselect.split(/\n/);
|
||||
|
||||
if(answerArray.length>0){
|
||||
for(i=0; i<answerArray.length; i++){
|
||||
if($.inArray(answerArray[i], choiceArray)===-1){
|
||||
scope.invalidChoice = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(scope.type.type==="multiplechoice" && scope.default.trim() !== ""){
|
||||
choiceArray = scope.choices.split(/\n/);
|
||||
if($.inArray(scope.default, choiceArray)===-1){
|
||||
scope.invalidChoice = true;
|
||||
}
|
||||
}
|
||||
|
||||
// validate that there aren't any questions using this var name.
|
||||
if(GenerateForm.mode === 'add'){
|
||||
@ -735,8 +812,6 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
for(fld in questions){
|
||||
if(questions[fld].variable === scope.variable){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -744,8 +819,6 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
for(fld in scope.survey_questions){
|
||||
if(scope.survey_questions[fld].variable === scope.variable){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -757,9 +830,6 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
for(fld in questions){
|
||||
if(questions[fld].variable === scope.variable && fld!==key){
|
||||
scope.duplicate = true;
|
||||
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -767,14 +837,16 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
for(fld in scope.survey_questions){
|
||||
if(scope.survey_questions[fld].variable === scope.variable && fld!==key){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(scope.duplicate===true || scope.invalidChoice===true || scope.minTextError === true || scope.maxTextError === true){
|
||||
// Wait('stop');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
//create data object for each submitted question
|
||||
@ -875,4 +947,3 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
|
||||
};
|
||||
}]);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user