[O] Optimize caching

This commit is contained in:
Hykilpikonna
2019-11-09 20:37:56 -05:00
parent cb22baf120
commit 8c9f0a0e83
+28 -29
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; // Get scale
this.letterGradeComputed = true; let scale = GPAUtils.findScale(this.numericGrade);
// Get scale // Scale not found
let scale = GPAUtils.findScale(this.numericGrade); if (scale == undefined) return this._cacheLetterGrade = '--';
// Scale not found // Cache
if (scale == undefined) return this.rawLetterGrade = '--'; this._cacheLetterGrade = scale.letter;
}
// Return return this._cacheLetterGrade;
return this.rawLetterGrade = scale.letter;
} }
private numericGradeComputed = false; 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
if (this.grading.method == 'PERCENT_TYPE')
{ {
return this.rawNumericGrade = GPAUtils.getPercentTypeAverage(this, this.assignments); // Calculate
} if (this.grading.method == 'PERCENT_TYPE')
if (this.grading.method == 'TOTAL_MEAN') {
{ this._cacheNumericGrade = GPAUtils.getPercentTypeAverage(this, this.assignments);
return this.rawNumericGrade = GPAUtils.getTotalMeanAverage(this.assignments); }
else if (this.grading.method == 'TOTAL_MEAN')
{
this._cacheNumericGrade = GPAUtils.getTotalMeanAverage(this.assignments);
}
else this._cacheNumericGrade = -1;
} }
// Error return this._cacheNumericGrade;
return -1;
} }
/** /**