Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
87 lines (75 loc) · 2.34 KB
/
Copy pathscript.js
File metadata and controls
87 lines (75 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Helper functions for LocalStorage management
function getCourses() {
return JSON.parse(localStorage.getItem("courses") || "[]");
}
function saveCourses(courses) {
localStorage.setItem("courses", JSON.stringify(courses));
}
function getTerms() {
let terms = JSON.parse(localStorage.getItem("terms")) || [];
if (terms.length === 0) {
const defaultTerms = [
4021, 4022, 4023,
4031, 4032, 4033,
4041, 4042, 4043,
4051, 4052, 4053,
4061, 4062, 4063
].map(id => ({
id: id,
courses: []
}));
localStorage.setItem("terms", JSON.stringify(defaultTerms));
terms = defaultTerms;
}
return terms;
}
function saveTerms(terms) {
localStorage.setItem("terms", JSON.stringify(terms));
}
// محاسبه مجموع واحد درس
function totalUnits(course) {
return (course.practical || 0) + (course.theoretical || 0);
}
// بررسی اینکه آیا درس پاس شده یا خیر
function isCoursePassed(courseId) {
const courses = getCourses();
const course = courses.find(c => c.id === courseId);
return course ? course.passed : false;
}
// محاسبه معدل ترم (دروس پاس شده)
function calculateTermGPA(term) {
const courses = getCourses();
let totalScore = 0;
let totalUnitsCount = 0;
for (const termCourse of term.courses) {
if (termCourse.score >= 10) {
const course = courses.find(c => c.id === termCourse.courseId);
if (course) {
const units = totalUnits(course);
totalScore += termCourse.score * units;
totalUnitsCount += units;
}
}
}
return totalUnitsCount ? (totalScore / totalUnitsCount).toFixed(2) : "--";
}
// محاسبه معدل کل (تمام ترمها)
function calculateOverallGPA() {
const terms = getTerms();
let totalScore = 0;
let totalUnitsCount = 0;
const courses = getCourses();
for (const term of terms) {
for (const termCourse of term.courses) {
if (termCourse.score >= 10) {
const course = courses.find(c => c.id === termCourse.courseId);
if (course) {
const units = totalUnits(course);
totalScore += termCourse.score * units;
totalUnitsCount += units;
}
}
}
}
return totalUnitsCount ? (totalScore / totalUnitsCount).toFixed(2) : "--";
}