revert: rounded subject average

This commit is contained in:
checkedear
2026-06-09 12:48:16 +02:00
parent 1d912abc7d
commit 87e3331428
2 changed files with 55 additions and 0 deletions

View File

@@ -114,6 +114,7 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
final allLessons = lessons!.response!; final allLessons = lessons!.response!;
final subjectAverage = allGrades.getSubjectAverage(); final subjectAverage = allGrades.getSubjectAverage();
final roundedSubjectAverage = allGrades.getRoundedSubjectAverage();
final classAverages = classAvgs!.response! final classAverages = classAvgs!.response!
.map((c) => c.classGroupAverage) .map((c) => c.classGroupAverage)
.nonNulls; .nonNulls;
@@ -223,6 +224,39 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
), ),
], ],
), ),
FirkaCard(
left: [
Text(
widget.data.l10n.subject_avg_rounded,
style: appStyle.fonts.B_16SB.apply(
color: appStyle.colors.textPrimary,
),
),
],
right: [
if (roundedSubjectAverage != null)
Container(
width: 48,
height: 26,
decoration: ShapeDecoration(
color: getGradeColor(
roundedSubjectAverage,
).withAlpha(38),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
child: Center(
child: Text(
roundedSubjectAverage.toStringAsFixed(2),
style: appStyle.fonts.B_16R.apply(
color: getGradeColor(roundedSubjectAverage),
),
),
),
),
],
),
FirkaCard( FirkaCard(
left: [ left: [
Text( Text(

View File

@@ -64,6 +64,27 @@ extension GradeListExtension on Iterable<Grade> {
).getAverage(); ).getAverage();
} }
double? getRoundedSubjectAverage({
double t1 = 1,
double t2 = 0.5,
double t3 = 0.5,
double t4 = 0.5,
}) {
final averages = map((g) => g.subject).toSet().map((subject) {
final average = getAverageBySubject(subject);
if (average == null) {
return null;
}
return roundGrade(average, t1: t1, t2: t2, t3: t3, t4: t4);
}).nonNulls;
if (averages.isEmpty) {
return null;
}
return averages.reduce((sum, avg) => sum + avg) / averages.length;
}
double? getSubjectAverage() { double? getSubjectAverage() {
final averages = map( final averages = map(
(g) => g.subject, (g) => g.subject,