1
0
forked from firka/firka

fix: maybe fixed percentages being calculated into the grade? pls review

This commit is contained in:
zypherift
2026-03-04 23:56:17 +01:00
committed by Armand
parent b6bfef7715
commit 01e7e559ba
5 changed files with 28 additions and 12 deletions

View File

@@ -1,10 +1,17 @@
import 'package:kreta_api/kreta_api.dart';
bool _isPercentageGrade(Grade grade) {
final name = grade.valueType.name.toLowerCase();
return name.contains('szazalek') || name.contains('percent');
}
double calculateAverage(List<Grade> sortedGrades) {
double totalWeight = 0.0;
double weightedSum = 0.0;
for (final grade in sortedGrades) {
if (_isPercentageGrade(grade)) continue;
final value = grade.numericValue;
final weight = grade.weightPercentage;

View File

@@ -322,6 +322,11 @@ class WidgetCacheHelper {
var sum = 0.0;
for (var grade in grades) {
final name = grade.valueType.name.toLowerCase();
final isPercentage =
name.contains('szazalek') || name.contains('percent');
if (isPercentage) continue;
if (grade.numericValue != null) {
var weight = (grade.weightPercentage ?? 100) / 100.0;
weightTotal += weight;

View File

@@ -146,18 +146,6 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
double avg = double.nan;
if (subjectGrades.isNotEmpty) {
for (var grade in subjectGrades) {
if (grade.valueType.name == "Szazalekos") {
grade.valueType = NameUidDesc(
uid: "1,Osztalyzat",
name: "Osztalyzat",
description: "",
);
if (grade.numericValue != null) {
grade.numericValue = percentageToGrade(grade.numericValue!);
}
}
}
avg = grades!.response!.getAverageBySubject(subject);
}

View File

@@ -33,6 +33,10 @@ class _GradeChartState extends State<GradeChart> {
double totalWeight = 0;
for (final g in grades) {
if (g.subject.uid != subjectUid) continue;
final name = g.valueType.name.toLowerCase();
final isPercentage =
name.contains('szazalek') || name.contains('percent');
if (isPercentage) continue;
final v = g.numericValue;
final w = g.weightPercentage;
if (v != null && w != null) {

View File

@@ -86,6 +86,14 @@ extension GradeListExtension on List<Grade> {
for (var grade in this) {
if (grade.subject.uid == subject.uid) {
final name = grade.valueType.name.toLowerCase();
final isPercentage =
name.contains('szazalek') || name.contains('percent');
if (isPercentage) {
continue;
}
if (grade.numericValue != null) {
var weight = (grade.weightPercentage ?? 100) / 100.0;
weightTotal += weight;
@@ -95,6 +103,10 @@ extension GradeListExtension on List<Grade> {
}
}
if (weightTotal == 0) {
return double.nan;
}
return sum / weightTotal;
}
}