[O] Optimize caching

This commit is contained in:
Hykilpikonna
2019-11-09 20:37:56 -05:00
parent cb22baf120
commit 8c9f0a0e83
+22 -23
View File
@@ -162,42 +162,42 @@ export default class Course
return this.computed.termAssignments[timeCode]; return this.computed.termAssignments[timeCode];
} }
private filteredAssignmentsCache: Assignment[]; private _cacheAssignments: Assignment[];
/** /**
* Get graded assignments * Get graded assignments
*/ */
get assignments(): Assignment[] get assignments(): Assignment[]
{ {
if (this.filteredAssignmentsCache == null) if (this._cacheAssignments == null)
this.filteredAssignmentsCache = this.rawSelectedAssignments.filter(a => a.complete == 'Complete'); this._cacheAssignments = this.rawSelectedAssignments.filter(a => a.complete == 'Complete');
return this.filteredAssignmentsCache; return this._cacheAssignments;
} }
private letterGradeComputed = false; private _cacheLetterGrade: string;
/** /**
* Get letter grade * Get letter grade
*/ */
get letterGrade(): string get letterGrade(): string
{ {
// Cached if (this._cacheLetterGrade == null)
if (this.rawLetterGrade != undefined && this.letterGradeComputed) {
return this.rawLetterGrade;
this.letterGradeComputed = true;
// Get scale // Get scale
let scale = GPAUtils.findScale(this.numericGrade); let scale = GPAUtils.findScale(this.numericGrade);
// Scale not found // Scale not found
if (scale == undefined) return this.rawLetterGrade = '--'; if (scale == undefined) return this._cacheLetterGrade = '--';
// Return // Cache
return this.rawLetterGrade = scale.letter; this._cacheLetterGrade = scale.letter;
} }
private numericGradeComputed = false; return this._cacheLetterGrade;
}
private _cacheNumericGrade: number;
/** /**
* Get numeric grade * Get numeric grade
@@ -205,22 +205,21 @@ export default class Course
get numericGrade(): number get numericGrade(): number
{ {
// Cached // Cached
if (this.rawNumericGrade != undefined && this.numericGradeComputed) if (this._cacheNumericGrade == null)
return this.rawNumericGrade; {
this.numericGradeComputed = true;
// Calculate // Calculate
if (this.grading.method == 'PERCENT_TYPE') if (this.grading.method == 'PERCENT_TYPE')
{ {
return this.rawNumericGrade = GPAUtils.getPercentTypeAverage(this, this.assignments); this._cacheNumericGrade = GPAUtils.getPercentTypeAverage(this, this.assignments);
} }
if (this.grading.method == 'TOTAL_MEAN') else if (this.grading.method == 'TOTAL_MEAN')
{ {
return this.rawNumericGrade = GPAUtils.getTotalMeanAverage(this.assignments); this._cacheNumericGrade = GPAUtils.getTotalMeanAverage(this.assignments);
}
else this._cacheNumericGrade = -1;
} }
// Error return this._cacheNumericGrade;
return -1;
} }
/** /**