1- import { Assignment , User , AssignmentScore } from 'devu-shared-modules' ;
1+ import { Assignment , User , AssignmentScore , SubmissionScore , SubmissionProblemScore , AssignmentProblem } from 'devu-shared-modules' ;
2+
23export function createGradebookCsv ( assignments : Assignment [ ] , users : User [ ] , assignmentScores : AssignmentScore [ ] , maxScores : Map < number , number > ) {
34 const toCSV = [ ]
45 let header = "externalId,email,preferredName"
56 assignments . forEach ( ( assignment ) => { header += `,${ assignment . name } ` } )
67 toCSV . push ( header + '\n' )
7- //console.log(header)
88
99
1010 users . forEach ( ( user ) => {
1111 let csvString = `${ user . externalId } ,${ user . email } ,${ user . preferredName ?? "N/A" } `
12- //console.log(csvString)
1312 assignments . forEach ( ( assignment ) => {
1413 const assignmentScore = assignmentScores . find ( as => as . assignmentId === assignment ?. id && as . userId == user . id )
1514 if ( assignment ?. id && assignmentScore ) { // Submission defined, so...
@@ -24,6 +23,25 @@ export function createGradebookCsv(assignments: Assignment[], users: User[], ass
2423 } )
2524 toCSV . push ( csvString + '\n' )
2625 } )
26+ let final = 'data:text/csv;charset=utf-8,'
27+ toCSV . forEach ( ( row ) => { final += row } )
28+ return encodeURI ( final )
29+ }
30+
31+ export function createSubmissionCsv ( submissionScore : SubmissionScore , submissionProblemScores : SubmissionProblemScore [ ] , assignmentProblems : AssignmentProblem [ ] , ) {
32+ const toCSV = [ ]
33+ let header = "Total_Score"
34+ let scores = `${ submissionScore . score } `
35+ assignmentProblems . forEach ( ( ap ) => {
36+ header += "," + ap . problemName
37+ const correspondingScore = submissionProblemScores . find (
38+ ( scoreItem ) => scoreItem . assignmentProblemId === ap . id
39+ ) ;
40+ scores += "," + ( correspondingScore ? correspondingScore . score : "N/A" )
41+ } )
42+ toCSV . push ( header + '\n' )
43+ toCSV . push ( scores + '\n' )
44+
2745 let final = 'data:text/csv;charset=utf-8,'
2846 toCSV . forEach ( ( row ) => { final += row } )
2947 return encodeURI ( final )
0 commit comments