From 2de87dcef07743c31188d6114e5cb2ca8687fc79 Mon Sep 17 00:00:00 2001 From: mabashian Date: Tue, 20 Aug 2019 09:35:19 -0400 Subject: [PATCH 1/3] Fix prompt modal tab spacing when job launched from within jt form. --- awx/ui/client/legacy/styles/forms.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/awx/ui/client/legacy/styles/forms.less b/awx/ui/client/legacy/styles/forms.less index f5f2cfb3eb..9f31db8a7f 100644 --- a/awx/ui/client/legacy/styles/forms.less +++ b/awx/ui/client/legacy/styles/forms.less @@ -613,6 +613,10 @@ input[type='radio']:checked:before { button { margin-left: 20px; } + + .at-Tab { + margin-left: 0px; + } } .Form-button { From 4747be70141d6fabfc1fce578f7a28c023887a88 Mon Sep 17 00:00:00 2001 From: mabashian Date: Tue, 20 Aug 2019 09:36:36 -0400 Subject: [PATCH 2/3] Fixes bug in wf prompt modal by checking extra vars type before processing --- awx/ui/client/src/templates/prompt/prompt.service.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/awx/ui/client/src/templates/prompt/prompt.service.js b/awx/ui/client/src/templates/prompt/prompt.service.js index 338a3ff128..61c241e5ee 100644 --- a/awx/ui/client/src/templates/prompt/prompt.service.js +++ b/awx/ui/client/src/templates/prompt/prompt.service.js @@ -28,7 +28,11 @@ function PromptService (Empty, $filter) { if(hasCurrentExtraVars && hasDefaultExtraVars) { extraVars = jsyaml.safeDump(_.merge(jsyaml.safeLoad(params.launchConf.defaults.extra_vars), params.currentValues.extra_data)); } else if(hasCurrentExtraVars) { - extraVars = jsyaml.safeDump(params.currentValues.extra_data); + if (typeof params.currentValues.extra_data === 'object') { + extraVars = jsyaml.safeDump(params.currentValues.extra_data); + } else if (typeof params.currentValues.extra_data === 'string') { + extraVars = params.currentValues.extra_data; + } } else if(hasDefaultExtraVars) { extraVars = params.launchConf.defaults.extra_vars; } From 531a7b2c05f99d9ce0eff928c8b1f87c85d3cc57 Mon Sep 17 00:00:00 2001 From: mabashian Date: Wed, 21 Aug 2019 13:32:28 -0400 Subject: [PATCH 3/3] Add support for processing extra vars that come in string or object form. Small bug fixes for extra var corner cases in workflow nodes. --- .../src/templates/prompt/prompt.service.js | 17 +++++++++++++++-- .../forms/workflow-node-form.controller.js | 8 +++++++- .../workflow-maker/workflow-maker.controller.js | 13 ++++++++----- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/awx/ui/client/src/templates/prompt/prompt.service.js b/awx/ui/client/src/templates/prompt/prompt.service.js index 61c241e5ee..d5e801a573 100644 --- a/awx/ui/client/src/templates/prompt/prompt.service.js +++ b/awx/ui/client/src/templates/prompt/prompt.service.js @@ -26,10 +26,23 @@ function PromptService (Empty, $filter) { hasDefaultExtraVars = _.get(params, 'launchConf.defaults.extra_vars'); if(hasCurrentExtraVars && hasDefaultExtraVars) { - extraVars = jsyaml.safeDump(_.merge(jsyaml.safeLoad(params.launchConf.defaults.extra_vars), params.currentValues.extra_data)); + let currentExtraVars = {}; + let defaultExtraVars = {}; + if (typeof params.currentValues.extra_data === 'object') { + currentExtraVars = params.currentValues.extra_data; + } else if (typeof params.currentValues.extra_data === 'string') { + currentExtraVars = jsyaml.safeDump(params.currentValues.extra_data); + } + + if (typeof params.launchConf.defaults.extra_vars === 'object') { + defaultExtraVars = params.launchConf.defaults.extra_vars; + } else if (typeof params.launchConf.defaults.extra_vars === 'string') { + defaultExtraVars = jsyaml.safeLoad(params.launchConf.defaults.extra_vars); + } + extraVars = '---\n' + jsyaml.safeDump(_.merge(defaultExtraVars, currentExtraVars)); } else if(hasCurrentExtraVars) { if (typeof params.currentValues.extra_data === 'object') { - extraVars = jsyaml.safeDump(params.currentValues.extra_data); + extraVars = '---\n' + jsyaml.safeDump(params.currentValues.extra_data); } else if (typeof params.currentValues.extra_data === 'string') { extraVars = params.currentValues.extra_data; } diff --git a/awx/ui/client/src/templates/workflows/workflow-maker/forms/workflow-node-form.controller.js b/awx/ui/client/src/templates/workflows/workflow-maker/forms/workflow-node-form.controller.js index a3760d89d3..c089de6b7c 100644 --- a/awx/ui/client/src/templates/workflows/workflow-maker/forms/workflow-node-form.controller.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/forms/workflow-node-form.controller.js @@ -328,13 +328,19 @@ export default ['$scope', 'TemplatesService', 'JobTemplateModel', 'PromptService let processed = PromptService.processSurveyQuestions({ surveyQuestions: surveyQuestionRes.data.spec, - extra_data: _.cloneDeep($scope.nodeConfig.node.originalNodeObject.extra_data) + extra_data: jsyaml.safeLoad(prompts.variables.value) }); $scope.missingSurveyValue = processed.missingSurveyValue; $scope.extraVars = (processed.extra_data === '' || _.isEmpty(processed.extra_data)) ? '---' : '---\n' + jsyaml.safeDump(processed.extra_data); + // PromptService.processSurveyQuestions will strip the survey answers out of the extra + // vars so we should update the prompt value + prompts.variables = { + value: $scope.extraVars + }; + $scope.nodeConfig.node.promptData = $scope.promptData = { launchConf: launchConf, launchOptions: launchOptions, diff --git a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js index db5419a579..68fcfda0b9 100644 --- a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js @@ -100,12 +100,15 @@ export default ['$scope', 'TemplatesService', } if (_.has(node, 'promptData.extraVars')) { + const formVars = node.promptData.extraVars; + const formVarsJSON = typeof formVars === 'string' ? jsyaml.safeLoad(formVars) : formVars; if (_.get(node, 'promptData.launchConf.defaults.extra_vars')) { - const defaultVars = jsyaml.safeLoad(node.promptData.launchConf.defaults.extra_vars); + const defaultVars = node.promptData.launchConf.defaults.extra_vars; + const defaultVarsJSON = typeof defaultVars === 'string' ? jsyaml.safeLoad(defaultVars) : defaultVars; // Only include extra vars that differ from the template default vars - _.forOwn(node.promptData.extraVars, (value, key) => { - if (!defaultVars[key] || defaultVars[key] !== value) { + _.forOwn(formVarsJSON, (value, key) => { + if (!defaultVarsJSON[key] || defaultVarsJSON[key] !== value) { sendableNodeData.extra_data[key] = value; } }); @@ -113,8 +116,8 @@ export default ['$scope', 'TemplatesService', delete sendableNodeData.extra_data; } } else { - if (_.has(node, 'promptData.extraVars') && !_.isEmpty(node.promptData.extraVars)) { - sendableNodeData.extra_data = node.promptData.extraVars; + if (_.has(node, 'promptData.extraVars') && !_.isEmpty(formVarsJSON)) { + sendableNodeData.extra_data = formVarsJSON; } } }