From 90a45c8fc3efab659de0b170178b0b44045d4d49 Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Mon, 17 Apr 2017 15:48:41 -0700 Subject: [PATCH] CTiT -> adhoc modules should allow the user to add new modules the adhoc module field was not setup to allow users to input additional options. --- .../configuration/configuration.controller.js | 29 ++++++++++--------- .../configuration-jobs.controller.js | 14 ++++++++- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index dab604b744..cc477d353b 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -353,23 +353,26 @@ export default [ clearApiErrors(); _.each(keys, function(key) { if($scope.configDataResolve[key].type === 'choice' || multiselectDropdowns.indexOf(key) !== -1) { + + // Handle AD_HOC_COMMANDS + if(multiselectDropdowns.indexOf(key) !== -1) { + let newModules = $("#configuration_jobs_template_AD_HOC_COMMANDS > option") + .filter("[data-select2-tag=true]") + .map((i, val) => ({value: $(val).text()})); + newModules.each(function(i, val) { + $scope[key].push(val); + }); + + payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); + } + //Parse dropdowns and dropdowns labeled as lists - if($scope[key] === null) { + else if($scope[key] === null) { payload[key] = null; } else if($scope[key][0] && $scope[key][0].value !== undefined) { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Handle AD_HOC_COMMANDS - payload[key] = ConfigurationUtils.listToArray(_.map($scope[key], 'value').join(',')); - } else { - payload[key] = _.map($scope[key], 'value').join(','); - } + payload[key] = _.map($scope[key], 'value').join(','); } else { - if(multiselectDropdowns.indexOf(key) !== -1) { - // Default AD_HOC_COMMANDS to an empty list - payload[key] = $scope[key].value || []; - } else { - payload[key] = $scope[key].value; - } + payload[key] = $scope[key].value; } } else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) { // Parse lists diff --git a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js index 2aca32628b..ca14b35225 100644 --- a/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js +++ b/awx/ui/client/src/configuration/jobs-form/configuration-jobs.controller.js @@ -79,7 +79,18 @@ export default [ function populateAdhocCommand(flag){ $scope.$parent.AD_HOC_COMMANDS = $scope.$parent.AD_HOC_COMMANDS.toString(); var ad_hoc_commands = $scope.$parent.AD_HOC_COMMANDS.split(','); - $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, (item) => _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item })); + $scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, function(item){ + let option = _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item }); + if(!option){ + option = { + name: item, + value: item, + label: item + }; + $scope.$parent.AD_HOC_COMMANDS_options.push(option); + } + return option; + }); if(flag !== undefined){ dropdownRendered = flag; @@ -90,6 +101,7 @@ export default [ CreateSelect2({ element: '#configuration_jobs_template_AD_HOC_COMMANDS', multiple: true, + addNew: true, placeholder: i18n._('Select commands') }); }