feat(profile): statistics beside the profile, a review counting a minute at most

The Profile tab has two tabs, Profile and Statistics, the latter for
anonymous people too: the time studied in all, per day and the most in
one day, and by days, weeks or months the study time and the ratings as
bars, a tap on a bar saying what it holds. The app draws the charts
itself, as the Progress part's sparkline, rather than taking a chart
package.

A review's time was however long its card was shown: one left on the
screen over lunch counted as an hour of study. It now counts at most a
minute, as Anki does by default, here and in a studyset's Progress; the
stored durations stay as they were.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-12 18:56:40 +02:00
commit b46dfe22b1
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1558,6 +1558,72 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get profileTitle => 'Profil';
@override
String get profileTabProfile => 'Profil';
@override
String get profileTabStatistics => 'Statistik';
@override
String get statisticsDays => 'Tage';
@override
String get statisticsWeeks => 'Wochen';
@override
String get statisticsMonths => 'Monate';
@override
String get statisticsTotal => 'Insgesamt';
@override
String get statisticsPerDay => 'Pro Tag';
@override
String get statisticsRecord => 'Tagesrekord';
@override
String get statisticsStudyTime => 'Lernzeit';
@override
String get statisticsMinutesInfo =>
'In Minuten, jede Karte höchstens eine Minute gezählt';
@override
String get statisticsHoursInfo =>
'In Stunden, jede Karte höchstens eine Minute gezählt';
@override
String get statisticsRatings => 'Bewertungen';
@override
String get statisticsRatingsInfo =>
'Wie du die gelernten Karteikarten bewertet hast';
@override
String statisticsRated(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count Karten bewertet',
one: '1 Karte bewertet',
zero: 'Keine Karte bewertet',
);
return '$_temp0';
}
@override
String get statisticsToday => 'Heute';
@override
String statisticsWeekOf(String date) {
return 'Woche ab $date';
}
@override
String get statisticsNothingYet =>
'Noch nichts gelernt. Deine Lernzeit und Bewertungen erscheinen hier, sobald du Karteikarten lernst.';
@override
String get profileSettingsTooltip => 'Einstellungen';
@ -6222,7 +6288,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get progressStudyTimeInfo =>
'Wie lange du die Karteikarten dieses Lernsets in den letzten sieben Tagen auf diesem Gerät gelernt hast.';
'Wie lange du die Karteikarten dieses Lernsets in den letzten sieben Tagen gelernt hast, jede Karte höchstens eine Minute gezählt.';
@override
String get progressThisWeek => 'diese Woche';