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
+
+
+
+
+
+
+
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