diff --git a/firka/lib/core/settings.dart b/firka/lib/core/settings.dart index 3edae9b3..faee2091 100644 --- a/firka/lib/core/settings.dart +++ b/firka/lib/core/settings.dart @@ -6,6 +6,8 @@ import 'package:firka/data/models/app_settings_model.dart'; import 'package:firka/services/live_activity_service.dart'; import 'package:firka/l10n/app_localizations.dart'; import 'package:firka/ui/shared/firka_icon.dart'; +import 'package:firka_common/firka_common.dart' as common; +import 'package:firka_common/ui/theme/style.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:isar_community/isar.dart'; @@ -715,6 +717,34 @@ class SettingsStore { await item.load(model); } } + + int roundGrade(num grade) { + final rounding = group( + "settings", + ).subGroup("application").subGroup("rounding"); + return common.roundGrade( + grade, + t1: rounding.dbl("1"), + t2: rounding.dbl("2"), + t3: rounding.dbl("3"), + t4: rounding.dbl("4"), + ); + } + + Color getGradeColor(num grade) { + switch (roundGrade(grade)) { + case 2: + return appStyle.colors.grade2; + case 3: + return appStyle.colors.grade3; + case 4: + return appStyle.colors.grade4; + case 5: + return appStyle.colors.grade5; + default: + return appStyle.colors.grade1; + } + } } extension SettingExt on LinkedHashMap { diff --git a/firka/lib/ui/phone/widgets/grade_chart.dart b/firka/lib/ui/phone/widgets/grade_chart.dart index b295c829..4f86b76c 100644 --- a/firka/lib/ui/phone/widgets/grade_chart.dart +++ b/firka/lib/ui/phone/widgets/grade_chart.dart @@ -139,7 +139,10 @@ class _GradeChartState extends State { final date = spots[_touchedIndex!].date; content = tooltipFormat.format(date); } else if (value == firstX) { - content = DateFormat("MMMM", initData.l10n.localeName).format(DateTime(DateTime.now().year, DateTime.september)).firstUpper(); + content = DateFormat( + "MMMM", + initData.l10n.localeName, + ).format(DateTime.now().copyWith(month: DateTime.september)).firstUpper(); } else if (value == lastX && !shouldHideNow) { content = initData.l10n.now; } @@ -188,39 +191,17 @@ class _GradeChartState extends State { } Color colorForY(double y) { - final rounding = initData.settings - .group("settings") - .subGroup("application") - .subGroup("rounding"); - return y == 0 - ? appStyle.colors.card - : getGradeColor( - y, - t1: rounding.dbl("1"), - t2: rounding.dbl("2"), - t3: rounding.dbl("3"), - t4: rounding.dbl("4"), - ); + return y == 0 ? appStyle.colors.card : initData.settings.getGradeColor(y); } Widget leftTitleWidgets(double value, TitleMeta meta) { - if (value == 0) { + if (value == 0 || value > 5) { return SizedBox(); } - final rounding = initData.settings - .group("settings") - .subGroup("application") - .subGroup("rounding"); - final currentValue = spots.first.y == 0 + final currentValue = spots.last.y == 0 ? 0 - : roundGrade( - _tooltipY ?? spots.first.y, - t1: rounding.dbl("1"), - t2: rounding.dbl("2"), - t3: rounding.dbl("3"), - t4: rounding.dbl("4"), - ); + : initData.settings.roundGrade(_tooltipY ?? spots.last.y); final isActive = value == currentValue; if (isActive) { @@ -294,23 +275,16 @@ class _GradeChartState extends State { }, ), backgroundColor: Colors.transparent, - extraLinesData: ExtraLinesData( - horizontalLines: [ - HorizontalLine( - y: 5, - color: const Color(0xFFC8C8C8), - strokeWidth: 1.0, - dashArray: [8, 12], - ), - ], - extraLinesOnTop: false, - ), gridData: FlGridData( show: true, drawHorizontalLine: true, drawVerticalLine: false, horizontalInterval: 1, getDrawingHorizontalLine: (value) { + if (_tooltipY != null && + initData.settings.roundGrade(_tooltipY!) == value) { + return FlLine(color: const Color(0xFFC8C8C8), strokeWidth: 1.0); + } return FlLine( color: const Color(0xFFC8C8C8), strokeWidth: 1.0, @@ -351,7 +325,7 @@ class _GradeChartState extends State { borderData: FlBorderData(show: false), minY: 0, - maxY: 5, + maxY: 5.0000000000001, lineBarsData: [ LineChartBarData(