diff --git a/INFO-3163 (CMS Web Dev)/Labs/lab 5/SDLCTemplate.docx b/INFO-3163 (CMS Web Dev)/Labs/lab 5/SDLCTemplate.docx new file mode 100644 index 0000000..7dbc3c1 Binary files /dev/null and b/INFO-3163 (CMS Web Dev)/Labs/lab 5/SDLCTemplate.docx differ diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js b/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js index a6c48ae..e107019 100644 --- a/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js +++ b/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js @@ -1,7 +1,7 @@ import {students} from "./data.js" let passingStudents = []; -function getPassingStudents(students, passMark = 70) { +export function getPassingStudents(students, passMark = 70) { if (isNaN(passMark) || passMark < 0) { return false; } @@ -9,13 +9,13 @@ function getPassingStudents(students, passMark = 70) { let grade = parseInt(student.grade); if (isNaN(grade)) return false; - return true; + return grade >= passMark; }); return passingStudents; } -function calculateCourseAverage(students) { - +function calculateCourseAverages(students) { + } function getTopPerCourse(students) { @@ -23,9 +23,11 @@ function getTopPerCourse(students) { } function calculateOverallStatistics(students) { - -} - -function calculateAssignmentAvgerage(students) { - + const summary = document.getElementById("summary"); + summary.innerHTML += `

Total Students: ${students.length}


+

Average Grade:


+

Highest Grade:


+

Lowest Grade:


+

Average Attendance: %


+

Unique Courses:


`; } \ No newline at end of file diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/index.html b/INFO-3168 (JS 2)/Labs/Lab 3/index.html index c14fbd5..0056b91 100644 --- a/INFO-3168 (JS 2)/Labs/Lab 3/index.html +++ b/INFO-3168 (JS 2)/Labs/Lab 3/index.html @@ -3,10 +3,16 @@ Levi McLean JS Lab 3 + -

JS Lab 3

+

Student Performance Analytics Dashboard

+ + + + + @@ -21,6 +27,9 @@
+
+

Summary

+
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/style.css b/INFO-3168 (JS 2)/Labs/Lab 3/style.css index e69de29..e1c0208 100644 --- a/INFO-3168 (JS 2)/Labs/Lab 3/style.css +++ b/INFO-3168 (JS 2)/Labs/Lab 3/style.css @@ -0,0 +1,22 @@ +body { + font-family: Arial, Helvetica, sans-serif; + padding: 0; + margin: 0; +} + +table { + border: 2px solid black; + background-color: white; + border-collapse: collapse; + width: 100%; +} + +table td, table th { + border: 2px solid black; + padding: 6px 10px; + text-align: center; +} + +table th { + background-color: #f0f0f0; +} \ No newline at end of file diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/ui.js b/INFO-3168 (JS 2)/Labs/Lab 3/ui.js index 54da9a3..67ad3b4 100644 --- a/INFO-3168 (JS 2)/Labs/Lab 3/ui.js +++ b/INFO-3168 (JS 2)/Labs/Lab 3/ui.js @@ -1,6 +1,11 @@ import {students} from "./data.js" - +import {calculateAssignmentAverage} from "./utils.js" +import {getPassingStudents} from "./analytics.js" + +const passingStudents = getPassingStudents(students); +const passingIds = passingStudents.map(student => student.id); const tableBody = document.getElementById("studentTableBody"); + students.forEach(student => { const row = document.createElement("tr"); const name = document.createElement("td"); @@ -12,8 +17,9 @@ students.forEach(student => { const attendance = document.createElement("td"); attendance.textContent = student.attendance + "%" ?? "-"; const assignmentAvg = document.createElement("td"); - // assignmentAvg.textContent = calculateAssignmentAvgerage(student); TODO + assignmentAvg.textContent = calculateAssignmentAverage(student); const status = document.createElement("td"); + status.textContent = passingIds.includes(student.id) ? "Pass" : "Fail"; const city = document.createElement("td"); city.textContent = student.address.city ?? "-"; row.append(name, course, grade, attendance, assignmentAvg, status, city); diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/utils.js b/INFO-3168 (JS 2)/Labs/Lab 3/utils.js index e69de29..c4a6dcc 100644 --- a/INFO-3168 (JS 2)/Labs/Lab 3/utils.js +++ b/INFO-3168 (JS 2)/Labs/Lab 3/utils.js @@ -0,0 +1,7 @@ +export function calculateAssignmentAverage(student) { + if (!student.assignments || student.assignments.length === 0) { + return false; + } + const total = student.assignments.reduce((sum, score) => sum + score, 0); + return total / student.assignments.length; +} \ No newline at end of file