Skip to content

Commit fe94b98

Browse files
committed
Integrated Admin View with Stats API Data
1 parent bcc579f commit fe94b98

1 file changed

Lines changed: 55 additions & 12 deletions

File tree

hacks/cs-portfolio-quest/analytics/submodule_3.md

Lines changed: 55 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -553,25 +553,68 @@ author: "Curators Team"
553553

554554
if (res.ok) {
555555
const data = await res.json();
556-
// data.id = username (toby)
557-
// data.name = full name (Thomas Edison)
558-
const uid = data.id
559-
const filtered = lessonData.filter(item => item.uid === uid);
560-
console.log(`Data for ${uid}:`, filtered);
556+
console.log(data);
557+
const filtered = lessonData.filter(item => item.username === data.uid);
558+
console.log(`Data for ${data.uid}:`, filtered);
559+
560+
// Define modules and total submodules
561+
const lesson_modules = {
562+
'AI Usage': 4,
563+
'Backend Development': 6,
564+
'Data Visualization': 3,
565+
'Frontend Development': 6,
566+
'Resume Building': 6
567+
};
568+
569+
// Initialize result object
570+
const moduleStats = {};
571+
Object.keys(lesson_modules).forEach(m => {
572+
moduleStats[m] = { time: 0, percentComplete: 0 };
573+
});
574+
575+
// Sum time and count finished submodules per module
576+
const finishedCounts = {};
577+
Object.keys(lesson_modules).forEach(m => finishedCounts[m] = 0);
578+
579+
filtered.forEach(item => {
580+
const mod = item.module;
581+
if (lesson_modules[mod] !== undefined) {
582+
// Sum time
583+
moduleStats[mod].time += item.time || 0;
584+
585+
// Count finished submodules
586+
if (item.finished) finishedCounts[mod] += 1;
587+
}
588+
});
589+
590+
// Compute percent completion per module
591+
Object.keys(lesson_modules).forEach(m => {
592+
const totalSubmodules = lesson_modules[m];
593+
const finished = finishedCounts[m];
594+
moduleStats[m].percentComplete = (finished / totalSubmodules) * 100;
595+
});
596+
597+
const frontendCompletion = moduleStats["Frontend Development"].percentComplete
598+
const backendCompletion = moduleStats["Backend Development"].percentComplete
599+
const datavizCompletion = moduleStats["Data Visualization"].percentComplete
600+
const resumeCompletion = moduleStats["Resume Building"].percentComplete
601+
const aiCompletion = moduleStats["AI Usage"].percentComplete
602+
603+
console.log(moduleStats);
561604

562605
// Create random lesson and module data
563606
const randomLessons = (numLessons) =>
564607
Array.from({ length: numLessons }, () => Math.floor(Math.random() * 21) * 5); // random 0–100 in steps of 5
565608

566-
const randomProgress = () =>
567-
Math.floor(Math.random() * 5) * 25; // random 0, 25, 50, 75, 100
609+
// const randomProgress = () =>
610+
// Math.floor(Math.random() * 5) * 25; // random 0, 25, 50, 75, 100
568611

569612
const modules = {
570-
"Module 1": { progress: randomProgress(), lessons: randomLessons(6) }, // 6 lessons
571-
"Module 2": { progress: randomProgress(), lessons: randomLessons(6) }, // 6 lessons
572-
"Module 3": { progress: randomProgress(), lessons: randomLessons(3) }, // 3 lessons
573-
"Module 4": { progress: randomProgress(), lessons: randomLessons(6) }, // 6 lessons
574-
"Module 5": { progress: randomProgress(), lessons: randomLessons(4) }, // 4 lessons
613+
"Module 1": { progress: frontendCompletion, lessons: randomLessons(6) }, // 6 lessons
614+
"Module 2": { progress: backendCompletion, lessons: randomLessons(6) }, // 6 lessons
615+
"Module 3": { progress: datavizCompletion, lessons: randomLessons(3) }, // 3 lessons
616+
"Module 4": { progress: resumeCompletion, lessons: randomLessons(6) }, // 6 lessons
617+
"Module 5": { progress: aiCompletion, lessons: randomLessons(4) }, // 4 lessons
575618
};
576619

577620
students.push({

0 commit comments

Comments
 (0)