show user avatar in group tasks

main
alex 2023-05-19 00:03:55 +02:00
parent f735f1b2fd
commit 922a7bb85c
5 changed files with 92 additions and 26 deletions

View File

@ -94,11 +94,8 @@ export default function SideMenu({ setUserSession }) {
label: " " + webSocketContext.User.Username, label: " " + webSocketContext.User.Username,
icon: ( icon: (
<MyAvatar <MyAvatar
avatar={ allUsers={webSocketContext.AllUsers}
webSocketContext.AllUsers.find( userId={webSocketContext.User.Id}
(user) => user.Id === webSocketContext.User.Id
)?.Avatar
}
/> />
), ),
key: "/user-profile", key: "/user-profile",

View File

@ -5,16 +5,22 @@ import {
Constants, Constants,
FormatDatetime, FormatDatetime,
GetDuration, GetDuration,
MyAvatar,
SentMessagesCommands, SentMessagesCommands,
WebSocketContext, WebSocketContext,
} from "../../utils"; } from "../../utils";
import { useContext } from "react"; import { useContext } from "react";
const columns = [ const columns = [
{ /*{
title: "ID", title: "ID",
dataIndex: "id", dataIndex: "id",
key: "id", key: "id",
},*/
{
title: "Creator",
dataIndex: "creator",
key: "creator",
}, },
{ {
title: "Group Name", title: "Group Name",
@ -52,7 +58,7 @@ const columns = [
key: "action", key: "action",
render: (_, record) => ( render: (_, record) => (
<Space size="middle"> <Space size="middle">
<Link to={Constants.ROUTE_PATHS.GROUP_TASKS_VIEW + record.id}> <Link to={Constants.ROUTE_PATHS.GROUP_TASKS_VIEW + record.key}>
View View
</Link> </Link>
</Space> </Space>
@ -91,9 +97,18 @@ export default function GroupTaskTableList({
groupTasks.forEach((groupTask) => { groupTasks.forEach((groupTask) => {
if (groupTask.Category === categoryGroup.category) { if (groupTask.Category === categoryGroup.category) {
const user = webSocketContext.AllUsers.find(
(user) => user.Id === groupTask.CreatorUserId
);
items.push({ items.push({
key: groupTask.Id, key: groupTask.Id,
id: groupTask.Id, //id: groupTask.Id,
creator: (
<>
<MyAvatar avatar={user?.Avatar} /> {user?.Username}
</>
),
groupName: groupTask.GroupName, groupName: groupTask.GroupName,
step: `${groupTask.CurrentTasksStep} / ${groupTask.NumberOfSteps}`, step: `${groupTask.CurrentTasksStep} / ${groupTask.NumberOfSteps}`,
status: getStatusBadge(groupTask.Status), status: getStatusBadge(groupTask.Status),

View File

@ -7,7 +7,6 @@ import {
Modal, Modal,
Popover, Popover,
Result, Result,
Space,
Steps, Steps,
Tag, Tag,
notification, notification,
@ -20,6 +19,7 @@ import {
WebSocketContext, WebSocketContext,
SentMessagesCommands, SentMessagesCommands,
GetDuration, GetDuration,
MyAvatar,
} from "../../utils"; } from "../../utils";
import { InfoCircleOutlined } from "@ant-design/icons"; import { InfoCircleOutlined } from "@ant-design/icons";
@ -280,10 +280,26 @@ export default function GroupTasksViewModal({ isOpen }) {
verticalAlign: "middle", verticalAlign: "middle",
}} }}
/> />
</Popover> </Popover>{" "}
{groupTaskSteps[index]?.CreatorUserId !== undefined && (
<MyAvatar
tooltip
allUsers={webSocketContext.AllUsers}
userId={groupTaskSteps[index].CreatorUserId}
/>
)}
</> </>
) : ( ) : (
<>{groupTask.name}</> <>
{groupTask.name}{" "}
{groupTaskSteps[index]?.CreatorUserId !== undefined && (
<MyAvatar
tooltip
allUsers={webSocketContext.AllUsers}
userId={groupTaskSteps[index].CreatorUserId}
/>
)}
</>
), ),
status: status:
groupTaskSteps[index] !== undefined groupTaskSteps[index] !== undefined
@ -454,6 +470,11 @@ export default function GroupTasksViewModal({ isOpen }) {
}} }}
/> />
</Popover>{" "} </Popover>{" "}
<MyAvatar
tooltip
allUsers={webSocketContext.AllUsers}
userId={currentGroupTask.CreatorUserId}
/>
</h1> </h1>
<Steps direction="vertical" items={stepsItemHandler()} /> <Steps direction="vertical" items={stepsItemHandler()} />

View File

@ -110,12 +110,9 @@ export default function UserProfile() {
}} }}
> >
<MyAvatar <MyAvatar
avatar={
webSocketContext.AllUsers.find(
(user) => user.Id === webSocketContext.User.Id
)?.Avatar
}
avatarWidth={200} avatarWidth={200}
allUsers={webSocketContext.AllUsers}
userId={webSocketContext.User.Id}
/> />
</Upload> </Upload>

View File

@ -1,5 +1,5 @@
import { UserOutlined } from "@ant-design/icons"; import { UserOutlined } from "@ant-design/icons";
import { Avatar, Badge } from "antd"; import { Avatar, Badge, Tooltip } from "antd";
import { createContext, useEffect, useRef, useState } from "react"; import { createContext, useEffect, useRef, useState } from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
@ -361,13 +361,49 @@ export function getConnectionStatusItem(connectionStatus) {
); );
} }
export function MyAvatar({ avatarWidth, avatar }) { export function MyAvatar({
return avatar !== undefined && avatar !== "" ? ( avatarWidth,
avatar,
tooltip,
tooltipTitle,
allUsers,
userId,
}) {
const MyDefaultAvatar = () => {
return <Avatar size={avatarWidth} icon={<UserOutlined />} />;
};
if (avatar === undefined || avatar === null) {
if (allUsers !== undefined && userId !== undefined) {
const user = allUsers.find((u) => u.Id === userId);
if (user === undefined) return <MyDefaultAvatar />;
avatar = user.Avatar;
tooltipTitle = user.Username;
} else {
return <MyDefaultAvatar />;
}
}
const MyAvat = () => {
return (
<Avatar <Avatar
size={avatarWidth} size={avatarWidth}
src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar} src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar}
/> />
) : (
<Avatar size={avatarWidth} icon={<UserOutlined />} />
); );
};
if (tooltip) {
return (
<Tooltip placement="top" trigger="hover" title={tooltipTitle}>
<>
<MyAvat />
</>
</Tooltip>
);
}
return <MyAvat />;
} }