Skip to content

Commit a890b83

Browse files
authored
Merge pull request #46 from CPSECapstone/add-objectives-rubric
Add objectives rubric
2 parents e960e6a + c4b8a9e commit a890b83

27 files changed

+589
-202
lines changed

src/Components/Content/Content.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default function Content() {
3535
<Route path="/studentOverview">
3636
<StudentOverview />
3737
</Route>
38-
<Route path="/singleStudentOverview">
38+
<Route path="/singleStudentOverview/:username">
3939
<SingleStudentOverview />
4040
</Route>
4141
<Route path="/singleStudentMasteryOverview">
@@ -44,7 +44,7 @@ export default function Content() {
4444
<Route path="/singleTargetOverview/:name">
4545
<SingleTargetOverview />
4646
</Route>
47-
<Route path="/singleMissionOverview/:name">
47+
<Route path="/singleMissionOverview/:name/:username">
4848
<SingleMissionOverview />
4949
</Route>
5050
<Route path="/taskList">
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
query ClassMissionMastery {
2+
classMissionMastery(missionId: "4df2cfa5710") {
3+
mission {
4+
...CMMissionFields
5+
}
6+
studentMissionMasteryList {
7+
...CMStudentFields
8+
}
9+
}
10+
}
11+
12+
fragment CMMissionFields on Mission {
13+
name
14+
description
15+
}
16+
17+
fragment CMStudentFields on StudentMissionMastery {
18+
student {
19+
studentId
20+
lastName
21+
firstName
22+
email
23+
team
24+
}
25+
currentTaskId
26+
currentTaskName
27+
level
28+
progress
29+
}

src/Components/CourseHome/ListView.tsx

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,43 @@
1111
import React from 'react';
1212
import { useHistory } from 'react-router-dom';
1313
import TableComponent from '../TableComponent/TableComponent';
14+
import { CmStudentFieldsFragment } from '../../__generated__/types';
15+
16+
interface MissionMasteryRow {
17+
row: {
18+
name: string;
19+
recent: string;
20+
masteryLevel: string;
21+
lastLogOn: string;
22+
studentId: string;
23+
};
24+
}
1425

1526
function ListView(classMissionMasterydata: any) {
1627
const history = useHistory();
17-
const rowClicked = (userName: string) => {
28+
const rowClicked = (row: MissionMasteryRow) => {
29+
console.log(row);
1830
history.push({
19-
pathname: '/singleStudentOverview',
20-
state: { id: '', firstName: userName, lastName: ' ' },
31+
pathname: `/singleStudentOverview/${row.row.studentId}`,
2132
});
2233
};
2334

24-
const data: any[] = [];
25-
classMissionMasterydata.classMissionMasterydata.studentMissionMasteryList.map(
26-
(studentMissionMastery: any) =>
27-
data.push({
35+
const data: MissionMasteryRow[] = classMissionMasterydata.classMissionMasterydata.studentMissionMasteryList.map(
36+
(studentMissionMastery: CmStudentFieldsFragment) => {
37+
return {
2838
row: {
2939
name: `${studentMissionMastery.student.lastName} ${studentMissionMastery.student.firstName}`,
3040
recent: studentMissionMastery.currentTaskName,
3141
masteryLevel: studentMissionMastery.level,
3242
lastLogOn: 'Jan. 7, 2021',
43+
studentId: studentMissionMastery.student.studentId,
3344
},
34-
})
45+
};
46+
}
3547
);
3648

3749
// TODO remove when names are populated
38-
data.forEach((dataEntry) => {
50+
data.forEach((dataEntry: MissionMasteryRow) => {
3951
if (dataEntry.row.name.indexOf('null') !== -1) {
4052
dataEntry.row.name = 'Mary Lee';
4153
}

src/Components/LinearProgressWithLabel/ObjectiveDropDown.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
Task,
1515
TaskObjectiveProgress,
1616
TaskObjectiveProgressFieldsFragment,
17+
useGetTaskObjectiveProgressQuery,
1718
} from '../../__generated__/types';
1819

1920
const useStyles = makeStyles((theme: Theme) =>
@@ -108,6 +109,20 @@ export interface ObjectiveDropDownProps {
108109
tasks: TaskObjectiveProgress[];
109110
}
110111

112+
function getTaskObjectivePorgress(task: TaskObjectiveProgress) {
113+
const { data: taskObjectiveProgress } = useGetTaskObjectiveProgressQuery({
114+
variables: {
115+
taskId: task.task.id,
116+
username: 'Google_114813486146105420824',
117+
},
118+
});
119+
if (taskObjectiveProgress === undefined) {
120+
return <></>;
121+
}
122+
const objectiveProgresses = (taskObjectiveProgress.getTaskObjectiveProgress as unknown) as TaskObjectiveProgress[];
123+
return objectiveProgresses;
124+
}
125+
111126
function getProgressBar(status: number) {
112127
if (status === 0) {
113128
return <NotStartedProgress />;
@@ -174,7 +189,13 @@ export default function ObjectiveDropDown({ name, tasks }: ObjectiveDropDownProp
174189

175190
<Collapse in={open} timeout="auto" unmountOnExit>
176191
{tasks.map((task: TaskObjectiveProgress) => (
177-
<Link to={`/viewTask/${task.task.id}`}>
192+
<Link
193+
to={{
194+
pathname: `/viewTask/${task.task.id}`,
195+
state: getTaskObjectivePorgress(task),
196+
}}
197+
>
198+
{console.log(task)}
178199
<List component="div" disablePadding>
179200
<div style={{ display: 'flex', flexDirection: 'row' }}>
180201
<DoublePaddedDiv>

src/Components/SingleStudentMasteryOverview/SingleStudentMasteryOverview.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,12 +509,12 @@ function SingleStudentMasteryOverview() {
509509
firstName: test?.firstName,
510510
lastName: test?.lastName,
511511
};
512-
console.log(inputUser.id);
512+
console.log(inputUser.firstName);
513513

514514
const { data } = useGetTargetProgressQuery({
515515
variables: {
516516
courseId: 'Integrated Science',
517-
username: '74caa373-b13a-4a97-84d3-ba9e27236290',
517+
username: 'Google_113982570160032635204',
518518
},
519519
});
520520

src/Components/SingleStudentMasteryOverview/TargetMasteryCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ function getStatusTitle(status: number) {
105105
return 'Not Mastered';
106106
}
107107
if (status > 0.75) {
108-
return 'Almost Mastered';
108+
return 'Nearly Mastered';
109109
}
110110
return 'Mastered';
111111
}

src/Components/SingleStudentOverview/MasteryCard.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ type Props = {
8383
progress: TaskStats[];
8484
status: number;
8585
user: User;
86+
username: string;
8687
};
8788

8889
function getProgressBar(status: number) {
@@ -106,16 +107,15 @@ function getStatusTitle(status: number) {
106107
return 'Not Mastered';
107108
}
108109
if (status >= 0.75) {
109-
return 'Almost Mastered';
110+
return 'Nearly Mastered';
110111
}
111112
return 'Mastered';
112113
}
113114

114-
export default function MasteryCard({ name, progress, status, user }: Props) {
115-
console.log(status);
115+
export default function MasteryCard({ name, progress, status, user, username }: Props) {
116116
const history = useHistory();
117117
return (
118-
<Link to={{ pathname: `/singleMissionOverview/${name}`, state: user }}>
118+
<Link to={{ pathname: `/singleMissionOverview/${name}/${username}`, state: user }}>
119119
<div className="mission-card">
120120
<div className="mission-card-header" />
121121
<div className="mission-card-body">

src/Components/SingleStudentOverview/SingleMissionOverview.tsx

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ import { Divider } from '@material-ui/core';
1111
import StudentPicture from '../../assets/images/images-1.png';
1212
import { User } from '../../interfaces/User';
1313
import LinearProgressWithLabel from '../LinearProgressWithLabel/LinearProgressWithLabel';
14-
import { MissionProgress, TaskStats, useGetMissionProgressQuery } from '../../__generated__/types';
14+
import {
15+
MissionProgress,
16+
TaskObjectiveProgress,
17+
TaskStats,
18+
useGetMissionProgressQuery,
19+
useGetTaskObjectiveProgressQuery,
20+
} from '../../__generated__/types';
1521

1622
const StudentDiv = styled.div`
1723
height: 200px;
@@ -109,6 +115,20 @@ const useStyles = makeStyles((theme: Theme) =>
109115
})
110116
);
111117

118+
function getTaskObjectiveProgress(task: TaskStats) {
119+
const { data: taskObjectiveProgress } = useGetTaskObjectiveProgressQuery({
120+
variables: {
121+
taskId: task.taskId,
122+
username: 'Google_114813486146105420824',
123+
},
124+
});
125+
if (taskObjectiveProgress === undefined) {
126+
return <></>;
127+
}
128+
const objectiveProgresses = (taskObjectiveProgress.getTaskObjectiveProgress as unknown) as TaskObjectiveProgress[];
129+
return objectiveProgresses;
130+
}
131+
112132
function getMissionProgress(missionData: MissionProgress[], name: string) {
113133
for (const mission of missionData) {
114134
if (mission.mission.name === name) {
@@ -120,6 +140,8 @@ function getMissionProgress(missionData: MissionProgress[], name: string) {
120140
function SingleMissionOverview() {
121141
// const { data: users } = useQuery<User>(GET_USERS);
122142
const { name } = useParams<Record<string, string | undefined>>();
143+
// const { username } = useParams<Record<string, string | undefined>>();
144+
const username = 'Google_114813486146105420824';
123145
const classes = useStyles();
124146
const history = useHistory();
125147
console.log(history);
@@ -176,7 +198,15 @@ function SingleMissionOverview() {
176198
<TaskRowDiv className="row">
177199
<LeftColumnDiv className="col-12" style={{ justifyContent: 'right' }}>
178200
{missionProgressData?.map((task: TaskStats) => (
179-
<Link to={`/viewTask/${task.taskId}`} data-testid="task-btn">
201+
// <Link to={`/viewTask/${task.taskId}`} data-testid="task-btn">
202+
<Link
203+
to={{
204+
pathname: `/viewTask/${task.taskId}/${username}`,
205+
state: getTaskObjectiveProgress(task),
206+
}}
207+
data-testid="task-btn"
208+
>
209+
{console.log(task)}
180210
<List
181211
component="div"
182212
disablePadding

src/Components/SingleStudentOverview/SingleStudentOverview.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { makeStyles, Theme, createStyles } from '@material-ui/core/styles';
66
import List from '@material-ui/core/List';
77
import ListItem from '@material-ui/core/ListItem';
88
import styled from 'styled-components';
9-
import { useHistory } from 'react-router-dom';
9+
import { useHistory, useParams } from 'react-router-dom';
1010
import { Divider } from '@material-ui/core';
1111
import StudentPicture from '../../assets/images/images-1.png';
1212
import { User } from '../../interfaces/User';
@@ -133,7 +133,7 @@ function SingleStudentOverview() {
133133
// const { userId } = useParams();
134134
const classes = useStyles();
135135
const history = useHistory();
136-
136+
const { username } = useParams<Record<string, string>>();
137137
const COMP_TASK_PERCENT = 100;
138138

139139
const testVal: any = history.location.state;
@@ -142,6 +142,7 @@ function SingleStudentOverview() {
142142
firstName: testVal?.firstName,
143143
lastName: testVal?.lastName,
144144
};
145+
145146
const { data } = useGetMissionProgressQuery({
146147
variables: {
147148
courseId: 'Integrated Science',
@@ -184,6 +185,7 @@ function SingleStudentOverview() {
184185
progress={mission.progress as TaskStats[]}
185186
status={calculateStatus(mission.progress as TaskStats[])}
186187
user={inputUser}
188+
username={username}
187189
/>
188190
))}
189191
</RowDiv>

src/Components/TableComponent/TableComponent.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ function TableComponent({ columns, data, rowClickFunction }: any) {
4141
className={rowClickFunction !== undefined ? 'hoverRow' : ''}
4242
{...row.getRowProps()}
4343
onClick={() =>
44-
rowClickFunction !== undefined
45-
? rowClickFunction(row.values['row.name'])
46-
: undefined
44+
rowClickFunction !== undefined ? rowClickFunction(row.original) : undefined
4745
}
4846
>
4947
{row.cells.map((cell) => {

0 commit comments

Comments
 (0)