From cc29b3aace21118d37a6908d61a044a310bfc925 Mon Sep 17 00:00:00 2001
From: "Planoetscher Daniel (Student Com20)"
 <daniel.planoetscher@stud-inf.unibz.it>
Date: Thu, 20 May 2021 22:42:39 +0200
Subject: [PATCH] began task start page

---
 .../components/navigation/Sidebar/index.tsx   |  4 +-
 client/src/pages/Tasks/TaskStart/index.tsx    | 64 ++++++++++++++++++-
 .../src/pages/Tasks/TaskStart/task-start.scss |  0
 3 files changed, 63 insertions(+), 5 deletions(-)
 create mode 100644 client/src/pages/Tasks/TaskStart/task-start.scss

diff --git a/client/src/components/navigation/Sidebar/index.tsx b/client/src/components/navigation/Sidebar/index.tsx
index dc36c1d..a0ec8d5 100644
--- a/client/src/components/navigation/Sidebar/index.tsx
+++ b/client/src/components/navigation/Sidebar/index.tsx
@@ -1,13 +1,11 @@
 import Navigation from 'components/navigation/Navigation';
 import Avatar from 'components/ui/Avatar';
-import LineGraph from 'components/graphs/LineGraph';
 import { NavLink, useHistory } from 'react-router-dom';
 import { clearToken, isLoggedIn } from 'adapters/auth';
 import './sidebar.scss';
 import { useEffect, useState } from 'react';
-import { getCurrentUser, getUser, getUserActivity, User } from 'adapters/user';
+import { getCurrentUser, getUserActivity, User } from 'adapters/user';
 import BarChart, { ChartItem } from 'components/graphs/BarChart';
-import { Activity } from 'adapters/util';
 import LoadingScreen from 'components/ui/LoadingScreen';
 
 interface Props {
diff --git a/client/src/pages/Tasks/TaskStart/index.tsx b/client/src/pages/Tasks/TaskStart/index.tsx
index 1b851c0..9489f19 100644
--- a/client/src/pages/Tasks/TaskStart/index.tsx
+++ b/client/src/pages/Tasks/TaskStart/index.tsx
@@ -1,3 +1,63 @@
-export default function TaskStart() {
-    return (<></>);
+import './task-start.scss';
+import Tag from 'components/ui/Tag';
+import DetailGrid from 'components/layout/DetailGrid';
+import ButtonLink from 'components/navigation/ButtonLink';
+import { useHistory, useParams } from 'react-router';
+import { useEffect, useState } from 'react';
+import { getTask, StatusColors, Task } from 'adapters/task';
+import { getProject, Project } from 'adapters/project';
+import { getTeam } from 'adapters/team';
+import LoadingScreen from 'components/ui/LoadingScreen';
+
+export interface Params {
+    taskId: string;
+}
+
+export default function TaskDetail() {
+    const { taskId } = useParams<Params>();
+    const history = useHistory();
+    const [task, setTask] = useState<Task>();
+    const [project, setProject] = useState<Project>();
+    const [teamNames, setTeamNames] = useState<string[]>([]);
+
+    useEffect(() => {
+        getTask(taskId).then((task) => {
+
+            setTask(task);
+            getProject(task.project).then((project) => {
+                setProject(project);
+                project.teams.forEach((teamId) =>
+                    getTeam(teamId).then((team) => {
+                        setTeamNames(state => [...state, team.name])
+                    }
+                ));
+            });
+        }).catch(() => history.goBack());
+    }, [taskId, history]);
+
+    if (task) {
+        return (
+            <div className={'tasks-detail-page theme-' + StatusColors.get(task.status)}>
+                <div className="content-container">
+                    <Tag label={task.status} color={StatusColors.get(task.status)} />
+                    <h1>{task.name}</h1>
+                    
+                    <div className="description-container">
+                        <h2>
+                            Description
+                        </h2>
+                        <p>
+                            {task.text}
+                        </p>
+                    </div>
+
+                    <DetailGrid details={[
+                        { icon: 'folder', title: 'Project', label: project?.name ?? 'Loading...' },
+                        { icon: 'group', title: 'Teams', label: teamNames.join(', ') }]} />
+                </div>
+            </div>
+        );
+
+    }
+    return <LoadingScreen />;
 }
\ No newline at end of file
diff --git a/client/src/pages/Tasks/TaskStart/task-start.scss b/client/src/pages/Tasks/TaskStart/task-start.scss
new file mode 100644
index 0000000..e69de29
-- 
GitLab