From 2529fdcfd7d5fff5ef46328246d37ce869468ac1 Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Thu, 21 Dec 2023 11:46:49 -0800 Subject: [PATCH] Persist schedule prompt on launch fields when editing (#14736) * persist schedule prompt on launch fields when editing * Merge job template default credentials with schedule overrides in schedule prompt * rename vars for clarity * handle undefined defaultCredentials --------- Co-authored-by: Michael Abashian --- .../components/Schedule/shared/ScheduleForm.js | 7 +++++++ .../shared/mergeArraysByCredentialType.js | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js diff --git a/awx/ui/src/components/Schedule/shared/ScheduleForm.js b/awx/ui/src/components/Schedule/shared/ScheduleForm.js index 43407d2737..8fbf83791c 100644 --- a/awx/ui/src/components/Schedule/shared/ScheduleForm.js +++ b/awx/ui/src/components/Schedule/shared/ScheduleForm.js @@ -20,6 +20,7 @@ import UnsupportedScheduleForm from './UnsupportedScheduleForm'; import parseRuleObj, { UnsupportedRRuleError } from './parseRuleObj'; import buildRuleObj from './buildRuleObj'; import buildRuleSet from './buildRuleSet'; +import mergeArraysByCredentialType from './mergeArraysByCredentialType'; const NUM_DAYS_PER_FREQUENCY = { week: 7, @@ -350,6 +351,12 @@ function ScheduleForm({ startDate: currentDate, startTime: time, timezone: schedule.timezone || now.zoneName, + credentials: mergeArraysByCredentialType( + resourceDefaultCredentials, + credentials + ), + labels: originalLabels.current, + instance_groups: originalInstanceGroups.current, }; if (hasDaysToKeepField) { diff --git a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js new file mode 100644 index 0000000000..13935f930e --- /dev/null +++ b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js @@ -0,0 +1,18 @@ +export default function mergeArraysByCredentialType( + defaultCredentials = [], + overrides = [] +) { + const mergedArray = [...defaultCredentials]; + + overrides.forEach((override) => { + const index = mergedArray.findIndex( + (defaultCred) => defaultCred.credential_type === override.credential_type + ); + if (index !== -1) { + mergedArray.splice(index, 1); + } + mergedArray.push(override); + }); + + return mergedArray; +}