diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index c17467f..39feb74 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -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?", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index a8f31fd..e130080 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -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?", diff --git a/src/Pages/GroupTasks/Overview/GroupTasksTableList.js b/src/Pages/GroupTasks/Overview/GroupTasksTableList.js index 5bbadde..0f6124a 100644 --- a/src/Pages/GroupTasks/Overview/GroupTasksTableList.js +++ b/src/Pages/GroupTasks/Overview/GroupTasksTableList.js @@ -140,6 +140,13 @@ export default function GroupTaskTableList({ text={t("groupTasks.groupTasksTableList.statusBadge.paused")} /> ); + case Constants.GROUP_TASKS_STATUS.UNDO_ENDED: + return ( + + ); default: return ; } diff --git a/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js index 8da7d9b..c908165 100644 --- a/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js +++ b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js @@ -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 }) { ); case Constants.GROUP_TASKS_STATUS.PAUSED: + return ( + + {currentStepTask.repeatPossible && ( + + )} + + {currentStepTask.undoPossible && ( + + )} + + + + ); + case Constants.GROUP_TASKS_STATUS.UNDO_ENDED: return ( @@ -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}{" "} - {getAlertMessage(groupTaskSteps[index].Status)}{" "} - {groupTaskSteps[index].LockedByUserId !== "" && ( - <> - {" "} - - - )} - +
+ + {getAlertMessage(groupTaskSteps[index].Status)}{" "} + {groupTaskSteps[index].LockedByUserId !== "" && ( + <> + {" "} + + + )} + + +
} description={ groupTaskSteps[index].Status === @@ -432,7 +505,10 @@ export default function GroupTasksViewModal({ isOpen }) { ) : ( groupTaskSteps[index].Log.length > 0 && ( -
+
) : ( @@ -964,7 +1034,7 @@ function GroupTaskStepLogHandler({ currentGroupTaskId, log, files }) { {log} - {files !== "" && fileContent(JSON.parse(files))} + {files !== "" && files !== " " && fileContent(JSON.parse(files))} ); } diff --git a/src/utils.js b/src/utils.js index aeba3c9..bdb8147 100644 --- a/src/utils.js +++ b/src/utils.js @@ -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({