diff --git a/src/Pages/AdminArea/Roles/index.js b/src/Pages/AdminArea/Roles/index.js
index 0caf018..dbf4173 100644
--- a/src/Pages/AdminArea/Roles/index.js
+++ b/src/Pages/AdminArea/Roles/index.js
@@ -1,4 +1,5 @@
import {
+ Avatar,
Button,
Collapse,
Input,
@@ -11,6 +12,7 @@ import {
} from "antd";
import {
Constants,
+ MyAvatar,
SentMessagesCommands,
WebSocketContext,
} from "../../../utils";
@@ -18,8 +20,8 @@ import {
ArrowDownOutlined,
ArrowUpOutlined,
CloseOutlined,
+ DeleteOutlined,
EditOutlined,
- ExpandAltOutlined,
PlusOutlined,
SaveOutlined,
} from "@ant-design/icons";
@@ -76,8 +78,6 @@ export default function AdminAreaRoles() {
}
}
- console.log("createListFromArgument", result);
-
return result;
}
@@ -93,8 +93,6 @@ export default function AdminAreaRoles() {
(r) => r.RoleId === role.Id
);
- console.warn("getRolePermissions", rolePermissions);
-
if (rolePermissions === undefined || rolePermissions.Permissions === null) {
return [];
}
@@ -144,8 +142,8 @@ export default function AdminAreaRoles() {
function Role({ treeData, role, webSocketContext, notificationApi }) {
const [editMode, setEditMode] = useState(false);
- const [roleDisplayName, setRoleDisplayName] = useState(role.DisplayName);
- const [roleDescription, setRoleDescription] = useState(role.Description);
+ const [roleDisplayName, setRoleDisplayName] = useState("");
+ const [roleDescription, setRoleDescription] = useState("");
const getRolePermissions = (role) => {
const rolePermissions = webSocketContext.AdminAreaRolesPermissions.find(
@@ -201,6 +199,9 @@ function Role({ treeData, role, webSocketContext, notificationApi }) {
const onEditClick = () => {
setCheckedTreeKeyPermissions(rolePermissions);
setEditMode(true);
+
+ setRoleDisplayName(role.DisplayName);
+ setRoleDescription(role.Description);
};
const onSaveClick = () => {
@@ -282,6 +283,60 @@ function Role({ treeData, role, webSocketContext, notificationApi }) {
setRoleDescription(role.Description);
};
+ const onMoveUpClick = () => {
+ webSocketContext.SendSocketMessage(
+ SentMessagesCommands.AdminAreaUpdateRoleSortingOrder,
+ {
+ RoleId: role.Id,
+ Direction: 0,
+ }
+ );
+ };
+
+ const onMoveDownClick = () => {
+ webSocketContext.SendSocketMessage(
+ SentMessagesCommands.AdminAreaUpdateRoleSortingOrder,
+ {
+ RoleId: role.Id,
+ Direction: 1,
+ }
+ );
+ };
+
+ const UserAvatarsInRole = () => {
+ const usersInRole = webSocketContext.AllUsers.filter(
+ (user) => user.RoleId === role.Id
+ );
+
+ if (usersInRole.length > 0) {
+ let avatars = [];
+
+ usersInRole.forEach((user) => {
+ avatars.push(
+
+ );
+ });
+
+ return (
+
+ {avatars}
+
+ );
+ }
+
+ return null;
+ };
+
return (
+
+
+
+
-
+ onMoveUpClick()} />
-
+ onMoveDownClick()} />
onSaveClick()} />
@@ -305,9 +363,13 @@ function Role({ treeData, role, webSocketContext, notificationApi }) {
) : (
-
- onEditClick()} />
-
+
+
+
+
+ onEditClick()} />
+
+
),
label: (
<>
diff --git a/src/utils.js b/src/utils.js
index 98928c5..30c906a 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -140,6 +140,7 @@ const ReceivedMessagesCommands = {
UserProfileUpdated: 18,
AdminAreaNewRoleCreated: 19,
AdminAreaRoleUpdated: 20,
+ AdminAreaUpdateRoleSortingOrder: 21,
};
// commands sent to the backend server
@@ -152,6 +153,7 @@ export const SentMessagesCommands = {
UpdateUserProfile: 6,
AdminAreaCreateNewRole: 7,
AdminAreaUpdateRole: 8,
+ AdminAreaUpdateRoleSortingOrder: 9,
};
export function WebSocketProvider({
@@ -527,6 +529,11 @@ export function WebSocketProvider({
break;
case ReceivedMessagesCommands.AdminAreaNewRoleCreated:
setAllRoles((arr) => [...arr, body]);
+
+ setAdminAreaRolesPermissions((arr) => [
+ ...arr,
+ { RoleId: body.Id, Permissions: [] },
+ ]);
break;
case ReceivedMessagesCommands.AdminAreaRoleUpdated:
setAllRoles((arr) => {
@@ -597,7 +604,49 @@ export function WebSocketProvider({
}
}
}
+ break;
+ case ReceivedMessagesCommands.AdminAreaUpdateRoleSortingOrder:
+ setAllRoles((arr) => {
+ const newArr = [...arr];
+ const updatedRoleIndex = newArr.findIndex(
+ (role) => role.Id === body.RoleId
+ );
+
+ const currentSortingOrder = newArr[updatedRoleIndex].SortingOrder;
+
+ if (body.Direction === 0) {
+ newArr[updatedRoleIndex].SortingOrder =
+ newArr[updatedRoleIndex].SortingOrder - 1;
+ } else {
+ newArr[updatedRoleIndex].SortingOrder =
+ newArr[updatedRoleIndex].SortingOrder + 1;
+ }
+
+ const newSortingOrder = newArr[updatedRoleIndex].SortingOrder;
+
+ for (let i = 0; i < newArr.length; i++) {
+ if (newArr[i].Id !== newArr[updatedRoleIndex].Id) {
+ if (newArr[i].SortingOrder === newSortingOrder) {
+ newArr[i].SortingOrder = currentSortingOrder;
+ } else if (
+ newArr[i].SortingOrder < currentSortingOrder &&
+ newArr[i].SortingOrder >= newSortingOrder
+ ) {
+ newArr[i].SortingOrder = newArr[i].SortingOrder + 1;
+ } else if (
+ newArr[i].SortingOrder > currentSortingOrder &&
+ newArr[i].SortingOrder <= newSortingOrder
+ ) {
+ newArr[i].SortingOrder = newArr[i] - 1;
+ }
+ }
+ }
+
+ newArr.sort((a, b) => a.SortingOrder - b.SortingOrder);
+
+ return newArr;
+ });
break;
default: