From 6ef09001436b24cd499d46a24c114c56729f59f6 Mon Sep 17 00:00:00 2001
From: "Planoetscher Daniel (Student Com20)"
 <daniel.planoetscher@stud-inf.unibz.it>
Date: Mon, 17 May 2021 10:24:48 +0200
Subject: [PATCH] first connections to api of team page

---
 .../components/layout/DetailGrid/index.tsx    |  4 +-
 client/src/components/ui/DetailBox/index.tsx  |  2 +-
 client/src/pages/Teams/index.tsx              | 66 ++++++++++++++-----
 3 files changed, 52 insertions(+), 20 deletions(-)

diff --git a/client/src/components/layout/DetailGrid/index.tsx b/client/src/components/layout/DetailGrid/index.tsx
index 86fb2ba..c8a8d40 100644
--- a/client/src/components/layout/DetailGrid/index.tsx
+++ b/client/src/components/layout/DetailGrid/index.tsx
@@ -2,7 +2,7 @@ import './detail-grid.scss';
 import DetailBox, { DetailProps } from 'components/ui/DetailBox';
 
 interface Props {
-    details: DetailProps[]
+    details?: DetailProps[]
 }
 
 export default function DetailGrid({ details }: Props) {
@@ -10,7 +10,7 @@ export default function DetailGrid({ details }: Props) {
     return (
         <div className="detail-grid">
             {
-                details.map((detail) => (
+                details?.map((detail) => (
                     <div key={detail.title} className="box-container">
                         <DetailBox {...detail} />
                     </div>
diff --git a/client/src/components/ui/DetailBox/index.tsx b/client/src/components/ui/DetailBox/index.tsx
index 77f7cb9..d0771b9 100644
--- a/client/src/components/ui/DetailBox/index.tsx
+++ b/client/src/components/ui/DetailBox/index.tsx
@@ -17,7 +17,7 @@ export default function DetailBox({ number, icon, title, label }: DetailProps) {
                     </span>
                 </div>
                 <div className="text">
-                    {!label && number && <div className="number">{number}</div>}
+                    {!label && number !== undefined && <div className="number">{number}</div>}
                     <div className={'title' + (label ? ' bold' : '')}>{title}</div>
                     {label && <div className="label">{label}</div>}
                 </div>
diff --git a/client/src/pages/Teams/index.tsx b/client/src/pages/Teams/index.tsx
index a8bdb0b..f146bc2 100644
--- a/client/src/pages/Teams/index.tsx
+++ b/client/src/pages/Teams/index.tsx
@@ -5,17 +5,39 @@ import Tabs from 'components/navigation/Tabs';
 import Dropdown from 'components/navigation/Dropdown';
 import TeamsMembers from './TeamsMembers';
 import TeamsStats from './TeamsStats';
+import { useEffect, useState } from 'react';
+import { getTeamMembers, getTeamProjects, getTeams, Team } from 'adapters/team';
+import { DetailProps } from 'components/ui/DetailBox';
+
 
 export default function Teams() {
-    const teamDetails = [{
-        icon: 'group',
-        title: 'Member',
-        number: 2
-    }, {
-        icon: 'folder',
-        title: 'Projects',
-        number: 3
-    }];
+    const [allTeams, setTeams] = useState<Team[]>();
+    const [currentTeam, setCurrentTeam] = useState<Team>();
+    const [details, setDetails] = useState<DetailProps[]>([]);
+
+    useEffect(() => {
+        getTeams().then((teams) => {
+            setTeams(teams);
+            setCurrentTeam(teams[0]);
+            if (teams[0]) {
+                getTeamProjects(teams[0].id).then((projects) => {
+                    console.log(projects);
+                    setDetails((state) => [...state, {
+                        icon: 'folder',
+                        title: 'Projects',
+                        number: projects.length
+                    }]);
+                });
+                getTeamMembers(teams[0].id).then((members) => {
+                    setDetails((state) => [...state, {
+                        icon: 'group',
+                        title: 'Members',
+                        number: members.length
+                    }]);
+                })
+            }
+        }).catch(() => { });
+    }, []);
 
     const tabs = [{
         path: '/teams',
@@ -27,6 +49,7 @@ export default function Teams() {
         component: TeamsStats
     }];
 
+    //TODO dynamic
     const teams = [{
         route: '/teams/members?team=someOther',
         label: 'Some other Team',
@@ -35,14 +58,23 @@ export default function Teams() {
         <div className="teams-page">
             <div className="content-container">
                 <h1 className="underlined">Teams</h1>
-                <Dropdown items={teams}>
-                    <h2>Ryoko</h2>
-                    <span className="material-icons icon">
-                        expand_more
-                    </span>
-                </Dropdown>
-                <DetailGrid details={teamDetails} />
-                <ButtonLink href="/teams/uuid/edit" className="expanded">
+                {
+                    allTeams && allTeams?.length > 1 && (
+                        <Dropdown items={teams}>
+                            <h2>{currentTeam?.name}</h2>
+                            <span className="material-icons icon">
+                                expand_more
+                            </span>
+                        </Dropdown>
+                    )
+                }
+                {
+                    allTeams && allTeams?.length === 1 && (
+                        <h2>{currentTeam?.name}</h2>
+                    )
+                }
+                <DetailGrid details={details} />
+                <ButtonLink href={'/teams/' + currentTeam?.id + '/edit'} className="expanded">
                     Edit
                 </ButtonLink>
                 <Tabs tabs={tabs} />
-- 
GitLab