forked from firka/firka
revert: rounded subject average
This commit is contained in:
@@ -114,6 +114,7 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
|
||||
final allLessons = lessons!.response!;
|
||||
|
||||
final subjectAverage = allGrades.getSubjectAverage();
|
||||
final roundedSubjectAverage = allGrades.getRoundedSubjectAverage();
|
||||
final classAverages = classAvgs!.response!
|
||||
.map((c) => c.classGroupAverage)
|
||||
.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(
|
||||
left: [
|
||||
Text(
|
||||
|
||||
@@ -64,6 +64,27 @@ extension GradeListExtension on Iterable<Grade> {
|
||||
).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() {
|
||||
final averages = map(
|
||||
(g) => g.subject,
|
||||
|
||||
Reference in New Issue
Block a user