Skip to content

Commit 215a221

Browse files
committed
temporarily fixed types in problemScores - 81
1 parent b2b2eb3 commit 215a221

1 file changed

Lines changed: 41 additions & 10 deletions

File tree

devU-client/src/components/pages/submissions/manualGradeModal.tsx

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ interface Props {
1818
const ManualGradeModal = ({ open, onClose, submissionScore, assignmentProblems, submissionProblemScores }: Props) => {
1919
const [setAlert] = useActionless(SET_ALERT)
2020
const { assignmentId, courseId } = useParams<{ assignmentId: string, courseId: string }>()
21-
const [problemScores, setProblemScores] = useState({})
22-
21+
const [problemScores, setProblemScores] = useState<Record<string, any>>({})
22+
2323
const [formData, setFormData] = useState({
2424
submissionId: submissionScore?.submissionId,
2525
score: submissionScore?.score,
@@ -29,24 +29,31 @@ const ManualGradeModal = ({ open, onClose, submissionScore, assignmentProblems,
2929

3030
const handleManualGrade = async () => {
3131
const updateProblemScoreURL = `/course/${courseId}/assignment/${assignmentId}/submission-problem-scores`
32-
32+
3333
// set releasedAt to now in ISO 8601 format
3434
setFormData(prevState => ({ ...prevState, ["releasedAt"]: new Date().toISOString() }))
3535

36-
// update problem scores
37-
for (const problem of assignmentProblems) {
36+
37+
// update problem scores if changed
38+
for (const [id, scoreData] of Object.entries(problemScores)) {
39+
const problemID = Number(id.split("_")[1])
40+
3841
// get corresponding score if exists
3942
const correspondingScore = submissionProblemScores.find(
40-
(scoreItem) => scoreItem.assignmentProblemId === problem.id
43+
(scoreItem) => scoreItem.assignmentProblemId === problemID
4144
);
4245

46+
scoreData["releasedAt"] = new Date().toISOString()
47+
4348
if (correspondingScore) {
4449
// put request to update score
45-
await RequestService.put(updateProblemScoreURL, problemScores)
50+
console.log("SUBMISSION SCOREDATA", scoreData)
51+
await RequestService.put(`${updateProblemScoreURL}/${problemID}`, scoreData)
4652

4753
} else {
4854
// post request to create new score
49-
await RequestService.post(updateProblemScoreURL, problemScores)
55+
console.log("NO SUBMISSION SCOREDATA", scoreData)
56+
await RequestService.post(updateProblemScoreURL, scoreData)
5057
}
5158

5259
}
@@ -77,7 +84,27 @@ const ManualGradeModal = ({ open, onClose, submissionScore, assignmentProblems,
7784
}
7885

7986
const handleProblemChange = (e: React.ChangeEvent<HTMLInputElement>) => {
87+
const { id, value } = e.target; // Get the input's id and value
88+
const scoreValue = Number(value); // Convert the score to a number
89+
90+
setProblemScores(prevScores => {
91+
const updatedScores: any = { ...prevScores };
8092

93+
// if key exists
94+
if (updatedScores[id]) {
95+
// update score for existing problem
96+
updatedScores[id].score = scoreValue;
97+
} else {
98+
// add a new problem score entry
99+
updatedScores[id] = {
100+
submissionId: submissionScore?.submissionId,
101+
assignmentProblemId: Number(id.split("_")[1]),
102+
score: scoreValue,
103+
};
104+
}
105+
106+
return updatedScores; // Return the updated scores object
107+
});
81108
}
82109

83110
return (
@@ -90,8 +117,12 @@ const ManualGradeModal = ({ open, onClose, submissionScore, assignmentProblems,
90117

91118
return (
92119
<div key={problemItem.id} className="input-group">
93-
<label>{problemItem.problemName}</label>
94-
<input type="number" value={Number(correspondingScore ? correspondingScore.score : 0)} onChange={handleProblemChange} />
120+
<label htmlFor={"problem_" + problemItem.id?.toString()}>{problemItem.problemName}</label>
121+
<input type="number"
122+
id={"problem_" + problemItem.id?.toString()}
123+
placeholder={String(correspondingScore ? correspondingScore.score : "unanswered")}
124+
onChange={handleProblemChange}
125+
/>
95126
</div>
96127
);
97128
})}

0 commit comments

Comments
 (0)