Add cancel action to ActiveTasksTable

This commit is contained in:
Ken Hibino
2020-12-23 06:59:44 -08:00
parent cbfc1af9c0
commit 50639cabb8
7 changed files with 274 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ import {
SnackbarActionTypes,
} from "../actions/snackbarActions";
import {
BATCH_CANCEL_ACTIVE_TASKS_SUCCESS,
BATCH_DELETE_DEAD_TASKS_SUCCESS,
BATCH_DELETE_RETRY_TASKS_SUCCESS,
BATCH_DELETE_SCHEDULED_TASKS_SUCCESS,
@@ -11,6 +12,7 @@ import {
BATCH_RUN_DEAD_TASKS_SUCCESS,
BATCH_RUN_RETRY_TASKS_SUCCESS,
BATCH_RUN_SCHEDULED_TASKS_SUCCESS,
CANCEL_ALL_ACTIVE_TASKS_SUCCESS,
DELETE_ALL_DEAD_TASKS_SUCCESS,
DELETE_ALL_RETRY_TASKS_SUCCESS,
DELETE_ALL_SCHEDULED_TASKS_SUCCESS,
@@ -53,6 +55,22 @@ function snackbarReducer(
isOpen: false,
};
case BATCH_CANCEL_ACTIVE_TASKS_SUCCESS: {
const n = action.payload.canceled_ids.length;
return {
isOpen: true,
message: `Cancelation signal sent to ${n} ${
n === 1 ? "task" : "tasks"
}`,
};
}
case CANCEL_ALL_ACTIVE_TASKS_SUCCESS:
return {
isOpen: true,
message: `Cancelation signal sent to all tasks in ${action.queue} queue`,
};
case RUN_SCHEDULED_TASK_SUCCESS:
return {
isOpen: true,

View File

@@ -90,6 +90,12 @@ import {
BATCH_KILL_RETRY_TASKS_SUCCESS,
BATCH_KILL_RETRY_TASKS_BEGIN,
BATCH_KILL_RETRY_TASKS_ERROR,
BATCH_CANCEL_ACTIVE_TASKS_BEGIN,
BATCH_CANCEL_ACTIVE_TASKS_SUCCESS,
BATCH_CANCEL_ACTIVE_TASKS_ERROR,
CANCEL_ALL_ACTIVE_TASKS_BEGIN,
CANCEL_ALL_ACTIVE_TASKS_SUCCESS,
CANCEL_ALL_ACTIVE_TASKS_ERROR,
} from "../actions/tasksActions";
import {
ActiveTask,
@@ -130,6 +136,8 @@ export interface DeadTaskExtended extends DeadTask {
interface TasksState {
activeTasks: {
loading: boolean;
batchActionPending: boolean;
allActionPending: boolean;
error: string;
data: ActiveTaskExtended[];
};
@@ -164,6 +172,8 @@ interface TasksState {
const initialState: TasksState = {
activeTasks: {
loading: false,
batchActionPending: false,
allActionPending: false,
error: "",
data: [],
},
@@ -214,6 +224,7 @@ function tasksReducer(
return {
...state,
activeTasks: {
...state.activeTasks,
loading: false,
error: "",
data: action.payload.tasks.map((task) => ({
@@ -413,6 +424,103 @@ function tasksReducer(
},
};
case BATCH_CANCEL_ACTIVE_TASKS_BEGIN: {
const newData = state.activeTasks.data.map((task) => {
if (!action.taskIds.includes(task.id)) {
return task;
}
return { ...task, requestPending: true };
});
return {
...state,
activeTasks: {
...state.activeTasks,
batchActionPending: true,
data: newData,
},
};
}
case BATCH_CANCEL_ACTIVE_TASKS_SUCCESS: {
const newData = state.activeTasks.data.map((task) => {
if (action.payload.canceled_ids.includes(task.id)) {
return { ...task, canceling: true, requestPending: false };
}
if (action.payload.error_ids.includes(task.id)) {
return { ...task, requestPending: false };
}
return task;
});
return {
...state,
activeTasks: {
...state.activeTasks,
batchActionPending: false,
data: newData,
},
};
}
case BATCH_CANCEL_ACTIVE_TASKS_ERROR: {
const newData = state.activeTasks.data.map((task) => {
return { ...task, requestPending: false };
});
return {
...state,
activeTasks: {
...state.activeTasks,
batchActionPending: false,
data: newData,
},
};
}
case CANCEL_ALL_ACTIVE_TASKS_BEGIN: {
const newData = state.activeTasks.data.map((task) => ({
...task,
requestPending: true,
}));
return {
...state,
activeTasks: {
...state.activeTasks,
allActionPending: true,
data: newData,
},
};
}
case CANCEL_ALL_ACTIVE_TASKS_SUCCESS: {
const newData = state.activeTasks.data.map((task) => ({
...task,
requestPending: false,
canceling: true,
}));
return {
...state,
activeTasks: {
...state.activeTasks,
allActionPending: false,
data: newData,
},
};
}
case CANCEL_ALL_ACTIVE_TASKS_ERROR: {
const newData = state.activeTasks.data.map((task) => ({
...task,
requestPending: false,
}));
return {
...state,
activeTasks: {
...state.activeTasks,
allActionPending: false,
data: newData,
},
};
}
case RUN_SCHEDULED_TASK_BEGIN:
case KILL_SCHEDULED_TASK_BEGIN:
case DELETE_SCHEDULED_TASK_BEGIN: