2024-06-02 08:10:38 +00:00
|
|
|
import { useFormikContext } from 'formik';
|
2024-06-06 18:07:39 +00:00
|
|
|
import { Calendar, Edit } from 'lucide-react';
|
2024-06-02 08:10:38 +00:00
|
|
|
|
|
|
|
import { FormSection } from '@@/form-components/FormSection';
|
2024-06-06 18:07:39 +00:00
|
|
|
import { BoxSelector, BoxSelectorOption } from '@@/BoxSelector';
|
2024-06-02 08:10:38 +00:00
|
|
|
|
2024-06-06 18:07:39 +00:00
|
|
|
import { FormValues } from '../../CreateView/types';
|
2024-06-02 08:10:38 +00:00
|
|
|
|
|
|
|
import { AdvancedCronFieldset } from './AdvancedCronFieldset';
|
|
|
|
import { BasicCronFieldset } from './BasicCronFieldset';
|
|
|
|
|
2024-06-06 18:07:39 +00:00
|
|
|
export const cronMethodOptions: ReadonlyArray<BoxSelectorOption<string>> = [
|
|
|
|
{
|
|
|
|
id: 'config_basic',
|
|
|
|
value: 'basic',
|
|
|
|
icon: Calendar,
|
|
|
|
iconType: 'badge',
|
|
|
|
label: 'Basic configuration',
|
|
|
|
description: 'Select date from calendar',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 'config_advanced',
|
|
|
|
value: 'advanced',
|
|
|
|
icon: Edit,
|
|
|
|
iconType: 'badge',
|
|
|
|
label: 'Advanced configuration',
|
|
|
|
description: 'Write your own cron rule',
|
|
|
|
},
|
|
|
|
] as const;
|
|
|
|
|
2024-06-02 08:10:38 +00:00
|
|
|
export function JobConfigurationFieldset() {
|
|
|
|
const { values, setFieldValue } = useFormikContext<FormValues>();
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<FormSection title="Edge job configuration">
|
|
|
|
<BoxSelector
|
|
|
|
slim
|
|
|
|
radioName="configuration"
|
|
|
|
value={values.cronMethod}
|
|
|
|
options={cronMethodOptions}
|
|
|
|
onChange={(value) => {
|
|
|
|
setFieldValue('cronMethod', value);
|
|
|
|
setFieldValue('cronExpression', '');
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
</FormSection>
|
|
|
|
|
|
|
|
{values.cronMethod === 'basic' ? (
|
|
|
|
<BasicCronFieldset />
|
|
|
|
) : (
|
|
|
|
<AdvancedCronFieldset />
|
|
|
|
)}
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
}
|