repeat and undo task steps
parent
5d61ec5c87
commit
cc59493b04
|
@ -32,6 +32,8 @@
|
|||
"groupTasks.groupTasksViewModal.notification.inputsCannotBeEmpty.description": "Bitte füllen Sie alle Felder aus",
|
||||
"groupTasks.groupTasksViewModal.button.tryAgain": "Erneut versuchen",
|
||||
"groupTasks.groupTasksViewModal.button.continue": "Weiter",
|
||||
"groupTasks.groupTasksViewModal.button.repeat": "Wiederholen",
|
||||
"groupTasks.groupTasksViewModal.button.undo": "Rückgängig machen",
|
||||
"groupTasks.groupTasksViewModal.button.resume": "Fortführen",
|
||||
"groupTasks.groupTasksViewModal.popover.specifiedTaskInputs": "Spezifizierte Aufgaben-Eingaben",
|
||||
"groupTasks.groupTasksViewModal.startedAt": "Gestartet am",
|
||||
|
@ -47,6 +49,8 @@
|
|||
"groupTasks.groupTasksViewModal.alertMessage.taskCanceled": "Aufgabe abgebrochen",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.taskFailed": "Aufgabe fehlgeschlagen",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.taskInputRequired": "Eingabe erforderlich",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.paused": "Pausiert",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.undoEnded": "Rückgängig machen beendet",
|
||||
"groupTasks.groupTasksTableList.column.creator": "Ersteller",
|
||||
"groupTasks.groupTasksTableList.column.groupName": "Gruppenname",
|
||||
"groupTasks.groupTasksTableList.column.description": "Beschreibung",
|
||||
|
@ -63,6 +67,7 @@
|
|||
"groupTasks.groupTasksTableList.statusBadge.failed": "Fehlgeschlagen",
|
||||
"groupTasks.groupTasksTableList.statusBadge.inputRequired": "Eingabe erforderlich",
|
||||
"groupTasks.groupTasksTableList.statusBadge.paused": "Pausiert",
|
||||
"groupTasks.groupTasksTableList.statusBadge.undoEnded": "Rückgängig gemacht",
|
||||
"groupTasks.groupTasksTableList.button.newTask": "Neue Aufgabe",
|
||||
"groupTasks.groupTasksTableList.button.reload": "Neu laden",
|
||||
"groupTasks.groupTasksTableList.popover.title": "Sind Sie sicher, dass Sie die Gruppenkonfigurationen neu laden wollen?",
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
"groupTasks.groupTasksViewModal.notification.inputsCannotBeEmpty.description": "Please fill in all inputs",
|
||||
"groupTasks.groupTasksViewModal.button.tryAgain": "Try again",
|
||||
"groupTasks.groupTasksViewModal.button.continue": "Continue",
|
||||
"groupTasks.groupTasksViewModal.button.repeat": "Repeat",
|
||||
"groupTasks.groupTasksViewModal.button.undo": "Undo",
|
||||
"groupTasks.groupTasksViewModal.button.resume": "Resume",
|
||||
"groupTasks.groupTasksViewModal.popover.specifiedTaskInputs": "Specified Task Inputs",
|
||||
"groupTasks.groupTasksViewModal.startedAt": "Started at",
|
||||
|
@ -47,6 +49,8 @@
|
|||
"groupTasks.groupTasksViewModal.alertMessage.taskCanceled": "Task canceled",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.taskFailed": "Task failed",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.taskInputRequired": "Input required",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.paused": "Paused",
|
||||
"groupTasks.groupTasksViewModal.alertMessage.undoEnded": "Undo ended",
|
||||
"groupTasks.groupTasksTableList.column.creator": "Creator",
|
||||
"groupTasks.groupTasksTableList.column.groupName": "Group Name",
|
||||
"groupTasks.groupTasksTableList.column.description": "Description",
|
||||
|
@ -63,6 +67,7 @@
|
|||
"groupTasks.groupTasksTableList.statusBadge.failed": "Failed",
|
||||
"groupTasks.groupTasksTableList.statusBadge.inputRequired": "Input required",
|
||||
"groupTasks.groupTasksTableList.statusBadge.paused": "Paused",
|
||||
"groupTasks.groupTasksTableList.statusBadge.undoEnded": "Undo ended",
|
||||
"groupTasks.groupTasksTableList.button.newTask": "New task",
|
||||
"groupTasks.groupTasksTableList.button.reload": "Reload",
|
||||
"groupTasks.groupTasksTableList.popover.title": "Are you sure you want to reload the group configs?",
|
||||
|
|
|
@ -140,6 +140,13 @@ export default function GroupTaskTableList({
|
|||
text={t("groupTasks.groupTasksTableList.statusBadge.paused")}
|
||||
/>
|
||||
);
|
||||
case Constants.GROUP_TASKS_STATUS.UNDO_ENDED:
|
||||
return (
|
||||
<Badge
|
||||
status="warning"
|
||||
text={t("groupTasks.groupTasksTableList.statusBadge.undoEnded")}
|
||||
/>
|
||||
);
|
||||
default:
|
||||
return <Badge status="error" text="Status not found" />;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
Popover,
|
||||
Result,
|
||||
Row,
|
||||
Space,
|
||||
Steps,
|
||||
Tag,
|
||||
notification,
|
||||
|
@ -27,9 +28,12 @@ import {
|
|||
GroupTasksStepsLockedAndUserUpdateInputValueRememberId,
|
||||
} from "../../../utils";
|
||||
import {
|
||||
CheckOutlined,
|
||||
FileImageOutlined,
|
||||
InfoCircleOutlined,
|
||||
LockOutlined,
|
||||
RetweetOutlined,
|
||||
UndoOutlined,
|
||||
} from "@ant-design/icons";
|
||||
import { StlViewer } from "react-stl-viewer";
|
||||
import TextArea from "antd/es/input/TextArea";
|
||||
|
@ -78,6 +82,7 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
return "error";
|
||||
case Constants.GROUP_TASKS_STATUS.CANCELED:
|
||||
case Constants.GROUP_TASKS_STATUS.PAUSED:
|
||||
case Constants.GROUP_TASKS_STATUS.UNDO_ENDED:
|
||||
return "warning";
|
||||
case Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED:
|
||||
case Constants.GROUP_TASKS_STATUS.RUNNING:
|
||||
|
@ -101,7 +106,9 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
"groupTasks.groupTasksViewModal.alertMessage.taskInputRequired"
|
||||
);
|
||||
case Constants.GROUP_TASKS_STATUS.PAUSED:
|
||||
return "Paused";
|
||||
return t("groupTasks.groupTasksViewModal.alertMessage.paused");
|
||||
case Constants.GROUP_TASKS_STATUS.UNDO_ENDED:
|
||||
return t("groupTasks.groupTasksViewModal.alertMessage.undoEnded");
|
||||
default:
|
||||
return "Alert message not found";
|
||||
}
|
||||
|
@ -118,6 +125,7 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
return "error";
|
||||
case Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED:
|
||||
case Constants.GROUP_TASKS_STATUS.PAUSED:
|
||||
case Constants.GROUP_TASKS_STATUS.UNDO_ENDED:
|
||||
default:
|
||||
return "wait";
|
||||
}
|
||||
|
@ -211,10 +219,11 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
);
|
||||
};
|
||||
|
||||
const handleTaskResumeFromPauseTaskStep = (taskStepId, step) => {
|
||||
const handleUserActionTaskStep = (action, taskStepId, step) => {
|
||||
webSocketContext.SendSocketMessage(
|
||||
SentMessagesCommands.TaskResumeFromPauseTaskStep,
|
||||
SentMessagesCommands.HandleUserActionTaskStep,
|
||||
{
|
||||
action: action,
|
||||
groupTaskId: currentGroupTask.Id,
|
||||
category: currentGroupTask.Category,
|
||||
groupId: currentGroupTask.GroupId,
|
||||
|
@ -224,7 +233,13 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
);
|
||||
};
|
||||
|
||||
const alertActionHandler = (status, taskStepId, index, taskLocked) => {
|
||||
const ActionHandler = ({ status, taskStepId, index, taskLocked }) => {
|
||||
const currentStepTask = webSocketContext.CategoryGroups.find(
|
||||
(category) => category.category === currentGroupTask.Category
|
||||
).groups.find((group) => group.id === currentGroupTask.GroupId).tasks[
|
||||
index
|
||||
];
|
||||
|
||||
switch (status) {
|
||||
case Constants.GROUP_TASKS_STATUS.FAILED:
|
||||
return (
|
||||
|
@ -250,13 +265,55 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
</Button>
|
||||
);
|
||||
case Constants.GROUP_TASKS_STATUS.PAUSED:
|
||||
return (
|
||||
<Space>
|
||||
{currentStepTask.repeatPossible && (
|
||||
<Button
|
||||
icon={<RetweetOutlined />}
|
||||
size="small"
|
||||
disabled={taskLocked}
|
||||
onClick={() =>
|
||||
handleUserActionTaskStep(2, taskStepId, index + 1)
|
||||
}
|
||||
>
|
||||
{t("groupTasks.groupTasksViewModal.button.repeat")}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
{currentStepTask.undoPossible && (
|
||||
<Button
|
||||
icon={<UndoOutlined />}
|
||||
size="small"
|
||||
disabled={taskLocked}
|
||||
onClick={() =>
|
||||
handleUserActionTaskStep(1, taskStepId, index + 1)
|
||||
}
|
||||
>
|
||||
{t("groupTasks.groupTasksViewModal.button.undo")}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
<Button
|
||||
icon={<CheckOutlined />}
|
||||
size="small"
|
||||
type={
|
||||
currentStepTask.repeatPossible && currentStepTask.undoPossible
|
||||
? "primary"
|
||||
: "default"
|
||||
}
|
||||
disabled={taskLocked}
|
||||
onClick={() => handleUserActionTaskStep(0, taskStepId, index + 1)}
|
||||
>
|
||||
{t("groupTasks.groupTasksViewModal.button.resume")}
|
||||
</Button>
|
||||
</Space>
|
||||
);
|
||||
case Constants.GROUP_TASKS_STATUS.UNDO_ENDED:
|
||||
return (
|
||||
<Button
|
||||
size="small"
|
||||
disabled={taskLocked}
|
||||
onClick={() =>
|
||||
handleTaskResumeFromPauseTaskStep(taskStepId, index + 1)
|
||||
}
|
||||
onClick={() => handleUserActionTaskStep(2, taskStepId, index + 1)}
|
||||
>
|
||||
{t("groupTasks.groupTasksViewModal.button.resume")}
|
||||
</Button>
|
||||
|
@ -296,7 +353,9 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
groupTaskSteps[index] !== undefined &&
|
||||
groupTaskSteps[index].Inputs !== "" &&
|
||||
groupTaskSteps[index].Status !==
|
||||
Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED ? (
|
||||
Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED &&
|
||||
groupTaskSteps[index].Status !==
|
||||
Constants.GROUP_TASKS_STATUS.UNDO_ENDED ? (
|
||||
<>
|
||||
{groupTask.name}{" "}
|
||||
<Popover
|
||||
|
@ -394,21 +453,35 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
</p>
|
||||
|
||||
<Alert
|
||||
style={{ width: "100%" }}
|
||||
message={
|
||||
<b>
|
||||
{getAlertMessage(groupTaskSteps[index].Status)}{" "}
|
||||
{groupTaskSteps[index].LockedByUserId !== "" && (
|
||||
<>
|
||||
<LockOutlined />{" "}
|
||||
<MyAvatar
|
||||
tooltip
|
||||
allUsers={webSocketContext.AllUsers}
|
||||
userId={groupTaskSteps[index].LockedByUserId}
|
||||
avatarWidth={24}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</b>
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<b>
|
||||
{getAlertMessage(groupTaskSteps[index].Status)}{" "}
|
||||
{groupTaskSteps[index].LockedByUserId !== "" && (
|
||||
<>
|
||||
<LockOutlined />{" "}
|
||||
<MyAvatar
|
||||
tooltip
|
||||
allUsers={webSocketContext.AllUsers}
|
||||
userId={groupTaskSteps[index].LockedByUserId}
|
||||
avatarWidth={24}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</b>
|
||||
<ActionHandler
|
||||
status={groupTaskSteps[index].Status}
|
||||
index={index}
|
||||
taskLocked={groupTaskSteps[index].LockedByUserId}
|
||||
taskStepId={groupTaskSteps[index].Id}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
description={
|
||||
groupTaskSteps[index].Status ===
|
||||
|
@ -432,7 +505,10 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
</div>
|
||||
) : (
|
||||
groupTaskSteps[index].Log.length > 0 && (
|
||||
<div id={`${currentGroupTask.Id}-scroll-${index}`}>
|
||||
<div
|
||||
id={`${currentGroupTask.Id}-scroll-${index}`}
|
||||
style={{ width: "100%" }}
|
||||
>
|
||||
<GroupTaskStepLogHandler
|
||||
currentGroupTaskId={currentGroupTask.Id}
|
||||
log={groupTaskSteps[index].Log}
|
||||
|
@ -444,12 +520,6 @@ export default function GroupTasksViewModal({ isOpen }) {
|
|||
}
|
||||
type={getAlertType(groupTaskSteps[index].Status)}
|
||||
showIcon
|
||||
action={alertActionHandler(
|
||||
groupTaskSteps[index].Status,
|
||||
groupTaskSteps[index].Id,
|
||||
index,
|
||||
groupTaskSteps[index].LockedByUserId
|
||||
)}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
|
@ -964,7 +1034,7 @@ function GroupTaskStepLogHandler({ currentGroupTaskId, log, files }) {
|
|||
<span style={{ whiteSpace: "pre-line" }}>
|
||||
{log}
|
||||
|
||||
{files !== "" && fileContent(JSON.parse(files))}
|
||||
{files !== "" && files !== " " && fileContent(JSON.parse(files))}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ export const Constants = {
|
|||
FAILED: 4,
|
||||
INPUT_REQUIRED: 5,
|
||||
PAUSED: 6,
|
||||
UNDO_ENDED: 7,
|
||||
},
|
||||
GLOBALS: {
|
||||
MIN_USERNAME_LENGTH: 2,
|
||||
|
@ -211,7 +212,7 @@ export const SentMessagesCommands = {
|
|||
ScannersUseScanners: 15,
|
||||
ScannersDisconnectScanner: 16,
|
||||
GroupTasksCheckingForCategoryGroupChanges: 17,
|
||||
TaskResumeFromPauseTaskStep: 18,
|
||||
HandleUserActionTaskStep: 18,
|
||||
};
|
||||
|
||||
export function WebSocketProvider({
|
||||
|
|
Loading…
Reference in New Issue