show user avatar in group tasks
parent
f735f1b2fd
commit
922a7bb85c
|
@ -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",
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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()} />
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
56
src/utils.js
56
src/utils.js
|
@ -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
|
avatar,
|
||||||
size={avatarWidth}
|
tooltip,
|
||||||
src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar}
|
tooltipTitle,
|
||||||
/>
|
allUsers,
|
||||||
) : (
|
userId,
|
||||||
<Avatar size={avatarWidth} icon={<UserOutlined />} />
|
}) {
|
||||||
);
|
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
|
||||||
|
size={avatarWidth}
|
||||||
|
src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (tooltip) {
|
||||||
|
return (
|
||||||
|
<Tooltip placement="top" trigger="hover" title={tooltipTitle}>
|
||||||
|
<>
|
||||||
|
<MyAvat />
|
||||||
|
</>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return <MyAvat />;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue