forked from cadence-workflow/cadence-web
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschedule-actions.config.ts
More file actions
71 lines (63 loc) · 2.68 KB
/
Copy pathschedule-actions.config.ts
File metadata and controls
71 lines (63 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { MdPauseCircleOutline, MdPlayCircleOutline } from 'react-icons/md';
import { type PauseScheduleResponse } from '@/route-handlers/pause-schedule/pause-schedule.types';
import { type UnpauseScheduleResponse } from '@/route-handlers/unpause-schedule/unpause-schedule.types';
import ScheduleActionPauseForm from '../schedule-action-pause-form/schedule-action-pause-form';
import { type PauseScheduleFormData } from '../schedule-action-pause-form/schedule-action-pause-form.types';
import { pauseScheduleFormSchema } from '../schedule-action-pause-form/schemas/pause-schedule-form-schema';
import { type ScheduleAction } from '../schedule-actions.types';
import { pauseScheduleBannerIcon } from './schedule-actions-banner-icons';
import { PAUSE_SCHEDULE_MODAL_BANNER_MESSAGE } from './schedule-actions.constants';
export type PauseScheduleSubmissionData = PauseScheduleFormData;
const pauseScheduleActionConfig: ScheduleAction<
PauseScheduleResponse,
PauseScheduleFormData,
PauseScheduleSubmissionData
> = {
id: 'pause',
label: 'Pause',
subtitle: 'Pause a schedule',
modal: {
banner: {
kind: 'warning',
icon: pauseScheduleBannerIcon,
render: () => PAUSE_SCHEDULE_MODAL_BANNER_MESSAGE,
},
withForm: true,
form: ScheduleActionPauseForm,
formSchema: pauseScheduleFormSchema,
transformFormDataToSubmission: (formData) => formData,
initialFormValues: { reason: '' },
},
icon: MdPauseCircleOutline,
getRunnableStatus: (schedule) =>
schedule.state?.paused
? 'NOT_RUNNABLE_SCHEDULE_ALREADY_PAUSED'
: 'RUNNABLE',
apiRoute: (params) =>
`/api/domains/${encodeURIComponent(params.domain)}/${encodeURIComponent(params.cluster)}/schedules/${encodeURIComponent(params.scheduleId)}/pause`,
renderSuccessMessage: () => 'Schedule has been paused.',
};
const resumeScheduleActionConfig: ScheduleAction<UnpauseScheduleResponse> = {
id: 'resume',
label: 'Resume',
subtitle: 'Resume a paused schedule',
modal: {
text: 'Resumes the schedule so new workflow runs can be triggered again.',
docsLink: {
text: 'Read more about schedules',
href: 'https://cadenceworkflow.io/docs/concepts/schedules',
},
withForm: false,
},
icon: MdPlayCircleOutline,
getRunnableStatus: (schedule) =>
schedule.state?.paused ? 'RUNNABLE' : 'NOT_RUNNABLE_SCHEDULE_NOT_PAUSED',
apiRoute: (params) =>
`/api/domains/${encodeURIComponent(params.domain)}/${encodeURIComponent(params.cluster)}/schedules/${encodeURIComponent(params.scheduleId)}/unpause`,
renderSuccessMessage: () => 'Schedule has been resumed.',
};
const scheduleActionsConfig = [
pauseScheduleActionConfig,
resumeScheduleActionConfig,
];
export default scheduleActionsConfig;