mirror of
https://github.com/ansible/awx.git
synced 2026-03-06 19:21:06 -03:30
Survey maker prevent duplicate vars
Added check in survey maker to prevent saving a question that uses a variable that is already in use.
This commit is contained in:
@@ -62,7 +62,8 @@ angular.module('SurveyQuestionFormDefinition', [])
|
||||
'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">A value is required!</div>'+
|
||||
'<div class="error ng-hide" id="survey_question-variable-required-error" ng-show="survey_question_form.variable.$dirty && survey_question_form.variable.$error.variable">The value contains an illegal character!</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">The value contains an illegal character!</div>'+
|
||||
'<div class="error ng-hide" id=survey_question-variable-duplicate-error" ng-show="duplicate">This variable is already in use.</div>' +
|
||||
'<div class="error api-error ng-binding" id="survey_question-variable-api-error" ng-bind="variable_api_error"></div>'+
|
||||
'</div>',
|
||||
addRequired: true,
|
||||
|
||||
@@ -521,6 +521,7 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
|
||||
scope.addNewQuestion = function(){
|
||||
// $('#add_question_btn').on("click" , function(){
|
||||
scope.duplicate = false;
|
||||
scope.addQuestion();
|
||||
$('#survey_question_question_name').focus();
|
||||
$('#add_question_btn').attr('disabled', 'disabled');
|
||||
@@ -529,6 +530,7 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
// });
|
||||
};
|
||||
scope.editQuestion = function(index){
|
||||
scope.duplicate = false;
|
||||
EditQuestion({
|
||||
index: index,
|
||||
scope: scope,
|
||||
@@ -708,15 +710,57 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
|
||||
scope.submitQuestion = function(){
|
||||
var data = {},
|
||||
//form = SurveyQuestionForm,
|
||||
// labels={},
|
||||
// min= "min",
|
||||
// max = "max",
|
||||
// fld,
|
||||
fld,
|
||||
key, elementID;
|
||||
//generator.clearApiErrors();
|
||||
Wait('start');
|
||||
|
||||
// validate that there aren't any questions using this var name.
|
||||
if(GenerateForm.mode === 'add'){
|
||||
if(scope.mode === 'add'){
|
||||
for(fld in questions){
|
||||
if(questions[fld].variable === scope.variable){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (scope.mode === 'edit'){
|
||||
for(fld in scope.survey_questions){
|
||||
if(scope.survey_questions[fld].variable === scope.variable){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(GenerateForm.mode === 'edit'){
|
||||
elementID = event.target.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.id;
|
||||
key = elementID.split('_')[1];
|
||||
if(scope.mode==='add'){
|
||||
for(fld in questions){
|
||||
if(questions[fld].variable === scope.variable && fld!==key){
|
||||
scope.duplicate = true;
|
||||
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(scope.mode === 'edit'){
|
||||
for(fld in scope.survey_questions){
|
||||
if(scope.survey_questions[fld].variable === scope.variable && fld!==key){
|
||||
scope.duplicate = true;
|
||||
Wait('stop');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
//create data object for each submitted question
|
||||
data.question_name = scope.question_name;
|
||||
@@ -729,45 +773,6 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper',
|
||||
data.default = (scope.type.type === 'textarea') ? scope.default_textarea : (scope.type.type === "float") ? scope.default_float : (scope.type.type==="integer") ? scope.default_int : (scope.type.type === "multiselect") ? scope.default_multiselect : (scope.default) ? scope.default : "" ;
|
||||
data.choices = (scope.type.type === "multiplechoice") ? scope.choices : (scope.type.type === 'multiselect') ? scope.choices : "" ;
|
||||
|
||||
// for (fld in form.fields) {
|
||||
// if(fld==='required'){
|
||||
// data[fld] = (scope[fld]===true) ? true : false;
|
||||
// }
|
||||
// if(scope[fld]){
|
||||
// if(fld === "type"){
|
||||
// data[fld] = scope[fld].type;
|
||||
|
||||
// if(scope[fld].type === 'text'){
|
||||
// data.min = scope.text_min;
|
||||
// data.max = scope.text_max;
|
||||
// // data.default = scope.default_text;
|
||||
// }
|
||||
// if(scope[fld].type === 'textarea'){
|
||||
// data.min = scope.textarea_min;
|
||||
// data.max = scope.textarea_max;
|
||||
// // data.default = scope.default_textarea;
|
||||
// }
|
||||
// if(scope[fld].type === 'float'){
|
||||
// data.min = scope.float_min;
|
||||
// data.max = scope.float_max;
|
||||
// data.default = scope.default_float;
|
||||
// }
|
||||
// if(scope[fld].type==="integer" ){
|
||||
// data.min = scope.int_min;
|
||||
// data.max = scope.int_max;
|
||||
// data.default = scope.default_int;
|
||||
// }
|
||||
// }
|
||||
// else if(fld==='default_multiselect'){
|
||||
// data.default = scope.default_multiselect;
|
||||
// }
|
||||
// else{
|
||||
// data[fld] = scope[fld];
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
Wait('stop');
|
||||
if(scope.mode === 'add' || scope.mode==="edit" && scope.can_edit === true){
|
||||
$('#survey-save-button').removeAttr('disabled');
|
||||
|
||||
Reference in New Issue
Block a user