From 9a678c72dc23ff4a3bfd091003985385d38a4acc Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Mon, 10 Apr 2017 17:13:42 -0400 Subject: [PATCH] Fixed bug where optional single select survey questions with a default value couldn't be skipped --- .../job-submission-factories/getsurveyquestions.factory.js | 7 +++++++ .../job-submission-factories/launchjob.factory.js | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js index 28aa13d6db..4b633d3eaa 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/getsurveyquestions.factory.js @@ -42,6 +42,13 @@ export default else if(question.type === "multiplechoice") { question.model = question.default ? angular.copy(question.default) : ""; question.choices = question.choices.split(/\n/); + + // Add a default empty string option to the choices array. If this choice is + // selected then the extra var will not be sent when we POST to the launch + // endpoint + if(!question.required) { + question.choices.unshift(''); + } } else if(question.type === "float"){ question.model = (!Empty(question.default)) ? angular.copy(question.default) : (!Empty(question.default_float)) ? angular.copy(question.default_float) : ""; diff --git a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js index 3cfb80e7a3..9361803735 100644 --- a/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js +++ b/awx/ui/client/src/job-submission/job-submission-factories/launchjob.factory.js @@ -90,9 +90,9 @@ export default // for optional select lists, if they are left blank make sure we submit // a value that the API will consider "empty" // - case "multiplechoice": - job_launch_data.extra_vars[fld] = ""; - break; + // ISSUE: I don't think this logic ever actually fires + // When I tested this, we don't pass this extra var back + // through the api when the mutliselect is optional and empty case "multiselect": job_launch_data.extra_vars[fld] = []; break;