From 1f46a0509f03b76db55dcc4532733147d070233a Mon Sep 17 00:00:00 2001 From: kima Date: Thu, 22 Jun 2023 21:55:57 +0200 Subject: [PATCH] fixed summary crash error --- .../personality_card/personality_card.dart | 37 ++++++++----------- .../personality_card.i18n.dart | 11 ++++++ 2 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 filcnaplo_mobile_ui/lib/common/personality_card/personality_card.i18n.dart diff --git a/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.dart b/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.dart index aa3919d..8a6f242 100644 --- a/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.dart +++ b/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.dart @@ -37,8 +37,9 @@ class _PersonalityCardState extends State { late List classWorkGrades; late Map mostCommonGrade; late List absences = []; - late List delays = []; final Map _lessonCount = {}; + late int totalDelays; + late int unexcusedAbsences; late PersonalityType finalPersonality; @@ -133,11 +134,19 @@ class _PersonalityCardState extends State { void getAbsences() { absences = absenceProvider.absences.where((a) => a.delay == 0).toList(); + + unexcusedAbsences = absences + .where((a) => a.state == Justification.unexcused && a.delay == 0) + .length; } void getAndSortDelays() { - delays = absenceProvider.absences; - delays.sort((a, b) => -a.delay.compareTo(b.delay)); + Iterable unexcusedDelays = absences + .where((a) => a.state == Justification.unexcused && a.delay > 0) + .map((e) => e.delay); + totalDelays = unexcusedDelays.isNotEmpty + ? unexcusedDelays.reduce((a, b) => a + b) + : 0; } void doEverything() { @@ -157,16 +166,9 @@ class _PersonalityCardState extends State { finalPersonality = PersonalityType.fallible; } else if (absences.length < 10) { finalPersonality = PersonalityType.healthy; - } else if ((absences.where( - (a) => a.state == Justification.unexcused && a.delay == 0)) - .length >= - 10) { + } else if (unexcusedAbsences >= 10) { finalPersonality = PersonalityType.quitter; - } else if ((absences.where( - (a) => a.state == Justification.unexcused && a.delay > 0)) - .map((e) => e.delay) - .reduce((a, b) => a + b) > - 50) { + } else if (totalDelays > 50) { finalPersonality = PersonalityType.late; } else if (absences.length >= 100) { finalPersonality = PersonalityType.sick; @@ -205,21 +207,14 @@ class _PersonalityCardState extends State { 'description': 'Kilukadt a villamos kereke. Kisiklott a repülő. A kutyád megette a cipőd. Elhisszük.', 'subtitle': 'Késésed (perc)', - 'subvalue': (absences.where( - (a) => a.state == Justification.unexcused && a.delay > 0)) - .map((e) => e.delay) - .reduce((a, b) => a + b) - .toString(), + 'subvalue': totalDelays.toString(), }, PersonalityType.quitter: { 'emoji': '❓', 'title': 'Lógós', 'description': 'Osztályzóvizsga incoming.', 'subtitle': 'Igazolatlan hiányzások', - 'subvalue': (absences.where( - (a) => a.state == Justification.unexcused && a.delay == 0)) - .length - .toString(), + 'subvalue': unexcusedAbsences.toString(), }, PersonalityType.healthy: { 'emoji': '😷', diff --git a/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.i18n.dart b/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.i18n.dart new file mode 100644 index 0000000..a207586 --- /dev/null +++ b/filcnaplo_mobile_ui/lib/common/personality_card/personality_card.i18n.dart @@ -0,0 +1,11 @@ +import 'package:i18n_extension/i18n_extension.dart'; + +extension Localization on String { + static final _t = + Translations.byLocale("hu_hu") + {"en_en": {}, "hu_hu": {}, "de_de": {}}; + + String get i18n => localize(this, _t); + String fill(List params) => localizeFill(this, params); + String plural(int value) => localizePlural(value, this, _t); + String version(Object modifier) => localizeVersion(modifier, this, _t); +}