diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 1f79f88..312d59c 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -65,6 +65,9 @@ "groupTasks.groupTasksTableList.button.reload": "Neu laden", "groupTasks.groupTasksTableList.popover.title": "Sind Sie sicher, dass Sie die Gruppenkonfigurationen neu laden wollen?", "groupTasks.groupTasksTableList.popover.buttonOk": "Ja", + "groupTasks.button.checkingForCategoryGroupChanges": "Prüfung auf Änderungen der Kategoriegruppen", + "groupTasks.button.checkingForCategoryGroupChanges.checkingForCategoryGroupChanges.popover.title": "Sind Sie sicher, dass Sie die Kategoriegruppen prüfen wollen? (Während der Prüfung schaut der Server nach neuen Kategoriegruppen und löscht ggf. nicht mehr vorhandene)", + "groupTasks.button.checkingForCategoryGroupChanges.popover.buttonOk": "Prüfen", "logCard.popover.groupTaskId.title": "Gruppenaufgabe", "logCard.popover.groupTaskStep.title": "Gruppenaufgabe Schritt", "logCard.popover.role.title": "Rolle", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index eb0a57c..2beb463 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -65,6 +65,9 @@ "groupTasks.groupTasksTableList.button.reload": "Reload", "groupTasks.groupTasksTableList.popover.title": "Are you sure you want to reload the group configs?", "groupTasks.groupTasksTableList.popover.buttonOk": "Yes", + "groupTasks.button.checkingForCategoryGroupChanges": "Checking for changes to the category groups", + "groupTasks.button.checkingForCategoryGroupChanges.checkingForCategoryGroupChanges.popover.title": "Are you sure you want to check the category groups? (During the check, the server looks for new category groups and deletes any that no longer exist)", + "groupTasks.button.checkingForCategoryGroupChanges.popover.buttonOk": "Verify", "logCard.popover.groupTaskId.title": "Group Task", "logCard.popover.groupTaskStep.title": "Group Task Step", "logCard.popover.role.title": "Role", diff --git a/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js index 410c153..c66262f 100644 --- a/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js +++ b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js @@ -901,7 +901,6 @@ function GroupTaskStepLogHandler({ currentGroupTaskId, log, files }) { {getTag(nonImageFile)} ); - console.log("url", getDownloadUrl(nonImageFile)); } else { elements.push(getTag(nonImageFile)); } diff --git a/src/Pages/GroupTasks/Overview/index.js b/src/Pages/GroupTasks/Overview/index.js index 193b27a..4da8e39 100644 --- a/src/Pages/GroupTasks/Overview/index.js +++ b/src/Pages/GroupTasks/Overview/index.js @@ -1,10 +1,17 @@ -import { Result } from "antd"; +import { Button, Popconfirm, Result } from "antd"; import { useContext, useState } from "react"; import GroupTasksViewModal from "./GroupTasksViewModal"; import GroupTypeSelectionModal from "./GroupTypeSelectionModal"; import GroupTaskTableList from "./GroupTasksTableList"; -import { Constants, WebSocketContext, hasXYPermission } from "../../../utils"; +import { + Constants, + SentMessagesCommands, + WebSocketContext, + hasPermission, + hasXYPermission, +} from "../../../utils"; import { useTranslation } from "react-i18next"; +import { ReloadOutlined } from "@ant-design/icons"; export default function GroupTasks({ isGroupTasksViewModalOpen }) { const [isGroupTypeSelectionModalOpen, setIsGroupTypeSelectionModalOpen] = @@ -30,6 +37,13 @@ export default function GroupTasks({ isGroupTasksViewModalOpen }) { ) ); + const onCheckingForCategoryGroupChanges = () => { + webSocketContext.SendSocketMessage( + SentMessagesCommands.GroupTasksCheckingForCategoryGroupChanges, + {} + ); + }; + return ( <> {webSocketContext.CategoryGroups.length === 0 ? ( @@ -69,6 +83,35 @@ export default function GroupTasks({ isGroupTasksViewModalOpen }) { /> + + {hasPermission( + webSocketContext.User.Permissions, + Constants.PERMISSIONS.GROUP_TASKS.CHECKING_FOR_CATEGORY_GROUP_CHANGES + ) && ( +
+ onCheckingForCategoryGroupChanges()} + > + + +
+ )} ); } diff --git a/src/utils.js b/src/utils.js index fa56718..9cf60b5 100644 --- a/src/utils.js +++ b/src/utils.js @@ -48,6 +48,8 @@ export const Constants = { XYView: "group_tasks.overview.XY.view", }, HISTORY: "group_tasks.history", + CHECKING_FOR_CATEGORY_GROUP_CHANGES: + "group_tasks.checking_for_category_group_changes", }, ALL_USERS: { CREATE_NEW_USER: "all_users.create_new_user", @@ -185,6 +187,7 @@ const ReceivedMessagesCommands = { AllUsersNewUserCreated: 26, AllUsersUserDeleted: 27, AllUsersUserDeactivation: 28, + GroupTasksCategoryGroupChanges: 29, }; // commands sent to the backend server @@ -205,6 +208,7 @@ export const SentMessagesCommands = { AllUsersUserDeactivation: 14, ScannersUseScanners: 15, ScannersDisconnectScanner: 16, + GroupTasksCheckingForCategoryGroupChanges: 17, }; export function WebSocketProvider({ @@ -341,12 +345,49 @@ export function WebSocketProvider({ }); break; case ReceivedMessagesCommands.GroupTasksReloaded: + if (body.RemovedCategory !== undefined) { + setCategoryGroups((arr) => + arr.filter((arr1) => arr1.category !== body.RemovedCategory) + ); + + setUser((user) => { + const updatedUser = { ...user }; + + updatedUser.Permissions = updatedUser.Permissions.filter( + (arr) => !body.RemovedPermissions.some((a) => a === arr) + ); + + return updatedUser; + }); + + setAdminAreaRolesPermissions((arr) => { + const newArr = [...arr]; + + newArr.forEach((role, i) => { + if (role.Permissions !== null) { + newArr[i].Permissions = role.Permissions.filter( + (b) => !body.RemovedPermissions.some((c) => c === b) + ); + } + }); + + return newArr; + }); + + notificationApi["info"]({ + message: `Category ${body.RemovedCategory} was removed`, + duration: 2, + }); + + break; + } + setCategoryGroups((arr) => { const newArr = [...arr]; newArr[ arr.findIndex((arr1) => arr1.category === body.Category) - ].groups = body.UpdatedGroups; + ].groups = body.CategoryGroups; return newArr; }); @@ -826,6 +867,8 @@ export function WebSocketProvider({ return newArr; }); break; + case ReceivedMessagesCommands.GroupTasksCategoryGroupChanges: + break; default: console.error("unknown command", cmd);