feat(train): Profile opens on your body, the last 12 weeks and this year (ADR 0030, D60)

Above the days: a card with your body's weight and resting and maximal
heart rate, tapped opening Your body; the last 12 weeks' time trained as
bars, a week tapped showing its time, distance and workouts; and this
calendar year by activity. Home's week card reads its time as the days do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-31 18:46:26 +01:00
commit 5cfab59bd2
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 713 additions and 46 deletions

View file

@ -571,6 +571,12 @@
"homeWeekTime": "Zeit",
"homeWeekDistance": "Distanz",
"homeWeekWorkouts": "Trainings",
"homeWeekDuration": "{hours, plural, =0{{minutes} Min.} other{{hours} Std. {minutes} Min.}}",
"recordPlansHeading": "Intervallpläne"
"recordPlansHeading": "Intervallpläne",
"profileWeeksTitle": "Letzte 12 Wochen",
"profileWeekOf": "Woche vom {date}",
"profileWorkouts": "{count, plural, =1{1 Training} other{{count} Trainings}}",
"profileYearEmpty": "Dieses Jahr noch keine Trainings.",
"bodyWeight": "{kg} kg",
"bodyResting": "Ruhepuls {bpm}",
"bodyMax": "Maximalpuls {bpm}"
}

View file

@ -720,7 +720,17 @@
"homeWeekTime": "Time",
"homeWeekDistance": "Distance",
"homeWeekWorkouts": "Workouts",
"homeWeekDuration": "{hours, plural, =0{{minutes} min} other{{hours} h {minutes} min}}",
"@homeWeekDuration": {"placeholders": {"hours": {"type": "int"}, "minutes": {"type": "int"}}},
"recordPlansHeading": "Interval plans"
"recordPlansHeading": "Interval plans",
"profileWeeksTitle": "Last 12 weeks",
"profileWeekOf": "Week of {date}",
"@profileWeekOf": {"placeholders": {"date": {"type": "String"}}},
"profileWorkouts": "{count, plural, =1{1 workout} other{{count} workouts}}",
"@profileWorkouts": {"placeholders": {"count": {"type": "int"}}},
"profileYearEmpty": "No workouts this year yet.",
"bodyWeight": "{kg} kg",
"@bodyWeight": {"placeholders": {"kg": {"type": "String"}}},
"bodyResting": "resting {bpm} bpm",
"@bodyResting": {"placeholders": {"bpm": {"type": "int"}}},
"bodyMax": "max {bpm} bpm",
"@bodyMax": {"placeholders": {"bpm": {"type": "int"}}}
}

View file

@ -154,12 +154,6 @@ abstract class AppLocalizations {
/// **'Record one from the Record tab.'**
String get homeRecordHint;
/// No description provided for @recordAction.
///
/// In en, this message translates to:
/// **'Record'**
String get recordAction;
/// No description provided for @recordBack.
///
/// In en, this message translates to:
@ -3454,17 +3448,53 @@ abstract class AppLocalizations {
/// **'Workouts'**
String get homeWeekWorkouts;
/// No description provided for @homeWeekDuration.
///
/// In en, this message translates to:
/// **'{hours, plural, =0{{minutes} min} other{{hours} h {minutes} min}}'**
String homeWeekDuration(int hours, int minutes);
/// No description provided for @recordPlansHeading.
///
/// In en, this message translates to:
/// **'Interval plans'**
String get recordPlansHeading;
/// No description provided for @profileWeeksTitle.
///
/// In en, this message translates to:
/// **'Last 12 weeks'**
String get profileWeeksTitle;
/// No description provided for @profileWeekOf.
///
/// In en, this message translates to:
/// **'Week of {date}'**
String profileWeekOf(String date);
/// No description provided for @profileWorkouts.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 workout} other{{count} workouts}}'**
String profileWorkouts(int count);
/// No description provided for @profileYearEmpty.
///
/// In en, this message translates to:
/// **'No workouts this year yet.'**
String get profileYearEmpty;
/// No description provided for @bodyWeight.
///
/// In en, this message translates to:
/// **'{kg} kg'**
String bodyWeight(String kg);
/// No description provided for @bodyResting.
///
/// In en, this message translates to:
/// **'resting {bpm} bpm'**
String bodyResting(int bpm);
/// No description provided for @bodyMax.
///
/// In en, this message translates to:
/// **'max {bpm} bpm'**
String bodyMax(int bpm);
}
class _AppLocalizationsDelegate

View file

@ -39,9 +39,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get homeRecordHint => 'Zeichne eins im Tab Aufzeichnen auf.';
@override
String get recordAction => 'Aufzeichnen';
@override
String get recordBack => 'Zurück zur Aufzeichnung';
@ -2071,16 +2068,42 @@ class AppLocalizationsDe extends AppLocalizations {
String get homeWeekWorkouts => 'Trainings';
@override
String homeWeekDuration(int hours, int minutes) {
String get recordPlansHeading => 'Intervallpläne';
@override
String get profileWeeksTitle => 'Letzte 12 Wochen';
@override
String profileWeekOf(String date) {
return 'Woche vom $date';
}
@override
String profileWorkouts(int count) {
String _temp0 = intl.Intl.pluralLogic(
hours,
count,
locale: localeName,
other: '$hours Std. $minutes Min.',
zero: '$minutes Min.',
other: '$count Trainings',
one: '1 Training',
);
return '$_temp0';
}
@override
String get recordPlansHeading => 'Intervallpläne';
String get profileYearEmpty => 'Dieses Jahr noch keine Trainings.';
@override
String bodyWeight(String kg) {
return '$kg kg';
}
@override
String bodyResting(int bpm) {
return 'Ruhepuls $bpm';
}
@override
String bodyMax(int bpm) {
return 'Maximalpuls $bpm';
}
}

View file

@ -38,9 +38,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get homeRecordHint => 'Record one from the Record tab.';
@override
String get recordAction => 'Record';
@override
String get recordBack => 'Back to the recording';
@ -2059,18 +2056,44 @@ class AppLocalizationsEn extends AppLocalizations {
String get homeWeekWorkouts => 'Workouts';
@override
String homeWeekDuration(int hours, int minutes) {
String get recordPlansHeading => 'Interval plans';
@override
String get profileWeeksTitle => 'Last 12 weeks';
@override
String profileWeekOf(String date) {
return 'Week of $date';
}
@override
String profileWorkouts(int count) {
String _temp0 = intl.Intl.pluralLogic(
hours,
count,
locale: localeName,
other: '$hours h $minutes min',
zero: '$minutes min',
other: '$count workouts',
one: '1 workout',
);
return '$_temp0';
}
@override
String get recordPlansHeading => 'Interval plans';
String get profileYearEmpty => 'No workouts this year yet.';
@override
String bodyWeight(String kg) {
return '$kg kg';
}
@override
String bodyResting(int bpm) {
return 'resting $bpm bpm';
}
@override
String bodyMax(int bpm) {
return 'max $bpm bpm';
}
}
/// The translations for English, as used in the United Kingdom (`en_GB`).