Merge pull request #12340 from john-westcott-iv/shedule_timezone_12255

Add documentation around schedule timezone change
This commit is contained in:
Jessica Steurer
2022-06-15 15:34:49 -03:00
committed by GitHub
5 changed files with 51 additions and 16 deletions

View File

@@ -89,7 +89,7 @@ const generateRunOnTheDay = (days = []) => {
return null;
};
function ScheduleFormFields({ hasDaysToKeepField, zoneOptions }) {
function ScheduleFormFields({ hasDaysToKeepField, zoneOptions, zoneLinks }) {
const [timezone, timezoneMeta] = useField({
name: 'timezone',
validate: required(t`Select a value for this field`),
@@ -100,6 +100,24 @@ function ScheduleFormFields({ hasDaysToKeepField, zoneOptions }) {
});
const [{ name: dateFieldName }] = useField('startDate');
const [{ name: timeFieldName }] = useField('startTime');
const [timezoneMessage, setTimezoneMessage] = useState('');
const warnLinkedTZ = (event, selectedValue) => {
if (zoneLinks[selectedValue]) {
setTimezoneMessage(
`Warning: ${selectedValue} is a link to ${zoneLinks[selectedValue]} and will be saved as that.`
);
} else {
setTimezoneMessage('');
}
timezone.onChange(event, selectedValue);
};
let timezoneValidatedStatus = 'default';
if (timezoneMeta.touched && timezoneMeta.error) {
timezoneValidatedStatus = 'error';
} else if (timezoneMessage) {
timezoneValidatedStatus = 'warning';
}
return (
<>
<FormField
@@ -124,17 +142,17 @@ function ScheduleFormFields({ hasDaysToKeepField, zoneOptions }) {
<FormGroup
name="timezone"
fieldId="schedule-timezone"
helperTextInvalid={timezoneMeta.error}
helperTextInvalid={timezoneMeta.error || timezoneMessage}
isRequired
validated={
!timezoneMeta.touched || !timezoneMeta.error ? 'default' : 'error'
}
validated={timezoneValidatedStatus}
label={t`Local time zone`}
helperText={timezoneMessage}
>
<AnsibleSelect
id="schedule-timezone"
data={zoneOptions}
{...timezone}
onChange={warnLinkedTZ}
/>
</FormGroup>
<FormGroup
@@ -212,7 +230,7 @@ function ScheduleForm({
request: loadScheduleData,
error: contentError,
isLoading: contentLoading,
result: { zoneOptions, credentials },
result: { zoneOptions, zoneLinks, credentials },
} = useRequest(
useCallback(async () => {
const { data } = await SchedulesAPI.readZoneInfo();
@@ -225,19 +243,21 @@ function ScheduleForm({
creds = results;
}
const zones = data.map((zone) => ({
value: zone.name,
key: zone.name,
label: zone.name,
const zones = (data.zones || []).map((zone) => ({
value: zone,
key: zone,
label: zone,
}));
return {
zoneOptions: zones,
zoneLinks: data.links,
credentials: creds || [],
};
}, [schedule]),
{
zonesOptions: [],
zoneLinks: {},
credentials: [],
isLoading: true,
}
@@ -630,6 +650,7 @@ function ScheduleForm({
<ScheduleFormFields
hasDaysToKeepField={hasDaysToKeepField}
zoneOptions={zoneOptions}
zoneLinks={zoneLinks}
/>
{isWizardOpen && (
<SchedulePromptableFields