From 9d9f650051c981f006cef52dbc30af088eff5295 Mon Sep 17 00:00:00 2001 From: Marliana Lara Date: Wed, 26 Apr 2023 14:49:43 -0400 Subject: [PATCH] Show schedule details warning when RRule is unsupported --- .../Schedule/ScheduleDetail/ScheduleDetail.js | 20 ++++++++++-- .../ScheduleDetail/ScheduleDetail.test.js | 27 ++++++++++++++++ .../Schedule/shared/UnsupportedRRuleAlert.js | 32 +++++++++++++++++++ .../Schedule/shared/parseRuleObj.js | 17 ++-------- 4 files changed, 79 insertions(+), 17 deletions(-) create mode 100644 awx/ui/src/components/Schedule/shared/UnsupportedRRuleAlert.js diff --git a/awx/ui/src/components/Schedule/ScheduleDetail/ScheduleDetail.js b/awx/ui/src/components/Schedule/ScheduleDetail/ScheduleDetail.js index 074cca4fa5..030bc7a236 100644 --- a/awx/ui/src/components/Schedule/ScheduleDetail/ScheduleDetail.js +++ b/awx/ui/src/components/Schedule/ScheduleDetail/ScheduleDetail.js @@ -11,7 +11,8 @@ import { JobTemplatesAPI, SchedulesAPI, WorkflowJobTemplatesAPI } from 'api'; import { parseVariableField, jsonToYaml } from 'util/yaml'; import { useConfig } from 'contexts/Config'; import InstanceGroupLabels from 'components/InstanceGroupLabels'; -import parseRuleObj from '../shared/parseRuleObj'; +import parseRuleObj, { UnsupportedRRuleError } from '../shared/parseRuleObj'; +import UnsupportedRRuleAlert from '../shared/UnsupportedRRuleAlert'; import FrequencyDetails from './FrequencyDetails'; import AlertModal from '../../AlertModal'; import { CardBody, CardActionsRow } from '../../Card'; @@ -182,8 +183,20 @@ function ScheduleDetail({ hasDaysToKeepField, schedule, surveyConfig }) { month: t`Month`, year: t`Year`, }; - const { frequency, frequencyOptions, exceptionFrequency, exceptionOptions } = - parseRuleObj(schedule); + let rruleError; + let frequency = []; + let frequencyOptions = {}; + let exceptionFrequency = []; + let exceptionOptions = {}; + try { + ({ frequency, frequencyOptions, exceptionFrequency, exceptionOptions } = + parseRuleObj(schedule)); + } catch (parseRuleError) { + if (parseRuleError instanceof UnsupportedRRuleError) { + rruleError = parseRuleError; + } + } + const repeatFrequency = frequency.length ? frequency.map((f) => frequencies[f]).join(', ') : t`None (Run Once)`; @@ -602,6 +615,7 @@ function ScheduleDetail({ hasDaysToKeepField, schedule, surveyConfig }) { )} + {rruleError && } {summary_fields?.user_capabilities?.edit && (