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

@ -2536,6 +2536,108 @@ abstract class AppLocalizations {
/// **'Profile'**
String get profileTitle;
/// No description provided for @profileTabProfile.
///
/// In en, this message translates to:
/// **'Profile'**
String get profileTabProfile;
/// No description provided for @profileTabStatistics.
///
/// In en, this message translates to:
/// **'Statistics'**
String get profileTabStatistics;
/// No description provided for @statisticsDays.
///
/// In en, this message translates to:
/// **'Days'**
String get statisticsDays;
/// No description provided for @statisticsWeeks.
///
/// In en, this message translates to:
/// **'Weeks'**
String get statisticsWeeks;
/// No description provided for @statisticsMonths.
///
/// In en, this message translates to:
/// **'Months'**
String get statisticsMonths;
/// No description provided for @statisticsTotal.
///
/// In en, this message translates to:
/// **'In total'**
String get statisticsTotal;
/// No description provided for @statisticsPerDay.
///
/// In en, this message translates to:
/// **'Per day'**
String get statisticsPerDay;
/// No description provided for @statisticsRecord.
///
/// In en, this message translates to:
/// **'Daily record'**
String get statisticsRecord;
/// No description provided for @statisticsStudyTime.
///
/// In en, this message translates to:
/// **'Study time'**
String get statisticsStudyTime;
/// No description provided for @statisticsMinutesInfo.
///
/// In en, this message translates to:
/// **'In minutes, each card counted for at most a minute'**
String get statisticsMinutesInfo;
/// No description provided for @statisticsHoursInfo.
///
/// In en, this message translates to:
/// **'In hours, each card counted for at most a minute'**
String get statisticsHoursInfo;
/// No description provided for @statisticsRatings.
///
/// In en, this message translates to:
/// **'Ratings'**
String get statisticsRatings;
/// No description provided for @statisticsRatingsInfo.
///
/// In en, this message translates to:
/// **'How you rated the flashcards you studied'**
String get statisticsRatingsInfo;
/// No description provided for @statisticsRated.
///
/// In en, this message translates to:
/// **'{count, plural, =0{No cards rated} =1{1 card rated} other{{count} cards rated}}'**
String statisticsRated(int count);
/// No description provided for @statisticsToday.
///
/// In en, this message translates to:
/// **'Today'**
String get statisticsToday;
/// No description provided for @statisticsWeekOf.
///
/// In en, this message translates to:
/// **'Week of {date}'**
String statisticsWeekOf(String date);
/// No description provided for @statisticsNothingYet.
///
/// In en, this message translates to:
/// **'Nothing studied yet. Your study time and ratings show here once you study flashcards.'**
String get statisticsNothingYet;
/// No description provided for @profileSettingsTooltip.
///
/// In en, this message translates to:
@ -9882,7 +9984,7 @@ abstract class AppLocalizations {
/// No description provided for @progressStudyTimeInfo.
///
/// In en, this message translates to:
/// **'How long you studied this studyset\'s flashcards on this device in the last seven days.'**
/// **'How long you studied this studyset\'s flashcards in the last seven days, each card counted for at most a minute.'**
String get progressStudyTimeInfo;
/// No description provided for @progressThisWeek.