dvc890 commited on
Commit
6e3d4ce
·
verified ·
1 Parent(s): 5ba43ca

Update pages/Reports.tsx

Browse files
Files changed (1) hide show
  1. pages/Reports.tsx +10 -9
pages/Reports.tsx CHANGED
@@ -32,30 +32,31 @@ export const Reports: React.FC = () => {
32
  // 1. Class Averages
33
  // Group students by class
34
  const classMap: Record<string, string[]> = {}; // ClassName -> [StudentNos]
35
- studentData.forEach(s => {
36
  if (!classMap[s.className]) classMap[s.className] = [];
37
  classMap[s.className].push(s.studentNo);
38
  });
39
 
40
  // Calculate avg score for each class (aggregated across all subjects)
41
- const cData = classData.map(cls => {
42
  const fullClassName = cls.grade + cls.className;
43
  const studentNos = classMap[fullClassName] || [];
44
  // Find scores for these students
45
- const classScores = scoreData.filter(s => studentNos.includes(s.studentNo));
46
- const total = classScores.reduce((sum, s) => sum + s.score, 0);
47
  const avg = classScores.length > 0 ? Math.round(total / classScores.length) : 0;
48
  return { name: fullClassName, avg };
49
  });
50
  setClassAvgData(cData);
51
 
52
  // 2. Subject Averages
53
- const subjects = Array.from(new Set(scoreData.map(s => s.courseName)));
54
- const sData = subjects.map(subj => {
55
- const subjScores = scoreData.filter(s => s.courseName === subj);
56
- const total = subjScores.reduce((sum, s) => sum + s.score, 0);
 
57
  const avg = subjScores.length > 0 ? Math.round(total / subjScores.length) : 0;
58
- return { name: subj, avg };
59
  });
60
  setSubjectAvgData(sData);
61
 
 
32
  // 1. Class Averages
33
  // Group students by class
34
  const classMap: Record<string, string[]> = {}; // ClassName -> [StudentNos]
35
+ studentData.forEach((s: Student) => {
36
  if (!classMap[s.className]) classMap[s.className] = [];
37
  classMap[s.className].push(s.studentNo);
38
  });
39
 
40
  // Calculate avg score for each class (aggregated across all subjects)
41
+ const cData = classData.map((cls: ClassInfo) => {
42
  const fullClassName = cls.grade + cls.className;
43
  const studentNos = classMap[fullClassName] || [];
44
  // Find scores for these students
45
+ const classScores = scoreData.filter((s: Score) => studentNos.includes(s.studentNo));
46
+ const total = classScores.reduce((sum: number, s: Score) => sum + s.score, 0);
47
  const avg = classScores.length > 0 ? Math.round(total / classScores.length) : 0;
48
  return { name: fullClassName, avg };
49
  });
50
  setClassAvgData(cData);
51
 
52
  // 2. Subject Averages
53
+ const subjects = Array.from(new Set(scoreData.map((s: Score) => s.courseName)));
54
+ const sData = subjects.map((subj: any) => {
55
+ const subjectName = String(subj);
56
+ const subjScores = scoreData.filter((s: Score) => s.courseName === subjectName);
57
+ const total = subjScores.reduce((sum: number, s: Score) => sum + s.score, 0);
58
  const avg = subjScores.length > 0 ? Math.round(total / subjScores.length) : 0;
59
+ return { name: subjectName, avg };
60
  });
61
  setSubjectAvgData(sData);
62