diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js b/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js
new file mode 100644
index 0000000..a6c48ae
--- /dev/null
+++ b/INFO-3168 (JS 2)/Labs/Lab 3/analytics.js
@@ -0,0 +1,31 @@
+import {students} from "./data.js"
+let passingStudents = [];
+
+function getPassingStudents(students, passMark = 70) {
+ if (isNaN(passMark) || passMark < 0) {
+ return false;
+ }
+ passingStudents = students.filter(student => {
+ let grade = parseInt(student.grade);
+ if (isNaN(grade)) return false;
+
+ return true;
+ });
+ return passingStudents;
+}
+
+function calculateCourseAverage(students) {
+
+}
+
+function getTopPerCourse(students) {
+
+}
+
+function calculateOverallStatistics(students) {
+
+}
+
+function calculateAssignmentAvgerage(students) {
+
+}
\ No newline at end of file
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/data.js b/INFO-3168 (JS 2)/Labs/Lab 3/data.js
new file mode 100644
index 0000000..86b6e19
--- /dev/null
+++ b/INFO-3168 (JS 2)/Labs/Lab 3/data.js
@@ -0,0 +1,56 @@
+export const students = [
+{
+id: 1,
+name: "Priyank",
+course: "Web Development",
+grade: 85,
+attendance: 92,
+assignments: [80, 90, 85],
+address: { city: "London", province: "ON" }
+},
+{
+id: 2,
+name: "Jay",
+course: "Web Development",
+grade: 72,
+attendance: 75,
+assignments: [70, 68, 78],
+address: { city: "Toronto", province: "ON" }
+},
+{
+id: 3,
+name: "Jim",
+course: "Mobile Development",
+grade: 90,
+attendance: 88,
+assignments: [95, 85, 90],
+address: { city: "Ottawa", province: "ON" }
+},
+{
+id: 4,
+name: "Dev",
+course: "Mobile Development",
+grade: 60,
+attendance: 65,
+assignments: [55, 60, 65],
+address: { city: "London", province: "ON" }
+},
+{
+id: 5,
+name: "Eva",
+course: "Artificial Intelligence",
+grade: 95,
+attendance: 98,
+assignments: [100, 90, 95],
+address: { city: "Waterloo", province: "ON" }
+},
+{
+id: 6,
+name: "Elon",
+course: "Artificial Intelligence",
+grade: 78,
+attendance: 82,
+assignments: [75, 80, 79],
+address: { city: "London", province: "ON" }
+}
+];
\ 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
new file mode 100644
index 0000000..c14fbd5
--- /dev/null
+++ b/INFO-3168 (JS 2)/Labs/Lab 3/index.html
@@ -0,0 +1,31 @@
+
+
+
+ Levi McLean JS Lab 3
+
+
+
+
+ JS Lab 3
+
+
+
+ | Name |
+ Course |
+ Grade |
+ Attendance |
+ Assignment Avg |
+ Status |
+ City |
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/main.js b/INFO-3168 (JS 2)/Labs/Lab 3/main.js
new file mode 100644
index 0000000..e69de29
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/style.css b/INFO-3168 (JS 2)/Labs/Lab 3/style.css
new file mode 100644
index 0000000..e69de29
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/theme.js b/INFO-3168 (JS 2)/Labs/Lab 3/theme.js
new file mode 100644
index 0000000..e69de29
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/ui.js b/INFO-3168 (JS 2)/Labs/Lab 3/ui.js
new file mode 100644
index 0000000..54da9a3
--- /dev/null
+++ b/INFO-3168 (JS 2)/Labs/Lab 3/ui.js
@@ -0,0 +1,21 @@
+import {students} from "./data.js"
+
+const tableBody = document.getElementById("studentTableBody");
+students.forEach(student => {
+ const row = document.createElement("tr");
+ const name = document.createElement("td");
+ name.textContent = student.name ?? "-";
+ const course = document.createElement("td");
+ course.textContent = student.course ?? "-";
+ const grade = document.createElement("td");
+ grade.textContent = student.grade ?? "-";
+ const attendance = document.createElement("td");
+ attendance.textContent = student.attendance + "%" ?? "-";
+ const assignmentAvg = document.createElement("td");
+ // assignmentAvg.textContent = calculateAssignmentAvgerage(student); TODO
+ const status = document.createElement("td");
+ const city = document.createElement("td");
+ city.textContent = student.address.city ?? "-";
+ row.append(name, course, grade, attendance, assignmentAvg, status, city);
+ tableBody.appendChild(row);
+});
\ No newline at end of file
diff --git a/INFO-3168 (JS 2)/Labs/Lab 3/utils.js b/INFO-3168 (JS 2)/Labs/Lab 3/utils.js
new file mode 100644
index 0000000..e69de29
diff --git a/INFO-3168 (JS 2)/Project/LeviMclean_nasa-meteorite-explorer/js/main.js b/INFO-3168 (JS 2)/Project/LeviMclean_nasa-meteorite-explorer/js/main.js
index 44a8d2e..8868a43 100644
--- a/INFO-3168 (JS 2)/Project/LeviMclean_nasa-meteorite-explorer/js/main.js
+++ b/INFO-3168 (JS 2)/Project/LeviMclean_nasa-meteorite-explorer/js/main.js
@@ -5,7 +5,7 @@ function fetchJson() {
.then(data => {
console.log(data);
const tableBody = document.getElementById("meteorTableBody");
- data.splice(0,500).forEach(meteor => { // Just get 500 values for now
+ data.forEach(meteor => { // Just get 500 values for now
const row = document.createElement("tr");
const id = document.createElement("td");
id.textContent = meteor.id ?? "-";