Skip to content

Commit ea057cb

Browse files
committed
Update UI to support setting "Continue on Error" for tasks
1 parent 92cd659 commit ea057cb

File tree

7 files changed

+149
-124
lines changed

7 files changed

+149
-124
lines changed

resources/scripts/api/server/schedules/createOrUpdateScheduleTask.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ interface Data {
55
action: string;
66
payload: string;
77
timeOffset: string | number;
8+
continueOnFailure: boolean;
89
}
910

10-
export default (uuid: string, schedule: number, task: number | undefined, { timeOffset, ...data }: Data): Promise<Task> => {
11-
return new Promise((resolve, reject) => {
12-
http.post(`/api/client/servers/${uuid}/schedules/${schedule}/tasks${task ? `/${task}` : ''}`, {
13-
...data,
14-
time_offset: timeOffset,
15-
})
16-
.then(({ data }) => resolve(rawDataToServerTask(data.attributes)))
17-
.catch(reject);
11+
export default async (uuid: string, schedule: number, task: number | undefined, data: Data): Promise<Task> => {
12+
const { data: response } = await http.post(`/api/client/servers/${uuid}/schedules/${schedule}/tasks${task ? `/${task}` : ''}`, {
13+
action: data.action,
14+
payload: data.payload,
15+
continue_on_failure: data.continueOnFailure,
16+
time_offset: data.timeOffset,
1817
});
18+
19+
return rawDataToServerTask(response.attributes);
1920
};

resources/scripts/components/server/schedules/EditScheduleModal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,15 @@ const EditScheduleModal = ({ schedule }: Props) => {
104104
</p>
105105
<div css={tw`mt-6 bg-neutral-700 border border-neutral-800 shadow-inner p-4 rounded`}>
106106
<FormikSwitch
107-
name={'only_when_online'}
108-
description={'If disabled this schedule will always run, regardless of the server\'s current power state.'}
107+
name={'onlyWhenOnline'}
108+
description={'Only execute this schedule when the server is in a running state.'}
109109
label={'Only When Server Is Online'}
110110
/>
111111
</div>
112112
<div css={tw`mt-6 bg-neutral-700 border border-neutral-800 shadow-inner p-4 rounded`}>
113113
<FormikSwitch
114114
name={'enabled'}
115-
description={'If disabled this schedule and it\'s associated tasks will not run.'}
115+
description={'This schedule will be executed automatically if enabled.'}
116116
label={'Schedule Enabled'}
117117
/>
118118
</div>

resources/scripts/components/server/schedules/NewTaskButton.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ export default ({ schedule }: Props) => {
1313

1414
return (
1515
<>
16-
{visible &&
17-
<TaskDetailsModal
18-
schedule={schedule}
19-
onDismissed={() => setVisible(false)}
20-
/>
21-
}
16+
<TaskDetailsModal schedule={schedule} visible={visible} onModalDismissed={() => setVisible(false)}/>
2217
<Button onClick={() => setVisible(true)} css={tw`flex-1`}>
2318
New Task
2419
</Button>

resources/scripts/components/server/schedules/ScheduleContainer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export default () => {
6767
}
6868
<Can action={'schedule.create'}>
6969
<div css={tw`mt-8 flex justify-end`}>
70-
{visible && <EditScheduleModal appear visible onDismissed={() => setVisible(false)}/>}
70+
<EditScheduleModal visible={visible} onModalDismissed={() => setVisible(false)}/>
7171
<Button type={'button'} onClick={() => setVisible(true)}>
7272
Create schedule
7373
</Button>

resources/scripts/components/server/schedules/ScheduleEditContainer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export default () => {
153153
}
154154
</div>
155155
</div>
156-
<EditScheduleModal visible={showEditModal} schedule={schedule} onDismissed={toggleEditModal}/>
156+
<EditScheduleModal visible={showEditModal} schedule={schedule} onModalDismissed={toggleEditModal}/>
157157
<div css={tw`mt-6 flex sm:justify-end`}>
158158
<Can action={'schedule.delete'}>
159159
<DeleteScheduleButton

resources/scripts/components/server/schedules/ScheduleTaskRow.tsx

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import React, { useState } from 'react';
22
import { Schedule, Task } from '@/api/server/schedules/getServerSchedules';
33
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4-
import { faClock, faCode, faFileArchive, faPencilAlt, faToggleOn, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
4+
import {
5+
faArrowCircleDown,
6+
faClock,
7+
faCode,
8+
faFileArchive,
9+
faPencilAlt,
10+
faToggleOn,
11+
faTrashAlt,
12+
} from '@fortawesome/free-solid-svg-icons';
513
import deleteScheduleTask from '@/api/server/schedules/deleteScheduleTask';
614
import { httpErrorToHuman } from '@/api/http';
715
import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
@@ -59,11 +67,12 @@ export default ({ schedule, task }: Props) => {
5967
return (
6068
<div css={tw`sm:flex items-center p-3 sm:p-6 border-b border-neutral-800`}>
6169
<SpinnerOverlay visible={isLoading} fixed size={'large'}/>
62-
{isEditing && <TaskDetailsModal
70+
<TaskDetailsModal
6371
schedule={schedule}
6472
task={task}
65-
onDismissed={() => setIsEditing(false)}
66-
/>}
73+
visible={isEditing}
74+
onModalDismissed={() => setIsEditing(false)}
75+
/>
6776
<ConfirmationModal
6877
title={'Confirm task deletion'}
6978
buttonText={'Delete Task'}
@@ -89,6 +98,14 @@ export default ({ schedule, task }: Props) => {
8998
}
9099
</div>
91100
<div css={tw`mt-3 sm:mt-0 flex items-center w-full sm:w-auto`}>
101+
{task.continueOnFailure &&
102+
<div css={tw`mr-6`}>
103+
<div css={tw`flex items-center px-2 py-1 bg-yellow-500 text-yellow-800 text-sm rounded-full`}>
104+
<Icon icon={faArrowCircleDown} css={tw`w-3 h-3 mr-2`}/>
105+
Continues on Failure
106+
</div>
107+
</div>
108+
}
92109
{task.sequenceId > 1 && task.timeOffset > 0 &&
93110
<div css={tw`mr-6`}>
94111
<div css={tw`flex items-center px-2 py-1 bg-neutral-500 text-sm rounded-full`}>

0 commit comments

Comments
 (0)