Skip to content

Commit 26152e4

Browse files
authored
added TaskListView (#43)
1 parent 08ac479 commit 26152e4

File tree

9 files changed

+215
-222
lines changed

9 files changed

+215
-222
lines changed

codegen.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ schema:
88
]
99

1010
documents:
11-
- src/hooks/*.graphql
11+
- src/**/*.graphql
1212
generates:
1313
src/__generated__/types.ts:
1414
plugins:
@@ -42,6 +42,7 @@ generates:
4242
nonOptionalTypename: true
4343
useTypeImports: false
4444
withHooks: true
45+
preResolveTypes: true
4546
./graphql.schema.json:
4647
plugins:
4748
- 'introspection'

src/Components/Content/Content.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import SingleTargetOverview from '../SingleTargetOverview/SingleTargetOverview';
1111
import SingleMissionOverview from '../SingleStudentOverview/SingleMissionOverview';
1212

1313
import TaskView from '../../Screens/TaskView/TaskView';
14+
import TaskListView from '../TaskListView';
1415
import { ClassMastery } from '../../Screens/ClassMastery';
1516
import './Content.css';
1617

@@ -45,9 +46,9 @@ export default function Content() {
4546
<Route path="/singleMissionOverview/:name">
4647
<SingleMissionOverview />
4748
</Route>
48-
{/* <Route path="/viewTask">
49-
<TaskView taskId="90e0c730e56" />
50-
</Route> */}
49+
<Route path="/taskList">
50+
<TaskListView />
51+
</Route>
5152
<Route path="/viewTask/:taskId">
5253
<TaskView />
5354
</Route>

src/Components/Sidebar/Sidebar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const sideBarItems = [
3939
},
4040
{
4141
name: 'Task',
42-
link: '/viewTask',
42+
link: '/taskList',
4343
Icon: IconPeople,
4444
},
4545
{
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.cell-taskname {
2+
width: 25%;
3+
text-overflow: ellipsis;
4+
}
5+
.cell-instructions {
6+
width: 65%;
7+
text-overflow: ellipsis;
8+
}
9+
.cell-view {
10+
width: 10%;
11+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { Link } from 'react-router-dom';
2+
import { TaskListTaskFieldsFragment } from '../../__generated__/types';
3+
4+
import './TaskListTable.css';
5+
6+
type HeadProps = {
7+
headers: Array<string>;
8+
};
9+
10+
type RowProps = {
11+
data: Array<TaskListTaskFieldsFragment>;
12+
};
13+
14+
type TaskTableProps = HeadProps & RowProps;
15+
16+
const TaskListTableHead = ({ headers }: HeadProps): JSX.Element => {
17+
return (
18+
<thead>
19+
<tr>
20+
{headers.map((header) => (
21+
<th>{header}</th>
22+
))}
23+
</tr>
24+
</thead>
25+
);
26+
};
27+
28+
const TaskListTableBody = ({ data }: RowProps): JSX.Element => {
29+
const rows = data.map((task) => {
30+
return (
31+
<tr key={task.id} className="hoverRow">
32+
<td className="cell-taskname">{task.name}</td>
33+
<td className="cell-instructions">{task.instructions}</td>
34+
<td className="cell-view">
35+
<Link
36+
to={{
37+
pathname: `/viewTask/${task.id}`,
38+
}}
39+
>
40+
view
41+
</Link>
42+
</td>
43+
</tr>
44+
);
45+
});
46+
47+
return <tbody>{rows}</tbody>;
48+
};
49+
50+
const TaskListTable = ({ headers: columns, data }: TaskTableProps): JSX.Element => {
51+
return (
52+
<table>
53+
<TaskListTableHead headers={columns} />
54+
<TaskListTableBody data={data} />
55+
</table>
56+
);
57+
};
58+
59+
export default TaskListTable;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { useTaskListQuery } from '../../__generated__/types';
2+
import TaskListTable from './TaskListTable';
3+
4+
function TaskList() {
5+
const { data } = useTaskListQuery({
6+
variables: {
7+
course: 'Integrated Science',
8+
},
9+
});
10+
11+
const tasks = data?.tasksByCourse || [];
12+
const headers = ['Task Name', 'Instructions', 'Submissions'];
13+
14+
return (
15+
<div className="base-table">
16+
<TaskListTable headers={headers} data={tasks} />
17+
</div>
18+
);
19+
}
20+
21+
export default TaskList;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from './TaskListView';
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
query TaskList($course: String!) {
2+
tasksByCourse(course: $course) {
3+
...TaskListTaskFields
4+
}
5+
}
6+
7+
fragment TaskListTaskFields on Task {
8+
id
9+
name
10+
instructions
11+
}

0 commit comments

Comments
 (0)