mock data system
MockWebPortal plus src/assets/fakedata.json. Try Demo uses this path. No JIIT network.
See Data Layer & API Integration.
Jobs: offline UI work, public demo, stable fixtures.
Architecture overview#
Portal abstraction pattern#
flowchart TD
App --> Real["realPortal"]
App --> Mock["mockPortal"]
Demo{"isDemoMode"} --> W["w"]Interface compatibility#
| Category | Methods |
|---|---|
| Auth | student_login |
| Attendance | get_attendance_meta, get_attendance, get_subject_daily_attendance |
| Grades | get_sgpa_cgpa, get_semesters_for_grade_card, get_grade_card, get_semesters_for_marks, download_marks |
| Exams | get_semesters_for_exam_events, get_exam_events, get_exam_schedule |
| Subjects | get_registered_semesters, get_registered_subjects_and_faculties, get_subject_choices |
| Profile | get_personal_info |
| Unused UI | get_fee_summary, get_fines_msc_charges |
Data organization (fakedata.json)#
Domain structure#
flowchart TD F["fakedata.json"] --> A["attendance"] F --> G["grades"] F --> S["subjects"] F --> E["exams"] F --> P["profile"] F --> Fees["fees"]
Attendance: semestersData, attendanceData[semCode].studentattendancelist, subjectAttendanceData[individualsubjectcode].
Grades: gradesData, gradeCardSemesters, gradeCards, marksSemesters, marksData.
Exams: examSemesters, examEvents, examSchedule.
Subjects: semestersData, subjectData, choiceSubjects.
Profile: object returned as-is from get_personal_info.
MockWebPortal implementation#
Class structure#
flowchart TD Ctor["constructor session.get_headers"] --> Methods["async methods"] Methods --> JSON["fakeData import"]
JSON is a static import, not fetch('/fakedata.json'). File is MockWebPortal.js.
Intelligent semester ordering#
flowchart TD
Month["getMonth + 1"] --> Even{"1-7?"}
Even -->|yes| EVE["EVESEM first"]
Even -->|no| ODD["ODDSEM first"]
EVE --> Latest["latest_semester first row"]Data retrieval pattern#
flowchart TD Call["get_attendance header semester"] --> Key["registration_code"] Key --> Table["fakeData.attendance.attendanceData[key]"]
Empty fallbacks: { studentattendancelist: [] }, { gradecard: [] }, { courses: [] }, { subjectpreferencegrid: [] }.
Enabling demo mode#
flowchart TD UI["Try Demo"] --> App["handleDemoLogin"] App --> Flag["isDemoMode true"] Flag --> Mock
VITE_USE_FAKE_DATA is typed but unused. Do not document it as the switch.