Skip to content

Commit 409e821

Browse files
author
Laurie T. Malau
committed
team detail
1 parent c00a7c7 commit 409e821

File tree

1 file changed

+47
-13
lines changed

1 file changed

+47
-13
lines changed

components/dashboard/src/admin/TeamDetail.tsx

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,71 @@
66

77
import moment from "moment";
88
import { useEffect, useState } from "react";
9-
import Property from "./Property";
109
import { Team, TeamMemberInfo } from "@gitpod/gitpod-protocol";
1110
import { getGitpodService } from "../service/service";
11+
import { Item, ItemField, ItemsList } from "../components/ItemsList";
12+
import DropDown from "../components/DropDown";
1213

1314
export default function TeamDetail(props: { team: Team }) {
15+
const { team } = props;
1416
const [teamMembers, setTeamMembers] = useState<TeamMemberInfo[] | undefined>(undefined);
1517

1618
useEffect(() => {
1719
(async () => {
18-
const members = await getGitpodService().server.adminGetTeamMembers(props.team.id);
20+
const members = await getGitpodService().server.adminGetTeamMembers(team.id);
1921
if (members.length > 0) {
20-
console.log("members ", members.length);
2122
setTeamMembers(members)
2223
}
2324
})();
24-
}, [props.team.id]);
25+
}, [team]);
2526

2627
return <>
2728
<div className="flex">
2829
<div className="flex-1">
29-
<div className="flex"><h3>{props.team.name}</h3><span className="my-auto"></span></div>
30-
<p>{props.team.slug}</p>
31-
</div>
32-
</div>
33-
<div className="flex flex-col w-full">
34-
<div className="flex w-full mt-6">
35-
<Property name="Created">{moment(props.team.creationTime).format('MMM D, YYYY')}</Property>
36-
<Property name="Marked Deleted">{props.team.markedDeleted ? "Yes" : "No"}</Property>
37-
<Property name="Members">{teamMembers ? teamMembers.length : "0"}</Property>
30+
<div className="flex"><h3>{team.name}</h3><span className="my-auto">{team.markedDeleted ? " Deleted" : ""}</span></div>
31+
<p>{teamMembers && teamMembers.length} member(s)</p>
32+
<p>Created {moment(team.creationTime).format('MMM D, YYYY')}</p>
3833
</div>
3934
</div>
4035

36+
<ItemsList className="mt-8">
37+
<Item header={true} className="grid grid-cols-3">
38+
<ItemField className="my-auto">
39+
<span className="pl-14">Name</span>
40+
</ItemField>
41+
<ItemField className="flex items-center space-x-1 my-auto">
42+
<span>Joined</span>
43+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" className="h-4 w-4" viewBox="0 0 16 16"><path fill="#A8A29E" fill-rule="evenodd" d="M13.366 8.234a.8.8 0 010 1.132l-4.8 4.8a.8.8 0 01-1.132 0l-4.8-4.8a.8.8 0 111.132-1.132L7.2 11.67V2.4a.8.8 0 111.6 0v9.269l3.434-3.435a.8.8 0 011.132 0z" clip-rule="evenodd"/></svg>
44+
</ItemField>
45+
<ItemField className="flex items-center my-auto">
46+
<span className="flex-grow">Role</span>
47+
</ItemField>
48+
</Item>
49+
{!teamMembers || teamMembers.length === 0
50+
? <p className="pt-16 text-center">No members found</p>
51+
: teamMembers && teamMembers.map(m => <Item className="grid grid-cols-3" key={m.userId}>
52+
<ItemField className="flex items-center my-auto">
53+
<div className="w-14">{m.avatarUrl && <img className="rounded-full w-8 h-8" src={m.avatarUrl || ''} alt={m.fullName} />}</div>
54+
<div>
55+
<div className="text-base text-gray-900 dark:text-gray-50 font-medium">{m.fullName}</div>
56+
<p>{m.primaryEmail}</p>
57+
</div>
58+
</ItemField>
59+
<ItemField className="my-auto">
60+
<span className="text-gray-400">{moment(m.memberSince).fromNow()}</span>
61+
</ItemField>
62+
<ItemField className="flex items-center my-auto">
63+
<span className="text-gray-400 capitalize">{
64+
<DropDown contextMenuWidth="w-32" activeEntry={m.role} entries={[{
65+
title: 'owner',
66+
onClick: () => {}
67+
}, {
68+
title: 'member',
69+
onClick: () => {}
70+
}]} />}</span>
71+
<span className="flex-grow" />
72+
</ItemField>
73+
</Item>)}
74+
</ItemsList>
4175
</>
4276
}

0 commit comments

Comments
 (0)