diff --git a/app/lib/grades/grades_service/grades_service.dart b/app/lib/grades/grades_service/grades_service.dart index 00f1a73c3..6e5bbaff2 100644 --- a/app/lib/grades/grades_service/grades_service.dart +++ b/app/lib/grades/grades_service/grades_service.dart @@ -604,7 +604,7 @@ class TermResult extends Equatable { final bool isActiveTerm; final String name; final GradeType finalGradeType; - final IMap gradeTypeWeightings; + final IMap gradeTypeWeights; final WeightDisplayType weightDisplayType; SubjectResult subject(SubjectId id) { @@ -620,7 +620,7 @@ class TermResult extends Equatable { required this.subjects, required this.isActiveTerm, required this.finalGradeType, - required this.gradeTypeWeightings, + required this.gradeTypeWeights, required this.weightDisplayType, }); @@ -633,7 +633,7 @@ class TermResult extends Equatable { isActiveTerm, name, finalGradeType, - gradeTypeWeightings, + gradeTypeWeights, weightDisplayType, ]; } diff --git a/app/lib/grades/grades_service/src/grades_repository.dart b/app/lib/grades/grades_service/src/grades_repository.dart index 34b50cb5c..0579b0707 100644 --- a/app/lib/grades/grades_service/src/grades_repository.dart +++ b/app/lib/grades/grades_service/src/grades_repository.dart @@ -283,7 +283,7 @@ class FirestoreGradesStateRepository extends GradesStateRepository { createdOn: termSubject.createdOn?.toDate(), isFinalGradeTypeOverridden: termSubject.finalGradeType != subTerm.finalGradeTypeId, - gradeTypeWeightings: + gradeTypeWeights: termSubject.gradeComposition.gradeTypeWeights .map( (key, value) => MapEntry( @@ -292,7 +292,7 @@ class FirestoreGradesStateRepository extends GradesStateRepository { ), ) .toIMap(), - gradeTypeWeightingsFromTerm: + gradeTypeWeightsFromTerm: subTerm.gradeTypeWeights .map( (key, value) => MapEntry( @@ -337,7 +337,7 @@ class FirestoreGradesStateRepository extends GradesStateRepository { .toIList(), name: dto.displayName, // Change both to num - gradeTypeWeightings: + gradeTypeWeights: dto.gradeTypeWeights .map( (key, value) => MapEntry( @@ -515,7 +515,7 @@ class TermDto { ), ), gradeTypeWeights: - term.gradeTypeWeightings + term.gradeTypeWeights .map((gradeId, weight) => MapEntry(gradeId.value, weight.toDto())) .unlock, ); @@ -631,7 +631,7 @@ class SubjectGradeCompositionDto { return SubjectGradeCompositionDto( weightType: subject.weightType, gradeTypeWeights: - subject.gradeTypeWeightings + subject.gradeTypeWeights .map((gradeId, weight) => MapEntry(gradeId.value, weight.toDto())) .unlock, gradeWeights: Map.fromEntries( diff --git a/app/lib/grades/grades_service/src/grades_service_internal.dart b/app/lib/grades/grades_service/src/grades_service_internal.dart index 3e71448d5..397d5d2ec 100644 --- a/app/lib/grades/grades_service/src/grades_service_internal.dart +++ b/app/lib/grades/grades_service/src/grades_service_internal.dart @@ -64,7 +64,7 @@ class _GradesServiceInternal { term.tryGetTermGrade() != null ? term.gradingSystem.toGradeResult(term.tryGetTermGrade()!) : null, - gradeTypeWeightings: term.gradeTypeWeightings, + gradeTypeWeights: term.gradeTypeWeights, weightDisplayType: term.weightDisplayType, subjects: term.subjects @@ -82,7 +82,7 @@ class _GradesServiceInternal { ) : null, weightType: subject.weightType, - gradeTypeWeights: subject.gradeTypeWeightings, + gradeTypeWeights: subject.gradeTypeWeights, finalGradeTypeId: subject.finalGradeType, weightingForTermGrade: subject.weightingForTermGrade, grades: @@ -132,7 +132,7 @@ class _GradesServiceInternal { name: name, finalGradeType: finalGradeType, gradingSystem: gradingSystem.toGradingSystemModel(), - gradeTypeWeightings: gradeTypeWeights.map( + gradeTypeWeights: gradeTypeWeights.map( (key, value) => MapEntry(key, value.toNonNegativeWeightOrThrow()), ), ), diff --git a/app/lib/grades/grades_service/src/term.dart b/app/lib/grades/grades_service/src/term.dart index 00b048e0f..22dc51d36 100644 --- a/app/lib/grades/grades_service/src/term.dart +++ b/app/lib/grades/grades_service/src/term.dart @@ -15,7 +15,7 @@ class TermModel extends Equatable { final TermId id; final DateTime? createdOn; final IList subjects; - final IMap gradeTypeWeightings; + final IMap gradeTypeWeights; final GradingSystemModel gradingSystem; final GradeTypeId finalGradeType; final bool isActiveTerm; @@ -27,7 +27,7 @@ class TermModel extends Equatable { id, createdOn, subjects, - gradeTypeWeightings, + gradeTypeWeights, weightDisplayType, gradingSystem, finalGradeType, @@ -43,14 +43,14 @@ class TermModel extends Equatable { required this.name, this.createdOn, this.subjects = const IListConst([]), - this.gradeTypeWeightings = const IMapConst({}), + this.gradeTypeWeights = const IMapConst({}), this.weightDisplayType = WeightDisplayType.factor, }); const TermModel.internal( this.id, this.subjects, - this.gradeTypeWeightings, + this.gradeTypeWeights, this.weightDisplayType, this.finalGradeType, this.isActiveTerm, @@ -79,7 +79,7 @@ class TermModel extends Equatable { finalGradeType: finalGradeType, connectedCourses: subject.connectedCourses, weightType: WeightType.inheritFromTerm, - gradeTypeWeightingsFromTerm: gradeTypeWeightings, + gradeTypeWeightsFromTerm: gradeTypeWeights, ), ), ); @@ -98,7 +98,7 @@ class TermModel extends Equatable { TermModel _copyWith({ TermId? id, IList? subjects, - IMap? gradeTypeWeightings, + IMap? gradeTypeWeights, WeightDisplayType? weightDisplayType, GradeTypeId? finalGradeType, bool? isActiveTerm, @@ -109,7 +109,7 @@ class TermModel extends Equatable { return TermModel.internal( id ?? this.id, subjects ?? this.subjects, - gradeTypeWeightings ?? this.gradeTypeWeightings, + gradeTypeWeights ?? this.gradeTypeWeights, weightDisplayType ?? this.weightDisplayType, finalGradeType ?? this.finalGradeType, isActiveTerm ?? this.isActiveTerm, @@ -155,29 +155,25 @@ class TermModel extends Equatable { GradeTypeId type, { required NonNegativeWeight weight, }) { - final newWeights = gradeTypeWeightings.add(type, weight); + final newWeights = gradeTypeWeights.add(type, weight); final newSubjects = subjects.map((s) { - final newSubject = s.copyWith( - gradeTypeWeightingsFromTerm: newWeights, - ); + final newSubject = s.copyWith(gradeTypeWeightsFromTerm: newWeights); return newSubject; }).toIList(); - return _copyWith(subjects: newSubjects, gradeTypeWeightings: newWeights); + return _copyWith(subjects: newSubjects, gradeTypeWeights: newWeights); } TermModel removeWeightingOfGradeType(GradeTypeId type) { - final newWeights = gradeTypeWeightings.remove(type); + final newWeights = gradeTypeWeights.remove(type); final newSubjects = subjects.map((s) { - final newSubject = s.copyWith( - gradeTypeWeightingsFromTerm: newWeights, - ); + final newSubject = s.copyWith(gradeTypeWeightsFromTerm: newWeights); return newSubject; }).toIList(); - return _copyWith(subjects: newSubjects, gradeTypeWeightings: newWeights); + return _copyWith(subjects: newSubjects, gradeTypeWeights: newWeights); } TermModel setFinalGradeType(GradeTypeId gradeType) { @@ -364,8 +360,8 @@ class SubjectModel extends Equatable { final GradeTypeId finalGradeType; final bool isFinalGradeTypeOverridden; final NonNegativeWeight weightingForTermGrade; - final IMap gradeTypeWeightings; - final IMap gradeTypeWeightingsFromTerm; + final IMap gradeTypeWeights; + final IMap gradeTypeWeightsFromTerm; final WeightType weightType; final String abbreviation; final Design design; @@ -384,8 +380,8 @@ class SubjectModel extends Equatable { finalGradeType, isFinalGradeTypeOverridden, weightingForTermGrade, - gradeTypeWeightings, - gradeTypeWeightingsFromTerm, + gradeTypeWeights, + gradeTypeWeightsFromTerm, weightType, abbreviation, design, @@ -407,8 +403,8 @@ class SubjectModel extends Equatable { this.isFinalGradeTypeOverridden = false, this.grades = const IListConst([]), NonNegativeWeight? weightingForTermGrade, - this.gradeTypeWeightings = const IMapConst({}), - this.gradeTypeWeightingsFromTerm = const IMapConst({}), + this.gradeTypeWeights = const IMapConst({}), + this.gradeTypeWeightsFromTerm = const IMapConst({}), }) : weightingForTermGrade = weightingForTermGrade ?? NonNegativeWeight.factor(1) { gradeVal = _getGradeVal(); @@ -437,9 +433,9 @@ class SubjectModel extends Equatable { return switch (weightType) { WeightType.perGrade => grade.weight, WeightType.perGradeType => - gradeTypeWeightings[grade.gradeType] ?? const Weight.factor(1), + gradeTypeWeights[grade.gradeType] ?? const Weight.factor(1), WeightType.inheritFromTerm => - gradeTypeWeightingsFromTerm[grade.gradeType] ?? const Weight.factor(1), + gradeTypeWeightsFromTerm[grade.gradeType] ?? const Weight.factor(1), }; } @@ -459,13 +455,11 @@ class SubjectModel extends Equatable { GradeTypeId gradeType, { required NonNegativeWeight weight, }) { - return copyWith( - gradeTypeWeightings: gradeTypeWeightings.add(gradeType, weight), - ); + return copyWith(gradeTypeWeights: gradeTypeWeights.add(gradeType, weight)); } SubjectModel removeGradeTypeWeight(GradeTypeId gradeType) { - return copyWith(gradeTypeWeightings: gradeTypeWeightings.remove(gradeType)); + return copyWith(gradeTypeWeights: gradeTypeWeights.remove(gradeType)); } SubjectModel overrideFinalGradeType(GradeTypeId gradeType) { @@ -498,8 +492,8 @@ class SubjectModel extends Equatable { bool? isFinalGradeTypeOverridden, NonNegativeWeight? weightingForTermGrade, GradingSystemModel? gradingSystem, - IMap? gradeTypeWeightings, - IMap? gradeTypeWeightingsFromTerm, + IMap? gradeTypeWeights, + IMap? gradeTypeWeightsFromTerm, WeightType? weightType, IList? connectedCourses, DateTime? createdOn, @@ -517,10 +511,10 @@ class SubjectModel extends Equatable { isFinalGradeTypeOverridden ?? this.isFinalGradeTypeOverridden, weightingForTermGrade: weightingForTermGrade ?? this.weightingForTermGrade, - gradeTypeWeightings: gradeTypeWeightings ?? this.gradeTypeWeightings, + gradeTypeWeights: gradeTypeWeights ?? this.gradeTypeWeights, weightType: weightType ?? this.weightType, - gradeTypeWeightingsFromTerm: - gradeTypeWeightingsFromTerm ?? this.gradeTypeWeightingsFromTerm, + gradeTypeWeightsFromTerm: + gradeTypeWeightsFromTerm ?? this.gradeTypeWeightsFromTerm, connectedCourses: connectedCourses ?? this.connectedCourses, createdOn: createdOn ?? this.createdOn, ); diff --git a/app/lib/grades/pages/grades_dialog/grades_dialog_controller.dart b/app/lib/grades/pages/grades_dialog/grades_dialog_controller.dart index 1666efb5d..7986a0da1 100644 --- a/app/lib/grades/pages/grades_dialog/grades_dialog_controller.dart +++ b/app/lib/grades/pages/grades_dialog/grades_dialog_controller.dart @@ -57,8 +57,8 @@ class GradesDialogController extends ChangeNotifier { return switch (termSub.weightType) { WeightType.inheritFromTerm => - term.gradeTypeWeightings.isNotEmpty - ? term.gradeTypeWeightings[gradeTypeId] ?? Weight.zero + term.gradeTypeWeights.isNotEmpty + ? term.gradeTypeWeights[gradeTypeId] ?? Weight.zero : null, WeightType.perGradeType => termSub.gradeTypeWeights.isNotEmpty diff --git a/app/lib/grades/pages/subject_settings_page/subject_settings_page_controller.dart b/app/lib/grades/pages/subject_settings_page/subject_settings_page_controller.dart index afae8833c..607c31349 100644 --- a/app/lib/grades/pages/subject_settings_page/subject_settings_page_controller.dart +++ b/app/lib/grades/pages/subject_settings_page/subject_settings_page_controller.dart @@ -52,7 +52,7 @@ class SubjectSettingsPageController extends ChangeNotifier { if (subject.weightType == WeightType.inheritFromTerm) { // We show the weights from the term, but we need to copy them into the // subject if the user changes them. - _weights = _weights.addAll(_getTerm()!.gradeTypeWeightings); + _weights = _weights.addAll(_getTerm()!.gradeTypeWeights); } else { _weights = _weights.addAll(subject.gradeTypeWeights); } @@ -129,7 +129,7 @@ class SubjectSettingsPageController extends ChangeNotifier { // When switching from inheritFromTerm to perGradeType, we need to copy the // existing weights from the term to the subject. - final termWeights = _getTerm()!.gradeTypeWeightings.entries; + final termWeights = _getTerm()!.gradeTypeWeights.entries; for (final entry in termWeights) { subRef.changeGradeTypeWeight(entry.key, entry.value); await waitForFirestoreWriteLimit(); diff --git a/app/lib/grades/pages/term_settings_page/term_settings_page_controller.dart b/app/lib/grades/pages/term_settings_page/term_settings_page_controller.dart index 6e1e7cb79..0acfbf40a 100644 --- a/app/lib/grades/pages/term_settings_page/term_settings_page_controller.dart +++ b/app/lib/grades/pages/term_settings_page/term_settings_page_controller.dart @@ -60,7 +60,7 @@ class TermSettingsPageController extends ChangeNotifier { isActiveTerm = term.isActiveTerm; gradingSystem = term.gradingSystem; finalGradeType = term.finalGradeType; - _weights = term.gradeTypeWeightings; + _weights = term.gradeTypeWeights; weightDisplayType = term.weightDisplayType; state = TermSettingsLoaded(view); diff --git a/app/test/grades/grade_types_test.dart b/app/test/grades/grade_types_test.dart index 0c9193e14..bd2ad938c 100644 --- a/app/test/grades/grade_types_test.dart +++ b/app/test/grades/grade_types_test.dart @@ -222,10 +222,7 @@ void main() { 2.5, ); - expect( - controller.term(const TermId('foo')).gradeTypeWeightings, - isEmpty, - ); + expect(controller.term(const TermId('foo')).gradeTypeWeights, isEmpty); expect( controller .term(const TermId('foo')) diff --git a/app/test/grades/grades_repository_test.dart b/app/test/grades/grades_repository_test.dart index 06cfc037f..02e6b3af7 100644 --- a/app/test/grades/grades_repository_test.dart +++ b/app/test/grades/grades_repository_test.dart @@ -572,12 +572,12 @@ void main() { finalGradeType: const GradeTypeId('school-report-grade'), isFinalGradeTypeOverridden: false, weightingForTermGrade: NonNegativeWeight.factor(2.5), - gradeTypeWeightings: IMapConst({ + gradeTypeWeights: IMapConst({ const GradeTypeId( 'my-custom-grade-type', ): NonNegativeWeight.factor(2.0), }), - gradeTypeWeightingsFromTerm: IMapConst({ + gradeTypeWeightsFromTerm: IMapConst({ const GradeTypeId('vocabulary-test'): NonNegativeWeight.factor( 1.5, ), @@ -595,7 +595,7 @@ void main() { ]), ), ]), - gradeTypeWeightings: IMapConst({ + gradeTypeWeights: IMapConst({ const GradeTypeId('vocabulary-test'): NonNegativeWeight.factor(1.5), }), gradingSystem: GradingSystemModel.zeroToFifteenPoints, @@ -654,8 +654,8 @@ void main() { finalGradeType: const GradeTypeId('oral-participation'), isFinalGradeTypeOverridden: true, weightingForTermGrade: NonNegativeWeight.factor(1), - gradeTypeWeightings: const IMapConst({}), - gradeTypeWeightingsFromTerm: const IMapConst({}), + gradeTypeWeights: const IMapConst({}), + gradeTypeWeightsFromTerm: const IMapConst({}), weightType: WeightType.inheritFromTerm, abbreviation: 'E', design: Design.fromData('000000'), @@ -669,7 +669,7 @@ void main() { ]), ), ]), - gradeTypeWeightings: const IMapConst({}), + gradeTypeWeights: const IMapConst({}), gradingSystem: GradingSystemModel.oneToSixWithPlusAndMinus, finalGradeType: const GradeTypeId('my-custom-grade-type'), isActiveTerm: false, @@ -689,7 +689,7 @@ void main() { ); expect(actual.id, expected.id); - expect(actual.gradeTypeWeightings, expected.gradeTypeWeightings); + expect(actual.gradeTypeWeights, expected.gradeTypeWeights); expect(actual.gradingSystem, expected.gradingSystem); expect(actual.finalGradeType, expected.finalGradeType); expect(actual.isActiveTerm, expected.isActiveTerm); @@ -718,13 +718,10 @@ void main() { actualSub.weightingForTermGrade, expectedSub.weightingForTermGrade, ); + expect(actualSub.gradeTypeWeights, expectedSub.gradeTypeWeights); expect( - actualSub.gradeTypeWeightings, - expectedSub.gradeTypeWeightings, - ); - expect( - actualSub.gradeTypeWeightingsFromTerm, - expectedSub.gradeTypeWeightingsFromTerm, + actualSub.gradeTypeWeightsFromTerm, + expectedSub.gradeTypeWeightsFromTerm, ); expect(actualSub.weightType, expectedSub.weightType); expect(actualSub.abbreviation, expectedSub.abbreviation); diff --git a/app/test/grades/grades_test.dart b/app/test/grades/grades_test.dart index 9cd89cd3b..a9efc8add 100644 --- a/app/test/grades/grades_test.dart +++ b/app/test/grades/grades_test.dart @@ -68,7 +68,7 @@ void main() { }, ); test( - 'the term grade should equal the average of the average grades of every subject taking weightings into account', + 'the term grade should equal the average of the average grades of every subject taking weights into account', () { final controller = GradesTestController(); @@ -775,7 +775,7 @@ void main() { gradeTypeId: presentation.id, ); - expect(controller.term(term.id).gradeTypeWeightings.keys, [exam.id]); + expect(controller.term(term.id).gradeTypeWeights.keys, [exam.id]); }); test( 'a subjects gradeType weights are saved even when they are deactivated', diff --git a/app/test/grades/pages/create_term_page/create_term_page_controller_test.dart b/app/test/grades/pages/create_term_page/create_term_page_controller_test.dart index ecd108e0c..ea1d4536f 100644 --- a/app/test/grades/pages/create_term_page/create_term_page_controller_test.dart +++ b/app/test/grades/pages/create_term_page/create_term_page_controller_test.dart @@ -58,7 +58,7 @@ void main() { expect(term.finalGradeType.id, GradeType.schoolReportGrade.id); expect(term.gradingSystem, GradingSystem.oneToSixWithPlusAndMinus); expect( - term.gradeTypeWeightings, + term.gradeTypeWeights, IMap({ GradeType.writtenExam.id: const Weight.percent(50), GradeType.oralParticipation.id: const Weight.percent(50),