From 4211a1a1ac001478bfa41f4d809e3e633969c348 Mon Sep 17 00:00:00 2001
From: alex
Date: Fri, 26 May 2023 08:59:53 +0200
Subject: [PATCH] task locking
---
src/Pages/GroupTasks/GroupTasksViewModal.js | 108 +++++++++++++-----
.../GroupTasks/GroupTypeSelectionModal.js | 59 +++++-----
src/utils.js | 13 +++
3 files changed, 118 insertions(+), 62 deletions(-)
diff --git a/src/Pages/GroupTasks/GroupTasksViewModal.js b/src/Pages/GroupTasks/GroupTasksViewModal.js
index 5ac2e3e..c2c1030 100644
--- a/src/Pages/GroupTasks/GroupTasksViewModal.js
+++ b/src/Pages/GroupTasks/GroupTasksViewModal.js
@@ -20,6 +20,7 @@ import {
SentMessagesCommands,
GetDuration,
MyAvatar,
+ getUserId,
} from "../../utils";
import { InfoCircleOutlined } from "@ant-design/icons";
@@ -326,15 +327,19 @@ export default function GroupTasksViewModal({ isOpen }) {
)}
+ {console.log("stepLocked", groupTaskSteps[index].Locked)}
+
{getAlertMessage(groupTaskSteps[index].Status)}}
description={
groupTaskSteps[index].Status ===
Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED ? (
) : (
getGroupTaskStepLog(groupTaskSteps[index].Log)
@@ -493,9 +498,11 @@ export default function GroupTasksViewModal({ isOpen }) {
}
function InputRequiredHandler({
+ webSocketContext,
currentGroupTask,
groupTaskParameters,
notificationApi,
+ step,
}) {
const globalInputs = JSON.parse(currentGroupTask.GlobalInputs);
@@ -508,8 +515,8 @@ function InputRequiredHandler({
).value;
};
- const MyFormItem = ({ children, displayName, groupTaskParameter }) => {
- const label = groupTaskParameter.global ? (
+ const getLabel = (displayName, groupTaskParameter) => {
+ return groupTaskParameter.global ? (
<>
{displayName}
@@ -519,12 +526,39 @@ function InputRequiredHandler({
) : (
displayName
);
+ };
- return (
-
- {children}
-
+ let lastChanges = [];
+
+ const onInputChange = (currentGroupTaskId, parameterName) => {
+ console.log(
+ "change",
+
+ currentGroupTaskId,
+ parameterName,
+ step
);
+
+ lastChanges = lastChanges.filter(
+ (lc) => Date.now() - new Date(lc.changeTime) < 3000
+ );
+
+ const lastChange = lastChanges.find((lC) => lC.step === step);
+
+ if (lastChange === undefined) {
+ lastChanges.push({
+ step: step,
+ changeTime: Date.now(),
+ });
+
+ console.warn("lock");
+
+ webSocketContext.SendSocketMessage(SentMessagesCommands.TaskLocking, {
+ lockedByUserId: getUserId(),
+ groupTaskId: currentGroupTaskId,
+ step: step,
+ });
+ }
};
return (
@@ -533,34 +567,50 @@ function InputRequiredHandler({
switch (groupTaskParameter.type) {
case "text":
return (
-
- }
- />
+ label={getLabel(
+ groupTaskParameter.displayName,
+ groupTaskParameter
+ )}
+ required
+ >
+
+ onInputChange(
+ currentGroupTask.Id,
+ groupTaskParameter.parameterName
+ )
+ }
+ />
+
);
case "number":
return (
-
- }
- />
+ label={getLabel(
+ groupTaskParameter.displayName,
+ groupTaskParameter
+ )}
+ required
+ >
+
+ onInputChange(
+ currentGroupTask.Id,
+ groupTaskParameter.parameterName
+ )
+ }
+ />
+
);
default:
notificationApi["error"]({
diff --git a/src/Pages/GroupTasks/GroupTypeSelectionModal.js b/src/Pages/GroupTasks/GroupTypeSelectionModal.js
index 3e7e6bb..d28006c 100644
--- a/src/Pages/GroupTasks/GroupTypeSelectionModal.js
+++ b/src/Pages/GroupTasks/GroupTypeSelectionModal.js
@@ -193,21 +193,14 @@ function GroupGlobalInputs({
currentSelectedModalGroupType,
notificationApi,
}) {
- const MyFormItem = ({ children, displayName }) => {
+ const getLabel = (displayName) => {
return (
-
- {displayName}
-
- Global
-
- >
- }
- required
- >
- {children}
-
+ <>
+ {displayName}
+
+ Global
+
+ >
);
};
@@ -223,31 +216,31 @@ function GroupGlobalInputs({
switch (globalInput.type) {
case "text":
elements.push(
-
- }
- />
+ label={getLabel(globalInput.displayName)}
+ required
+ >
+
+
);
break;
case "number":
elements.push(
-
- }
- />
+ label={getLabel(globalInput.displayName)}
+ required
+ >
+
+
);
break;
default:
diff --git a/src/utils.js b/src/utils.js
index 48d8223..3a42285 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -108,6 +108,7 @@ const ReceivedMessagesCommands = {
UpdateScannerUsedByUserId: 13,
ScanResult: 14,
UpdateScannerLastUsed: 15,
+ TaskLocked: 16,
};
// commands sent to the backend server
@@ -116,6 +117,7 @@ export const SentMessagesCommands = {
TaskFailedTryAgainRunTaskStep: 2,
TaskContinueTaskStep: 3,
ReloadGroupTasks: 4,
+ TaskLocking: 5,
};
export function WebSocketProvider({
@@ -308,6 +310,17 @@ export function WebSocketProvider({
return newArr;
});
break;
+ case ReceivedMessagesCommands.TaskLocked:
+ setGroupTasksSteps((arr) => {
+ const newArr = [...arr];
+
+ newArr[
+ arr.findIndex((arr1) => arr1.GroupTasksId === body.groupTaskId)
+ ].Locked = true;
+
+ return newArr;
+ });
+ break;
default:
console.error("unknown command", cmd);
break;